我刚试着将我们的应用程序的目标和编译 API 级别更新为 29(Android 10),发现我不能再进行编译,因为
我知道
您有什么建议,可以让我在旧设备上仍然获取 NMEA 数据吗?
如果有人有办法避免使用 NMEA 数据,以下是一些额外的背景信息:
我们的应用程序 "phyphox" 旨在允许学生使用其手机的传感器进行物理实验。对于我们来说能够运行在旧设备(Android 4+)上非常重要,因为在物理教育中使用智能手机传感器对于经费有限的学校和学生尤其有价值。同时,我们希望所有设备(新/旧,Android/iOS)的实验结果具有可比性。因此,我们需要 NMEA 数据以计算相对于大地水准面的高度,而不是相对于 WGS84 椭球体的高度(由
您可以在此处查看 API 28 的当前代码:https://github.com/Staacks/phyphox-android/blob/master/app/src/main/java/de/rwth_aachen/phyphox/gpsInput.java
LocationManager.addNmeaListener
只接受 OnNmeaMessageListener
(在 API 级别 24 中引入)而不是旧的且已弃用的 GpsStatus.NmeaListener
(所以我得到了 "incompatible types: NmeaListener cannot be converted to OnNmeaMessageListener")。我知道
addNmeaListener(NmeaListener)
已经在之前的版本中被弃用,并且我准备重构我的代码以支持不同的 API 级别。但是,由于我找不到任何具有不同名称的弃用方法或任何与 LocationManager 兼容的库,似乎在针对 Android 10 的情况下无法访问 Android 6 设备上的 NMEA 数据(这将在某个时候成为必须)。您有什么建议,可以让我在旧设备上仍然获取 NMEA 数据吗?
如果有人有办法避免使用 NMEA 数据,以下是一些额外的背景信息:
我们的应用程序 "phyphox" 旨在允许学生使用其手机的传感器进行物理实验。对于我们来说能够运行在旧设备(Android 4+)上非常重要,因为在物理教育中使用智能手机传感器对于经费有限的学校和学生尤其有价值。同时,我们希望所有设备(新/旧,Android/iOS)的实验结果具有可比性。因此,我们需要 NMEA 数据以计算相对于大地水准面的高度,而不是相对于 WGS84 椭球体的高度(由
Location.getAltitude()
提供),以便学生获得一致且可比较的结果。因此,任何关于实现这一目标的替代方法的建议也是受欢迎的。您可以在此处查看 API 28 的当前代码:https://github.com/Staacks/phyphox-android/blob/master/app/src/main/java/de/rwth_aachen/phyphox/gpsInput.java