NavigationManager:如何在模拟器上使用GpsSignalListener进行路线模拟?

时间:2019-05-02 09:58:32

标签: android here-api

使用HERE Android SDK Premium,使用NavigationManager#simulate()方法时,如果我添加NavigationManager.GpsSignalListener,即使在模拟器上运行时打开/关闭GPS,也不会调用侦听器回调。 / p>

在模拟模式下运行NavigationManager时如何接收GPS信号事件?

1 个答案:

答案 0 :(得分:3)

可以通过LocationManager查看GPS /网络提供商的状态(启用/禁用),以开启/关闭GPS。这与HERE Android SDK的GpsSignalListener不同,后者用于GPS信号丢失(例如,在隧道中)和恢复(即,在退出隧道时)事件。

因此,要收听手机/ Android仿真器的GPS的开/关,您需要订阅来自Android系统的广播消息,并检查LocationManager.PROVIDERS_CHANGED_ACTION。查看活动中的示例代码片段:

@Override
protected void onResume() {
    super.onResume();
    IntentFilter iFilter = new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION);
    filter.addAction(Intent.ACTION_PROVIDER_CHANGED);
    this.registerReceiver(gpsOnOffReceiver, iFilter);
}

private BroadcastReceiver gpsOnOffReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

        if (LocationManager.PROVIDERS_CHANGED_ACTION.equals(intent.getAction())) {

            LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
            boolean gpsOn = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
            boolean networkOn = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

            if (gpsOn || networkOn) {
                // GPS is ON
                Log.d("GPS", "GPS turned ON");
            } else {
                // GPS is OFF
                Log.d("GPS", "GPS turned OFF");
            }
        }
    }
};