Setting the Navigation Destination
设置导航目的地允许您发送一个GPS位置,您希望提示该用户使用他们的嵌入式导航导航到该位置。当使用SendLocation RPC时,您将不会收到关于用户如何与此位置交互的回调,只有当它成功地发送到Core并接收到时,才会收到回调,它将由内核使用嵌入式导航系统来处理这一点。
注意:
目前只支持嵌入式导航。这在目前的移动导航应用中是行不通的。
SendLocation是一个通常被OEMs限制的RPC。因此,如果不批准使用,您所连接的OEM可能限制应用程序的功能。
Determining the Result of SendLocation
SendLocation有3个可能的结果:
success;成功发送了SendLocation。
INVALID_DATA—您发送的请求包含无效数据并被拒绝。
DISALLOWED您的应用程序没有使用SendLocation的权限。
Detecting if SendLocation is Available
SendLocation是一个较新的RPC,因此有可能不是所有的head单元都支持它,特别是当您连接到一个没有嵌入式导航的head单元时。为了查看是否支持SendLocation,您可以在成功创建代理之后查看SdlProxyALM对象的gethmicap方法。
Using SendLocation
要使用SendLocation,您必须至少包含位置的经度和纬度。您还可以包括一个地址、名称、描述、电话号码和图像。
SendLocation sendLocation = new SendLocation();
sendLocation.setLatitudeDegrees(42.877737);
sendLocation.setLongitudeDegrees(-97.380967);
sendLocation.setLocationName("The Center");
sendLocation.setLocationDescription("Center of the United States");
// Create Address
OasisAddress address = new OasisAddress();
address.setSubThoroughfare("900");
address.setThoroughfare("Whiting Dr");
address.setLocality("Yankton");
address.setAdministrativeArea("SD");
address.setPostalCode("57078");
address.setCountryCode("US-SD");
address.setCountryName("United States");
sendLocation.setAddress(address);
// Monitor response
sendLocation.setOnRPCResponseListener(new OnRPCResponseListener() {
@Override
public void onResponse(int correlationId, RPCResponse response) {
Result result = response.getResultCode();
if(result.equals(Result.SUCCESS)){
// SendLocation was successfully sent.
}else if(result.equals(Result.INVALID_DATA)){
// The request you sent contains invalid data and was rejected.
}else if(result.equals(Result.DISALLOWED)){
// Your app does not have permission to use SendLocation.
}
}
});
proxy.sendRPCRequest(sendLocation);