PrzeglądOverview

Moduł Battery pozwala dostosować zachowanie aplikacji do stanu bateriiallows adjusting app behavior based on battery status:

Podstawowe użycieBasic Usage

Sprawdzenie stanuState check

// 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}
""")

KonfiguracjaConfiguration

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 stanuObserving State (Flow)

lifecycleScope.launch {
    ADict.Battery.batteryState.collect { state ->
        updateBatteryUI(state.level, state.isCharging)

        if (state.isLow) {
            reducePowerConsumption()
        }

        if (state.isCritical) {
            pauseBackgroundTasks()
        }
    }
}

CallbacksCallbacks

Niska bateriaLow Battery

ADict.Battery.onLowBattery {
    // Wywoływane gdy bateria spadnie poniżej progu
    disableAnimations()
    reduceAdFrequency()
    showLowBatteryWarning()
}

Zmiana stanu ładowaniaCharging State Change

ADict.Battery.onChargingChanged { isCharging ->
    if (isCharging) {
        enableFullFeatures()
        startBackgroundSync()
    } else {
        enablePowerSaveMode()
    }
}

Zmiana poziomuLevel Change

ADict.Battery.onLevelChanged { level ->
    updateBatteryIndicator(level)
}

IntegracjaIntegration 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

TypyTypes ładowania

ChargingType OpisDescription
NONE Nie ładujeNot charging
USB Ładowanie przez USBUSB charging
AC Ładowarka sieciowaAC charger
WIRELESS Ładowanie bezprzewodoweWireless charging

Stan zdrowia bateriiBattery Health

BatteryHealth OpisDescription
GOOD Bateria w dobrym stanieBattery in good condition
OVERHEAT PrzegrzanieOverheating
DEAD Bateria martwaDead battery
COLD Bateria za zimnaBattery too cold

PrzykładExample: Adaptacyjna aplikacjaAdaptive App

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()
    }
}