Почему мой BroadcastReceiver о состоянии батареи часто отображает всплывающие сообщения при подключении или отключении зAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой BroadcastReceiver о состоянии батареи часто отображает всплывающие сообщения при подключении или отключении з

Сообщение Anonymous »

Я реализовал BatteryStatusBroadcastReceiver в своем приложении для Android для отображения всплывающих сообщений, указывающих, заряжается или разряжается устройство. Однако я столкнулся с проблемой, из-за которой всплывающие сообщения отображаются часто каждый раз, когда я подключаюсь или отключите зарядное устройство. Я хочу, чтобы всплывающее сообщение отображалось только один раз, когда зарядное устройство подключено или отключено. Как я могу изменить свой код для достижения этой цели?
Я пытался выполнить поиск, но не смог найти решение. Ниже приведен код
class BatteryStatusBroadcastReceiver: BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {

val batteryState = intent?.getIntExtra(BatteryManager.EXTRA_STATUS,-1)

when(batteryState){
BatteryManager.BATTERY_STATUS_CHARGING, BatteryManager.BATTERY_STATUS_FULL -> {
Toast.makeText(context, "Charging", Toast.LENGTH_SHORT).show()
}
BatteryManager.BATTERY_STATUS_DISCHARGING, BatteryManager.BATTERY_STATUS_NOT_CHARGING -> {
Toast.makeText(context, "Discharging", Toast.LENGTH_SHORT).show()
}
}

}
}

Ниже приведен мой Класс активности, откуда я регистрирую свою трансляцию
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)

registerReceiver(BatteryStatusBroadcastReceiver(),
IntentFilter(Intent.ACTION_BATTERY_CHANGED)
)
}
}

ОБНОВЛЕНИЕ:
Я придумал подход ниже (он работает)
class BatteryStatusBroadcastReceiver: BroadcastReceiver() {
var isCharging = false
var isDischarging = false

override fun onReceive(context: Context?, intent: Intent?) {

val batteryState = intent?.getIntExtra(BatteryManager.EXTRA_STATUS,-1)

if((batteryState == BatteryManager.BATTERY_STATUS_CHARGING || batteryState == BatteryManager.BATTERY_STATUS_FULL) && !isCharging){
isCharging = true
isDischarging = false
Toast.makeText(context, "Charging", Toast.LENGTH_SHORT).show()
}

if((batteryState == BatteryManager.BATTERY_STATUS_DISCHARGING || batteryState == BatteryManager.BATTERY_STATUS_NOT_CHARGING) && !isDischarging){
isCharging = false
isDischarging = true
Toast.makeText(context, "Discharging", Toast.LENGTH_SHORT).show()
}

}
}


Подробнее здесь: https://stackoverflow.com/questions/784 ... uently-whe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»