我正在嘗試拍攝3張連續照片的相機應用程序。android camera點擊連續拍攝
我試圖通過將其放入循環中多次調用「takePicture」。
但沒有成功。
請幫忙解決這個問題。
有一點幫助將不勝感激。
我正在嘗試拍攝3張連續照片的相機應用程序。android camera點擊連續拍攝
我試圖通過將其放入循環中多次調用「takePicture」。
但沒有成功。
請幫忙解決這個問題。
有一點幫助將不勝感激。
你永遠不應該從你的代碼中調用PictureCallback.onPictureTaken()
;這個回調在準備就緒時接收來自系統的數據,作爲對Camera.takePicture()
的響應。
如果打開相機並開始預覽,後面的調用將會成功。因此,只需在循環中調用Camera.takePicture()
將不起作用(請參閱,例如Android 2.3.1 Camera takePicture() Multiple images with one button click)。處理這個問題的正確方法是在onPictureTaken()
中保留一個處理鏡頭的計數器,如果小於3,則重新啓動相機預覽併發出(同步)另一個Camera.takePicture()
。在此之後,onPictureTaken()
應該return
,以允許處理下一個捕獲的幀。
我在做PhotoBurst時就像這樣使用它。它也處理FRameLayout舉行預覽啓動PhotoBurst:
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
FileOutputStream outStream = null;
try {
Parameters param = camera.getParameters();
param.setPictureSize(640, 480);
camera.setParameters(param);
// Or write to sdcard
outStream = new FileOutputStream(String.format(
Environment.getExternalStorageDirectory().getPath()+"/foto%d.jpg",
System.currentTimeMillis()));
outStream.write(data);
outStream.close();
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.fromFile(Environment.getExternalStorageDirectory())));
Log.i(TAG, "onPictureTaken - wrote bytes: " + data.length);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
Log.d(TAG, "onPictureTaken - jpg");
try {
stillCount++;
camera.startPreview();
if (stillCount < 10) {
preview.mCamera.takePicture(shutterCallback, rawCallback,
jpegCallback);
if (stillCount == 9) {
frameLayout.setClickable(true);
}
} else {
stillCount = 0;
takePictureButton.setEnabled(true);
frameLayout.setClickable(true);
}
} catch (Exception e) {
Log.d(TAG, "Error starting preview: " + e.toString());
}
}
};
我得到了解決方案。
我打電話給mCamera.startPreview();
不在我的循環中。
預覽是必須拍攝的,不包括mCamera.startPreview();
阻止了我的執行。
它被稱爲回調,因爲你不應該叫它,但讓它叫。調用「takePicture」。 – Fildor
抱歉的問題需要一些更正。 – Shivansh