如何在android项目中显示来自sensormanager类的信息?

时间:2015-05-03 07:18:28

标签: android android-activity sensor

我有一个温度传感器的传感器管理器,我使用了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) {
     }
 }

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

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

1 个答案:

答案 0 :(得分:1)

传感器测量的值通过onSensorChanged方法接收。这就是为什么你必须实现SensorEventListener并将你的类注册为监听器。只要传感器读取的值发生变化,就会调用它,这样你就可以做任何你需要做的事情来显示那里的数据,只要该类被注册为监听器,它就会不断更新。

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

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

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

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);
}