如何在 android 项目中显示来自传感器管理器 class 的信息?

How can I display info from a sensormanager class in an android project?

我的温度传感器有一个传感器管理器,我使用了 android 存储库中的模板:

 public class SensorActivity extends Activity, implements SensorEventListener {
     private final SensorManager mSensorManager;
     private final Sensor mAccelerometer;

     public SensorActivity() {
         mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
         mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
     }

     protected void onResume() {
         super.onResume();
         mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
     }

     protected void onPause() {
         super.onPause();
         mSensorManager.unregisterListener(this);
     }

     public void onAccuracyChanged(Sensor sensor, int accuracy) {
     }

     public void onSensorChanged(SensorEvent event) {
     }
 }

但是用温度代替加速度计。

不幸的是,我不知道如何以我可以显示的形式将实际数字从这里获取到我的主要activity,最好是以不断更新的方式。

传感器测量的值是通过onSensorChanged方法接收的。这就是为什么您必须实施 SensorEventListener 并将 class 注册为侦听器的原因。只要传感器读取的值发生变化,就会调用此方法,因此您可以做任何需要做的事情来在其中显示数据,只要 class 注册为侦听器,它就会不断更新。

在您的情况下,您可能希望让您的 MainActivity(如果那是显示数据的地方)实现 SensorEventListener 接口并遵循与您发布的示例中使用的模式类似的模式。

使用 SensorEvent 参数将测量值(以及其他一些重要信息)传递给您。有关如何从给定对象中提取数据的更多详细信息,请查看 Documentation for the class.

如上面链接的文档中所述,测得的温度存储在值数组的第一个槽中,因此您可以像这样提取它

public void onSensorChanged(final SensorEvent event) {
    final float temperature = event.values[0];
    // Now that you have the temperature value, you can do 
    // whatever you want with it 
    this.doSomethingWithTemperatureValue(temperature);
}