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_injectionLocationManager希望它会成功。

Edit: I just came across this paper, which on page 34 describes how to change the debug level of the GPS driver stack to get status messages of NTP and AGPS ijection operations. However, this requires a rooted device and might not work with every driver implementation.

于 2014-05-04T21:28:21.267 回答