獲取車機數(shù)據(jù)
使用getvehicle - data RPC請求獲取車輛數(shù)據(jù)役首。為了獲取數(shù)據(jù)绑咱,HMI級別必須是完整的爵嗅、有限的或背景趋艘。
每個汽車制造商決定它將公開哪些數(shù)據(jù)疲恢。請檢查OnPermissionsChange RPC通知,以查明您將在您的head單元中訪問哪些數(shù)據(jù)
注意:您可能只要求對您的appName可用的車輛數(shù)據(jù)瓷胧。這些將分別由每個OEM(.原始設(shè)備制造商)指定显拳。
Single Time Vehicle Data Retrieval單次車輛數(shù)據(jù)查詢
使用getvehicle數(shù)據(jù),我們可以在需要的情況下搓萧,一次詢問車輛數(shù)據(jù)萎攒。
GetVehicleData vdRequest = new GetVehicleData();
vdRequest.setPrndl(true);
vdRequest.setOnRPCResponseListener(new OnRPCResponseListener() {
@Override
public void onResponse(int correlationId, RPCResponse response) {
if(response.getSuccess()){
PRNDL prndl = ((GetVehicleDataResponse) response).getPrndl();
Log.i("SdlService", "PRNDL status: " + prndl.toString());
}else{
Log.i("SdlService", "GetVehicleData was rejected.");
}
}
});
try {
proxy.sendRPCRequest(vdRequest);
} catch (SdlException e) {
e.printStackTrace();
}
Subscribing to Vehicle Data 訂閱車機數(shù)據(jù)
訂閱車輛數(shù)據(jù)可以讓您在有新數(shù)據(jù)時得到通知。這些數(shù)據(jù)不應(yīng)以一致的方式接收矛绘。新的車輛數(shù)據(jù)大約每秒鐘都能得到耍休。
首先,發(fā)送訂閱車輛數(shù)據(jù)請求货矮。
SubscribeVehicleData subscribeRequest = new SubscribeVehicleData();
subscribeRequest.setPrndl(true);
subscribeRequest.setOnRPCResponseListener(new OnRPCResponseListener() {
@Override
public void onResponse(int correlationId, RPCResponse response) {
if(response.getSuccess()){
Log.i("SdlService", "Successfully subscribed to vehicle data.");
}else{
Log.i("SdlService", "Request to subscribe to vehicle data was rejected.");
}
}
});
try {
proxy.sendRPCRequest(subscribeRequest);
} catch (SdlException e) {
e.printStackTrace();
}
然后羊精,您將能夠在OnVehicleData通知中觀察到新的數(shù)據(jù):
@Override
public void onOnVehicleData(OnVehicleData notification) {
PRNDL prndl = notification.getPrndl();
Log.i("SdlService", "PRNDL status was updated to: " prndl.toString());
}
Unsubscribing from Vehicle Data取消訂閱車機數(shù)據(jù)
有時你可能并不總是需要你監(jiān)聽的所有車輛數(shù)據(jù)。我們建議您只在需要車輛數(shù)據(jù)時才訂閱。要停止收聽特定的車輛數(shù)據(jù)項喧锦,請使用UnsubscribeVehicleData
UnsubscribeVehicleData unsubscribeRequest = new UnsubscribeVehicleData();
unsubscribeRequest.setPrndl(true); // unsubscribe to PRNDL data
unsubscribeRequest.setOnRPCResponseListener(new OnRPCResponseListener() {
@Override
public void onResponse(int correlationId, RPCResponse response) {
if(response.getSuccess()){
Log.i("SdlService", "Successfully unsubscribed to vehicle data.");
}else{
Log.i("SdlService", "Request to unsubscribe to vehicle data was rejected.");
}
}
});
try {
proxy.sendRPCRequest(unsubscribeRequest);
} catch (SdlException e) {
e.printStackTrace();
}