Reputation: 587
Is it possible to get the remaining battery time available from an Android phone?
Thanks.
Upvotes: 7
Views: 5848
Reputation: 2286
Got it! You can just catch information from dumpsys
but it requires ROOT permission. I Can execute command & get output with this:
fun execRoot(command: String): Pair<String, Boolean> {
return try {
val process = Runtime.getRuntime().exec(
arrayOf(
"su",
"-c",
"cd / && $command"
)
)
val reader = BufferedReader(InputStreamReader(process.inputStream))
var line: String?
var final = ""
while (reader.readLine().also { line = it } != null) {
final = "$final$line\n"
}
return Pair(final, true)
} catch (e: IOException) {
Pair("", false)
}
}
With this function I can catch output from dumpsys
.
You can get info about time remaining with this line:
var line = execRoot("dumpsys batterystats | grep -E \"Battery time remaining\"").first
It will return Battery time remaining: 1h 55m 41s 682ms
,
if have 0 percents - Battery time remaining: 0ms
, if phone is charging it will return nothing
Upvotes: 0
Reputation: 10349
You can get battery life with help of broadcast receiver by registering a receiver for action Intent.ACTION_BATTERY_CHANGED. My answer is key only, get information from Android Developers website.
By using the below statement in onReceive() method of BroadcastReceiver with above Intent action, you will get battery level currently available(e.g., 50%, 60%, etc.). But you can't estimate the time remaining, because some apps may consume more power. So i think battery level to time remaining conversion won't give correct result.
battery_level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
I hope it may help you.
Upvotes: 4
Reputation: 750
There are a few apps (battery widgets and the like) that estimate time remaining before the battery runs out. I'd guess they take current battery level and try to work out current drain based on processor usage, backlight level etc. In my experience they aren't too accurate but in principle if you get the algorithm right it should be possible.
Upvotes: 5