For Android application i need battery level accurate to the 2 decimal value. How can i get the battery level accurate to the two decimal value?
Asked
Active
Viewed 3,169 times
0
-
1You can't. Android does not give you this information. But even if you could, the sensors used in batteries are not accurate enough to do that. – Vladyslav Matviienko Aug 08 '18 at 07:00
-
1Possible duplicate of [Get battery level and state in Android](https://stackoverflow.com/questions/3291655/get-battery-level-and-state-in-android) – Vikasdeep Singh Aug 08 '18 at 07:07
1 Answers
1
Since API 21 its been possible to use the following to get current battery level as a percentage:
BatteryManager bm = (BatteryManager)getSystemService(BATTERY_SERVICE);
int batLevel = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
Alternatively, you can also use the following plugin for getting the battery stats for Android:
import com.robinpowered.react.battery.DeviceBatteryPackage; // <--- import
public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {
......
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModuleName("index.android")
.addPackage(new MainReactPackage())
.addPackage(new DeviceBatteryPackage()) // <------ add this line to yout MainActivity class
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(mReactInstanceManager, "AndroidRNSample", null);
setContentView(mReactRootView);
}
......
}
Or use this plugin for getting Battery stats for both Android and iOS
'use strict';
var React = require('react-native');
var BatteryManager = require('NativeModules').BatteryManager;
var {
AppRegistry,
StyleSheet,
Text,
View,
DeviceEventEmitter,
} = React;
var RCTBattery = React.createClass({
getInitialState: function() {
return {batteryLevel: null, charging:false};
},
onBatteryStatus: function(info){
this.setState({batteryLevel: info.level});
this.setState({charging: info.isPlugged});
},
componentDidMount: function(){
BatteryManager.updateBatteryLevel(function(info){
this._subscription = DeviceEventEmitter.addListener('BatteryStatus', this.onBatteryStatus);
this.setState({batteryLevel: info.level});
this.setState({charging: info.isPlugged});
}.bind(this));
},
componentWillUnmount: function(){
this._subscription.remove();
},
render: function() {
var chargingText;
if(this.state.charging){
chargingText =<Text style={styles.instructions}>Charging </Text>;
} else {
chargingText =<Text style={styles.instructions}>Not Charging </Text>;
}
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Battery Level {this.state.batteryLevel}
</Text>
{chargingText}
</View>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
AppRegistry.registerComponent('RCTBattery', () => RCTBattery);
I hope this helps.

Salman Khakwani
- 6,684
- 7
- 33
- 58