Android ChangeCameraOnFly
Я хочу иметь возможность переключать камеру сзади вперед (или спереди назад). С этим кодом при запуске приложения работает первый переключатель, но другие этого не делают:
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
1 ответ
Решение
Когда cameraId
0, ваше первое утверждение if верно. таким образом cameraId
увеличивается до 1.
Затем ваше приложение переходит к следующей строке, где вы проверяете, cameraId
1. Действительно, так cameraId
уменьшается до 0.
Попробуйте вместо этого использовать if-else. Например:
if (cameraId == 0) {
cameraId++;
} else if (cameraId == 1) {
cameraId--;
} else {
// Default: Do nothing
}