鸿蒙OS 开发ADAS相关应用
场景介绍
通常在汽车使用过程中,驾驶员希望通过显示、声音、预警、故障告警等方式感知行车危险或规划行驶路线,因此 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;
}