在android上获取电池温度

在android上获取电池温度,android,sensors,android-sensors,temperature,Android,Sensors,Android Sensors,Temperature,如何在android中获取电池温度? 公共静态最终字符串额外温度 电池更改的额外操作:包含当前电池温度的整数 尝试读取静态int尝试以下操作: private class mBatInfoReceiver extends BroadcastReceiver{ int temp = 0; float get_temp(){ return (float)(temp / 10); } @Override public void onRe

如何在android中获取电池温度?

公共静态最终字符串额外温度

电池更改的额外操作:包含当前电池温度的整数

尝试读取静态int

尝试以下操作:

private class mBatInfoReceiver extends BroadcastReceiver{ 

    int temp = 0;

    float get_temp(){
        return (float)(temp / 10);
    }

    @Override 
    public void onReceive(Context arg0, Intent intent) {
        temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0);
    }

};
然后在变量声明中定义:

private mBatInfoReceiver myBatInfoReceiver;
在onCreate中:

    @Override 
    public void onCreate(Bundle b) { 
        super.onCreate(b);  
        setContentView(R.layout.activity_main);

        // ...
        // Add this

        myBatInfoReceiver = new mBatInfoReceiver();                                     

        this.registerReceiver(this.myBatInfoReceiver,
                              new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

     } 
稍后调用,例如在OnClickListener()中


改变电池的动作是什么?我必须吃午饭才能测得体温吗?谷歌是你的朋友:那篇教程是关于如何获取电池电量的,但我相信,结合我发布的文档链接,你可以知道如何获取电池温度,只需使用“温度”而不是“电量”…@Christian:如果你不想注册,你不需要注册实际的
广播接收器。调用
registerReceiver(null,新的IntentFilter(Intent.ACTION\u BATTERY\u CHANGED))
,它将返回为此操作广播的上一个Intent。使用
EXTRA\u TEMPERATURE
EXTRA来获得你想要的值。很棒的帖子,我做了一些示例应用来读取温度,效果很好,但我不知道结果的单位是什么。这里是我的帖子()他们真的应该让“null”版本成为一个具有不同名称的单独方法,而不是重载它的含义。谢谢你的评论,虽然我甚至没有想到去那里查。根据文档,额外的温度恰好是一个字符串。它也是静态的,因此总是“温度”。是的,但医生也说:“额外的动作电池改变”-所以你的静态字符串只是从动作电池改变温度的关键。这与公认的答案做同样的工作吗?如果是的话,为什么要短得多?所有内容都内联了吗?如果有一个快速的描述就好了。谢谢@CorneliusRoemer,因为它是一个粘性意图/粘性广播,要了解更多详细信息,此解决方案比短得多的解决方案更好:
    @Override 
    public void onCreate(Bundle b) { 
        super.onCreate(b);  
        setContentView(R.layout.activity_main);

        // ...
        // Add this

        myBatInfoReceiver = new mBatInfoReceiver();                                     

        this.registerReceiver(this.myBatInfoReceiver,
                              new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

     } 
float temp = myBatInfoReceiver.get_temp(); 

String message = "Current " + BatteryManager.EXTRA_TEMPERATURE + " = " +
                  temp +  Character.toString ((char) 176) + " C";
    public static String batteryTemperature(Context context)
    {
        Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));    
        float  temp   = ((float) intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0)) / 10;
        return String.valueOf(temp) + "*C";
    }