步数计数器传感器在创建并恢复活动后返回空值(Kotlin)

问题描述 投票:0回答:1

当恢复和创建活动时,我的计步器始终返回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))
    }
android kotlin accelerometer sensor
1个回答
0
投票

如果getDefaultSensor返回null,则该设备没有这样的传感器。如果可能,您需要使用其他设备或更改仿真器设置(如果支持)。

© www.soinside.com 2019 - 2024. All rights reserved.