我尝试一些代码,但它不符合我的手机电池防爆同步:我的手机电池72%,但它始终显示100%或不会上下。此代码犯规请求的任何特殊权限
public class MainActivity extends AppCompatActivity {
private Context mContext;
private TextView mViewInfo;
private TextView mViewPercentage;
private ProgressBar mProgressBar;
private int mProgressStatus = 0;
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
mViewInfo.setText("Battery Scale : " + scale);
int level = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
mViewInfo.setText(mViewInfo.getText() + "\nBattery Level : " + level);
float percentage = level/ (float) scale;
mProgressStatus = (int)((percentage)*100);
mViewPercentage.setText("" + mProgressStatus + "%");
mViewInfo.setText(mViewInfo.getText() + "\nPercentage : " + mProgressStatus + "%");
mProgressBar.setProgress(mProgressStatus);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_ACTION_BAR);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = getApplicationContext();
IntentFilter iFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
mContext.registerReceiver(mBroadcastReceiver, iFilter);
mViewInfo = (TextView) findViewById(R.id.tv_info);
mViewPercentage = (TextView) findViewById(R.id.tv_percentage);
mProgressBar = (ProgressBar) findViewById(R.id.pb);
}
}
我希望我的代码将与手机电池有同步总是说所有的100%的假设是用电池同步
你的问题是由你的这部分代码引起的:
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
mViewInfo.setText("Battery Scale : " + scale);
int level = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
mViewInfo.setText(mViewInfo.getText() + "\nBattery Level : " + level);
float percentage = level/ (float) scale;
mProgressStatus = (int)((percentage)*100);
如果你发现,你会看到你使用intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
两者的规模和水平。
这意味着你得到的值完全相同,所以当你去尽你的level / (float) scale;
你几乎做NUM / NUM
计算,这将始终等于1。然后当你1 * 100
,它会始终等于100。
你需要做的是更换:
int level = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
有:
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);