Android 地磁场不工作

Android GeomagneticField not working

我在使用 Android 与位置相关的 API 时遇到了一些问题。让我切入正题:

GeomagneticField geoField = new GeomagneticField(20f, 20f, 0, System.currentTimeMillis());
float declination = geoField.getDeclination();

这些都是测试值,没有任何意义。问题是 getDeclination() 总是 returns 0,不管我用来实例化 GeomagneticField 的纬度、经度或高度值是多少。

我假设实例已成功创建(否则它会抛出某种异常)。那怎么可能呢?

我终于明白了。使用 Android API 进行单元测试时,需要使用检测框架。我单独使用 JUnit,因此出现故障。我通过使用 Roboelectric 解决了这个问题,这是一种模拟 Android 平台的工具,允许您 运行 使用 Android API 的单元测试,而无需每次都启动设备模拟器。