summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Brian Julian <bjj@google.com> 2023-12-16 01:24:36 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-12-16 01:24:36 +0000
commite4d0a065c306eca0c18fadeaed02fb6acebd38fd (patch)
tree93066f1381fb0c0071c9b47c0b4a068f8519bb2f
parent97b471bd0f6cc45a6ce5077e86daa8a461951f4f (diff)
parent84b8907e250806f551874974562e8392811fd08d (diff)
Merge "Adds GetGeoidHeight call to AltitudeService HAL." into main
-rw-r--r--services/core/Android.bp2
-rw-r--r--services/core/java/com/android/server/location/altitude/AltitudeService.java40
-rw-r--r--services/manifest_services.xml2
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">