Add GnssAntennaInfo framework APIs
Test: End to end test: run "atest GnssAntennaInfoRegistrationTest" on cuttlefish and watch "adb logcat | grep -i GnssAntennaInfo". Other tests: atest GnssAntennaInfoTest, atest GnssAntennaInfoProviderTest, atest GnssManagerServiceTest, atest VtsHalGnssV2_1TargetTest, atest LocationManagerFineTest. Bug:124556515 Change-Id: I70e4014dd3959b0570c35bd2aa8bb839ef167d70
This commit is contained in:
@@ -278,6 +278,8 @@ public class LocationManager {
|
||||
new GnssMeasurementsListenerManager();
|
||||
private final GnssNavigationMessageListenerManager mGnssNavigationMessageListenerTransport =
|
||||
new GnssNavigationMessageListenerManager();
|
||||
private final GnssAntennaInfoListenerManager mGnssAntennaInfoListenerManager =
|
||||
new GnssAntennaInfoListenerManager();
|
||||
|
||||
/**
|
||||
* @hide
|
||||
@@ -2198,6 +2200,41 @@ public class LocationManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a Gnss Antenna Info callback.
|
||||
*
|
||||
* @param executor the executor that the callback runs on.
|
||||
* @param callback a {@link GnssAntennaInfo.Callback} object to register.
|
||||
* @return {@code true} if the callback was added successfully, {@code false} otherwise.
|
||||
*
|
||||
* @throws IllegalArgumentException if executor is null
|
||||
* @throws IllegalArgumentException if callback is null
|
||||
* @throws SecurityException if the ACCESS_FINE_LOCATION permission is not present
|
||||
*/
|
||||
@RequiresPermission(ACCESS_FINE_LOCATION)
|
||||
public boolean registerAntennaInfoCallback(
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull GnssAntennaInfo.Callback callback) {
|
||||
try {
|
||||
return mGnssAntennaInfoListenerManager.addListener(callback, executor);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters a GNSS Antenna Info callback.
|
||||
*
|
||||
* @param callback a {@link GnssAntennaInfo.Callback} object to remove.
|
||||
*/
|
||||
public void unregisterAntennaInfoCallback(@NonNull GnssAntennaInfo.Callback callback) {
|
||||
try {
|
||||
mGnssAntennaInfoListenerManager.removeListener(callback);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* No-op method to keep backward-compatibility.
|
||||
*
|
||||
@@ -2929,6 +2966,48 @@ public class LocationManager {
|
||||
}
|
||||
}
|
||||
|
||||
private class GnssAntennaInfoListenerManager extends
|
||||
AbstractListenerManager<GnssAntennaInfo.Callback> {
|
||||
|
||||
@Nullable
|
||||
private IGnssAntennaInfoListener mListenerTransport;
|
||||
|
||||
@Override
|
||||
protected boolean registerService() throws RemoteException {
|
||||
Preconditions.checkState(mListenerTransport == null);
|
||||
|
||||
GnssAntennaInfoListener transport = new GnssAntennaInfoListener();
|
||||
if (mService.addGnssAntennaInfoListener(transport, mContext.getPackageName(),
|
||||
mContext.getFeatureId(), "gnss antenna info callback")) {
|
||||
mListenerTransport = transport;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void unregisterService() throws RemoteException {
|
||||
Preconditions.checkState(mListenerTransport != null);
|
||||
|
||||
mService.removeGnssAntennaInfoListener(mListenerTransport);
|
||||
mListenerTransport = null;
|
||||
}
|
||||
|
||||
private class GnssAntennaInfoListener extends IGnssAntennaInfoListener.Stub {
|
||||
@Override
|
||||
public void onGnssAntennaInfoReceived(final List<GnssAntennaInfo> gnssAntennaInfos) {
|
||||
execute((callback) -> callback.onGnssAntennaInfoReceived(gnssAntennaInfos));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStatusChanged(int status) {
|
||||
execute((listener) -> listener.onStatusChanged(status));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private class BatchedLocationCallbackManager extends
|
||||
AbstractListenerManager<BatchedLocationCallback> {
|
||||
|
||||
@@ -2941,7 +3020,7 @@ public class LocationManager {
|
||||
|
||||
BatchedLocationCallback transport = new BatchedLocationCallback();
|
||||
if (mService.addGnssBatchingCallback(transport, mContext.getPackageName(),
|
||||
mContext.getFeatureId(), "batched location callback")) {
|
||||
mContext.getFeatureId(), "batched location callback")) {
|
||||
mListenerTransport = transport;
|
||||
return true;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user