当恢复和创建活动时,我的计步器始终返回null,我绝对不知道为什么。 SensorEventListener在该类中实现。任何帮助,将不胜感激。
类变量:
private var sensorManager: SensorManager? = null
onCreate方法:
sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
onPause:
override fun onPause() {
walking = false
sensorManager?.unregisterListener(this)
mFusedLocationClient.removeLocationUpdates(mLocationCallback)
// saveSharedPreferences()
Log.i(TAG, getString(R.string.log_paused_activity))
super.onPause()
}
onResume:
override fun onResume() {
walking = true
val stepsSensor = sensorManager?.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)
if (stepsSensor == null) {
Log.i(TAG, getString(R.string.log_no_step_sensor))
} else {
// Register the listener to detect steps.
sensorManager?.registerListener(this,
stepsSensor, SensorManager.SENSOR_DELAY_UI)
Log.i(TAG, "Registered step counter")
}
Log.i(TAG, "Resumed activity")
getLastLocation()
requestNewLocationData()
super.onResume()
覆盖方法:
override fun onSensorChanged(event: SensorEvent) {
// If the user is walking, update the text view displaying steps and the steps variable.
if (walking) {
val stepsString: String = event.values[0].toString()
stepsTV.text = "" + stepsString
}
}
override fun onAccuracyChanged(p0: Sensor, p1: Int) {
Log.i(TAG, getString(R.string.log_on_accuracy_changed))
}
如果getDefaultSensor
返回null,则该设备没有这样的传感器。如果可能,您需要使用其他设备或更改仿真器设置(如果支持)。