安卓,当屏幕关闭或应用程序没有聚焦在屏幕上时无法访问相机

问题描述 投票:-1回答:1

首先我使用CameraManager.open(cameraid,StateCallbackObject,handler)使用相机,然后关闭屏幕或切换屏幕以显示手机桌面或其他应用程序,大约1分钟后相机访问被中断并调用onError中的StateCallbackObject方法。

如果我保持我的屏幕并保持应用程序显示在屏幕上,它可以继续使用相机而不会中断或错误。

我的问题是:如何在屏幕关闭或应用程序未聚焦后保持相机打开。

摘录代码:

main activity.Java

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      callback = new AvailabilityCallback(){
        @Override
        public void onCameraAvailable(String cameraId){
            iscamerafree = true;
        }

        @Override
        public void onCameraUnavailable(String cameraId){
            iscamerafree = false;
        }

      };

      new CameraHolder();
    }
}

camera holder.Java

public class CameraHolder {
  CameraHolder(){
    while(iscamerafree==true){
      manager.openCamera(cameraid, new CameraDevice.StateCallback() {
         @Override
         public void onOpened(CameraDevice camera) {
           //do some stuff
         }

         @Override
         public void onDisconnected(CameraDevice camera) {}

         @Override
         public void onError(CameraDevice camera, int error) {
            //after screen off or app not focused on screen for 1 min,this is invoked
         }
      },handler);
    }
  }
}
android android-camera2 android-9.0-pie
1个回答
1
投票

如果我保持我的屏幕并保持应用程序显示在屏幕上,它可以继续使用相机而不会中断或错误。

你不能。此行为是故意的,后台应用程序无法访问相机和麦克风。您的应用必须保持在前台,以便在Android 9上运行时可以使用这些来源(并且最有可能更新)。

请参阅https://source.android.com/setup/start/p-release-notes上的“隐私和安全”:

隐私增强功能:Android 9以多种新方式保护隐私。现在,当应用程序空闲或在后台运行时,Android将限制对手机麦克风,相机或其他传感器的访问。 (如果某个应用确实需要访问传感器,它会在您的手机上显示持续通知。)Android 9还带来了重要的改进,可以保护所有网络通信并提供私人网上冲浪。

© www.soinside.com 2019 - 2024. All rights reserved.