java - 在每个设备上,java BATTERY_PROPERTY_CURRENT_NOW不工作 什么是替代方案?

63 2

我的应用使用 BatteryManager.BATTERY_PROPERTY_CURRENT_NOW 来获取设备的电池电流:


BatteryManager batteryManager = (BatteryManager) context.getSystemService(Context.BATTERY_SERVICE);


int current = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_NOW), context);



但是,它在三星Galaxy Tab A上不起作用。 它只返回 0.

其他应用可以显示该设备上的电流。 它们是怎么做到的? 我的方法有什么替代方法?

时间:

123 0

从你的问题("返回 0") 请查看getIntProperty上的文档: https://developer.android.com/reference/android/os/BatteryManager#getIntProperty(int)

如果不支持该属性或存在任何其他错误,则返回

( a ) 如果 targetSdkVersion <VERSION_CODES.P 为 0,则为

或者

( b ) 如果 targetSdkVersion> = VERSION_CODES.P.,则为 Integer.MIN_VALUE

97 1

使用这里方法:


int getBatteryPercent(Context context) {


 Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));


 if (intent!= null) {


 int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);


 int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);


 return level * 100/scale;


 }


 return 0;


}



原作者:
114 2

你可以使用 ACTION_BATTERY_CHANGED Intent 设置当前电池电平( 设置 dynamicallywith Context.registerReceiver(). )


public class Main extends Activity {


 private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){


 @Override


 public void onReceive(Context ctxt, Intent intent) {


 int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);


 }


 };



 @Override


 public void onCreate(Bundle SavedInstanceStat) {


 super.onCreate(SavedInstanceStat);


 setContentView(R.layout.main);


 this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));


 }


}



141 3

尝试这个:


BatteryManager batteryManager = (BatteryManager) context.getSystemService(Context.BATTERY_SERVICE);



 int current = batteryManager.getIntProperty(BatteryManager.EXTRA_LEVEL), context)



...