Выполнить кусок кода на определенном уровне заряда батареи в Android
Я ищу способ выполнения фрагмента кода в моем приложении Android, когда время работы телефона от батареи достигает 10%. Кто-нибудь сможет указать мне правильное направление, как это сделать?
3 ответа
Напишите один приемник для получения уровня заряда батареи следующим образом:
public class BatteryReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
if (level < 10) {
// Write your code here
}
}
}
Написать один сервис:
public class BatteryService extends Service {
private BatteryReceiver receiver;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
receiver = new BatteryReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(receiver, filter);
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
}
Зарегистрируйте эту услугу в своем файле манифеста следующим образом:
<service android:name="com.example.testandroid.BatteryService" >
</service>
затем запустите службу в первой активности достаточно.
Получить уровень заряда батареи в процентах
Intent batteryIntent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
float levelPert;
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
// Error checking that probably isn't needed but I added just in case.
if(level == -1 || scale == -1) {
levelPert = 50.0f;
}
levelPert = ((float)level / (float)scale) * 100.0f;
PS Как уже упоминалось в документации, BatteryManager не работает, поэтому нет необходимости добавлять декларацию манифеста.
Вы можете прочитать больше о получении сведений о батарее здесь
С сайта developer.android.com:
Вы не можете легко контролировать состояние батареи, но вам это не нужно.
Вообще говоря, влияние постоянного мониторинга уровня заряда батареи оказывает большее влияние на батарею, чем нормальное поведение вашего приложения, поэтому рекомендуется отслеживать только значительные изменения уровня заряда батареи, особенно когда устройство входит или выходит из состояния низкого заряда батареи.
По этой ссылке