我正在开发一个应用程序,如果该设备已植根,它实际上可以正常工作,但现在我正在为非root设备做一些事情。此时我需要使用以下(或类似的东西)才能下载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
答案 0 :(得分:3)
我是GPS状态的作者,我真的不做你现在正在做的事情。 (即调用sendExtraCommand方法。事实上,我的程序中还有3行代码:),我猜这些文件是特定于实现/手机的。我的手机上根本没有/ data / gps目录。 (Nexus One)
答案 1 :(得分:1)
我想,你的代码正在运行。 (假设您已向清单添加了所需的权限)。您不应该期望应用程序的数据目录中有任何更改。下载的XTRA数据直接注入GPS子系统,根本不存储在文件系统中。我的经验是检查注射是否成功的唯一方法是重置GPS状态,然后调用注射方法并查看GPS获得锁定的速度。
答案 2 :(得分:0)
LocationManager将仅返回false,并且仅在命令未知时才返回false。如果LocationManager知道该命令,它会对此命令进行排队,然后返回true,这就是它所做的一切。
注射是否成功,没有办法检查但是看logcat(如果有什么东西会出现在那里)。
答案 3 :(得分:0)
据我所知,无法确定XTRA数据下载是否成功。我在Nexus S上测试了这个.logcat不会显示任何内容,RIL日志只会显示已经发出请求 - 但是如果成功则没有。不幸的是,Android并没有给我们任何选择,只能盲目地force_xtra_injection
LocationManager
,并希望它会成功。
编辑:我刚遇到this paper,其中第34页介绍了如何更改GPS驱动程序堆栈的调试级别以获取NTP和AGPS ijection操作的状态消息。但是,这需要有根设备,并且可能无法与每个驱动程序实现一起使用。