Я пытаюсь отобразить показания нескольких датчиков на экране (акселерометр, магнитометр и т. Д.) В отдельной строке текста. Я могу изменить текст на экране для одного типа датчика (акселерометр), но не для другого датчика.
Я зарегистрировал оба датчика как Слушатели, но не знаю, как обновить каждый из них отдельно в функции onSensorChanged.
package com.example.sensorlistener_kotlin
import android.annotation.SuppressLint
import android.content.Context
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity(), SensorEventListener {
lateinit var sensorManager: SensorManager
override fun onAccuracyChanged(p0: Sensor?, p1: Int) {
}
@SuppressLint("SetTextI18n")
override fun onSensorChanged(event: SensorEvent?) {
label_accelerometerX.text = "X = ${event!!.values[0]}"
label_accelerometerY.text = "Y = ${event.values[1]}"
label_accelerometerZ.text = "Z = ${event.values[2]}"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
sensorManager.registerListener(
this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL
)
/* sensorManager.registerListener(
this,
sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
SensorManager.SENSOR_DELAY_NORMAL
)*/
}
}
В качестве конечного результата я хочу отобразить компоненты X, Y, Z акселерометра, магнитометра и гироскопа на отдельной строке следующим образом:
АкселерометрX
АкселерометрY
Акселерометр Z
МагнитометрX
МагнитометрY
МагнитометрZ
Гироскоп
Гироскоп1023 *
GyroZ