我试图调用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