android - 在屏幕上显示多个传感器读数
问题描述
我正在尝试在屏幕上以自己的文本行显示多个传感器读数(加速度计、磁力计等)。我可以为一种类型的传感器(加速度计)更改屏幕上的文本,但不能更改另一种传感器。
我将两个传感器都注册为侦听器,但不知道如何在 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
陀螺仪
陀螺仪
陀螺仪
解决方案
您需要检查 onsensorchanged 上的每个传感器事件:
if (sensorEvent.sensor.type == Sensor.TYPE_ACCELEROMETER) {
label_accelerometerX.text = sensorEvent.values[0]
...
}
if (sensorEvent.sensor.type == Sensor.TYPE_MAGNETOMETER) {
...
}
if (sensorEvent.sensor.type == Sensor.TYPE_GYROSCOPE) {
...
}
推荐阅读
- python - 你如何让不和谐的机器人来回响应?
- python - 有没有办法使用 parselmouth(python PRAAT 包装器)或其他 python 库来改变共振峰?
- java - 无法在最新版本的 Android 中通过 exoplayer 流式传输音频文件
- google-sheets - 如果我选择整个列,Google 表格中的过滤器会给我空白
- javascript - Javascript中的时钟未显示正确的时间
- python - Pandas Groupby 删除出现特定值组合的行
- android - 使用蜂窝网络从我的应用程序调用 Android 的 API 非常慢
- python - 使用 python 串行设置 RS232 引脚
- r - 基于 R 中的列表创建新的数据框
- c# - 使用 C# 循环遍历 XML 文档,如果满足条件,则替换值或节点