Android CarPropertyService 是一个用于与车辆系统通信的服务。它是 Android Auto 中的一个重要组件,绝大部分与车辆硬件功能相关联的属性,如空调、座舱功能、车辆传感器等都是通过 CarPropertyService 来读取或者设置的。
CarPropertyManager 是 CarPropertyService 在客户端的代理,通过 CarPropertyManager 提供的 API,可以设置和获取车辆各个属性的状态。在 Android 10 中,它变成了车辆属性的主要 API,并允许任何运行在 Android Automotive OS 上的应用进行调用。
关于属性的获取,在 CarPropertyManager 中除了有 getProperty 方法之外,还有 getBooleanProperty、getIntProperty 等这样明确属性类型的获取方法,这些方法的最后实现还是对 getProperty 方法的封装。
/**
* 返回整数属性的值
*
* 这个方法可能需要几秒钟才能完成,所以它需要在非主线程中调用。
* @param prop 要获取属性的ID
* @param area 要获取属性的区域
*/
public int getIntProperty(int prop, int area) {
checkSupportedProperty(prop);
//最后还是调用的getProperty方法
CarPropertyValue<Integer> carProp = getProperty(Integer.class, prop, area);
return carProp != null ? carProp.getValue() : 0;
}