如何查找相机是否在使用?

有什么方法可以findAndroid 相机是否在代码中使用?

Solutions Collecting From Web of "如何查找相机是否在使用?"

有没有什么办法可以find安卓相机是否在使用?

是的, Camera.open()会给你一个例外,如果相机正在使用

从文档中 ,

 /** A safe way to get an instance of the Camera object. */ public static Camera getCameraInstance(){ Camera c = null; try { c = Camera.open(); // attempt to get a Camera instance } catch (Exception e){ // Camera is not available (in use or does not exist) } return c; // returns null if camera is unavailable } 

我不知道为什么这个问题被问几次,一旦你开始自己的活动或应用程序相机本身将被释放,因为相机的活动将进入暂停状态。

你可以尝试这个方法,如果它返回true,那么相机仍然被一些应用程序使用。

 public boolean isCameraUsebyApp() { Camera camera = null; try { camera = Camera.open(); } catch (RuntimeException e) { return true; } finally { if (camera != null) camera.release(); } return false; } 

然后显示给用户敬酒重启设备,因为相机需要重新启动。

我知道这是一个非常古老的问题,但我偶然发现谷歌search想知道同样的事情。 使用较新版本的android,您可以注册CameraManager.AvailabilityCallback以确定相机是否正在使用。 以下是一些示例代码:

 import android.hardware.camera2.CameraManager; // within constructor // Figure out if Camera is Available or Not CameraManager cam_manager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE); cam_manager.registerAvailabilityCallback(camAvailCallback, mHandler); CameraManager.AvailabilityCallback camAvailCallback = new CameraManager.AvailabilityCallback() { public void onCameraAvailable(String cameraId) { cameraInUse=false; Log.d(TAG, "notified that camera is not in use."); } public void onCameraUnavailable(String cameraId) { cameraInUse=true; Log.d(TAG, "notified that camera is in use."); } };