基于https://developer.android.com/guide/components/foreground-services#bg-访问限制豁免我们只能在前台服务中开始使用相机,而无需启动应用程序(使其可见(,如果:
- 服务由系统组件启动
- 该服务是通过与应用程序小部件交互来启动的
- 该服务是通过与通知交互来启动的
- 该服务是作为PendingIntent启动的,它是从另一个可见的应用程序发送的
- 该服务由一个应用程序启动,该应用程序是在设备所有者模式下运行的设备策略控制器
- 该服务由一个提供VoiceInteractionService的应用程序启动
- 该服务由具有START_ACTIVITIES_FROM_BACKGROUND特权权限的应用程序启动
在我的情况下,我需要在没有用户交互的情况下在后台打开相机,并且当设备的屏幕关闭时,在这种情况下,据我所知,只有使用才能打开相机
- 服务由系统组件启动
- 该服务由一个应用程序启动,该应用程序是在设备所有者模式下运行的设备策略控制器
- 该服务由具有START_ACTIVITIES_FROM_BACKGROUND特权权限的应用程序启动
系统组件-尽管我想这个也不适合开发人员,因为它意味着系统应用程序-系统组件?
还有START_ACTIVITIES_FROM_BACKGROUND
呢,一个普通的应用程序可以拥有这个权限吗?如何授予它?在安卓网站上找不到任何关于这个的信息
如果它也只适用于系统应用程序,那么唯一的选择是设备策略控制器从前台服务打开相机,该服务在Android 11+上的后台启动?
附言:如果有人感兴趣,为什么需要这样的功能。仪表板摄像头应用程序需要它。用户的车里有一部智能手机,例如,当他们打开手机时(如果没有电源(,他们希望在没有互动的情况下自动开始视频录制。
因此,它将在所有情况下自动开始记录,就像真正的行车记录仪设备一样
但安卓11带来了这些限制。。。
这在Android 11及更高版本中似乎不再可能(原因很充分!(。有可能的是,一旦设备连接到车载套件或车载收音机(通过蓝牙,您可以注册一个BroadcastReceiver,通过ACTION_ACL_CONNECTED
操作收听意图(,您就会发布本地通知。用户可以通过与通知交互来启动前台服务。