我想创建一个应用程序,它需要知道相机何时被其他应用程序打开、相机应用程序是否打开或者第三方应用程序是否正在使用相机 我如何检测其他应用程序是否尝试打开相机。如果其他应用程序尝试打开相机,我想在打开相机之前接收任何广播,我该怎么做。 我也尝试过这个。
public boolean isCameraUsebyApp() {
Camera camera = null;
try {
camera = Camera.open();
} catch (RuntimeException e) {
return true;
} finally {
if (camera != null) camera.release();
}
return false;
}
但它总是返回 true。
最佳答案
Camera2 Api 中没有相机打开与否的广播,但有相机可用性监听器,使用下面的代码
CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
manager.registerAvailabilityCallback(new CameraManager.AvailabilityCallback() {
@Override
public void onCameraAvailable(String cameraId) {
super.onCameraAvailable(cameraId);
//Do your work
}
@Override
public void onCameraUnavailable(String cameraId) {
super.onCameraUnavailable(cameraId);
//Do your work
}
}, mHandler);
}
只有21岁及以上
对于 21 以下,您可以使用您的代码
public boolean isCameraInUse() {
Camera c = null;
try {
c = Camera.open();
} catch (RuntimeException e) {
return true;
} finally {
if (c != null) c.release();
}
return false;
}
关于android 检测其他应用程序是否尝试打开相机显示警报对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43246065/