Как узнать температуру батареи в андроиде?
Получить температуру батареи на Android
Ответы (4)
Попробуй это:
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()
float temp = myBatInfoReceiver.get_temp();
String message = "Current " + BatteryManager.EXTRA_TEMPERATURE + " = " +
temp + Character.toString ((char) 176) + " C";
person
Ingo
schedule
06.10.2013
Чем это решение лучше, чем гораздо более короткое: stackoverflow.com/a/21356233/7483211
- person Cornelius Roemer; 31.12.2019
http://developer.android.com/reference/android/os/BatteryManager.html
public static final Строка EXTRA_TEMPERATURE
Дополнительно для ACTION_BATTERY_CHANGED: целое число, содержащее текущую температуру батареи.
person
Select0r
schedule
22.10.2010
О чем ACTION_BATTERY_CHANGED? Должен ли я обедать с намерением получить температуру? Должен ли я слушать какое-то общесистемное намерение?
- person Christian; 22.10.2010
Google — ваш друг: tutorialforandroid.com/2009/01 / Это руководство о том, как получить уровень заряда батареи, но вместе с ссылкой на документацию, которую я разместил, я уверен, что вы сможете понять, как получить температуру батареи, просто используйте температуру вместо уровня ...
- person Select0r; 22.10.2010
@Christian: Вам не нужно регистрировать настоящий
BroadcastReceiver
, если вы этого не хотите. Вызовите registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED))
, и он вернет последнее намерение, переданное для этого действия. Используйте дополнительные EXTRA_TEMPERATURE
, чтобы получить желаемое значение.
- person CommonsWare; 22.10.2010
Отличный пост, я сделал пример приложения для считывания температуры, и оно отлично работает, но я не могу не понять, что является единицей результата, вот мой пост (stackoverflow.com/questions/7716054/)
- person Lukap; 11.10.2011
они действительно должны сделать нулевую версию отдельным методом с другим именем, а не перегружать его значение. Спасибо за комментарий, хотя я и не подумала его там посмотреть.
- person Archimedes Trajano; 09.02.2012
Попробуйте прочитать статический int BatteryManager.EXTRA_TEMPERATURE.
person
GôTô
schedule
22.10.2010
Согласно документации EXTRA_TEMPERATURE является строкой. Это также статично и, следовательно, всегда будет температурой.
- person Christian; 22.10.2010
Верно, но в документе также говорится: «Дополнительно для ACTION_BATTERY_CHANGED», поэтому ваша статическая строка — это просто ключ для получения температуры от ACTION_BATTERY_CHANGED.
- person Select0r; 22.10.2010
person
schedule
Делает ли это ту же работу, что и принятый ответ? Если да, то почему он намного короче? Это все встроено? Было бы здорово иметь краткое описание. Спасибо!
- person Cornelius Roemer; 04.12.2019
@CorneliusRoemer, потому что это липкое намерение / липкая трансляция, для более подробной информации разработчик .android.com/training/monitoring-device-state/ stackoverflow.com/questions/3490913/what-is-a-sticky-broadcast
- person Mushahid Gillani; 14.04.2020