阅读(3437) (9)

鸿蒙OS 开发ADAS相关应用

2020-09-17 10:42:54 更新

场景介绍

通常在汽车使用过程中,驾驶员希望通过显示、声音、预警、故障告警等方式感知行车危险或规划行驶路线,因此 HarmonyOS 提供了 ADAS 辅助交互相关的接口,供三方开发者开发 ADAS 设置、自动泊车等相关应用。

说明

该功能与具体的车厂车型相关,部分低配车型可能不具备该项功能。

接口说明

目前 ADAS 提供的功能主要有以下三类:

  • 驾驶辅助管理类 DrivingAssistManager,提供了驾驶辅助相关方法,例如设置前向/后向碰撞预警开关、设置盲点检测开关、设置导航目的地及导航路径等;
  • 公共信息管理类 InfoAssistManager,提供了 ADAS 公共信息管理的相关方法,例如获取障碍物信息、行车记录仪信息、车道线信息、驾驶员状态信息等;
  • 自主泊车管理类 ParkingAssistManager,提供了泊车控制的相关方法,例如启动泊车、暂停泊车、设置泊车车位、获取泊车状态等。
接口名 描述
byte[] getAdasSignal() 获取指定字节数组类型的驾驶辅助信号值。
<T> T getAdasSignal() 获取指定驾驶辅助信号值。
setAdasActuator() 设置指定驾驶辅助信号值。
sendAdasSignal() 发送指定字节数组类型的驾驶辅助信号请求信息。
subscribeAdasSignal() 订阅指定驾驶辅助信号。
subscribeBatchProperties() 批量订阅指定驾驶辅助信号。
unsubscribeAdasSignal() 取消订阅指定的驾驶辅助信号。
unsubscribeAdasSignalAll() 取消所有订阅的驾驶辅助信号。
接口名 描述
byte[] getAdasSignal() 获取指定字节数组类型的 Adas 信号值。
<T> T getAdasSignal 获取指定 Adas 信号值。
setAdasActuator() 设置指定 Adas 信号值。
sendAdasSignal() 发送指定字节数组类型的 Adas 信号请求信息。
subscribeAdasSignal() 订阅指定 Adas 信号。
subscribeBatchProperties() 批量订阅指定 Adas 信号。
unsubscribeAdasSignal() 取消订阅指定的 Adas 信号。
unsubscribeAdasSignalAll() 取消所有订阅的 Adas 信号。
接口名 描述
byte[] getAdasSignal() 获取指定字节数组类型泊车信号值。
<T> T getAdasSignal() 获取指定泊车信号值。
setAdasActuator() 设置指定泊车信号值。
sendAdasSignal() 发送指定字节数组类型泊车信号请求值。
subscribeAdasSignal() 订阅指定泊车信号。
subscribeBatchProperties() 批量订阅指定的泊车信号。
unsubscribeAdasSignal() 取消订阅指定的泊车信号。
unsubscribeAdasSignalAll() 取消所有订阅的泊车信号。

开发步骤

根据不同管理入口类,调对应接口。

// DrivingAssistManager类使用
boolean result = false;
try {
    Boolean signalValue = DrivingAssistManager.getAdasSignal(Boolean.class, DrivingAssistManager.ID_DRIVING_FCW_WARNING_SWITCH);
    result = true;
} catch (RemoteException | IllegalArgumentException | UnsupportedOperationException e) {
    result = false;
}

 
// ParkingAssistManager类使用
String propId = ParkingAssistManager.ID_PARKING_APA_FUNCTION_SWITCH;
Boolean value = true;
AdasActuatorCallback callback = new AdasActuatorCallback() {
    @Override
    public void onErrorActuator(String propId, int outResult) {}
};
boolean result = false;
try {
     ParkingAssistManager.setAdasActuator(propId, callback, value);
     result = true;
} catch (RemoteException | IllegalArgumentException | UnsupportedOperationException e) {
     result = false;
}
// InfoAssistManager类使用
boolean result = false;
byte[] request = {'q', 'w'};
try {
     byte[] response = InfoAssistManager.getAdasSignal(InfoAssistManager.ID_INFO_HDMINFO, request);
     result = true;
} catch (RemoteException | IllegalArgumentException | UnsupportedOperationException e) {
     result = false;
}