我試圖調用camera
實例,捕獲圖像並返回到父活動。我可以創建並調用camera
實例,捕獲並存儲圖像,但相機的活動不會退出。捕獲單個圖像並返回到父活動後釋放相機實例
Preview
活動創建一個攝像頭實例並實現類似onPause()
,onResume()
和resetCam()
的方法。該代碼是:
//capture button
buttonClick.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
camera.takePicture(shutterCallback, rawCallback, pngCallback);
}
}
protected void onResume() {
super.onResume();
int numCams = Camera.getNumberOfCameras();
if(numCams > 0){
try{
camera = Camera.open(0);
camera.startPreview();
preview.setCamera(camera);
} catch (RuntimeException ex){
Toast.makeText(ctx, getString(R.string.camera_not_found), Toast.LENGTH_LONG).show();
}
}
}
@Override
protected void onPause() {
if(camera != null) {
camera.stopPreview();
preview.setCamera(null);
camera.release();
camera = null;
}
super.onPause();
}
private void resetCam() {
camera.startPreview();
preview.setCamera(camera);
}
ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
}
};
PictureCallback rawCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
}
};
PictureCallback pngCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
//save the iamge here
resetCam();
Log.d(TAG, "onPictureTaken - png");
}
};
單個捕獲事件發生後,控制應返回到調用由父Preview
活動PhotoCapture
:
Intent intent = new Intent(PhotoCapture.this,Preview.class);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
,並執行onActivityResult()
的一樣。
我應該如何發佈camera
安全退出實例?
我想返回保存的圖像路徑。
謝謝!
編輯:
我試圖調用finish();這種方式:
buttonClick.setOnClickListener(new OnClickListener()
{
public void onClick(View v) {
camera.takePicture(shutterCallback, rawCallback, pngCallback);
Log.d("Tag","4");
finish();
}
});
我把Log.d()
用於獲取控制流程:
ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
Log.d("Tag","1");
}
};
PictureCallback rawCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
Log.d("Tag","2");
}
};
PictureCallback pngCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
Log.d("Tag","3");
//save image
resetCam();
Log.d(TAG, "onPictureTaken - png");
}
};
日誌是:
02-19 14:00:28.046 4680-4680/preview.preview D/Tag﹕ 4
02-19 14:00:38.414 4680-4686/preview.preview W/Camera﹕ Camera server died!
沒有日誌標籤:1或標籤:2或標記:3!
因此,活動在實際圖像被捕獲/存儲之前完成。
即使我設置(result_code =確定)圖像不會保存。
我該如何解決這個問題?
在完成拍照後打電話給'finish()',它將退出當前活動並退回到上一個活動。 – Apurva 2015-02-19 07:43:24
@Apurva thnkx,工作! – HitchHiker 2015-02-19 07:48:51