【发布时间】:2021-10-04 14:24:00
【问题描述】:
我想在用户移动/手机不静止时跟踪传感器数据(加速度计、陀螺仪)。
我能做的事情:
- 使用传感器监听器监听传感器数据
sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
val accelerometerSensor =
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
sensorManager.registerListener(
accSensor,
accelerometerSensor,
SensorManager.SENSOR_DELAY_NORMAL
)
- 运行始终在后台持续运行的前台服务,以跟踪传感器,即使该应用已从最近的应用中删除也是如此
serviceIntent = Intent(context, SensorService::class.java)
context.startForegroundService(serviceIntent)
- 在应用重新启动后立即使用广播侦听器启动服务,该侦听器侦听启动完成事件。
但我无法:
- 停止在设备停止移动时收集传感器数据的传感器服务。
- 当用户的设备开始移动并收集传感器数据时启动传感器(未运行)。
从系统接收运动开始和运动结束通知/回调的方式可能是什么,以便我们可以决定启动/结束前台服务。
【问题讨论】:
-
您的问题能否改写为“手机移动时是否会触发任何系统通知?”或者您的问题更像是“移动手机时会触发系统通知,但我所有尝试收听它的尝试都失败了”
-
但主要问题是“为什么?” meta.stackexchange.com/questions/66377/what-is-the-xy-problem 为什么需要这个?例如 - 为了节省电池......那么你可能走错了路。
-
@x00 我喜欢相信第一个,但如果我没有正确执行它也可能是第二个。
-
你有什么建议可以节省电池而不是一直显示通知(这会惹恼用户)。但是这两种情况都有几乎相同的解决方案。现在我的好奇心是,您认为只有在用户移动时才能记录传感器(加速度计和磁力计)的更好方法是什么。
标签: java android kotlin android-service android-sensors