Android-Things GpsService 未初始化

Posted

技术标签:

【中文标题】Android-Things GpsService 未初始化【英文标题】:Android-Things GpsService Not Initilizing 【发布时间】:2019-08-14 14:27:43 【问题描述】:

使用 android Studio 自动生成的 GPS 代码,在 setupGps 期间,NmeaGpsDriver 无法初始化。

Logcat 代码:

2019-03-23 18:19:30.590 2054-2054/com.example.gpsmonitor I/InstantRun: starting instant run server: is main process
2019-03-23 18:19:30.602 2054-2054/com.example.gpsmonitor I/ActivityThread: handleStopService: token=android.os.BinderProxy@1bda8fc not found.
2019-03-23 18:19:30.614 2054-2054/com.example.gpsmonitor D/GpsService: GpsService: onCreate
2019-03-23 18:19:30.614 2054-2054/com.example.gpsmonitor D/GpsService: GpsService: setupGps
2019-03-23 18:19:30.669 2054-2054/com.example.gpsmonitor I/zygote: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.things.contrib.driver.gps.NmeaGpsModule$1>: java.lang.IncompatibleClassChangeError: Superclass com.google.android.things.pio.UartDeviceCallback of com.google.android.things.contrib.driver.gps.NmeaGpsModule$1 is an interface (declaration of 'com.google.android.things.contrib.driver.gps.NmeaGpsModule$1' appears in /data/app/com.example.gpsmonitor-TvGQRLdwcqrtDMbhjtBn1Q==/split_lib_dependencies_apk.apk)
2019-03-23 18:19:30.670 2054-2054/com.example.gpsmonitor I/zygote:     at void com.google.android.things.contrib.driver.gps.NmeaGpsDriver.<init>(android.content.Context, java.lang.String, int, float, android.os.Handler) (NmeaGpsDriver.java:67)

它几乎完全是 Android Studio 为带有外围设备的事物自动生成的代码,并为 Pico-Pi-i.MX7d 设置了 UART6。所以我想知道我错过了什么。

【问题讨论】:

【参考方案1】:

这是因为 Android Studio 模板引入了与您的设备不兼容的旧版 GPS 驱动程序。很可能您只需将 build.gradle 中的依赖版本更新为 1.0:

dependencies 
    implementation 'com.google.android.things.contrib:driver-gps:1.0'
    compileOnly 'com.google.android.things:androidthings:1.0'

如果这给您带来任何问题,您还可以查看 GPS driver sample,它是 1.0 驱动程序的最新版本。

【讨论】:

谢谢,非常感谢。但是,现在我更新了 gradle,它改变了错误。它说 GpsService 没有 com.google.android.things.permission.MANAGE_GNSS_DRIVERS 的权限我进入清单并添加了它们,但它仍然说它没有它们。有什么想法吗? 即使使用驱动程序示例中的新代码,它也会给出权限错误。 ``` java.lang.SecurityException:调用者缺少所需的权限 com.google.android.things.permission.MANAGE_GNSS_DRIVERS `` 好的,板子只需要重新启动:/ 现在它可以工作了。谢谢!

以上是关于Android-Things GpsService 未初始化的主要内容,如果未能解决你的问题,请参考以下文章

Android获取手机位置代码实现

我的活动没有收到来自我的 GPS 服务的广播

如何在Raspberry Pi 3模块上启用I2C(与Android Things一起使用作为操作系统)