2010-10-22 24 views

risposta

13

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.

+0

Cosa si ACTION_BATTERY_CHANGED circa? Devo pranzare un intento per ottenere la temperatura? Devo ascoltare qualche intento del sistema? – Christian

+0

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

+10

@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

1

provare a leggere la static int BatteryManager.EXTRA_TEMPERATURE

+0

Secondo la documentazione EXTRA_TEMPERATURE sembra essere una stringa. È anche statico e quindi sarà sempre "temperatura". – Christian

+0

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

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

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"; 
4
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"; 
    } 
0

È 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