Open
Conversation
The current Android battery temperature parsing looks a bit too broad and can pick up unrelated numeric values from `dumpsys battery` output.
Today it uses:
```js
dumpsys battery | grep temperature | grep -Eo '[0-9]{1,3}'
```
That works only if the output contains a single relevant temperature match. On at least one real device I tested (Samsung A16 / Android 16), dumpsys battery returns both the expected battery field and additional log-style lines that also contain temperature, for example:
```
temperature: 242
03-23 14:19:54.299 Sending ACTION_BATTERY_CHANGED: ... temperature: 293, ...
03-23 14:27:46.675 Sending ACTION_BATTERY_CHANGED: ... temperature: 281, ...
```
With the current implementation, those extra matches can make the parser extract multiple unrelated numbers instead of the actual battery temperature field, which can then lead to invalid numeric values and downstream NaN warnings.
I’d suggest narrowing the parsing to the real temperature: field only, for example:
```js
async getTemperature() {
const output = await this._runCommandAndGet(
`dumpsys battery | awk '/^ *temperature:/ { print $2; exit }'`
);
const temperature = Number(output.trim());
return Number.isFinite(temperature) ? temperature / 10 : undefined;
}```
Why this looks safer:
• matches only the actual battery temperature line
• avoids unrelated numbers from additional output
• preserves the existing / 10 conversion, which is correct for Android battery temperature values
• returns undefined instead of propagating invalid values
This should make Android battery temperature collection more robust across vendor-specific dumpsys battery output formats.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The current Android battery temperature parsing looks a bit too broad and can pick up unrelated numeric values from
dumpsys batteryoutput.Today it uses:
That works only if the output contains a single relevant temperature match. On at least one real device I tested (Samsung A16 / Android 16), dumpsys battery returns both the expected battery field and additional log-style lines that also contain temperature, for example:
With the current implementation, those extra matches can make the parser extract multiple unrelated numbers instead of the actual battery temperature field, which can then lead to invalid numeric values and downstream NaN warnings.
I’d suggest narrowing the parsing to the real temperature: field only, for example:
Why this looks safer: