即使我有同样的问题.

一旦应用程序正在使用相机资源,直到它被释放,您可以在其他应用程序甚至服务中使用它们.

如果任何服务正在使用相机资源,直到它发布相同,我们不能使用相机硬件.

如果使用此代码正在使用相机硬件,您可以重复检查: –

private boolean isCameraInUse() {

Log.v(TAG, "isCameraInUse()");

boolean isCameraInUse = false;

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)//Use Camera Api for Version Code < 23 and mCamera manager above it.

{

String cameraId = null;

CameraManager camManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);

// Usually front mCamera is at 0 position.

try {

cameraId = camManager.getCameraIdList()[0];

} catch (CameraAccessException e) {

Log.e(TAG, Log.getStackTraceString(e));

isCameraInUse = true;

}

try {

camManager.setTorchMode(cameraId, true);

camManager.setTorchMode(cameraId, false);

} catch (CameraAccessException e) {

Log.e(TAG, Log.getStackTraceString(e));

isCameraInUse = true;

}

} else {

Camera c = null;

try {

c = Camera.open();

} catch (RuntimeException e) {

Log.e(TAG, Log.getStackTraceString(e));

turnFlashOff(mContext);

isCameraInUse = true;

} finally {

if (c != null) c.release();

}

}

return isCameraInUse;

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐