简体   繁体   English

如何使用 SensorManager 获取环境空气温度?

[英]How to get ambient air temperature using SensorManager?

I am attempting to get ambient air temperature using SensorManager in Android.我正在尝试使用 Android 中的 SensorManager 获取环境气温。 In the code below, I a button click event and, for each button click, I would like to get the ambient air temperature in a textview.在下面的代码中,我有一个按钮单击事件,对于每次按钮单击,我想在文本视图中获取环境空气温度。 The code below returns the Sensor information only.下面的代码仅返回传感器信息。 What lines of code I should include to get the ambient air temperature?我应该包含哪些代码行来获取环境空气温度?

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) {

}
}

The sensor ambient temperature has only been present in the Galaxy S4, and Note 3. I am not aware of any other smartphone that has been released with this sensor.传感器环境温度仅出现在 Galaxy S4 和 Note 3 中。我不知道任何其他智能手机已发布此传感器。 It is very likely that you are not going to get any values from this sensor unless you have some of the phones I listed.除非您拥有我列出的某些手机,否则您很可能不会从该传感器获得任何值。 Our devices have Battery, and CPU thermometers, but their data is not meant to be used as the data from an ambient thermometer.我们的设备有电池和 CPU 温度计,但它们的数据不能用作环境温度计的数据。

You receive sensor event values in the onsensorchanged function.您在 onsensorchanged 函数中接收传感器事件值。 You were missing to register a listener for the sensor, and to retrieve the data from the onsensorchanged function.您没有为传感器注册一个监听器,并从 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) {

    }


}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM