树叶云鸿蒙OS教程:鸿蒙OS 开发车辆控制应用

场景介绍

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

说明

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

接口说明

  • 车机专有硬件服务连接类 Vehicle,支持车机专有硬件所有服务连接能力,同时携带自动重试机制。当车机专有硬件服务连接或者断开时,支持开发者实现自定义回调,具体开放能力如下:
接口名描述
connect()连接指定车机专有硬件服务。
disconnect()断开指定车机专有硬件服务。
isConnected()判断指定车机专有硬件服务是否已连接。
  • 车辆座舱管理类 VehicleCabinManager,提供了车辆座舱信号访问控制方法,例如车门、空调。开发者可以通过定义的车辆信号标识来获取或者设置对应的信号值,完成对车辆座舱的控制,具体开放能力如下:
接口名描述
getVehicleSignal()获取座舱相关设备的信号值。
getVehicleSignalMultiAreas()获取座舱指定信号的多区域值。
setVehicleActuator()设置车辆座舱信号值。
subscribeVehicleSignal()订阅指定的座舱信号。
unsubscribeVCabinSignal()取消订阅指定的座舱信号。
unsubscribeVCabinSignalAll()取消订阅全部座舱信号。
  • 车辆车身管理类 VehicleBodyManager,提供了车辆车身设备控制相关的方法,例如雨刷器、挡风玻璃、清洁剂、车灯、引擎盖、行李箱等设备控制信息,具体开放能力如下:
接口名描述
getVehicleSignal()获取车身相关设备的信号值。
getVehicleSignalMultiAreas()获取车身指定信号的多区域值。
setVehicleActuator()设置车辆车身的信号值。
subscribeVehicleSignal()订阅指定的车身信号。
unsubscribeVBodySignal()取消订阅指定的车身信号。
unsubscribeVBodySignalAll()取消订阅全部车身信号。
  • 车辆底盘管理类 VehicleChassisManager,提供了车辆底盘设备控制相关的方法,例如获取车辆重量、轴距、方向盘转向角度等。具体开放能力如下:
接口名描述
getVehicleSignal()获取车辆底盘相关设备信号值。
getVehicleSignalMultiAreas()获取车辆底盘指定信号的多区域值。
setVehicleActuator()设置车辆底盘相关设备的状态值。
subscribeVehicleSignal()订阅指定的车辆底盘信号。
unsubscribeVChassisSignal()取消订阅指定的车辆底盘信号。
unsubscribeVChassisSignalAll()取消订阅全部的车辆底盘信号。
  • 车辆引擎管理类 VehicleDriveTrainManager,提供了车辆引擎相关控制方法,例如控制变速箱模式,获取发动机转速等,具体开放能力如下:
接口名描述
getVehicleSignal()获取车辆引擎相关设备信号值。
getVehicleSignalMultiAreas()获取车辆引擎指定信号的多区域值。
setVehicleActuator()设置车辆引擎信号相关参数值。
subscribeVehicleSignal()订阅指定的车辆引擎信号。
unsubscribeVDriveTrainSignal()取消订阅指定的车辆引擎信号。
unsubscribeVDriveTrainSignalAll()取消订阅全部车辆引擎信号。
  • 通常在汽车使用过程中,驾驶员需要实时了解车辆的健康状态,从而判断车辆是那个部位出现故障,因此 HarmonyOS 提供了

OBD(on-board diagnostics)

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

接口名描述
getVehicleSignal()获取OBD相关实时信号值。
getVehicleSignalMultiAreas()获取OBD指定信号的多区域值。
setVehicleActuator()设置OBD相关设备值。
subscribeVehicleSignal()订阅指定的OBD设备信号。
unsubscribeVOBDSignal()取消订阅指定的OBD设备信号。
unsubscribeVOBDSignalAll()取消订阅全部的OBD设备信号。
  • 车辆配置属性管理类 VehicleConfigurationManager,提供了车辆静态属性信息查询接口,例如车辆燃油类型,车辆外观尺寸等基本属性信息,具体开放能力如下:
接口名描述
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();

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/160373.html<

(0)
管理的头像管理
上一篇2025-03-17 17:49
下一篇 2025-03-17 17:51

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注