我正在尝试读取运行 Android Auto 和 Android Automotive 的汽车的外部温度传感器。
为了阅读SENSOR_TYPE_ENV_OUTSIDE_TEMPERATURE使用汽车物业经理我需要包括android.car
图书馆。然而,当在 Android Auto(桌面主机)上运行它时,它会不断抛出runtimeexception
.
`java.lang.runtimeexception: stub! at android.car.car.createcar`
我尝试添加useLibrary 'android.car'
到 gradle 文件(如所述here)
android {
compileSdkVersion 33
...
useLibrary 'android.car'
}
但是,当在 Android Auto(桌面主机)上运行它时,我收到以下错误:
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/car/hardware/property/CarPropertyManager$CarPropertyEventCallback;
要修复NoClassDefFoundError
我从SDK文件夹中导入lib如下(如上所述here):
val sdkDir: String = project.android.sdkDirectory.canonicalPath
val androidCarJar = "$sdkDir/platforms/android-33/optional/android.car.jar"
dependencies {
implementation(files(androidCarJar))
}
但是,当我尝试运行该应用程序时,出现以下错误:
java.lang.runtimeexception: stub! at android.car.car.createcar
搜索错误后我发现了以下解释在 StackOverflow 上 / and here
android.jar 仅包含类的存根实现。它为您提供了构建应用程序的方法,一旦您拥有 APK,您必须在 Android 设备或模拟器上运行它。
这是有道理的,但是我尝试在模拟器上以及汽车内运行它。
然后我浏览了官方样品对于 Android Auto 并注意到他们只访问了Car
API 在 Android Automotive 项目中,但不在 Android Auto 项目中,所以我想知道这是否只是 Android Automotive 功能..我找不到任何相关文档..
根据docs为了Car
,第一句话明确写着“Android Auto”。
用于嵌入式 Android Auto 部署的顶级汽车 API。此 API 仅适用于具有 PackageManager#FEATURE_AUTOMOTIVE 的设备
但是,如果我在桌面主机中检查该功能,它会告诉我它不受支持。
我正在使用这样的 Car API(与官方示例应用程序相同):
car = Car.createCar(carContext)
我缺少什么?