android - 如何获得驾驶员分心优化的许可?

标签 android android-automotive

我想编写一个汽车应用程序,它应该在用户驾驶时简单地显示 map 。我正在使用 Android Studio 4.0.1 和 Kotlin 进行开发。 为了创建一个模拟器进行测试,我使用 Android Studio 4.2 Beta 1 下载汽车系统镜像,因为在 4.0.1 中没有可用的汽车系统镜像。

我坚持要让这个应用程序“分散注意力优化”,所以不幸的是,该应用程序仍然被黑屏覆盖,并显示文本“您在驾驶时无法使用此功能”。

当我遵循指南([https://source.android.com/devices/automotive/driver_distraction/guidelines][1])时,似乎我只需将以下元数据添加到manifest.xml(我只有一项 Activity ):

<activity>
  ...
  <meta-data android:name="distractionOptimized" android:value="true"/>
  ...
</activity>

当然,我还向manifest.xml 文件中的manifest-tag 请求以下所需的权限(除其他外):

...
<uses-permission android:name="android.car.permission.CAR_UX_RESTRICTIONS_CONFIGURATION" />
<uses-permission android:name="android.car.permission.CAR_DRIVING_STATE"/>
...

以及我传递给 requestPermissions(...) 函数的权限数组

val PERMISSIONS_ARRAY = arrayOf(
        ...
        Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION,
        Car.PERMISSION_CAR_DRIVING_STATE,
        ...
    )   
requestPermissions(PERMISSIONS_ARRAY, 0)

onRequestPermissionsResult(...)中我发现这两个权限被拒绝。但在应用程序首次启动时,甚至没有提示/要求用户授予该权限。此外,在设置中也无法授予应用程序这些权限。在后面的代码中 getActiveRestrictions() 总是返回 255,这意味着所有限制都处于 Activity 状态,对吗?另一个迹象表明应用程序不允许自行处理驾驶员分心,因此操作系统通过根本不显示应用程序来处理它......

我做错了什么?我可能会错过什么?有人有想法吗?

最佳答案

在 list 中将 Activity 标记为 DO 是不够的,还必须从受信任的来源(例如 Play 商店)下载/安装它,否则 CarPackageManagerService 将不允许应用程序在任何受限制的驾驶状态下显示.

关于android - 如何获得驾驶员分心优化的许可?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65668981/

相关文章:

android - Gradle 在 Android Studio 中找不到属性文件的属性

android - ConstraintLayout 不会省略 TextView 中的长文本

java - 为什么我从另一个方法 android 调用时得到空的 arrayList

android - 扩展 Android 虚拟设备(模拟器)实例的大小?

android - 我对 Android Auto 媒体持续时间功能有疑问

android.car 包在 Android Studio 中不可用

android - 为 Android NDK 编译 C++11 源代码

android - 未找到汽车 Intel x86 Atom 系统镜像 SDK 管理器

android - 如何检测Android设备没有内置电池?