Come si ottiene la temperatura della batteria in Android?Ottenere la temperatura della batteria su Android
risposta
http://developer.android.com/reference/android/os/BatteryManager.html
public static final String EXTRA_TEMPERATURE
supplementare per ACTION_BATTERY_CHANGED: intero contenente la temperatura della batteria.
provare a leggere la static int BatteryManager.EXTRA_TEMPERATURE
Secondo la documentazione EXTRA_TEMPERATURE sembra essere una stringa. È anche statico e quindi sarà sempre "temperatura". – Christian
Vero, ma il documento dice anche: "Extra per ACTION_BATTERY_CHANGED", quindi la stringa statica è solo la chiave per ottenere la temperatura da ACTION_BATTERY_CHANGED. – Select0r
TextView BatTemp;
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent)
{
// TODO Auto-generated method stub
int temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0);
};
@Override
public void onCreate(Bundle b)
{
super.onCreate(b);
setContentView(R.layout.activity_main);
BatTemp = (TextView) this.findViewById(R.id.textView8);
this.registerReceiver(this.mBatInfoReceiver,new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
Prova questa:
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);
}
};
poi definire con le dichiarazioni di variabili:
private mBatInfoReceiver myBatInfoReceiver;
e in 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));
}
poi chiama per esempio in un OnClickListener()
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";
}
È possibile ottenere temperatura della CPU da questa funzione: ottenere la temperatura della CPU da un dispositivo Android utilizzando il comando sys/class/thermal/temp
.
public float getCpuTemp() {
Process process;
try {
process = Runtime.getRuntime().exec("cat sys/class/thermal/thermal_zone0/temp");
process.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = reader.readLine();
float temp = Float.parseFloat(line)/1000.0f;
return temp;
} catch (Exception e) {
e.printStackTrace();
return 0.0f;
}
}
Nel mio succo di inviare richieste di pull: https://gist.github.com/sajadabasi/7d76379e82d51efd0a24e5829c3ce572
Cosa si ACTION_BATTERY_CHANGED circa? Devo pranzare un intento per ottenere la temperatura? Devo ascoltare qualche intento del sistema? – Christian
Google è tuo amico: http://www.tutorialforandroid.com/2009/01/getting-battery-information-on-android.html Quel tutorial parla di come ottenere il livello della batteria, ma insieme al link docs che ho postato , Sono sicuro che puoi capire come ottenere la temperatura della batteria, basta usare "temperatura" invece di "livello" ... – Select0r
@Christian: non è necessario registrare un vero 'BroadcastReceiver' se non si desidera a. Chiama 'registerReceiver (null, new IntentFilter (Intent.ACTION_BATTERY_CHANGED))', e restituirà l'ultimo Intent che è stato trasmesso per questa azione. Usa l'extra 'EXTRA_TEMPERATURE' per ottenere il valore che cerchi. – CommonsWare