Loading location/api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -645,7 +645,7 @@ package android.location.provider { @FlaggedApi("android.location.flags.population_density_provider") public abstract class PopulationDensityProviderBase { ctor public PopulationDensityProviderBase(@NonNull android.content.Context, @NonNull String); method @Nullable public final android.os.IBinder getBinder(); method public abstract void onGetCoarsenedS2Cell(double, double, @NonNull android.os.OutcomeReceiver<long[],java.lang.Throwable>); method public abstract void onGetCoarsenedS2Cells(double, double, @IntRange(from=0) int, @NonNull android.os.OutcomeReceiver<long[],java.lang.Throwable>); method public abstract void onGetDefaultCoarseningLevel(@NonNull android.os.OutcomeReceiver<java.lang.Integer,java.lang.Throwable>); field public static final String ACTION_POPULATION_DENSITY_PROVIDER = "com.android.location.service.PopulationDensityProvider"; } Loading location/java/android/location/provider/IPopulationDensityProvider.aidl +5 −5 Original line number Diff line number Diff line Loading @@ -35,11 +35,11 @@ oneway interface IPopulationDensityProvider { void getDefaultCoarseningLevel(in IS2LevelCallback callback); /** * Returns a list of IDs of the S2 cells to be used to coarsen a location. The answer should * Requests a list of IDs of the S2 cells to be used to coarsen a location. The answer should * contain at least one S2 cell, which should contain the requested location. Its level * represents the population density. Optionally, additional nearby cells can be also returned, * to assist in coarsening nearby locations. * represents the population density. Optionally, if numAdditionalCells is greater than 0, * additional nearby cells can be also returned, to assist in coarsening nearby locations. */ void getCoarsenedS2Cell(double latitudeDegrees, double longitudeDegrees, in IS2CellIdsCallback callback); void getCoarsenedS2Cells(double latitudeDegrees, double longitudeDegrees, int numAdditionalCells, in IS2CellIdsCallback callback); } location/java/android/location/provider/PopulationDensityProviderBase.java +13 −11 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.location.provider; import android.annotation.FlaggedApi; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; Loading Loading @@ -89,17 +90,18 @@ public abstract class PopulationDensityProviderBase { * Called upon receiving a new request for population density at a specific latitude/longitude, * expressed in degrees. * The answer is at least one S2CellId corresponding to the coarsening level at the specified * location. This must be the first element of the result array. Optionally, additional nearby * S2CellIds can be returned. One use for the optional nearby cells is when the client has a * local cache that needs to be filled with the local area around a certain latitude/longitude. * The callback {@link OutcomeReceiver#onResult} should be called with the result; or, in case * an error occurs, {@link OutcomeReceiver#onError} should be called. * The callback is single-use, calling more than any one of these two methods throws an * AssertionException. * location. This must be the first element of the result array. Optionally, if * numAdditionalCells is greater than zero, additional nearby S2CellIds can be returned. One use * for the optional nearby cells is when the client has a local cache that needs to be filled * with the local area around a certain latitude/longitude. The callback * {@link OutcomeReceiver#onResult} should be called with the result; or, in case an error * occurs, {@link OutcomeReceiver#onError} should be called. The callback is single-use, calling * more than any one of these two methods throws an AssertionException. * * @param callback A single-use callback that either returns S2CellIds, or an error. */ public abstract void onGetCoarsenedS2Cell(double latitudeDegrees, double longitudeDegrees, public abstract void onGetCoarsenedS2Cells(double latitudeDegrees, double longitudeDegrees, @IntRange(from = 0) int numAdditionalCells, @NonNull OutcomeReceiver<long[], Throwable> callback); private final class Service extends IPopulationDensityProvider.Stub { Loading @@ -119,10 +121,10 @@ public abstract class PopulationDensityProviderBase { } @Override public void getCoarsenedS2Cell(double latitudeDegrees, double longitudeDegrees, @NonNull IS2CellIdsCallback callback) { public void getCoarsenedS2Cells(double latitudeDegrees, double longitudeDegrees, int numAdditionalCells, @NonNull IS2CellIdsCallback callback) { try { onGetCoarsenedS2Cell(latitudeDegrees, longitudeDegrees, onGetCoarsenedS2Cells(latitudeDegrees, longitudeDegrees, numAdditionalCells, new SingleUseS2CellIdsCallback(callback)); } catch (RuntimeException e) { // exceptions on one-way binder threads are dropped - move to a different thread Loading services/core/java/com/android/server/location/fudger/LocationFudgerCache.java +2 −1 Original line number Diff line number Diff line Loading @@ -180,7 +180,8 @@ public class LocationFudgerCache { Log.e(sTAG, "could not get population density"); } }; mPopulationDensityProvider.getCoarsenedS2Cell(latitude, longitude, callback); mPopulationDensityProvider.getCoarsenedS2Cells(latitude, longitude, MAX_CACHE_SIZE - 1, callback); } /** Loading services/core/java/com/android/server/location/provider/proxy/ProxyPopulationDensityProvider.java +4 −3 Original line number Diff line number Diff line Loading @@ -96,14 +96,15 @@ public class ProxyPopulationDensityProvider { /** Gets the population density at the requested location. */ public void getCoarsenedS2Cell(double latitudeDegrees, double longitudeDegrees, IS2CellIdsCallback callback) { public void getCoarsenedS2Cells(double latitudeDegrees, double longitudeDegrees, int numAdditionalCells, IS2CellIdsCallback callback) { mServiceWatcher.runOnBinder( new ServiceWatcher.BinderOperation() { @Override public void run(IBinder binder) throws RemoteException { IPopulationDensityProvider.Stub.asInterface(binder) .getCoarsenedS2Cell(latitudeDegrees, longitudeDegrees, callback); .getCoarsenedS2Cells(latitudeDegrees, longitudeDegrees, numAdditionalCells, callback); } @Override Loading Loading
location/api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -645,7 +645,7 @@ package android.location.provider { @FlaggedApi("android.location.flags.population_density_provider") public abstract class PopulationDensityProviderBase { ctor public PopulationDensityProviderBase(@NonNull android.content.Context, @NonNull String); method @Nullable public final android.os.IBinder getBinder(); method public abstract void onGetCoarsenedS2Cell(double, double, @NonNull android.os.OutcomeReceiver<long[],java.lang.Throwable>); method public abstract void onGetCoarsenedS2Cells(double, double, @IntRange(from=0) int, @NonNull android.os.OutcomeReceiver<long[],java.lang.Throwable>); method public abstract void onGetDefaultCoarseningLevel(@NonNull android.os.OutcomeReceiver<java.lang.Integer,java.lang.Throwable>); field public static final String ACTION_POPULATION_DENSITY_PROVIDER = "com.android.location.service.PopulationDensityProvider"; } Loading
location/java/android/location/provider/IPopulationDensityProvider.aidl +5 −5 Original line number Diff line number Diff line Loading @@ -35,11 +35,11 @@ oneway interface IPopulationDensityProvider { void getDefaultCoarseningLevel(in IS2LevelCallback callback); /** * Returns a list of IDs of the S2 cells to be used to coarsen a location. The answer should * Requests a list of IDs of the S2 cells to be used to coarsen a location. The answer should * contain at least one S2 cell, which should contain the requested location. Its level * represents the population density. Optionally, additional nearby cells can be also returned, * to assist in coarsening nearby locations. * represents the population density. Optionally, if numAdditionalCells is greater than 0, * additional nearby cells can be also returned, to assist in coarsening nearby locations. */ void getCoarsenedS2Cell(double latitudeDegrees, double longitudeDegrees, in IS2CellIdsCallback callback); void getCoarsenedS2Cells(double latitudeDegrees, double longitudeDegrees, int numAdditionalCells, in IS2CellIdsCallback callback); }
location/java/android/location/provider/PopulationDensityProviderBase.java +13 −11 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.location.provider; import android.annotation.FlaggedApi; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; Loading Loading @@ -89,17 +90,18 @@ public abstract class PopulationDensityProviderBase { * Called upon receiving a new request for population density at a specific latitude/longitude, * expressed in degrees. * The answer is at least one S2CellId corresponding to the coarsening level at the specified * location. This must be the first element of the result array. Optionally, additional nearby * S2CellIds can be returned. One use for the optional nearby cells is when the client has a * local cache that needs to be filled with the local area around a certain latitude/longitude. * The callback {@link OutcomeReceiver#onResult} should be called with the result; or, in case * an error occurs, {@link OutcomeReceiver#onError} should be called. * The callback is single-use, calling more than any one of these two methods throws an * AssertionException. * location. This must be the first element of the result array. Optionally, if * numAdditionalCells is greater than zero, additional nearby S2CellIds can be returned. One use * for the optional nearby cells is when the client has a local cache that needs to be filled * with the local area around a certain latitude/longitude. The callback * {@link OutcomeReceiver#onResult} should be called with the result; or, in case an error * occurs, {@link OutcomeReceiver#onError} should be called. The callback is single-use, calling * more than any one of these two methods throws an AssertionException. * * @param callback A single-use callback that either returns S2CellIds, or an error. */ public abstract void onGetCoarsenedS2Cell(double latitudeDegrees, double longitudeDegrees, public abstract void onGetCoarsenedS2Cells(double latitudeDegrees, double longitudeDegrees, @IntRange(from = 0) int numAdditionalCells, @NonNull OutcomeReceiver<long[], Throwable> callback); private final class Service extends IPopulationDensityProvider.Stub { Loading @@ -119,10 +121,10 @@ public abstract class PopulationDensityProviderBase { } @Override public void getCoarsenedS2Cell(double latitudeDegrees, double longitudeDegrees, @NonNull IS2CellIdsCallback callback) { public void getCoarsenedS2Cells(double latitudeDegrees, double longitudeDegrees, int numAdditionalCells, @NonNull IS2CellIdsCallback callback) { try { onGetCoarsenedS2Cell(latitudeDegrees, longitudeDegrees, onGetCoarsenedS2Cells(latitudeDegrees, longitudeDegrees, numAdditionalCells, new SingleUseS2CellIdsCallback(callback)); } catch (RuntimeException e) { // exceptions on one-way binder threads are dropped - move to a different thread Loading
services/core/java/com/android/server/location/fudger/LocationFudgerCache.java +2 −1 Original line number Diff line number Diff line Loading @@ -180,7 +180,8 @@ public class LocationFudgerCache { Log.e(sTAG, "could not get population density"); } }; mPopulationDensityProvider.getCoarsenedS2Cell(latitude, longitude, callback); mPopulationDensityProvider.getCoarsenedS2Cells(latitude, longitude, MAX_CACHE_SIZE - 1, callback); } /** Loading
services/core/java/com/android/server/location/provider/proxy/ProxyPopulationDensityProvider.java +4 −3 Original line number Diff line number Diff line Loading @@ -96,14 +96,15 @@ public class ProxyPopulationDensityProvider { /** Gets the population density at the requested location. */ public void getCoarsenedS2Cell(double latitudeDegrees, double longitudeDegrees, IS2CellIdsCallback callback) { public void getCoarsenedS2Cells(double latitudeDegrees, double longitudeDegrees, int numAdditionalCells, IS2CellIdsCallback callback) { mServiceWatcher.runOnBinder( new ServiceWatcher.BinderOperation() { @Override public void run(IBinder binder) throws RemoteException { IPopulationDensityProvider.Stub.asInterface(binder) .getCoarsenedS2Cell(latitudeDegrees, longitudeDegrees, callback); .getCoarsenedS2Cells(latitudeDegrees, longitudeDegrees, numAdditionalCells, callback); } @Override Loading