如何使用传感器管理器获取环境空气温度?



我正在尝试使用Android中的SensorManager获取环境空气温度。 在下面的代码中,我是一个按钮单击事件,对于每个按钮单击,我想在文本视图中获取环境空气温度。 下面的代码仅返回传感器信息。 我应该包含哪些代码行来获取环境空气温度?

public class MainActivity extends AppCompatActivity implements SensorEventListener {
private SensorManager sensorManager;
private float temperature;
//TextView txtT;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//thermometer = (Thermometer) findViewById(R.id.thermometer);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
final TextView txtT = (TextView) findViewById(R.id.textTemp);
Button getButton = (Button) findViewById(R.id.button_get);
getButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
txtT.setText(sensor.toString());
}
});
}

@Override
public void onSensorChanged(SensorEvent event) {
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}

传感器环境温度仅存在于Galaxy S4和Note 3中。我不知道任何其他智能手机都发布了此传感器。除非您拥有我列出的一些手机,否则您很可能不会从此传感器获得任何值。我们的设备具有电池和CPU温度计,但它们的数据不能用作环境温度计的数据。

在 onsensorchanged 函数中接收传感器事件值。缺少为传感器注册侦听器以及从 onsensorchanged 函数检索数据的功能。

public class MainActivity extends AppCompatActivity implements SensorEventListener {
private SensorManager sensorManager;
private float temperature;
//TextView txtT;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//thermometer = (Thermometer) findViewById(R.id.thermometer);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
//    final TextView txtT = (TextView) findViewById(R.id.textTemp);
//        Button getButton = (Button) findViewById(R.id.button_get);
//      getButton.setOnClickListener(new View.OnClickListener() {
//        @Override
//      public void onClick(View v) {

sensorManager.registerListener(this, sensorManager
.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE),
SensorManager.SENSOR_DELAY_FASTEST);
//      txtT.setText(sensor.toString());
//  }
//  });
}

@Override
public void onSensorChanged(SensorEvent event) {
temperature = event.values[0];
System.out.println("Temperature " + temperature);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}

}

最新更新