Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android ChangeCameraOnFly_Java_Android_Android Camera - Fatal编程技术网

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
}

我在我的回答中加了一个建议的修正。事实上这很简单--“非常感谢;”