Sel*_*t0r 14

http://developer.android.com/reference/android/os/BatteryManager.html

public static final String EXTRA_TEMPERATURE
ACTION_BATTERY_CHANGED的额外信息:包含当前电池温度的整数.

  • @Christian:如果你不想,你不需要注册一个真正的`BroadcastReceiver`.调用`registerReceiver(null,new IntentFilter(Intent.ACTION_BATTERY_CHANGED))`,它将返回为此操作广播的最后一个Intent.使用额外的'EXTRA_TEMPERATURE`来获得您寻求的价值. (10认同)

Ing*_*ngo 7

试试这个:

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);
    }

};
Run Code Online (Sandbox Code Playgroud)

然后在您的变量声明中定义:

private mBatInfoReceiver myBatInfoReceiver;
Run Code Online (Sandbox Code Playgroud)

并在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));

     } 
Run Code Online (Sandbox Code Playgroud)

稍后调用例如OnClickListener()

float temp = myBatInfoReceiver.get_temp(); 

String message = "Current " + BatteryManager.EXTRA_TEMPERATURE + " = " +
                  temp +  Character.toString ((char) 176) + " C";
Run Code Online (Sandbox Code Playgroud)


XXX*_*XXX 6

    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";
    }
Run Code Online (Sandbox Code Playgroud)