Состояние датчика местоположения firemonkey не меняется

мое приложение показывает местоположение по долготе и широте, и оно работает хорошо

но когда мне нужно определить состояние датчика местоположения, например, вкл, из, работает, ошибка, ... у него есть некоторые проблемы

моей идеей был этот код:

  Case LocationSensor1.Sensor.State of
        TSensorState.Added : label5.Text:='2';
        TSensorState.Removed : label5.Text:='3';
        TSensorState.Initializing : label5.Text:='4';
        TSensorState.Ready : label5.Text:='ready';
        TSensorState.NoData : label5.Text:='6';
        TSensorState.AccessDenied : label5.Text:='7';
        TSensorState.Error : label5.Text:='8';
        else label5.Text:='error';
  End;

но когда я включаю или выключаю GPS, это ready каждый раз

как я могу обнаружить и показать статус датчика gps?


person peiman F.    schedule 10.09.2017    source источник


Ответы (1)


Вы должны создать класс, расширяющий класс LocationListener. Вы будете уведомлены об изменениях статуса GPS двумя функциями обратного вызова: onProviderEnabled, которая будет вызываться, когда GPS включен, и onProviderDisabled, когда он отключен.

Чтобы зарегистрировать слушателя, используйте ((LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE)).requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, myLocationListener); .

person Zelig63    schedule 10.09.2017
comment
где этот класс должен прописаться? я должен знать текущий статус датчика местоположения, может быть, пользователь активировал GPS перед запуском моего приложения?!! - person peiman F.; 10.09.2017
comment
Ваше приложение должно прослушивать, поэтому здесь должен быть зарегистрирован слушатель... Если GPS уже включен, изменения местоположения будут предоставлены вам в функции OnLocationChangedcallback. - person Zelig63; 10.09.2017
comment
Или вы должны использовать класс GpsStatus.Listener. - person Zelig63; 10.09.2017