पर वापस/फ्रंट कैमरा स्विच करें यदि मैं केवल CAMERA_FACING_BACK
या CAMERA_FACING_FRONT
का उपयोग करता हूं तो सभी ठीक काम करते हैं।फ्लाई
मुझे CAMERA_FACING_BACK
से CAMERA_FACING_FRONT
पर स्विच के साथ परेशानी है।
मेरे कोड का टुकड़ा:
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() > 1 && camId < 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;
}
}
}
क्या "मुसीबत" आप कर रहे हैं कि का स्वभाव है आ रही हैं? – Estel
अगर मैं कैमरे को रोकने की कोशिश करता हूं, तो व्यूफिंडर फ्रीज करता है और किसी अन्य कैमरे से छवि प्रदर्शित नहीं करता है। लेकिन अगर मैं "बैक" दबाता हूं और फिर इस गतिविधि को फिर से शुरू करता हूं, तो कैमरा आगे बढ़ता है और यह फिर से ठीक काम करता है। मुझे लगता है कि मुझे शट डाउन कैमरा और संसाधनों को छोड़ने में परेशानी है। –
मैंने एक ही समस्या के साथ अटक गया है – himanshu