NavigationManager: Как я могу использовать GpsSignalListener с симуляцией маршрута на эмуляторе? - PullRequest
5 голосов
/ 02 мая 2019

В HERE Android SDK Premium при использовании метода NavigationManager#simulate(), если я добавляю NavigationManager.GpsSignalListener, обратные вызовы слушателя не вызываются, даже когда я включаю / выключаю свой GPS во время работы на эмуляторе.

Как получить события сигнала GPS во время работы NavigationManager в режиме симуляции?

1 Ответ

3 голосов
/ 09 мая 2019

Прослушивание включения / выключения GPS можно выполнить с помощью LocationManager для состояния (включено / отключено) поставщика GPS / сети.Это отличается от GpsSignalListener HERE Android SDK, который предназначен для потери сигнала GPS (например, когда в туннеле) и восстановления (то есть, когда вы выходите из туннеля).

То есть для прослушивания включения / выключенияGPS вашего телефона / эмулятора Android, вам необходимо подписаться на широковещательные сообщения из системы 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");
            }
        }
    }
};
...