我如何使用ADB查看已监测的地理围栏列表?

9
我正在调试一个位置感知应用程序,我想获取系统当前正在监视的地理围栏列表--即使我只能看到自己包中的地理围栏。该代码使用GoogleApiClient和FusedLocation。
我尝试了adb shell dumpsys location,其中有一个“Geofences:”输出部分,但它总是空的。我认为这是用于旧版位置/地理围栏/接近度。
我还尝试了adb shell dumpsys,并在该文件中搜索地理围栏,但我没有找到任何内容。
这两个命令都是在启动应用程序并成功添加要监视的围栏后运行的。实现示例可以在此处找到:https://github.com/androidfu/GeofenceExample

1
由于地理围栏是Play服务的事情,而不是Android的事情,所以我并不惊讶**adb shell dumpsys无法帮助您。我还没有看过地理围栏API,但如果它允许您查询未完成的注册,您可以创建一个BroadcastReceiver来执行查询并将内容转储到LogCat。然后,在需要查看日志时,从adb**发出广播即可。如果您正在使用Android Studio,则可以将该内容放在debug/源集中,而不会使其混杂在发布版本中。 - CommonsWare
GeofenceApi 上没有“get”、“list”或类似的功能。真是太疯狂了。我还没有能够构建一个可以触发我的围栏接收器的意图(但我也没有很努力尝试);)感谢你的回复,Mark。 - Bill Mote
1
是的,谷歌有一种倾向于只写API(参见:NotificationManagerAlarmManager)。这非常令人恼火。 - CommonsWare
1个回答

1
我发现了一种从这个论坛中找到活动地理围栏的方法。

使用:

adb shell service dumpsys activity service com.google.android.gms/com.google.android.location.internal.GoogleLocationManagerService

由于Geofences是由Google Play服务API处理的,因此从该服务中可以找到活动的Geofences。

以下是可能对您感兴趣的输出部分:

查看按包分组注册的地理围栏:

Geofencer State:
Registered geofences:
Active Geofences:
    Package: com.google.android.gms  Tag: geotimezone, count: 4
        Geofence[CIRCLE id:time-zone-00e3f64-2 transitions:1 0.000000, 00.332665 10001260m, resp=900s, dwell=-1ms, @-1] it=5, d=UNKNOWN ? com.google.android.gms
        Geofence[CIRCLE id:time-zone-00e3f64-3 transitions:1 00.170901, 00.000000 10001260m, resp=900s, dwell=-1ms, @-1] it=5, d=UNKNOWN ? com.google.android.gms
        Geofence[CIRCLE id:time-zone-00e3f64-1 transitions:1 -00.209155, -00.000000 10001260m, resp=900s, dwell=-1ms, @-1] it=5, d=UNKNOWN ? com.google.android.gms
        Geofence[CIRCLE id:time-zone-00e3f64-0 transitions:1 0.000000, -161.714795 10001260m, resp=900s, dwell=-1ms, @-1] it=5, d=UNKNOWN ? com.google.android.gms
...

计数器(记录特定地理围栏的活动次数):

Counters:
  locationRequests: 2
  locationReceived: 0
  sentinelFenceUpdatesNonChre: 0
  sentinelFenceUpdatesChre: 0
  geofenceCountMaximum: 8

  com.google.android.gms:geotimezone:
    addGeofenceRequests: 1
    removeGeofenceRequests: 0
    geofenceEnters: 0
    geofenceExits: 0
    geofenceDwells: 0
    geofenceCountMaximum: 4
    transition/initial(1/5): 8

这个特定活动的sysdump输出内容还有很多,但我只提取了我认为与具备地理围栏功能的应用程序调试最相关的部分。

如果你认为有必要,你也可以使用dumpsys ... | grep 来筛选你想要的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接