W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
HarmonyOS 提供了車(chē)輛控制的能力接口,開(kāi)發(fā)者可以基于其能力接口,開(kāi)發(fā)相關(guān)的控制應(yīng)用。例如,通過(guò)應(yīng)用來(lái)控制車(chē)內(nèi)空調(diào)溫度、車(chē)窗開(kāi)合程度、雨刷器、左右后視鏡,查詢發(fā)動(dòng)機(jī)運(yùn)行狀況、轉(zhuǎn)速等。
說(shuō)明
車(chē)輛控制能力與車(chē)廠車(chē)型息息相關(guān),HarmonyOS 提供統(tǒng)一的標(biāo)準(zhǔn)接口,具體能力請(qǐng)參考各個(gè)車(chē)輛說(shuō)明。
接口名 | 描述 |
---|---|
connect() | 連接指定車(chē)機(jī)專(zhuān)有硬件服務(wù)。 |
disconnect() | 斷開(kāi)指定車(chē)機(jī)專(zhuān)有硬件服務(wù)。 |
isConnected() | 判斷指定車(chē)機(jī)專(zhuān)有硬件服務(wù)是否已連接。 |
接口名 | 描述 |
---|---|
getVehicleSignal() | 獲取座艙相關(guān)設(shè)備的信號(hào)值。 |
getVehicleSignalMultiAreas() | 獲取座艙指定信號(hào)的多區(qū)域值。 |
setVehicleActuator() | 設(shè)置車(chē)輛座艙信號(hào)值。 |
subscribeVehicleSignal() | 訂閱指定的座艙信號(hào)。 |
unsubscribeVCabinSignal() | 取消訂閱指定的座艙信號(hào)。 |
unsubscribeVCabinSignalAll() | 取消訂閱全部座艙信號(hào)。 |
接口名 | 描述 |
---|---|
getVehicleSignal() | 獲取車(chē)身相關(guān)設(shè)備的信號(hào)值。 |
getVehicleSignalMultiAreas() | 獲取車(chē)身指定信號(hào)的多區(qū)域值。 |
setVehicleActuator() | 設(shè)置車(chē)輛車(chē)身的信號(hào)值。 |
subscribeVehicleSignal() | 訂閱指定的車(chē)身信號(hào)。 |
unsubscribeVBodySignal() | 取消訂閱指定的車(chē)身信號(hào)。 |
unsubscribeVBodySignalAll() | 取消訂閱全部車(chē)身信號(hào)。 |
接口名 | 描述 |
---|---|
getVehicleSignal() | 獲取車(chē)輛底盤(pán)相關(guān)設(shè)備信號(hào)值。 |
getVehicleSignalMultiAreas() | 獲取車(chē)輛底盤(pán)指定信號(hào)的多區(qū)域值。 |
setVehicleActuator() | 設(shè)置車(chē)輛底盤(pán)相關(guān)設(shè)備的狀態(tài)值。 |
subscribeVehicleSignal() | 訂閱指定的車(chē)輛底盤(pán)信號(hào)。 |
unsubscribeVChassisSignal() | 取消訂閱指定的車(chē)輛底盤(pán)信號(hào)。 |
unsubscribeVChassisSignalAll() | 取消訂閱全部的車(chē)輛底盤(pán)信號(hào)。 |
接口名 | 描述 |
---|---|
getVehicleSignal() | 獲取車(chē)輛引擎相關(guān)設(shè)備信號(hào)值。 |
getVehicleSignalMultiAreas() | 獲取車(chē)輛引擎指定信號(hào)的多區(qū)域值。 |
setVehicleActuator() | 設(shè)置車(chē)輛引擎信號(hào)相關(guān)參數(shù)值。 |
subscribeVehicleSignal() | 訂閱指定的車(chē)輛引擎信號(hào)。 |
unsubscribeVDriveTrainSignal() | 取消訂閱指定的車(chē)輛引擎信號(hào)。 |
unsubscribeVDriveTrainSignalAll() | 取消訂閱全部車(chē)輛引擎信號(hào)。 |
OBD(on-board diagnostics)
相關(guān)接口,供三方開(kāi)發(fā)者開(kāi)發(fā)車(chē)輛健康監(jiān)測(cè)相關(guān)應(yīng)用,更好服務(wù)于大眾。
接口名 | 描述 |
---|---|
getVehicleSignal() | 獲取OBD相關(guān)實(shí)時(shí)信號(hào)值。 |
getVehicleSignalMultiAreas() | 獲取OBD指定信號(hào)的多區(qū)域值。 |
setVehicleActuator() | 設(shè)置OBD相關(guān)設(shè)備值。 |
subscribeVehicleSignal() | 訂閱指定的OBD設(shè)備信號(hào)。 |
unsubscribeVOBDSignal() | 取消訂閱指定的OBD設(shè)備信號(hào)。 |
unsubscribeVOBDSignalAll() | 取消訂閱全部的OBD設(shè)備信號(hào)。 |
接口名 | 描述 |
---|---|
getVehicleSize() | 獲取車(chē)輛尺寸,包括:長(zhǎng)、寬、高等信息。 |
getVehicleFuelType() | 獲取車(chē)輛燃油類(lèi)型。 |
getVehiclereFuelPosition() | 獲取燃油口位置信息。 |
getVehiclereTransmissionConfiguration() | 獲取變速器類(lèi)型。 |
getVehicleWheelDiameter() | 獲取輪胎尺寸。 |
getVehicleSteeringWheelConfiguration() | 獲取車(chē)輛方向盤(pán)配置信息。 |
getVehicleACRISS() | 獲取汽車(chē)租賃公司使用的 ACRISS 汽車(chē)分類(lèi)代碼。 |
getVehicleMcuVersion() | 獲取車(chē)輛 MCU 版本號(hào)。 |
getVehicleModel() | 獲取車(chē)輛制造型號(hào)。 |
getVehicleModelYear() | 獲取車(chē)輛生產(chǎn)時(shí)間。 |
getVehicleBrand() | 獲取車(chē)輛品牌信息。 |
getVehicleVIN() | 獲取車(chē)輛識(shí)別號(hào)。 |
getVehicleWMI() | 獲取世界制造廠識(shí)別代碼。 |
getDriverZone() | 獲取駕駛位信息。 |
// 獲取服務(wù)連接狀態(tài)變化
ServiceConnectionListener listener = new ServiceConnectionListener(){
@Override
public void onServiceConnected(VehicleServiceName serviceName) {
}
@Override
public void onServiceDisconnected(VehicleServiceName serviceName) {
}
};
// 連接指定車(chē)機(jī)專(zhuān)有硬件服務(wù)
try {
Vehicle.connect(VehicleServiceName.VEHICLECONTROL_SERVICE, listener);
Thread.sleep(2000);
return true;
} catch (IllegalStateException | InterruptedException e) {
Logger.info("Exception:" + e.toString());
return false;
}
// VehicleCabinManager類(lèi), 座艙天窗管理
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類(lèi), 獲取車(chē)身前擋風(fēng)玻璃雨刷器狀態(tài)
zoneId = VehicleZone.ZONE_FRONT;
String signal Value = VehicleBodyManager.getVehicleSignal(String.class, VehicleBodyManager.ID_BODY_WINDSHIELD_WIPING_STATUS, zoneId);
// VehicleChassisManager類(lèi), 獲取車(chē)輛輪胎寬度
zoneId = VehicleZone.ZONE_ROW1;
Short signalValue = VehicleChassisManager.getVehicleSignal(Short.class, VehicleChassisManager.ID_CHASSIS_AXLE_WHEELWIDTH, zoneId);
// VehicleDriveTrainManager類(lèi),設(shè)置車(chē)輛變速箱模式
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類(lèi),獲取車(chē)輛識(shí)別碼
String vin = VehicleConfigurationManager.getVehicleVIN();
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: