我正在为学校编写一个应用程序,它的功能需要相机拍照、裁剪、上传到服务器,之后用户必须能够打开手电筒(作为某些跟踪的一部分在做)。 以上所有操作都完美无缺 - 直到用户关闭手电筒并想要拍摄另一张照片。相机停止工作在屏幕上显示无法连接到相机的错误。
我知道有像重新连接这样的命令:http://developer.android.com/reference/android/hardware/Camera.html#reconnect() 我一直在摆弄它,但我无法让它正常工作。
为了使用相机,我使用了一个 Intent :
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
手电筒代码如下所示:
private void getCamera() {
if (camera == null) {
try {
camera = Camera.open();
params = camera.getParameters();
} catch (RuntimeException e) {
Log.e("Camera Error. Failed to Open. Error: ", e.getMessage());
}
}
}
/*
* Turning On flash
*/
private void turnOnFlash() {
getCamera();
if (!isFlashOn) {
if (camera == null || params == null) {
return;
}
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
isFlashOn = true;
}
}
/*
* Turning Off flash
*/
private void turnOffFlash() {
if (isFlashOn) {
if (camera == null || params == null) {
return;
}
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
isFlashOn = false;
}
}
有什么方法可以让手电筒和相机使用相同的相机实例(当它是一个 Intent 时)?我发现如果我释放相机,et 将变为空,并且无法再次实例化它。
提前致谢
最佳答案
@Decoid 你只需要添加一个暂停方法,我猜你还没有 如下:
@Override
protected void onPause()
{
super.onPause();
if (!isFlashOn) {
camera.release();
camera = null;
}
}
关于android - 关闭手电筒后无法使用相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17084100/