Android 广播接收机未刷新移动电池电源更换数据
我正在使用BroadCastReceiver显示电池电源的数据,电池电源通过该电源提供数据。我已经使用片段来显示数据。我能够获取数据并将其设置为必填字段,但在断开电源连接时不会刷新。如何解决此问题 电池碎片Android 广播接收机未刷新移动电池电源更换数据,android,broadcastreceiver,Android,Broadcastreceiver,我正在使用BroadCastReceiver显示电池电源的数据,电池电源通过该电源提供数据。我已经使用片段来显示数据。我能够获取数据并将其设置为必填字段,但在断开电源连接时不会刷新。如何解决此问题 电池碎片 public class BatteryFragment extends Fragment{ FragmentBatteryBinding fragmentBatteryBinding; BatteryFragmentVm batteryFragmentVm; Li
public class BatteryFragment extends Fragment{
FragmentBatteryBinding fragmentBatteryBinding;
BatteryFragmentVm batteryFragmentVm;
List<PojoMain> batteryData;
RecyclerAdapter recyclerDeviceAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
fragmentBatteryBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_battery, container, false);
batteryFragmentVm = new BatteryFragmentVm(getContext());
fragmentBatteryBinding.setBatteryVm(batteryFragmentVm);
retrieveBatteryData(getContext());
return fragmentBatteryBinding.getRoot();
}
//get Battery Power Source
public static String isPlugged(Context context) {
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
String powerSource = "";
if (plugged == BatteryManager.BATTERY_PLUGGED_AC) {
powerSource = "Plugged AC";
} else if (plugged == BatteryManager.BATTERY_PLUGGED_USB) {
powerSource = "Plugged USB";
} else if (plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS) {
powerSource = "PLugged Wireless";
} else if (plugged == BatteryManager.BATTERY_STATUS_DISCHARGING) {
powerSource = "Discharging";
} else {
powerSource = "status unknown";
}
return powerSource;
}
public void retrieveBatteryData(Context context) {
// batteryData.clear();
batteryData = new ArrayList<>();
batteryData.add(new PojoMain("Power Source", isPlugged(context)));
batteryFragmentVm.loadBatteryData(batteryData)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(pojoMains -> {
recyclerDeviceAdapter = new RecyclerAdapter(batteryData, getContext());
fragmentBatteryBinding.batteryRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
fragmentBatteryBinding.batteryRecyclerView.setAdapter(recyclerDeviceAdapter);
});
}
@Override
public void onResume() {
super.onResume();
}
}
公共类BatteryFragment扩展片段{
碎片电池绑定碎片电池绑定;
BatteryFragmentVm BatteryFragmentVm;
列出电池数据;
回收设备适配器回收设备适配器;
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
super.onCreateView(充气机、容器、保存状态);
fragmentBatteryBinding=数据绑定直到充气(充气机,右布局,电池碎片,容器,假);
batteryFragmentVm=新的batteryFragmentVm(getContext());
fragmentBatteryBinding.setBatteryVm(batteryFragmentVm);
retrieveBatteryData(getContext());
返回fragmentBatteryBinding.getRoot();
}
//获取电池电源
公共静态字符串isPluged(上下文){
Intent Intent=context.registerReceiver(空,新的IntentFilter(Intent.ACTION\u BATTERY\u CHANGED));
int plucked=intent.getIntExtra(BatteryManager.EXTRA_plucked,-1);
字符串powerSource=“”;
如果(已插电==电池管理器.电池\u已插电\u交流){
powerSource=“插入式交流”;
}否则如果(已插入==电池管理器。电池\u已插入\u USB){
powerSource=“插入USB”;
}else if(已插入==电池管理器。电池\u已插入\u无线){
powerSource=“插入式无线”;
}否则如果(堵塞==电池管理器.电池\u状态\u放电){
powerSource=“放电”;
}否则{
powerSource=“状态未知”;
}
返回电源;
}
公共void retrieveBatteryData(上下文){
//batteryData.clear();
batteryData=新的ArrayList();
add(新的PojoMain(“电源”,isplug(上下文));
batteryFragmentVm.loadBatteryData(电池数据)
.observeOn(AndroidSchedulers.mainThread())
.订阅(POJOMANS->{
recyclerDeviceAdapter=新的RecyclerAdapter(batteryData,getContext());
fragmentBatteryBinding.BatteryRecyclView.setLayoutManager(新的LinearLayoutManager(getContext());
fragmentBatteryBinding.BatteryRecyclView.setAdapter(回收设备适配器);
});
}
@凌驾
恢复时公开作废(){
super.onResume();
}
}
电池碎片VM
public class BatteryFragmentVm {
Context context;
public BatteryFragmentVm(Context context) {
this.context = context;
}
public Observable<List<PojoMain>> loadBatteryData(List<PojoMain> string) {
return Observable.just(string)
.subscribeOn(Schedulers.newThread());
}
}
公共类BatteryFragmentVm{
语境;
公共BatteryFragmentVm(上下文){
this.context=上下文;
}
公共可观察loadBatteryData(列表字符串){
返回可观察的。just(字符串)
.subscribeOn(Schedulers.newThread());
}
}
为什么接收到的数据不随电源的变化而变化
来源?如何解决这个问题
您如何注册
BroadcastReceiver
以获取电池更新?你在测试什么版本的Android?@davidwasser,我已经解决了,伙计。很高兴你解决了它。你应该回答你自己的问题,因为你的解决方案可能会帮助其他有类似问题的人,而且也会把这个问题从未回答的问题列表中去掉。@DavidWasser-ok-man。我会把答案贴出来。