有没有一种好的方法在Android模拟器中模拟DetectedActivity.IN_VEHICLE?目前,我正在尝试通过telnet发送命令来使ActivityRecognitionApi检测事件。
sensor set acceleration {x}:{y}:{z}
geo fix {latitude} {longitude}
有没有一种好的方法在Android模拟器中模拟DetectedActivity.IN_VEHICLE?目前,我正在尝试通过telnet发送命令来使ActivityRecognitionApi检测事件。
sensor set acceleration {x}:{y}:{z}
geo fix {latitude} {longitude}
不幸的是,仅凭GPS运动无法触发活动检测。Google会考虑您的加速度计和其他仪器来计算最可能的活动,如果加速度计没有显示任何变化,它将始终显示您处于“静止”状态。
Google的官方位置测试文档说:
模拟位置对位置服务使用的活动识别算法没有影响。要了解有关活动识别的更多信息,请参见课程识别用户的当前活动。
不幸的是,该链接没有任何有关测试的信息。
我找到的唯一有效的解决方法是在Android模拟器上打开虚拟传感器菜单,并手动执行像偏航前后移动这样的操作(请参见截图,只需将“偏航”点向前向后拖动即可在屏幕上观察到手机的倾斜)。对我而言,当与GPS模拟配对时,这通常会导致在一段时间后检测到IN_VEHICLE
或UNKNOWN
(低概率)。
你可以使用adb连接到shell并手动模拟更改,如this answer中所讨论的那样。如果你像我一样使用的是Windows系统,你只需连接到shell然后输入命令获取服务的pid并直接运行kill命令。Android上的cut和sed版本不是标准的GNU版本,并且表现得足够奇怪,以至于我还没有找到如何用一行命令完成它。