我在我的平板电脑上安装了 HERE 测试产品(这是一款旧的 Android 5.1 平板电脑,没有 GPS 或蜂窝数据,只有 Wifi),并且它可以很好地(大约)使用 Wifi 提供我的位置。
所以我尝试在我的应用程序中进行相同的编程。
下载了 HERE API,获得了我的应用程序名称的免费增值许可证,在我的清单中输入以下行:
<meta-data
android:name="com.here.android.maps.appid"
android:value="itkC4uIay69MTXXXXXXX" />
<meta-data
android:name="com.here.android.maps.apptoken"
android:value="NdT8laoCmRysyh8XXXXXXX" />
在我的构建中包含 HERE-sdk,并且我的代码编译得很好。
我的 MainActivity.onCreate() 中有代码 [编辑我已按照下面此处支持的建议添加了代码来初始化地图引擎]:
MapEngine.getInstance().init(this, new OnEngineInitListener() {
@Override
public void onEngineInitializationCompleted(Error error) {
if (error == Error.NONE) {
Logger.i(Tags.POSITION, "correctly started map engine");
PositioningManager pm = PositioningManager.getInstance();
PositioningManager.LocationStatus ls = pm.getLocationStatus(PositioningManager.LocationMethod.GPS_NETWORK);
if (ls == PositioningManager.LocationStatus.AVAILABLE) {
Logger.i(Tags.POSITION, "Positioning is available");
} else {
Logger.w(Tags.POSITION, "Positioning not available right now " + ls.toString());
}
pm.start(PositioningManager.LocationMethod.GPS_NETWORK);
} else {
Logger.i(Tags.POSITION, "Problem setting up map engine: " + error);
}
}
});
然后我在计时器上每分钟运行一次代码来检查我当前的位置:
GeoPosition pos = PositioningManager.getInstance().getPosition();
if (pos == null) {
Log.w("Positioning", "GeoPosition is Null");
} else {
GeoCoordinate coord = pos.getCoordinate();
Logger.i("Positioning", "Location: Latitude = " + coord.getLatitude() + ", Longitude = " + coord.getLongitude());
Logger.i("Positioning", "Accuracy = " + pos.getLatitudeAccuracy() + ", " + pos.getLongitudeAccuracy());
}
当我运行时,我得到这样的日志:
2019-01-27 11:49:31.960 30112-30112/com.company.app I/: [main] INFO Positioning: correctly started map engine
2019-01-27 11:49:31.961 30112-30112/com.company.app W: [main] WARN Positioning: Positioning not available right now OUT_OF_SERVICE
然后,每分钟一次
2019-01-27 11:50:30.850 30112-30343/com.company.app W/: [Timer-2] WARN Positioning: GeoPosition is Null
在平板电脑上的“设置”中,“位置”已打开“打开”,尽管它显示“最近没有应用程序请求位置”
日志不包含错误或警告,清单中请求所有权限
[编辑] 最糟糕的是我的简单测试应用程序(在下面的评论中提到),现在在我添加 MapEngine 的初始化后可以工作。为了回答 HERE 的问题,我现在真的对使用地图不感兴趣,我只想拉出当前的经度和纬度来帮助找到我丢失的平板电脑。
有人知道我做错了什么吗?