有什么办法可以找到代码中是否正在使用 Android相机?
问问题
8190 次
4 回答
4
有什么办法可以查出安卓相机是否在使用?
是的,如果相机正在使用中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
}
于 2012-06-27T06:14:00.577 回答
2
我不知道为什么这个问题被问了好几次,一旦你开始你自己的活动或应用程序相机本身将被释放,因为为相机运行的活动将进入暂停状态。
于 2012-06-27T06:17:08.560 回答
2
您可以尝试此方法。如果它返回 true,则某些应用仍在使用相机。
public boolean isCameraUsebyApp() {
Camera camera = null;
try {
camera = Camera.open();
} catch (RuntimeException e) {
return true;
} finally {
if (camera != null) camera.release();
}
return false;
}
然后在相机需要重新启动时向用户显示 toast 以重新启动设备。
于 2016-06-07T10:18:07.910 回答
2
我知道这是一个非常古老的问题,但我在谷歌搜索时偶然发现了它,想知道同样的事情。使用较新版本的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.");
}
};
于 2015-09-24T03:03:10.427 回答