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

时间:2012-06-27 06:02:54

标签: java android camera android-camera

有没有办法找到Android 相机是否在代码中使用?

4 个答案:

答案 0 :(得分:4)

  

有没有办法找到Android相机是否正在使用?

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

来自docs

/** 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
}

答案 1 :(得分:2)

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

答案 2 :(得分: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.");

    }
};

答案 3 :(得分: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;
}

然后向用户显示吐司,以便在摄像机需要重启时重启设备。