Опрос спутниковых данных из Android GPS экономичным способом

Это очень близкий вопрос ко многим другим вопросам (например, Регулярный GPS-опрос Android в работе, максимально увеличивающий срок службы батареи). Однако мне нужно совсем другое.

Итак, в основном я ищу способ регулярно опрашивать устройства Android с помощью класса LocationManager. В частности, мне нужна информация о СПУТНИКЕ (НЕ о самом местоположении). т.е. Мне просто нужно количество спутников, соотношение сигнал/шум и так далее. Я ищу, чтобы сделать это максимально эффективным способом батареи.

Один из способов сделать это — получить информацию о спутниках с помощью обратного вызова onGpsStatusChanged, а затем получить спутники с помощью чего-то вроде location_manager.getGpsStatus(null).getSatellites(). Это действительно то, как я это делаю.

В связи с этим у меня есть несколько вопросов, которые я не могу найти нигде в документации по Android или на любом онлайн-форуме, который я видел!

  1. Будет ли вызываться onGpsStatusChanged без добавления LocationListener к моему LocationManager? Могу ли я просто запросить GPS-приемник, чтобы отправить мне информацию о спутнике, не регистрируя также LocationListener? т.е. Есть ли прямой способ сделать это, кроме чего-то вроде:

            location_manager.addGpsStatusListener(gps_status_listener_);
            location_manager.requestLocationUpdates(location_manager.getProvider(LocationManager.GPS_PROVIDER).getName(), 3000, 2f, location_listener_);
    

    Потому что для меня LocationListener бесполезен.

  2. Будет ли более экономично периодически подключать GPSStatusListener, получать информацию о спутнике и удалять прослушиватель ИЛИ просто подключить его один раз и продолжать опрос до определенного периода, когда он мне больше не нужен. Я понимаю, что непрерывный опрос неэффективен для батареи, и большинство вопросов связаны с опросом LocationManager с requestLocationUpdates и установкой minTime и minDistance и т. д., чтобы минимизировать количество потребляемой батареи. Однако мне нужна только информация о спутниках, так что, может быть, есть способ непрерывного опроса без этого потребления батареи?

  3. Это приводит прямо к моему следующему вопросу: как быстро GPSStatusListener в среднем получает спутниковую информацию? Я понимаю, что получение LOCATION занимает некоторое время и зависит от Providers и LastKnownLocation и yada yada. А как же спутниковая информация? Это быстрее?

Если кто-то может помочь мне здесь, я был бы очень обязан! Заранее всем спасибо!


person Hamza Tahir    schedule 27.09.2016    source источник