diff options
| -rw-r--r-- | services/core/Android.bp | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/location/altitude/AltitudeService.java | 40 | ||||
| -rw-r--r-- | services/manifest_services.xml | 2 |
3 files changed, 39 insertions, 5 deletions
diff --git a/services/core/Android.bp b/services/core/Android.bp index f5a80d80f271..b81997d38e12 100644 --- a/services/core/Android.bp +++ b/services/core/Android.bp @@ -153,7 +153,7 @@ java_library_static { ], static_libs: [ - "android.frameworks.location.altitude-V1-java", // AIDL + "android.frameworks.location.altitude-V2-java", // AIDL "android.frameworks.vibrator-V1-java", // AIDL "android.hardware.authsecret-V1.0-java", "android.hardware.authsecret-V1-java", diff --git a/services/core/java/com/android/server/location/altitude/AltitudeService.java b/services/core/java/com/android/server/location/altitude/AltitudeService.java index b321e4dfdf26..97bf3548f891 100644 --- a/services/core/java/com/android/server/location/altitude/AltitudeService.java +++ b/services/core/java/com/android/server/location/altitude/AltitudeService.java @@ -19,6 +19,8 @@ package com.android.server.location.altitude; import android.content.Context; import android.frameworks.location.altitude.AddMslAltitudeToLocationRequest; import android.frameworks.location.altitude.AddMslAltitudeToLocationResponse; +import android.frameworks.location.altitude.GetGeoidHeightRequest; +import android.frameworks.location.altitude.GetGeoidHeightResponse; import android.frameworks.location.altitude.IAltitudeService; import android.location.Location; import android.location.altitude.AltitudeConverter; @@ -52,15 +54,47 @@ public class AltitudeService extends IAltitudeService.Stub { location.setLongitude(request.longitudeDegrees); location.setAltitude(request.altitudeMeters); location.setVerticalAccuracyMeters(request.verticalAccuracyMeters); + + AddMslAltitudeToLocationResponse response = new AddMslAltitudeToLocationResponse(); try { mAltitudeConverter.addMslAltitudeToLocation(mContext, location); } catch (IOException e) { - throw new RemoteException(e); + response.success = false; + return response; } - - AddMslAltitudeToLocationResponse response = new AddMslAltitudeToLocationResponse(); response.mslAltitudeMeters = location.getMslAltitudeMeters(); response.mslAltitudeAccuracyMeters = location.getMslAltitudeAccuracyMeters(); + response.success = true; + return response; + } + + @Override + public GetGeoidHeightResponse getGeoidHeight(GetGeoidHeightRequest request) + throws RemoteException { + Location location = new Location(""); + location.setLatitude(request.latitudeDegrees); + location.setLongitude(request.longitudeDegrees); + location.setAltitude(0.0); + location.setVerticalAccuracyMeters(0.0f); + + GetGeoidHeightResponse response = new GetGeoidHeightResponse(); + try { + mAltitudeConverter.addMslAltitudeToLocation(mContext, location); + } catch (IOException e) { + response.success = false; + return response; + } + // The geoid height for a location with zero WGS84 altitude is equal in value to the + // negative of the corresponding MSL altitude. + response.geoidHeightMeters = -location.getMslAltitudeMeters(); + // The geoid height error for a location with zero vertical accuracy is equal in value to + // the corresponding MSL altitude accuracy. + response.geoidHeightErrorMeters = location.getMslAltitudeAccuracyMeters(); + // The expiration distance and additional error are currently set to constants used by + // health services. + response.expirationDistanceMeters = 10000.0; + response.additionalGeoidHeightErrorMeters = 0.707f; + response.success = true; return response; } diff --git a/services/manifest_services.xml b/services/manifest_services.xml index eae159fe9e89..8ff1a7dfa37b 100644 --- a/services/manifest_services.xml +++ b/services/manifest_services.xml @@ -1,7 +1,7 @@ <manifest version="1.0" type="framework"> <hal format="aidl"> <name>android.frameworks.location.altitude</name> - <version>1</version> + <version>2</version> <fqname>IAltitudeService/default</fqname> </hal> <hal format="aidl"> |