Deshabilitar el cambio de orientación

Re-Iniciación Cámara Personalizada, al hacer el cambio en los modos de vista previa , de Paisaje a Retrato o Retrato a Paisaje , mi código de clase de superficie se ve así:

PreviewSurface.java:-

public class PreviewSurface extends SurfaceView implements SurfaceHolder.Callback { public static final String LOG_TAG = "CameraPreview"; private SurfaceHolder mSurfaceHolder; private Camera mCamera; // Constructor that obtains context and camera @SuppressWarnings("deprecation") public PreviewSurface(Context context, Camera camera) { super(context); this.mCamera = camera; this.mSurfaceHolder = this.getHolder(); this.mSurfaceHolder.addCallback(this); this.mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); this.mSurfaceHolder.setFixedSize(100, 100); } @Override public void surfaceCreated(SurfaceHolder surfaceHolder) { try { Camera.Parameters parameters = mCamera.getParameters(); if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) { parameters.set("orientation", "portrait"); mCamera.setDisplayOrientation(90); parameters.setRotation(90); mCamera.setPreviewDisplay(surfaceHolder); mCamera.startPreview(); } else { // This is an undocumented although widely known feature parameters.set("orientation", "landscape"); // For Android 2.2 and above mCamera.setDisplayOrientation(0); // Uncomment for Android 2.0 and above parameters.setRotation(0); } mCamera.setPreviewDisplay(surfaceHolder); mCamera.startPreview(); } catch (IOException e) { // left blank for now } } @Override public void surfaceDestroyed(SurfaceHolder surfaceHolder) { mCamera.stopPreview(); mCamera.release(); } @Override public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int width, int height) { try { Camera.Parameters parameters = mCamera.getParameters(); if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) { parameters.set("orientation", "portrait"); mCamera.setDisplayOrientation(90); parameters.setRotation(90); } else { // This is an undocumented although widely known feature parameters.set("orientation", "landscape"); // For Android 2.2 and above mCamera.setDisplayOrientation(0); // Uncomment for Android 2.0 and above parameters.setRotation(0); } mCamera.setPreviewDisplay(surfaceHolder); mCamera.startPreview(); } catch (IOException e) { // left blank for now } } } 

¿Puedo saber dónde estoy haciendo mal, lo que he perdido en mi código?

Tienes que manejar el cambio de configuración para tu aplicación.

Agrega esta línea a tu AndroidManifest.xml.

 android:configChanges="keyboardHidden|orientation|screenSize" 

Esto le dice al sistema qué cambios de configuración va a manejar usted mismo – en este caso por no hacer nada.

Espero que ayude

No está claro de su pregunta de qué se queja, pero parece que solo manipula los parámetros de la cámara, nunca llamando a mCamera.setParameters(parameters) . Esto solo puede causar confusión.

Usando parameters.set("orientation", "landscape"); En dispositivos que no admiten este parámetro puede causar RuntimeException en mCamera.setParameters(parameters) . Por lo tanto, por lo general usamos un intento por separado … coger alrededor de este ajuste.

  • Nueva visión API - Tamaño de imagen
  • Android captura la foto putExtra (MediaStore.EXTRA_OUTPUT, Uri.fromFile (photoFile)); los datos son nulos
  • Autofocus de la cámara Android a petición
  • Problema de tamaño de vista previa de la cámara Android
  • Tome una foto con la cámara y obtenga bitmap
  • Android / Java: detecta si el dispositivo tiene una cámara BACK
  • Error en el método onPictureTaken en la cámara android
  • Ya sea Foto o Live Face Cómo comprobar con la cámara Android
  • Android: Cámara Asynctask con devolución de llamada de vista previa
  • Excepción de puntero nulo en la intención de la cámara cuando elijo una cámara de terceros
  • Android phonegap cámara y la imagen de carga
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.