Я выполняю цикл каждую секунду, чтобы получить ток батареи устройства в сопрограмме. Но на некоторых устройствах выдается исключение DeadSystemException.
мой код
Я выполняю цикл каждую секунду, чтобы получить ток батареи устройства в сопрограмме. Но на некоторых устройствах выдается исключение DeadSystemException. мой код [code] lifecycleScope.launch(Dispatchers.IO) { while (true) { currentNow = try { batteryManager?.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_NOW) ?: 1 } catch (_: DeadSystemException) { 1 }
val curValue = limitDigits(currentNow) val cur = "$curValue mA" val cur1 = "$batteryCur : $cur" val power = (curValue.toInt() * batteryVoltage) / 1000000.0 val powerDis = "%.2f".format(power) + " W" val powerDisTop = "$batteryPow : $powerDis" withContext(Dispatchers.Main) { txtBatteryCurrentDis.text = cur txtBatteryCurrentTop.text = cur1 txtBatteryPowerDis.text = powerDis txtBatteryPowerTop.text = powerDisTop } delay(1000) } }
private fun limitDigits(n: Int): String { val abs = abs(n) var tempValue = abs.toString() var absoluteValueFinal = abs try { absoluteValueFinal = if (isCharging) absoluteValueFinal else absoluteValueFinal * -1 if (tempValue.length >= 6) { absoluteValueFinal /= 1000 tempValue = abs(absoluteValueFinal).toString() if (tempValue.length >= 6) { absoluteValueFinal /= 1000 } }
} catch (ex: Exception) { ex.printStackTrace() } return if (n != 0 && n != Int.MIN_VALUE && n != Int.MAX_VALUE) { if (isBatteryFull) { return "0" } else { absoluteValueFinal.toString() } } else { "0" } } [/code] Исключением, которое я получаю в Crashlytics, является [code]Caused by: android.os.DeadSystemException: android.os.BatteryManager.queryProperty(BatteryManager.java:274) android.os.BatteryManager.getIntProperty(BatteryManager.java:290) com.ytheekshana.deviceinfo.fragments.TabBattery$onCreateView$2.invokeSuspend(TabBattery.kt:226) kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101) kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.java:113) kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89) kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.java:589) kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:823) kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:720) kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:707) [/code] Может ли кто-нибудь подсказать мне, как это исправить?
Я использую службу доступности в своем приложении Android, и она работает безупречно, пока не включаю Super Saver (который предоставлен в телефонах Xiaomi). Да, после того, как выключите Super Saver, моя служба доступности не включается...
Я пытаюсь опубликовать свое решение Microsoft Azure в Visual Studio 2017. В диспетчере конфигурации флажок «Развертывание» раскрывается, и я не могу поместить в него галочку. Я попытался перейти к инструментам> Параметр> Общие, и флажок для показа...
Я обновляю Android Studio от V 0,8,14 до V 1,0,1 (Build 135.1629389). Когда я нажимаю на значок SDK Manager, небольшое окно, в котором говорится, что он загружается, он загружается, чем ничего не происходит. Я установил свои переменные окружающей...
У меня есть следующая структура кода.
По сути, я инициализирую статический экземпляр структуры с помощью функции инициализации, а затем получаю ссылку на него с помощью функции получения . Проблема заключается в том, что когда я определяю метод...