我正在尝试开发一款可以在点亮屏幕时拍照的应用。 我创建了不同的方法,以及不同的日志。当我调用该方法时应该拍照:这是在服务中
public void photo() {
try {
cam.setPreviewDisplay(new SurfaceView(this).getHolder());
cam.startPreview();
cam.takePicture(null,null,new PhotoHandler());
Log.i("photo","end");
}catch(IOException e) {e.printStackTrace();}
}
在日志中,"照片","结束"显示,但我放入 PhotoHandler 的日志不是。
我也有#34;相机" " app传递了NULL Surface"登录。
所以我问你们为什么照片没拍? PhotoHandler 工作正常,我在一个基本的应用程序中进行了测试
希望你能帮帮我!
编辑:在服务的onCreate方法中选择了摄像机并且没有错误。
编辑:问题是我的 PhotoHandler 也没有被称为camera.release()。我的照片()方法现在看起来像这样
public void photo() {
Camera cam=null;
try {
cam=Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
cam.setPreviewTexture(new SurfaceTexture(0));
cam.startPreview();
cam.takePicture(null,null,new PhotoHandler());
cam.stopPreview();
cam.release();
Log.i("photo","end");
}catch(IOException e) {e.printStackTrace();stopSelf();}
catch(RuntimeException re {e.printStackTrace();stopSelf();}
现在,问题是当服务结束时调用takePicture方法,必须是我假设的线程问题。但更令人烦恼的是,在服务结束后并不总是调用takePicture方法。当调用该方法时,它被调用一次,而我在服务期间不止一次点亮屏幕。