0

我的代码如下,onLocationChanged 方法无法控制,我使用的是物理设备而不是模拟器。请提出您的建议,谢谢。

private IALocationListener locationListener = new IALocationListener() {
    @Override
    public void onLocationChanged(IALocation location) {
        Log.d(TAG, "Latitude: " + location.getLatitude());
        Log.d(TAG, "Longitude: " + location.getLongitude());
    }

在 onStatusChanged 上达到控制,但在 onLocationChanged 上没有

    @Override
    public void onStatusChanged(String s, int i, Bundle bundle) {
        Log.d("onStatus","0");
    }
};

恢复

@Override
protected void onResume() {
    super.onResume();
    locationManager.requestLocationUpdates(IALocationRequest.create(),locationListener);
}

暂停

@Override
protected void onPause() {

    super.onPause();
    locationManager.removeLocationUpdates(locationListener);
}

销毁

@Override
protected void onDestroy() {
    locationManager.destroy();
    super.onDestroy();
}
4

1 回答 1

1

有几件事可能是起因:

  • 您测试的地点需要按照以下说明进行映射:http ://docs.indooratlas.com/app/
  • 绘制完成后,需要生成云端“磁图”,如上述文档中的步骤 3 所述
  • 您需要至少有 Wifi 的 Android 设备,但最好也有加速度计、陀螺仪和磁力计
  • 需要在您的设备上启用 Wifi 扫描,以便在您的设备上启用定位服务
  • 您已按照以下说明设置 IndoorAtlas SDK:http ://docs.indooratlas.com/android/getting-started.html

要开始进行故障排除,请在状态回调中打印出参数:

public void onStatusChanged(String s, int i, Bundle bundle) {
        Log.d(LOG_TAG, "onStatusChanged, code: " + i + ", args: " + bundle);
}

并将状态代码与在以下位置找到的状态代码进行比较:http ://docs.indooratlas.com/android/2.2.2/com/indooratlas/android/sdk/IALocationManager.html 。

另一件事是注意任何带有标签“IASDK”的日志语句:

adb logcat *:E IASDK:V

在 GitHub 上也有关于同一问题的相当广泛的讨论:https ://github.com/IndoorAtlas/android-sdk-examples/issues/5 。

希望这会有所帮助,您可以开始接收位置更新!

于 2016-12-09T08:14:08.660 回答