Answers:
看起来有一种方法:
adb shell dumpsys位置> dumpsys.txt
这将为您提供一个包含所有位置服务信息的文件。在此文件中搜索'Last Known Locations'
,您应该看到类似以下内容:
passive: Location[network 92.915479,55.610965 acc=22 et=+1d4h10m34s255ms {Bundle[{noGPSLocation=Location[network 92.915479,55.610965 acc=22 et=+1d4h10m34s255ms {Bundle[{coarseLocation=Location[network 92.918919,55.603997 acc=2000 et=+1d4h10m34s255ms]}]}], networkLocationSource=cached, networkLocationType=wifi, travelState=stationary}]}]
network: Location[network 92.915479,55.610965 acc=22 et=+1d4h10m34s255ms {Bundle[{noGPSLocation=Location[network 92.915479,55.610965 acc=22 et=+1d4h10m34s255ms {Bundle[{coarseLocation=Location[network 92.918919,55.603997 acc=2000 et=+1d4h10m34s255ms]}]}], networkLocationSource=cached, networkLocationType=wifi, travelState=stationary}]}]
当然,如果您在设备上启用了GPS提供程序,则该列表将包含另一个条目。
通过android代码,我试图找出应用程序使用LocationManager.getLastKnownLocation()时如何获取位置。经过一番关注,我最终在这里找到了LocationManagerService 。它实现了getLastLocation和转储功能。
据我所知,坐标没有存储在任何文件中。它们存储在哈希图中的内存中,并转储为dumpsys命令。这也解释了为什么目录层次结构搜索未显示任何带有gps信息的文件。
如果您想以更标准的格式获取此信息,则需要采用该应用程序的路线,并选择类似这样的东西。该应用程序将信息导出到GPS或KML文件中,您可以将其输入基于地理的应用程序中。
PS:这同样适用于非root用户的设备。
adb shell
,Last Known Locations
即使我手动启用GPS ,信息也始终为空。
adb shell dumpsys location > dumpsys.txt
将结果输出到文件。