簡體   English   中英

如何使用 SensorManager 獲取環境空氣溫度?

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

我正在嘗試使用 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) {

    }


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM