【问题标题】:Modify camera2 policy - unable to get cameradevice修改 camera2 策略 - 无法获取 cameradevice
【发布时间】:2018-09-07 00:09:48
【问题描述】:

我想在从 Android 框架中的 GlobalActions.java 打开相机时获取对 cameraDevice 的引用。所以要修改原生相机的运行设置。 GlobalActions 没有调用 openCamera,所以它不太可能收到状态回调

` /** * {@link CameraDevice} 更改其状态时调用 {@link CameraDevice.StateCallback}。 */ 私有 CameraDevice.StateCallback mStateCallback = new CameraDevice.StateCallback() {

    @Override
    public void onOpened(CameraDevice cameraDevice) {

....`

这个模块如何注册到 CameraDevice.StateCallback,即使它没有被调用 public void openCamera (String cameraId, CameraDevice.StateCallback callback, Handler handler) 来自 CameraManager 实例?

谢谢!

【问题讨论】:

    标签: java android-camera2


    【解决方案1】:

    无论您是否打开了相机,您都可以使用CameraManager.registerAvailabilityCallback 方法——它的目的是让应用程序知道相机当前是否可以使用。

    请注意,摄像头不可用并不总是意味着摄像头正在被另一个应用程序使用 - 对于热插拔摄像头,它可能只是断开连接(尽管这种情况比较少见)。

    【讨论】:

    • 谢谢,但我实际上是在打开相机时尝试强制闪光。 CameraManager.registerAvailabilityCallback 会给我相机的状态,但不是我需要强制闪光的对象。使用 setTorchMode 打开相机时,您无法设置手电筒,因此无法使用此 API(除非您严重破解框架)。实际上,我想在相机处于图片预览状态时将闪光灯切换为手电筒模式,就像打开手电筒时在视频预览中一样。
    • 当相机被另一个应用程序使用时,您无法控制它,所以如果您要这样做,那是不可能的。只有打开相机的应用才能开启手电筒模式。
    猜你喜欢
    • 2016-03-03
    • 2016-04-03
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多