Java Android ChangeCameraOnFly
我希望能够将相机从后面切换到前面(或从前面切换到后面) 当我启动应用程序时,使用此代码,第一个开关工作,但其他开关不工作:Java Android ChangeCameraOnFly,java,android,android-camera,Java,Android,Android Camera,我希望能够将相机从后面切换到前面(或从前面切换到后面) 当我启动应用程序时,使用此代码,第一个开关工作,但其他开关不工作: public void changeCameraOnFly(View v) { if (isPreview) {camera.stopPreview();} camera.release(); System.out.println("Camera ID before : " + String.valueOf(cam
public void changeCameraOnFly(View v)
{
if (isPreview) {camera.stopPreview();}
camera.release();
System.out.println("Camera ID before : " + String.valueOf(cameraID));
if(cameraID == 0) {cameraID++;}
if(cameraID == 1) {cameraID--;}
System.out.println("Camera ID after: " + String.valueOf(cameraID));
camera = Camera.open(cameraID);
try {
//this step is critical or preview on new camera will no know where to render to
camera.setPreviewDisplay(surfaceCamera.getHolder());
}
catch (IOException e) { e.printStackTrace(); }
camera.startPreview();
}
调试日志:
06-17 18:27:43.594: I/System.out(10551): Camera ID before : 1
06-17 18:27:43.594: I/System.out(10551): Camera ID after: 0
06-17 18:27:46.074: I/System.out(10551): Camera ID before : 0
06-17 18:27:46.074: I/System.out(10551): Camera ID after: 0
当
cameraId
为0时,第一个if语句为true。因此,cameraId
增加到1
然后,应用程序继续到下一行,检查cameraId
是否为1。确实如此,因此cameraId
被减回到0
尝试改用if-else。例如:
if (cameraId == 0) {
cameraId++;
} else if (cameraId == 1) {
cameraId--;
} else {
// Default: Do nothing
}
我在我的回答中加了一个建议的修正。事实上这很简单--“非常感谢;”