鸿蒙OS开发文档 鸿蒙OS 开发ADAS相关应用

2024-02-25 开发教程 鸿蒙OS开发文档 匿名 2

场景介绍

通常在汽车使用过程中,驾驶员希望通过显示、声音、预警、故障告警等方式感知行车危险或规划行驶路线,因此 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;
}