android - 如何在android中测量环境温度

标签 android temperature ambient

我想测量 Android 设备上的环境温度。但我的设备不包括温度计传感器。 我怎样才能测量它? 谢谢。

最佳答案

这是一个如何在 Android 中获取环境温度的基本示例:

import android.support.v7.app.AppCompatActivity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity implements SensorEventListener {

    private TextView temperaturelabel;
    private SensorManager mSensorManager;
    private Sensor mTemperature;
    private final static String NOT_SUPPORTED_MESSAGE = "Sorry, sensor not available for this device.";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        temperaturelabel = (TextView) findViewById(R.id.myTemp);
        mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.ICE_CREAM_SANDWICH){
            mTemperature= mSensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE); // requires API level 14.
        }
        if (mTemperature == null) {             
            temperaturelabel.setText(NOT_SUPPORTED_MESSAGE);
        }       
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

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

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


    @Override
    public void onSensorChanged(SensorEvent event) {
        float ambient_temperature = event.values[0];
        temperaturelabel.setText("Ambient Temperature:\n " + String.valueOf(ambient_temperature) + getResources().getString(R.string.celsius));     
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // Do something here if sensor accuracy changes.
    }
}

您可以从以下网址下载完整的示例: <强> https://github.com/Jorgesys/Android_Ambient_Temperature

关于android - 如何在android中测量环境温度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11987134/

相关文章:

android - Google Play游戏服务,取消发布,删除和重新开始

c# - 获取有关 Android 库的触摸信息

android - 为什么当可穿戴设备处于环境模式时不调用 onSensorChange

Android Wear - 如何(如果可能)使处理器在环境模式下保持唤醒状态?

wear-os - 加载 WearableActivity 时崩溃

android - 为什么要将 <u> 标签添加到我的 EditText 中?

Android:谷歌地图 Android API:授权失败

ruby - 来自 TestFirst.org 的 Ruby 中的温度类

c# - 如何使用 C# 从 Bios 获取 CPU 温度信息?

C编程-温度转换问题