eWi*_*dII 3 android battery broadcastreceiver repeatingalarm
当我的重复警报广播器被调用时,我试图读取Android电池的状态我有以下设置:
public class RepeatingAlarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
// Acquire the make of the device
final String PhoneModel = android.os.Build.MODEL;
final String AndroidVersion = android.os.Build.VERSION.RELEASE;
// Grab the battery information
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
final float batteryPct = level / (float)scale;
}
}
Run Code Online (Sandbox Code Playgroud)
但我不明白它为什么要回归那个batteryPct = 1.这里有什么我想念的吗?我添加了基于Android Google页面的正确权限,但这似乎没有帮助.
你得到-1了两个level和scale.那是因为你可能试图ACTION_BATTERY_CHANGED在清单中广播.
ACTION_BATTERY_CHANGED是一个粘性意图,你不能在清单中注册接收器.请尝试以下方法
Intent i = new ContextWrapper(applicationContext).registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
// now you can get the level and scale from this intent variable
int level = i.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = i.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float battPct = level/(float)scale;
Run Code Online (Sandbox Code Playgroud)
你不会为这个意图设置一个接收器,只需使用上面提到的方式,无论你想使用它.
| 归档时间: |
|
| 查看次数: |
1017 次 |
| 最近记录: |