android 发送电量变化的广播实例
时间: 2023-10-31 12:05:20 浏览: 41
好的,以下是一个简单的 Android 发送电量变化广播的示例代码:
```java
public class BatteryBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) {
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
int batteryLevel = (int) Math.floor(level * 100 / (float) scale);
// 发送电量变化的广播
Intent batteryIntent = new Intent("com.example.BATTERY_LEVEL_CHANGED");
batteryIntent.putExtra("battery_level", batteryLevel);
context.sendBroadcast(batteryIntent);
}
}
}
```
在 AndroidManifest.xml 文件中注册该广播接收器:
```xml
<receiver android:name=".BatteryBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BATTERY_CHANGED" />
</intent-filter>
</receiver>
```
然后在你的应用程序中,可以通过注册该广播接收器,来监听电量变化的广播:
```java
public class MainActivity extends AppCompatActivity {
private BroadcastReceiver batteryBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.example.BATTERY_LEVEL_CHANGED")) {
int batteryLevel = intent.getIntExtra("battery_level", 0);
// 处理电量变化事件
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 注册电量变化的广播接收器
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.BATTERY_LEVEL_CHANGED");
registerReceiver(batteryBroadcastReceiver, intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 取消注册电量变化的广播接收器
unregisterReceiver(batteryBroadcastReceiver);
}
}
```
这样,当电量变化时,应用程序就会收到电量变化的广播,并且可以根据需要进行处理。