3

デバイスがルート化されている場合に実際に正常に動作するアプリに取り組んでいますが、ルート化されていないデバイスに対して何かをしています。この時点で、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

4 に答える 4

3

私は GPS Status の作者であり、あなたが現在行っていること以外には何もしていません。(つまり、sendExtraCommand メソッドを呼び出します。実際、私のプログラムにも 3 行のコードがあります :)、これらのファイルは実装/ハンドセット固有のものであると思います。ハンドセットには /data/gps ディレクトリすらありません。(ネクサスワン)

于 2011-02-11T16:06:25.677 に答える
1

あなたのコードは機能していると思います。(必要なアクセス許可をマニフェストに追加したと仮定します)。アプリのデータ ディレクトリが変更されることは期待できません。ダウンロードされた XTRA データは GPS サブシステムに直接注入され、ファイルシステムにはまったく保存されません。私の経験では、注入が成功したかどうかを確認する唯一の方法は、GPS の状態をリセットしてから注入メソッドを呼び出し、GPS がロックを取得できる速さを確認することです。

于 2011-02-11T09:08:45.037 に答える
0

LocationManager は false のみを返し、コマンドが認識されない場合にのみ返します。コマンドが LocationManager に認識されている場合、このコマンドをキューに入れ、true を返します。

インジェクションが成功したかどうかは、logcat を監視する以外に確認する方法はありません (そこに何かが表示される場合)。

于 2012-06-01T21:29:23.443 に答える
0

私の知る限り、XTRA データのダウンロードが成功したかどうかを判断する方法はありません。Nexus S でこれをテストしました。logcat には何も表示されず、RIL ログにはリクエストが行われたことが示されるだけですが、成功したかどうかは示されません。残念なことに、Android には選択肢がなく、やみくもに発砲force_xtra_injectionし、LocationManagerそれが成功することを願うしかありません。

編集: 34 ページで、NTP および AGPS イジェクション操作のステータス メッセージを取得するために GPS ドライバー スタックのデバッグ レベルを変更する方法を説明しているこのペーパーに出くわしました。ただし、これにはルート化されたデバイスが必要であり、すべてのドライバー実装で機能するとは限りません。

于 2014-05-04T21:28:21.267 に答える