13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

创新互联鸿蒙OS教程:鸿蒙OS开发车辆控制应用

场景介绍

HarmonyOS 提供了车辆控制的能力接口,开发者可以基于其能力接口,开发相关的控制应用。例如,通过应用来控制车内空调温度、车窗开合程度、雨刷器、左右后视镜,查询发动机运行状况、转速等。

说明

车辆控制能力与车厂车型息息相关,HarmonyOS 提供统一的标准接口,具体能力请参考各个车辆说明。

接口说明

接口名 描述
connect() 连接指定车机专有硬件服务。
disconnect() 断开指定车机专有硬件服务。
isConnected() 判断指定车机专有硬件服务是否已连接。
接口名 描述
getVehicleSignal() 获取座舱相关设备的信号值。
getVehicleSignalMultiAreas() 获取座舱指定信号的多区域值。
setVehicleActuator() 设置车辆座舱信号值。
subscribeVehicleSignal() 订阅指定的座舱信号。
unsubscribeVCabinSignal() 取消订阅指定的座舱信号。
unsubscribeVCabinSignalAll() 取消订阅全部座舱信号。
接口名 描述
getVehicleSignal() 获取车身相关设备的信号值。
getVehicleSignalMultiAreas() 获取车身指定信号的多区域值。
setVehicleActuator() 设置车辆车身的信号值。
subscribeVehicleSignal() 订阅指定的车身信号。
unsubscribeVBodySignal() 取消订阅指定的车身信号。
unsubscribeVBodySignalAll() 取消订阅全部车身信号。
接口名 描述
getVehicleSignal() 获取车辆底盘相关设备信号值。
getVehicleSignalMultiAreas() 获取车辆底盘指定信号的多区域值。
setVehicleActuator() 设置车辆底盘相关设备的状态值。
subscribeVehicleSignal() 订阅指定的车辆底盘信号。
unsubscribeVChassisSignal() 取消订阅指定的车辆底盘信号。
unsubscribeVChassisSignalAll() 取消订阅全部的车辆底盘信号。
接口名 描述
getVehicleSignal() 获取车辆引擎相关设备信号值。
getVehicleSignalMultiAreas() 获取车辆引擎指定信号的多区域值。
setVehicleActuator() 设置车辆引擎信号相关参数值。
subscribeVehicleSignal() 订阅指定的车辆引擎信号。
unsubscribeVDriveTrainSignal() 取消订阅指定的车辆引擎信号。
unsubscribeVDriveTrainSignalAll() 取消订阅全部车辆引擎信号。

OBD(on-board diagnostics)

相关接口,供三方开发者开发车辆健康监测相关应用,更好服务于大众。

接口名 描述
getVehicleSignal() 获取OBD相关实时信号值。
getVehicleSignalMultiAreas() 获取OBD指定信号的多区域值。
setVehicleActuator() 设置OBD相关设备值。
subscribeVehicleSignal() 订阅指定的OBD设备信号。
unsubscribeVOBDSignal() 取消订阅指定的OBD设备信号。
unsubscribeVOBDSignalAll() 取消订阅全部的OBD设备信号。
接口名 描述
getVehicleSize() 获取车辆尺寸,包括:长、宽、高等信息。
getVehicleFuelType() 获取车辆燃油类型。
getVehiclereFuelPosition() 获取燃油口位置信息。
getVehiclereTransmissionConfiguration() 获取变速器类型。
getVehicleWheelDiameter() 获取轮胎尺寸。
getVehicleSteeringWheelConfiguration() 获取车辆方向盘配置信息。
getVehicleACRISS() 获取汽车租赁公司使用的 ACRISS 汽车分类代码。
getVehicleMcuVersion() 获取车辆 MCU 版本号。
getVehicleModel() 获取车辆制造型号。
getVehicleModelYear() 获取车辆生产时间。
getVehicleBrand() 获取车辆品牌信息。
getVehicleVIN() 获取车辆识别号。
getVehicleWMI() 获取世界制造厂识别代码。
getDriverZone() 获取驾驶位信息。

开发步骤

  1. 连接指定车机专有硬件服务。
   // 获取服务连接状态变化
   ServiceConnectionListener listener = new ServiceConnectionListener(){
       @Override
       public void onServiceConnected(VehicleServiceName serviceName) {
       }
       @Override
       public void onServiceDisconnected(VehicleServiceName serviceName) {
       }
   };
   // 连接指定车机专有硬件服务
   try {
       Vehicle.connect(VehicleServiceName.VEHICLECONTROL_SERVICE, listener);
       Thread.sleep(2000);
       return true;
   } catch (IllegalStateException | InterruptedException e) {
       Logger.info("Exception:" + e.toString());
       return false;
   }

  1. 根据不同管理入口类,调用对应接口。
   // VehicleCabinManager类, 座舱天窗管理
   String propId = VehicleCabinManager.ID_CABIN_SUNROOF_SWITCH;
   int zoneId = VehicleZone.ZONE_NONE;
   String value = "Inactive";
   VehicleActuatorCallback callback = new VehicleActuatorCallback() {
       @Override
       public void onErrorActuator(String propId, int zoneId, int outResult) {
       }
   };
   boolean result = false;
   try {
       VehicleCabinManager.setVehicleActuator(propId, zoneId, callback, value);
       result = true;
   } catch (RemoteException | IllegalArgumentException e) {
       result = false;
   }
   if (!result) {
       System.out.println(String.format("Set sunroof error: %d", result));
   }

    
   // VehicleBodyManager类, 获取车身前挡风玻璃雨刷器状态
   zoneId = VehicleZone.ZONE_FRONT;
   String signal Value = VehicleBodyManager.getVehicleSignal(String.class, VehicleBodyManager.ID_BODY_WINDSHIELD_WIPING_STATUS, zoneId);

    
   // VehicleChassisManager类, 获取车辆轮胎宽度
   zoneId = VehicleZone.ZONE_ROW1;
   Short signalValue = VehicleChassisManager.getVehicleSignal(Short.class, VehicleChassisManager.ID_CHASSIS_AXLE_WHEELWIDTH, zoneId);

    
   // VehicleDriveTrainManager类,设置车辆变速箱模式
   propId = VehicleDriveTrainManager.ID_DRIVETRAIN_TRANSMISSION_PERFORMANCEMODE;
   zoneId = VehicleZone.ZONE_NONE;
   String transmissionValue = "sport";
   VehicleActuatorCallback tmCallback = new VehicleActuatorCallback() {
       @Override
       public void onErrorActuator(String propId, int zoneId, int outResult) {
       }
   };
   try {
       VehicleDriveTrainManager.setVehicleActuator(propId, zoneId, tmCallback, transmissValue);
       result = true;
   } catch (RemoteException | IllegalArgumentException e) {
       result = false;
   }
   if(!result) {
       System.out.println(String.format("Set transmiss performance mode error: %d", result));
   }
   // VehicleConfigurationManager类,获取车辆识别码
   String vin = VehicleConfigurationManager.getVehicleVIN();

标题名称:创新互联鸿蒙OS教程:鸿蒙OS开发车辆控制应用
网站网址:http://cdbrznjsb.com/article/djeppss.html

其他资讯

让你的专属顾问为你服务