Я думаю, что моя проблема достаточно хорошо описана в заголовке.
По сути, я пытаюсь сделать следующее:
takeFocusedPhoto("a");
doSomethingElse();
takeFocusedPhoto("b");
doSomethingElse();
takeFocusedPhoto("c");
doSomethingElse();
takeFocusedPhoto("d");
Но мой код может сохранить только последний (d.jpg).
doSomethingElse () на самом деле является функцией поворота платформы, на которой стоит мой сотовый телефон (я хочу сфотографировать каждую стену в комнате.
Есть ли простой способ это исправить? Буду признателен за любую помощь или предложение.
код:
/** Takes photo with default settings */
public void takePhoto(){
camera.startPreview();
camera.takePicture(null, rawCallback, jpegCallback);
camera.stopPreview();
}
/** Takes photo using Auto Focus function */
public void takeFocusedPhoto(String name){
filename=name;
isAutoFocused=false;
camera.startPreview();
AutoFocusClbk afcb = new AutoFocusClbk();
camera.autoFocus(afcb);
if(isAutoFocused){
Log.d(TAG, "takeFocusedPhoto - AutoFocused");
}
else{
Log.d(TAG, "takeFocusedPhoto - NOT AutoFocused");
}
camera.takePicture(null, rawCallback, jpegCallback);
camera.stopPreview();
}
/** Releases the interface */
public void closeCamera(){
camera.release();
}
/** Shutter */
/*ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
Log.d(TAG, "onShutter'd");
}
};*/
/** Handles data for raw picture */
PictureCallback rawCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
Log.d(TAG, "onPictureTaken - RAW");
}
};
/** Handles data for jpeg picture */
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
FileOutputStream outStream = null;
try {
//write the file to sdcard
outStream = new FileOutputStream(String.format("/sdcard/"+filename+".jpg"));
outStream.write(data);
outStream.close();
Log.d(TAG, "onPictureTaken - SUCCESS! - wrote bytes: " + data.length);
} catch (FileNotFoundException e) {
Log.d(TAG, "onPictureTaken - FAILURE - FileNotFound");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
Log.d(TAG, "onPictureTaken - JPEG");
}
};
/** AutoFocus Callback */
private class AutoFocusClbk implements Camera.AutoFocusCallback{
public void onAutoFocus(boolean success, Camera camera){
isAutoFocused = success;
Log.d(TAG, "onAutoFocus - AutoFocused: "+success);
}
};
}