Проблемы с sendExtraCommand и force_xtra_injection - PullRequest
2 голосов
/ 10 февраля 2011

Я работаю над приложением, которое на самом деле работает нормально, если устройство рутировано, но сейчас я делаю что-то для нерутированного устройства.На данный момент мне нужно использовать следующее (или что-то подобное), чтобы загрузить xtra.bin и распаковать в устройстве>

    public static void downloadGPSXtra(Context context)
{

        LocationManager locationmanager = (LocationManager)context.getSystemService("location");
        Bundle bundle = new Bundle();
        locationmanager.sendExtraCommand("gps", "force_xtra_injection", bundle);
        locationmanager.sendExtraCommand("gps", "force_time_injection", bundle);

}

Затем я использую следующее, чтобы «выполнить» его>

        lto_downloader.downloadGPSXtra(lto_downloader.this);

Хорошо, я не знаю почему (очевидно), но это не сработало.Я получил только какой-то ответ от logcat о внедрении времени>

    D/GpsLocationProvider( 3131): NTP server returned: 1297364952086 (Thu Feb 10 19:
09:12 GMT+00:00 2011) reference: 9750010 certainty: 337 system time offset: -483
80

Я знаю, что «force_xtra_injection» не работает, потому что я не вижу никаких изменений в /data/gps/lto.dat

Ответы [ 4 ]

3 голосов
/ 11 февраля 2011

Ну, я автор GPS Status, и я действительно не делаю ничего, кроме того, что вы делаете в настоящее время.(то есть вызов метода sendExtraCommand. Фактически, в моей программе также есть 3 строки кода :), я предполагаю, что эти файлы зависят от реализации / телефона.У меня даже нет каталога / data / gps на моем телефоне.(Nexus One)

1 голос
/ 11 февраля 2011

Полагаю, ваш код работает.(при условии, что вы добавили необходимые разрешения в свой манифест).Вы не должны ожидать каких-либо изменений в каталоге данных приложения.Загруженные данные XTRA напрямую вводятся в подсистему GPS и вообще не сохраняются в файловой системе.По моему опыту, единственный способ проверить успешность ввода - сбросить состояние GPS, затем вызвать метод ввода и посмотреть, как быстро GPS может получить блокировку.

0 голосов
/ 05 мая 2014

Насколько я знаю, нет способа определить, была ли загрузка данных XTRA успешной.Я проверил это на Nexus S. Logcat ничего не покажет, а журнал RIL просто покажет, что был сделан запрос - но не в том случае, если он был успешным.Так что, к сожалению, Android не дает нам другого выбора, кроме как вслепую выстрелить force_xtra_injection по LocationManager и надеяться, что он будет успешным.

Редактировать: я только что наткнулся на эту статью , который на странице 34 описывает, как изменить уровень отладки стека драйверов GPS, чтобы получать сообщения о состоянии операций инъекции NTP и AGPS.Однако для этого требуется рутованное устройство, и оно может работать не с каждой реализацией драйвера.

0 голосов
/ 02 июня 2012

LocationManager будет возвращать только false, и только тогда, когда команда будет ей неизвестна. Если команда известна LocationManager, она ставит эту команду в очередь и затем возвращает true, вот и все.

Независимо от того, успешна ли инъекция, нет способа проверить, кроме просмотра logcat (если там что-нибудь появится).

...