Note that there are some explanatory texts on larger screens.

plurals
  1. POswitch back/front camera on fly
    primarykey
    data
    text
    <p>If I use only <code>CAMERA_FACING_BACK</code> or <code>CAMERA_FACING_FRONT</code> all works fine.</p> <p>I have trouble with switch from <code>CAMERA_FACING_BACK</code> to <code>CAMERA_FACING_FRONT</code>.</p> <p>My code snippet:</p> <pre><code>public class PhotoCameraActivity extends Activity implements OnClickListener { private SurfaceView cameraView; private Button turnButton; private Camera camera = null; private Callback listener; private static int camId = Camera.CameraInfo.CAMERA_FACING_BACK; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.photo_camera_main); prepareActivity(); } private void prepareActivity() { cameraView = (SurfaceView) findViewById(R.id.photo_camera_surface_view); turnButton = (ImageButton) findViewById(R.id.turn_button); turnButton.setOnClickListener(this); } @Override public void onClick(View v) { if (v.equals(turnButton)) { if (Camera.getNumberOfCameras() &gt; 1 &amp;&amp; camId &lt; Camera.getNumberOfCameras() - 1) { startCamera(camId + 1); } else { startCamera(Camera.CameraInfo.CAMERA_FACING_BACK); } } } @Override protected void onResume() { startCamera(camId); super.onResume(); } @Override protected void onPause() { stopCamera(); super.onPause(); } private void startCamera(int cameraId) { if (camera != null) { stopCamera(); } holder = cameraView.getHolder(); listener = new Callback() { @Override public void surfaceDestroyed(SurfaceHolder holder) { } @Override public void surfaceCreated(SurfaceHolder holder) { try { camera.setPreviewDisplay(holder); camera.startPreview(); } catch (IOException e) { e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {} }; holder.addCallback(listener); camId = cameraId; camera = Camera.open(cameraId); Camera.Parameters params = camera.getParameters(); if (cameraId == Camera.CameraInfo.CAMERA_FACING_BACK) { params.setPreviewSize(1280, 800); } else { params.setPreviewSize(640, 480); } camera.setParameters(params); } private void stopCamera(){ System.out.println("stopCamera method"); if (camera != null){ camera.stopPreview(); camera.setPreviewCallback(null); camera.release(); camera = null; holder.removeCallback(listener); holder = null; } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload