前面两篇文章介绍了 CarPowerManagementService 和 CarPowerManager 相关代码,他们具有对应关系。对于源码中所提供的功能和电源状态等不足以满足实际开发需求,这里我们列举一些实际项目中所遇到的变化。
对于电源状态实际开发中肯定会比源码中提供的要多,比如 OTA(升级)、REMOTE(远程)、DEVELOPER(开发者)等。对于只增加了电源状态的还是比较好修改的,如果是连电源状态的获取方式都变了,那整个电源管理模块基本就可以重做了。前面的电源状态主要通过 PowerHalService 返回电源的各种状态,如果这里使用车辆属性信号来获取和监听车辆状态呢?
@Override
public void init() {
……
registerListener();
}
这里调用信号监听方法。
private void registerListener() {
for (int propertyId : mCarPowerPropertyIds) {
mCarPropertyService.registerListener(propertyId, 0, mICarPropertyEventListener);
}
}
//监听回调
private final ICarPropertyEventListener mICarPropertyEventListener = new ICarPropertyEventListener.Stub() {
@Override