Как я могу получать уведомления, когда слой Google Maps My Location теряет местоположение пользователя?

После вызова setMyLocationEnabled(true) на GoogleMap я вижу синюю точку, указывающую текущее местоположение пользователя. Если я отключу GPS и включу режим полета, эта синяя точка будет видна на карте 1-2 минуты, после чего исчезнет (и, естественно, перестанет работать кнопка «Мое местоположение»).

Я ожидал, что смогу выяснить, когда точка исчезла, посмотрев onConnectionSuspended(int cause), который я указал при создании GoogleApiClient, как описано в документации FusedLocationProviderApi:

new GoogleApiClient.Builder(context)
    .addApi(LocationServices.API)
    .addConnectionCallbacks(this)
    .addOnConnectionFailedListener(this)
    .build()

Однако этот обратный вызов, похоже, не вызывается, когда я отключаю все компоненты определения местоположения на своем телефоне (что приводит к исчезновению синей точки). Есть ли другой обратный вызов, который я должен использовать для получения этой информации? Если нет, является ли развертывание пользовательской реализации LocationSource возможным/разумным способом гарантировать, что мой пользовательский интерфейс карты может оставаться синхронизированным с другим пользовательским интерфейсом, зависящим от местоположения, в остальной части моего приложения?


person stkent    schedule 02.12.2014    source источник
comment
stackoverflow.com/questions/24804652/ Было гораздо лучше, используя широковещательный приемник   -  person danny117    schedule 03.12.2014
comment
Спасибо за ссылку. Если я правильно понимаю, это не обязательно сработает одновременно с удалением местоположения пользователя с карты, верно? Тем не менее, определенно решение, о котором я подумаю.   -  person stkent    schedule 03.12.2014
comment
широковещательный приемник срабатывает мгновенно при включении или выключении GPS. Что вы с ним сделаете, зависит от вас. Например, я просто поместил кнопку на карту. Вы можете отключить синюю точку местоположения.   -  person danny117    schedule 03.12.2014