🔋 Battery
Monitor stanu baterii z callbackami i integracją z reklamami.
Przegląd
Moduł Battery pozwala dostosować zachowanie aplikacji do stanu baterii:
- Mniej reklam przy niskim poziomie baterii
- Oszczędzanie zasobów
- Powiadomienia o niskim stanie
- Wykrywanie ładowania
Podstawowe użycie
Sprawdzenie stanu
// Poziom baterii (0-100)
val level = ADict.Battery.getLevel()
// Czy ładuje się
val isCharging = ADict.Battery.isCharging()
// Czy niski poziom
val isLow = ADict.Battery.isLowBattery()
// Czy krytycznie niski
val isCritical = ADict.Battery.isCriticalBattery()
// Tryb oszczędzania baterii (systemowy)
val powerSave = ADict.Battery.isPowerSaveMode()
// Pełny stan
val state = ADict.Battery.getState()
Log.d("Battery", """
Poziom: ${state.level}%
Ładowanie: ${state.isCharging}
Typ ładowania: ${state.chargingType}
Temperatura: ${state.temperature}°C
Zdrowie: ${state.health}
""")
Konfiguracja
ADict.Battery.configure(
lowBatteryThreshold = 20, // Próg "niskiej" baterii (domyślnie 15%)
criticalBatteryThreshold = 10, // Próg "krytycznej" baterii (domyślnie 5%)
skipAdsWhenLow = true // Automatycznie pomijaj reklamy przy niskiej baterii
)
Obserwowanie stanu (Flow)
lifecycleScope.launch {
ADict.Battery.batteryState.collect { state ->
updateBatteryUI(state.level, state.isCharging)
if (state.isLow) {
reducePowerConsumption()
}
if (state.isCritical) {
pauseBackgroundTasks()
}
}
}
Callbacks
Niska bateria
ADict.Battery.onLowBattery {
// Wywoływane gdy bateria spadnie poniżej progu
disableAnimations()
reduceAdFrequency()
showLowBatteryWarning()
}
Zmiana stanu ładowania
ADict.Battery.onChargingChanged { isCharging ->
if (isCharging) {
enableFullFeatures()
startBackgroundSync()
} else {
enablePowerSaveMode()
}
}
Zmiana poziomu
ADict.Battery.onLevelChanged { level ->
updateBatteryIndicator(level)
}
Integracja z reklamami
// Automatyczne sprawdzenie przed reklamą
fun showAd() {
if (ADict.Battery.shouldShowAd()) {
// Bateria OK - pokaż reklamę
ADict.ADS.showInterstitial(activity)
} else {
// Bateria za niska - pomiń
Log.d("Ads", "Ad skipped due to low battery")
continueWithoutAd()
}
}
// Lub konfiguracja globalna
ADict.Battery.configure(skipAdsWhenLow = true)
// Teraz ADict.Battery.shouldShowAd() zwróci false przy niskiej baterii
Typy ładowania
| ChargingType | Opis |
|---|---|
NONE |
Nie ładuje |
USB |
Ładowanie przez USB |
AC |
Ładowarka sieciowa |
WIRELESS |
Ładowanie bezprzewodowe |
Stan zdrowia baterii
| BatteryHealth | Opis |
|---|---|
GOOD |
Bateria w dobrym stanie |
OVERHEAT |
Przegrzanie |
DEAD |
Bateria martwa |
COLD |
Bateria za zimna |
Przykład: Adaptacyjna aplikacja
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Konfiguracja
ADict.Battery.configure(
lowBatteryThreshold = 20,
skipAdsWhenLow = true
)
// Callback na niską baterię
ADict.Battery.onLowBattery {
// Wyłącz animacje
window.setWindowAnimations(0)
// Zmniejsz częstotliwość odświeżania
setRefreshRate(30)
// Powiadom użytkownika
showSnackbar("Tryb oszczędzania baterii włączony")
}
// Obserwuj zmiany
lifecycleScope.launch {
ADict.Battery.batteryState.collect { state ->
// Dostosuj UI
when {
state.isCritical -> setTheme(R.style.Theme_PowerSave)
state.isLow -> reduceVisualEffects()
state.isCharging -> enableAllFeatures()
}
}
}
}
override fun onDestroy() {
super.onDestroy()
ADict.Battery.cleanup()
}
}