Câu trả lời:
Hình như có một cách:
vị trí đổ vỏ adb> dumpsys.txt
Điều này sẽ cung cấp cho bạn một tập tin với tất cả các thông tin dịch vụ vị trí. Trong tập tin này tìm kiếm 'Last Known Locations'
và bạn sẽ thấy một cái gì đó như:
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}]}]
Tất nhiên, danh sách sẽ bao gồm một mục khác nếu bạn bật nhà cung cấp GPS trên thiết bị.
Đi theo mã android, tôi đã cố gắng tìm hiểu làm thế nào các ứng dụng có được vị trí khi họ sử dụng LocationManager.getLastKnownLocation (). Sau một chút theo dõi, tôi đã kết thúc với LocationManagerService tại đây . trong đó thực hiện getLastLocation và cũng là một hàm dump.
Các tọa độ không được lưu trữ trong bất kỳ tập tin như tôi có thể nói. Chúng được lưu trữ trong bộ nhớ trong một hashmap và được đổ cho lệnh dumpsys. Điều này cũng giải thích tại sao một tìm kiếm gia truyền thư mục không tiết lộ bất kỳ tập tin với thông tin gps.
Nếu bạn muốn thông tin này ở định dạng chuẩn hơn, bạn sẽ cần đi theo lộ trình ứng dụng và đi với một cái gì đó như thế này . Ứng dụng này xuất thông tin trong GPS hoặc tệp KML mà bạn có thể cung cấp cho các ứng dụng dựa trên địa lý.
PS: Điều này cũng hoạt động trên thiết bị không root.
adb shell
, Last Known Locations
thông tin luôn trống ngay cả khi tôi bật GPS theo cách thủ công.
adb shell dumpsys location > dumpsys.txt
để xuất kết quả ra tệp.