как поставить проверку уровня заряда батареи в андроид студии - PullRequest
0 голосов
/ 02 ноября 2019

Я никогда не делал ничего, связанного с батареей. Итак, я совершенно новичок в этом. У меня есть приложение в моем приложении, через которое я получаю и отправляю сообщения и выполняю определенные задачи. Теперь одна из моих задач - проверить, если уровень заряда батареи ниже 20% или 15%, выполнить какую-то задачу. Я не знаю, как поставить эту проверку :( в моем файле трансляции. Заранее спасибо за помощь:).

Обновление моего вопроса: До сих пор я делал это до сих пор

public class BatteryBroadcastReceiver extends BroadcastReceiver {

DatabaseHelper db;

@Override
public void onReceive(Context context, Intent intent) {

    db = new DatabaseHelper(context);
    String cont1 = db.usercontact().toString();

    String action = intent.getAction();
    if (action != null && action.equals(Intent.ACTION_BATTERY_CHANGED)) {

        int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,-1);
        int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE,-1);
        int percentage = level * 100 / scale;

        if(percentage <=  20){
           // doing something like getting location
        }
    }
}

Я зарегистрировал свою трансляцию в активности:

public class Battery extends AppCompatActivity {

private BatteryBroadcastReceiver batteryReceiver = new BatteryBroadcastReceiver();
private IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_auto_location);


}

@Override
protected void onResume(){
    super.onResume();
    registerReceiver(batteryReceiver,intentFilter);
}

@Override
protected void onPause(){
    unregisterReceiver(batteryReceiver);
    super.onPause();
}

}

Этот общий фрагмент кода работает нормально, но он ограничивает меня только этой деятельностью (может быть, потому что трансляция зарегистрированав этой деятельности). Как и до тех пор, пока эта активность остается открытой, я могу выполнять какую-то задачу, но когда я ее закрываю, когда батарея разряжается, она не выполняет никаких задач. Теперь я не знаю, что делать. У меня есть другие действия в моем приложении, и я хочу, чтобы оно работало, даже когда я не в этом действии. Является ли это возможным ?

1 Ответ

0 голосов
/ 02 ноября 2019

Просмотрите эту документацию для получения дополнительной информации: https://developer.android.com/training/monitoring-device-state/battery-monitoring

Раздел на странице, который может вам помочь:

"Вы не можете легко постоянно следить за состоянием батареи, но выне нужно.

Вообще говоря, воздействие постоянного мониторинга уровня заряда батареи оказывает большее влияние на батарею, чем нормальное поведение вашего приложения, поэтому рекомендуется отслеживать только значительные изменения уровня заряда батареи, особеннокогда устройство входит в состояние низкого заряда батареи или выходит из него.

Фрагмент нижеприведенного манифеста извлекается из фильтрующего элемента намерения в приемнике вещания. Приемник срабатывает всякий раз, когда батарея устройства разряжается или выходит из низкого состояния при прослушивании. для ACTION_BATTERY_LOW и ACTION_BATTERY_OKAY.

<receiver android:name=".BatteryLevelReceiver">
<intent-filter>
  <action android:name="android.intent.action.ACTION_BATTERY_LOW"/>
  <action android:name="android.intent.action.ACTION_BATTERY_OKAY"/>
  </intent-filter>
</receiver>

"

Обновление: попробуйте использовать следующий код в файле широковещания:

int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

float batteryPct = level / (float)scale;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...