使用HERE Android SDK Premium,使用NavigationManager#simulate()
方法时,如果我添加NavigationManager.GpsSignalListener
,即使在模拟器上运行时打开/关闭GPS,也不会调用侦听器回调。 / p>
在模拟模式下运行NavigationManager
时如何接收GPS信号事件?
答案 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");
}
}
}
};