Remove deprecated GNSS APIs + add nullability
Cleans up location APIs by removing old deprecated APIs (deprecated
since API 24) and adding nullability annotations everywhere.
Bug:126698813,126701422,126702274
Test: built
Change-Id: I6caf7f9778100bb3eee53178c25ce1694fb2d395
diff --git a/api/current.txt b/api/current.txt
index 21c2999..30d04a4 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -22825,24 +22825,6 @@
method @Deprecated public boolean usedInFix();
}
- @Deprecated public final class GpsStatus {
- method @Deprecated public int getMaxSatellites();
- method @Deprecated public Iterable<android.location.GpsSatellite> getSatellites();
- method @Deprecated public int getTimeToFirstFix();
- field @Deprecated public static final int GPS_EVENT_FIRST_FIX = 3; // 0x3
- field @Deprecated public static final int GPS_EVENT_SATELLITE_STATUS = 4; // 0x4
- field @Deprecated public static final int GPS_EVENT_STARTED = 1; // 0x1
- field @Deprecated public static final int GPS_EVENT_STOPPED = 2; // 0x2
- }
-
- @Deprecated public static interface GpsStatus.Listener {
- method @Deprecated public void onGpsStatusChanged(int);
- }
-
- @Deprecated public static interface GpsStatus.NmeaListener {
- method @Deprecated public void onNmeaReceived(long, String);
- }
-
public class Location implements android.os.Parcelable {
ctor public Location(String);
ctor public Location(android.location.Location);
@@ -22911,55 +22893,50 @@
}
public class LocationManager {
- method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addGpsStatusListener(android.location.GpsStatus.Listener);
- method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(android.location.GpsStatus.NmeaListener);
- method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(android.location.OnNmeaMessageListener);
- method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(android.location.OnNmeaMessageListener, android.os.Handler);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void addProximityAlert(double, double, float, long, android.app.PendingIntent);
- method public void addTestProvider(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int);
- method @Deprecated public void clearTestProviderEnabled(String);
- method @Deprecated public void clearTestProviderLocation(String);
- method @Deprecated public void clearTestProviderStatus(String);
- method public java.util.List<java.lang.String> getAllProviders();
- method public String getBestProvider(android.location.Criteria, boolean);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.OnNmeaMessageListener);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.OnNmeaMessageListener, @Nullable android.os.Handler);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void addProximityAlert(double, double, float, long, @NonNull android.app.PendingIntent);
+ method public void addTestProvider(@NonNull String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int);
+ method @Deprecated public void clearTestProviderEnabled(@NonNull String);
+ method @Deprecated public void clearTestProviderLocation(@NonNull String);
+ method @Deprecated public void clearTestProviderStatus(@NonNull String);
+ method @NonNull public java.util.List<java.lang.String> getAllProviders();
+ method @Nullable public String getBestProvider(@NonNull android.location.Criteria, boolean);
method @Nullable public String getGnssHardwareModelName();
method public int getGnssYearOfHardware();
- method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.location.GpsStatus getGpsStatus(android.location.GpsStatus);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.location.Location getLastKnownLocation(String);
- method public android.location.LocationProvider getProvider(String);
- method public java.util.List<java.lang.String> getProviders(boolean);
- method public java.util.List<java.lang.String> getProviders(android.location.Criteria, boolean);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) @Nullable public android.location.Location getLastKnownLocation(@NonNull String);
+ method @Nullable public android.location.LocationProvider getProvider(@NonNull String);
+ method @NonNull public java.util.List<java.lang.String> getProviders(boolean);
+ method @NonNull public java.util.List<java.lang.String> getProviders(@NonNull android.location.Criteria, boolean);
method public boolean isLocationEnabled();
- method public boolean isProviderEnabled(String);
- method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(android.location.GnssMeasurementsEvent.Callback);
- method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(android.location.GnssMeasurementsEvent.Callback, android.os.Handler);
- method public boolean registerGnssNavigationMessageCallback(android.location.GnssNavigationMessage.Callback);
- method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssNavigationMessageCallback(android.location.GnssNavigationMessage.Callback, android.os.Handler);
- method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(android.location.GnssStatus.Callback);
- method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(android.location.GnssStatus.Callback, android.os.Handler);
- method @Deprecated public void removeGpsStatusListener(android.location.GpsStatus.Listener);
- method @Deprecated public void removeNmeaListener(android.location.GpsStatus.NmeaListener);
- method public void removeNmeaListener(android.location.OnNmeaMessageListener);
- method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeProximityAlert(android.app.PendingIntent);
- method public void removeTestProvider(String);
- method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeUpdates(android.location.LocationListener);
- method public void removeUpdates(android.app.PendingIntent);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(String, long, float, android.location.LocationListener);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(String, long, float, android.location.LocationListener, android.os.Looper);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, android.location.Criteria, android.location.LocationListener, android.os.Looper);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(String, long, float, android.app.PendingIntent);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, android.location.Criteria, android.app.PendingIntent);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(String, android.location.LocationListener, android.os.Looper);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(android.location.Criteria, android.location.LocationListener, android.os.Looper);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(String, android.app.PendingIntent);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(android.location.Criteria, android.app.PendingIntent);
- method public boolean sendExtraCommand(String, String, android.os.Bundle);
- method public void setTestProviderEnabled(String, boolean);
- method public void setTestProviderLocation(String, android.location.Location);
- method @Deprecated public void setTestProviderStatus(String, int, android.os.Bundle, long);
- method public void unregisterGnssMeasurementsCallback(android.location.GnssMeasurementsEvent.Callback);
- method public void unregisterGnssNavigationMessageCallback(android.location.GnssNavigationMessage.Callback);
- method public void unregisterGnssStatusCallback(android.location.GnssStatus.Callback);
+ method public boolean isProviderEnabled(@NonNull String);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback, @Nullable android.os.Handler);
+ method public boolean registerGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback, @Nullable android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull android.location.GnssStatus.Callback);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull android.location.GnssStatus.Callback, @Nullable android.os.Handler);
+ method public void removeNmeaListener(@NonNull android.location.OnNmeaMessageListener);
+ method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeProximityAlert(@NonNull android.app.PendingIntent);
+ method public void removeTestProvider(@NonNull String);
+ method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeUpdates(@NonNull android.location.LocationListener);
+ method public void removeUpdates(@NonNull android.app.PendingIntent);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.location.LocationListener);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.app.PendingIntent);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull android.app.PendingIntent);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull String, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull android.location.Criteria, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull String, @NonNull android.app.PendingIntent);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull android.location.Criteria, @NonNull android.app.PendingIntent);
+ method public boolean sendExtraCommand(@NonNull String, @NonNull String, @Nullable android.os.Bundle);
+ method public void setTestProviderEnabled(@NonNull String, boolean);
+ method public void setTestProviderLocation(@NonNull String, @NonNull android.location.Location);
+ method @Deprecated public void setTestProviderStatus(@NonNull String, int, @Nullable android.os.Bundle, long);
+ method public void unregisterGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback);
+ method public void unregisterGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback);
+ method public void unregisterGnssStatusCallback(@NonNull android.location.GnssStatus.Callback);
field public static final String GPS_PROVIDER = "gps";
field public static final String KEY_LOCATION_CHANGED = "location";
field public static final String KEY_PROVIDER_ENABLED = "providerEnabled";
diff --git a/api/removed.txt b/api/removed.txt
index fdfaf91..7a06803 100644
--- a/api/removed.txt
+++ b/api/removed.txt
@@ -282,12 +282,38 @@
package android.location {
+ @Deprecated public final class GpsStatus {
+ method public int getMaxSatellites();
+ method public Iterable<android.location.GpsSatellite> getSatellites();
+ method public int getTimeToFirstFix();
+ field public static final int GPS_EVENT_FIRST_FIX = 3; // 0x3
+ field public static final int GPS_EVENT_SATELLITE_STATUS = 4; // 0x4
+ field public static final int GPS_EVENT_STARTED = 1; // 0x1
+ field public static final int GPS_EVENT_STOPPED = 2; // 0x2
+ }
+
+ @Deprecated public static interface GpsStatus.Listener {
+ method public void onGpsStatusChanged(int);
+ }
+
+ @Deprecated public static interface GpsStatus.NmeaListener {
+ method public void onNmeaReceived(long, String);
+ }
+
public class Location implements android.os.Parcelable {
method @Deprecated public void removeBearingAccuracy();
method @Deprecated public void removeSpeedAccuracy();
method @Deprecated public void removeVerticalAccuracy();
}
+ public class LocationManager {
+ method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addGpsStatusListener(android.location.GpsStatus.Listener);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(android.location.GpsStatus.NmeaListener);
+ method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.location.GpsStatus getGpsStatus(@Nullable android.location.GpsStatus);
+ method @Deprecated public void removeGpsStatusListener(android.location.GpsStatus.Listener);
+ method @Deprecated public void removeNmeaListener(android.location.GpsStatus.NmeaListener);
+ }
+
}
package android.media {
diff --git a/api/system-current.txt b/api/system-current.txt
index 375ce91..260ed3a 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -3364,57 +3364,53 @@
}
public class LocationManager {
- method @Deprecated public boolean addGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
- method @Deprecated public boolean addGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void flushGnssBatch();
method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public int getGnssBatchSize();
method public int getGnssCapabilities();
method @Nullable public String getLocationControllerExtraPackage();
method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void injectGnssMeasurementCorrections(@NonNull android.location.GnssMeasurementCorrections);
method public boolean isLocationControllerExtraPackageEnabled();
- method public boolean isLocationEnabledForUser(android.os.UserHandle);
- method public boolean isProviderEnabledForUser(String, android.os.UserHandle);
- method public boolean isProviderPackage(String);
- method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean registerGnssBatchedLocationCallback(long, boolean, android.location.BatchedLocationCallback, android.os.Handler);
- method @Deprecated public void removeGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
- method @Deprecated public void removeGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(android.location.LocationRequest, android.location.LocationListener, android.os.Looper);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(android.location.LocationRequest, android.app.PendingIntent);
- method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setLocationControllerExtraPackage(String);
+ method public boolean isLocationEnabledForUser(@NonNull android.os.UserHandle);
+ method public boolean isProviderEnabledForUser(@NonNull String, @NonNull android.os.UserHandle);
+ method public boolean isProviderPackage(@NonNull String);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean registerGnssBatchedLocationCallback(long, boolean, @NonNull android.location.BatchedLocationCallback, @Nullable android.os.Handler);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull android.location.LocationRequest, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull android.location.LocationRequest, @NonNull android.app.PendingIntent);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setLocationControllerExtraPackage(@NonNull String);
method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setLocationControllerExtraPackageEnabled(boolean);
- method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setLocationEnabledForUser(boolean, android.os.UserHandle);
- method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean setProviderEnabledForUser(String, boolean, android.os.UserHandle);
- method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean unregisterGnssBatchedLocationCallback(android.location.BatchedLocationCallback);
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setLocationEnabledForUser(boolean, @NonNull android.os.UserHandle);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean setProviderEnabledForUser(@NonNull String, boolean, @NonNull android.os.UserHandle);
+ method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean unregisterGnssBatchedLocationCallback(@NonNull android.location.BatchedLocationCallback);
}
public final class LocationRequest implements android.os.Parcelable {
- method public static android.location.LocationRequest create();
- method public static android.location.LocationRequest createFromDeprecatedCriteria(android.location.Criteria, long, float, boolean);
- method public static android.location.LocationRequest createFromDeprecatedProvider(String, long, float, boolean);
+ method @NonNull public static android.location.LocationRequest create();
+ method @NonNull public static android.location.LocationRequest createFromDeprecatedCriteria(@NonNull android.location.Criteria, long, float, boolean);
+ method @NonNull public static android.location.LocationRequest createFromDeprecatedProvider(@NonNull String, long, float, boolean);
method public int describeContents();
method public long getExpireAt();
method public long getFastestInterval();
method public boolean getHideFromAppOps();
method public long getInterval();
method public int getNumUpdates();
- method public String getProvider();
+ method @NonNull public String getProvider();
method public int getQuality();
method public float getSmallestDisplacement();
- method public android.os.WorkSource getWorkSource();
+ method @Nullable public android.os.WorkSource getWorkSource();
method public boolean isLocationSettingsIgnored();
method public boolean isLowPowerMode();
- method public android.location.LocationRequest setExpireAt(long);
- method public android.location.LocationRequest setExpireIn(long);
- method public android.location.LocationRequest setFastestInterval(long);
+ method @NonNull public android.location.LocationRequest setExpireAt(long);
+ method @NonNull public android.location.LocationRequest setExpireIn(long);
+ method @NonNull public android.location.LocationRequest setFastestInterval(long);
method public void setHideFromAppOps(boolean);
- method public android.location.LocationRequest setInterval(long);
- method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public android.location.LocationRequest setLocationSettingsIgnored(boolean);
- method public android.location.LocationRequest setLowPowerMode(boolean);
- method public android.location.LocationRequest setNumUpdates(int);
- method public android.location.LocationRequest setProvider(String);
- method public android.location.LocationRequest setQuality(int);
- method public android.location.LocationRequest setSmallestDisplacement(float);
- method public void setWorkSource(android.os.WorkSource);
+ method @NonNull public android.location.LocationRequest setInterval(long);
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) @NonNull public android.location.LocationRequest setLocationSettingsIgnored(boolean);
+ method @NonNull public android.location.LocationRequest setLowPowerMode(boolean);
+ method @NonNull public android.location.LocationRequest setNumUpdates(int);
+ method @NonNull public android.location.LocationRequest setProvider(@NonNull String);
+ method @NonNull public android.location.LocationRequest setQuality(int);
+ method @NonNull public android.location.LocationRequest setSmallestDisplacement(float);
+ method public void setWorkSource(@Nullable android.os.WorkSource);
method public void writeToParcel(android.os.Parcel, int);
field public static final int ACCURACY_BLOCK = 102; // 0x66
field public static final int ACCURACY_CITY = 104; // 0x68
diff --git a/api/system-removed.txt b/api/system-removed.txt
index 22a3fb3..7e04469 100644
--- a/api/system-removed.txt
+++ b/api/system-removed.txt
@@ -60,6 +60,17 @@
}
+package android.location {
+
+ public class LocationManager {
+ method @Deprecated public boolean addGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
+ method @Deprecated public boolean addGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
+ method @Deprecated public void removeGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
+ method @Deprecated public void removeGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
+ }
+
+}
+
package android.media.tv {
public final class TvInputManager {
diff --git a/api/test-current.txt b/api/test-current.txt
index 684524e..14e1dba 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -936,16 +936,16 @@
}
public class LocationManager {
- method public String[] getBackgroundThrottlingWhitelist();
- method public String[] getIgnoreSettingsWhitelist();
+ method @NonNull public String[] getBackgroundThrottlingWhitelist();
+ method @NonNull public String[] getIgnoreSettingsWhitelist();
method @NonNull public java.util.List<android.location.LocationRequest> getTestProviderCurrentRequests(String);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(android.location.LocationRequest, android.location.LocationListener, android.os.Looper);
- method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(android.location.LocationRequest, android.app.PendingIntent);
- method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setLocationEnabledForUser(boolean, android.os.UserHandle);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull android.location.LocationRequest, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull android.location.LocationRequest, @NonNull android.app.PendingIntent);
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setLocationEnabledForUser(boolean, @NonNull android.os.UserHandle);
}
public final class LocationRequest implements android.os.Parcelable {
- method public static android.location.LocationRequest create();
+ method @NonNull public static android.location.LocationRequest create();
method public int describeContents();
method public long getExpireAt();
method public long getFastestInterval();
@@ -953,14 +953,14 @@
method public int getNumUpdates();
method public int getQuality();
method public boolean isLocationSettingsIgnored();
- method public android.location.LocationRequest setExpireAt(long);
- method public android.location.LocationRequest setExpireIn(long);
- method public android.location.LocationRequest setFastestInterval(long);
- method public android.location.LocationRequest setInterval(long);
- method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public android.location.LocationRequest setLocationSettingsIgnored(boolean);
- method public android.location.LocationRequest setNumUpdates(int);
- method public android.location.LocationRequest setProvider(String);
- method public android.location.LocationRequest setQuality(int);
+ method @NonNull public android.location.LocationRequest setExpireAt(long);
+ method @NonNull public android.location.LocationRequest setExpireIn(long);
+ method @NonNull public android.location.LocationRequest setFastestInterval(long);
+ method @NonNull public android.location.LocationRequest setInterval(long);
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) @NonNull public android.location.LocationRequest setLocationSettingsIgnored(boolean);
+ method @NonNull public android.location.LocationRequest setNumUpdates(int);
+ method @NonNull public android.location.LocationRequest setProvider(@NonNull String);
+ method @NonNull public android.location.LocationRequest setQuality(int);
method public void writeToParcel(android.os.Parcel, int);
field public static final int ACCURACY_BLOCK = 102; // 0x66
field public static final int ACCURACY_CITY = 104; // 0x68
diff --git a/location/java/android/location/GpsStatus.java b/location/java/android/location/GpsStatus.java
index 609a15e..4e37654 100644
--- a/location/java/android/location/GpsStatus.java
+++ b/location/java/android/location/GpsStatus.java
@@ -30,6 +30,7 @@
* <p>This class is used in conjunction with the {@link Listener} interface.
*
* @deprecated use {@link GnssStatus} and {@link GnssStatus.Callback}.
+ * @removed
*/
@Deprecated
public final class GpsStatus {
@@ -112,6 +113,7 @@
/**
* Used for receiving notifications when GPS status has changed.
* @deprecated use {@link GnssStatus.Callback} instead.
+ * @removed
*/
@Deprecated
public interface Listener {
@@ -142,6 +144,7 @@
* You can implement this interface and call {@link LocationManager#addNmeaListener}
* to receive NMEA data from the GPS engine.
* @deprecated use {@link OnNmeaMessageListener} instead.
+ * @removed
*/
@Deprecated
public interface NmeaListener {
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index 6828c59..8af1532 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -44,12 +44,12 @@
import android.os.RemoteException;
import android.os.UserHandle;
import android.provider.Settings;
+import android.util.ArrayMap;
import android.util.Log;
import com.android.internal.location.ProviderProperties;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
/**
@@ -78,14 +78,10 @@
private final GnssMeasurementCallbackTransport mGnssMeasurementCallbackTransport;
private final GnssNavigationMessageCallbackTransport mGnssNavigationMessageCallbackTransport;
private final BatchedLocationCallbackTransport mBatchedLocationCallbackTransport;
- private final HashMap<GpsStatus.Listener, GnssStatusListenerTransport> mGpsStatusListeners =
- new HashMap<>();
- private final HashMap<GpsStatus.NmeaListener, GnssStatusListenerTransport> mGpsNmeaListeners =
- new HashMap<>();
- private final HashMap<GnssStatus.Callback, GnssStatusListenerTransport> mGnssStatusListeners =
- new HashMap<>();
- private final HashMap<OnNmeaMessageListener, GnssStatusListenerTransport> mGnssNmeaListeners =
- new HashMap<>();
+ private final ArrayMap<GnssStatus.Callback, GnssStatusListenerTransport> mGnssStatusListeners =
+ new ArrayMap<>();
+ private final ArrayMap<OnNmeaMessageListener, GnssStatusListenerTransport> mGnssNmeaListeners =
+ new ArrayMap<>();
// volatile + GnssStatus final-fields pattern to avoid a partially published object
private volatile GnssStatus mGnssStatus;
private int mTimeToFirstFix;
@@ -293,8 +289,7 @@
"com.android.settings.location.FOOTER_STRING";
// Map from LocationListeners to their associated ListenerTransport objects
- private final HashMap<LocationListener, ListenerTransport> mListeners =
- new HashMap<LocationListener,ListenerTransport>();
+ private final ArrayMap<LocationListener, ListenerTransport> mListeners = new ArrayMap<>();
private class ListenerTransport extends ILocationListener.Stub {
private static final int TYPE_LOCATION_CHANGED = 1;
@@ -405,7 +400,7 @@
* @hide
*/
@TestApi
- public String[] getBackgroundThrottlingWhitelist() {
+ public @NonNull String[] getBackgroundThrottlingWhitelist() {
try {
return mService.getBackgroundThrottlingWhitelist();
} catch (RemoteException e) {
@@ -417,7 +412,7 @@
* @hide
*/
@TestApi
- public String[] getIgnoreSettingsWhitelist() {
+ public @NonNull String[] getIgnoreSettingsWhitelist() {
try {
return mService.getIgnoreSettingsWhitelist();
} catch (RemoteException e) {
@@ -431,7 +426,7 @@
* right way to create an instance of this class is using the
* factory Context.getSystemService.
*/
- public LocationManager(Context context, ILocationManager service) {
+ public LocationManager(@NonNull Context context, @NonNull ILocationManager service) {
mService = service;
mContext = context;
mGnssMeasurementCallbackTransport =
@@ -454,7 +449,7 @@
*
* @return list of Strings containing names of the provider
*/
- public List<String> getAllProviders() {
+ public @NonNull List<String> getAllProviders() {
try {
return mService.getAllProviders();
} catch (RemoteException e) {
@@ -469,7 +464,7 @@
* enabled are returned.
* @return list of Strings containing names of the providers
*/
- public List<String> getProviders(boolean enabledOnly) {
+ public @NonNull List<String> getProviders(boolean enabledOnly) {
try {
return mService.getProviders(null, enabledOnly);
} catch (RemoteException e) {
@@ -488,7 +483,7 @@
* @throws SecurityException if the caller is not permitted to access the
* given provider.
*/
- public LocationProvider getProvider(String name) {
+ public @Nullable LocationProvider getProvider(@NonNull String name) {
checkProvider(name);
try {
ProviderProperties properties = mService.getProviderProperties(name);
@@ -511,7 +506,7 @@
* enabled are returned.
* @return list of Strings containing names of the providers
*/
- public List<String> getProviders(Criteria criteria, boolean enabledOnly) {
+ public @NonNull List<String> getProviders(@NonNull Criteria criteria, boolean enabledOnly) {
checkCriteria(criteria);
try {
return mService.getProviders(criteria, enabledOnly);
@@ -542,7 +537,7 @@
* @param enabledOnly if true then only a provider that is currently enabled is returned
* @return name of the provider that best matches the requirements
*/
- public String getBestProvider(Criteria criteria, boolean enabledOnly) {
+ public @Nullable String getBestProvider(@NonNull Criteria criteria, boolean enabledOnly) {
checkCriteria(criteria);
try {
return mService.getBestProvider(criteria, enabledOnly);
@@ -572,8 +567,8 @@
* @throws SecurityException if no suitable permission is present
*/
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
- public void requestLocationUpdates(String provider, long minTime, float minDistance,
- LocationListener listener) {
+ public void requestLocationUpdates(@NonNull String provider, long minTime, float minDistance,
+ @NonNull LocationListener listener) {
checkProvider(provider);
checkListener(listener);
@@ -604,8 +599,8 @@
* @throws SecurityException if no suitable permission is present
*/
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
- public void requestLocationUpdates(String provider, long minTime, float minDistance,
- LocationListener listener, Looper looper) {
+ public void requestLocationUpdates(@NonNull String provider, long minTime, float minDistance,
+ @NonNull LocationListener listener, @Nullable Looper looper) {
checkProvider(provider);
checkListener(listener);
@@ -637,8 +632,8 @@
* @throws SecurityException if no suitable permission is present
*/
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
- public void requestLocationUpdates(long minTime, float minDistance, Criteria criteria,
- LocationListener listener, Looper looper) {
+ public void requestLocationUpdates(long minTime, float minDistance, @NonNull Criteria criteria,
+ @NonNull LocationListener listener, @Nullable Looper looper) {
checkCriteria(criteria);
checkListener(listener);
@@ -665,8 +660,8 @@
* @throws SecurityException if no suitable permission is present
*/
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
- public void requestLocationUpdates(String provider, long minTime, float minDistance,
- PendingIntent intent) {
+ public void requestLocationUpdates(@NonNull String provider, long minTime, float minDistance,
+ @NonNull PendingIntent intent) {
checkProvider(provider);
checkPendingIntent(intent);
@@ -772,8 +767,8 @@
* @throws SecurityException if no suitable permission is present
*/
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
- public void requestLocationUpdates(long minTime, float minDistance, Criteria criteria,
- PendingIntent intent) {
+ public void requestLocationUpdates(long minTime, float minDistance, @NonNull Criteria criteria,
+ @NonNull PendingIntent intent) {
checkCriteria(criteria);
checkPendingIntent(intent);
@@ -802,7 +797,8 @@
* @throws SecurityException if no suitable permission is present
*/
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
- public void requestSingleUpdate(String provider, LocationListener listener, Looper looper) {
+ public void requestSingleUpdate(
+ @NonNull String provider, @NonNull LocationListener listener, @Nullable Looper looper) {
checkProvider(provider);
checkListener(listener);
@@ -832,7 +828,10 @@
* @throws SecurityException if no suitable permission is present
*/
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
- public void requestSingleUpdate(Criteria criteria, LocationListener listener, Looper looper) {
+ public void requestSingleUpdate(
+ @NonNull Criteria criteria,
+ @NonNull LocationListener listener,
+ @Nullable Looper looper) {
checkCriteria(criteria);
checkListener(listener);
@@ -855,7 +854,7 @@
* @throws SecurityException if no suitable permission is present
*/
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
- public void requestSingleUpdate(String provider, PendingIntent intent) {
+ public void requestSingleUpdate(@NonNull String provider, @NonNull PendingIntent intent) {
checkProvider(provider);
checkPendingIntent(intent);
@@ -879,7 +878,7 @@
* @throws SecurityException if no suitable permission is present
*/
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
- public void requestSingleUpdate(Criteria criteria, PendingIntent intent) {
+ public void requestSingleUpdate(@NonNull Criteria criteria, @NonNull PendingIntent intent) {
checkCriteria(criteria);
checkPendingIntent(intent);
@@ -948,8 +947,10 @@
@SystemApi
@TestApi
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
- public void requestLocationUpdates(LocationRequest request, LocationListener listener,
- Looper looper) {
+ public void requestLocationUpdates(
+ @NonNull LocationRequest request,
+ @NonNull LocationListener listener,
+ @Nullable Looper looper) {
checkListener(listener);
requestLocationUpdates(request, listener, looper, null);
}
@@ -978,7 +979,8 @@
@SystemApi
@TestApi
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
- public void requestLocationUpdates(LocationRequest request, PendingIntent intent) {
+ public void requestLocationUpdates(
+ @NonNull LocationRequest request, @NonNull PendingIntent intent) {
checkPendingIntent(intent);
requestLocationUpdates(request, null, null, intent);
}
@@ -1003,7 +1005,7 @@
* @hide
*/
@RequiresPermission(allOf = {LOCATION_HARDWARE, ACCESS_FINE_LOCATION})
- public boolean injectLocation(Location newLocation) {
+ public boolean injectLocation(@NonNull Location newLocation) {
try {
return mService.injectLocation(newLocation);
} catch (RemoteException e) {
@@ -1048,7 +1050,7 @@
* @param listener listener object that no longer needs location updates
* @throws IllegalArgumentException if listener is null
*/
- public void removeUpdates(LocationListener listener) {
+ public void removeUpdates(@NonNull LocationListener listener) {
checkListener(listener);
String packageName = mContext.getPackageName();
@@ -1073,7 +1075,7 @@
* @param intent pending intent object that no longer needs location updates
* @throws IllegalArgumentException if intent is null
*/
- public void removeUpdates(PendingIntent intent) {
+ public void removeUpdates(@NonNull PendingIntent intent) {
checkPendingIntent(intent);
String packageName = mContext.getPackageName();
@@ -1133,7 +1135,7 @@
*/
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
public void addProximityAlert(double latitude, double longitude, float radius, long expiration,
- PendingIntent intent) {
+ @NonNull PendingIntent intent) {
checkPendingIntent(intent);
if (expiration < 0) expiration = Long.MAX_VALUE;
@@ -1183,7 +1185,10 @@
* @hide
*/
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
- public void addGeofence(LocationRequest request, Geofence fence, PendingIntent intent) {
+ public void addGeofence(
+ @NonNull LocationRequest request,
+ @NonNull Geofence fence,
+ @NonNull PendingIntent intent) {
checkPendingIntent(intent);
checkGeofence(fence);
@@ -1210,7 +1215,7 @@
* @throws SecurityException if {@link android.Manifest.permission#ACCESS_FINE_LOCATION}
* permission is not present
*/
- public void removeProximityAlert(PendingIntent intent) {
+ public void removeProximityAlert(@NonNull PendingIntent intent) {
checkPendingIntent(intent);
String packageName = mContext.getPackageName();
@@ -1237,7 +1242,7 @@
*
* @hide
*/
- public void removeGeofence(Geofence fence, PendingIntent intent) {
+ public void removeGeofence(@NonNull Geofence fence, @NonNull PendingIntent intent) {
checkPendingIntent(intent);
checkGeofence(fence);
String packageName = mContext.getPackageName();
@@ -1260,7 +1265,7 @@
*
* @hide
*/
- public void removeAllGeofences(PendingIntent intent) {
+ public void removeAllGeofences(@NonNull PendingIntent intent) {
checkPendingIntent(intent);
String packageName = mContext.getPackageName();
@@ -1290,7 +1295,7 @@
* @hide
*/
@SystemApi
- public boolean isLocationEnabledForUser(UserHandle userHandle) {
+ public boolean isLocationEnabledForUser(@NonNull UserHandle userHandle) {
try {
return mService.isLocationEnabledForUser(userHandle.getIdentifier());
} catch (RemoteException e) {
@@ -1309,7 +1314,7 @@
@SystemApi
@TestApi
@RequiresPermission(WRITE_SECURE_SETTINGS)
- public void setLocationEnabledForUser(boolean enabled, UserHandle userHandle) {
+ public void setLocationEnabledForUser(boolean enabled, @NonNull UserHandle userHandle) {
Settings.Secure.putIntForUser(
mContext.getContentResolver(),
Settings.Secure.LOCATION_MODE,
@@ -1332,7 +1337,7 @@
*
* @throws IllegalArgumentException if provider is null
*/
- public boolean isProviderEnabled(String provider) {
+ public boolean isProviderEnabled(@NonNull String provider) {
return isProviderEnabledForUser(provider, Process.myUserHandle());
}
@@ -1353,7 +1358,8 @@
* @hide
*/
@SystemApi
- public boolean isProviderEnabledForUser(String provider, UserHandle userHandle) {
+ public boolean isProviderEnabledForUser(
+ @NonNull String provider, @NonNull UserHandle userHandle) {
checkProvider(provider);
try {
@@ -1382,7 +1388,7 @@
@SystemApi
@RequiresPermission(WRITE_SECURE_SETTINGS)
public boolean setProviderEnabledForUser(
- String provider, boolean enabled, UserHandle userHandle) {
+ @NonNull String provider, boolean enabled, @NonNull UserHandle userHandle) {
checkProvider(provider);
return Settings.Secure.setLocationProviderEnabledForUser(
@@ -1406,6 +1412,7 @@
*
* @hide
*/
+ @Nullable
public Location getLastLocation() {
String packageName = mContext.getPackageName();
@@ -1434,7 +1441,8 @@
* @throws IllegalArgumentException if provider is null or doesn't exist
*/
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
- public Location getLastKnownLocation(String provider) {
+ @Nullable
+ public Location getLastKnownLocation(@NonNull String provider) {
checkProvider(provider);
String packageName = mContext.getPackageName();
LocationRequest request = LocationRequest.createFromDeprecatedProvider(
@@ -1447,10 +1455,6 @@
}
}
- // --- Mock provider support ---
- // TODO: It would be fantastic to deprecate mock providers entirely, and replace
- // with something closer to LocationProviderBase.java
-
/**
* Creates a mock location provider and adds it to the set of active providers.
*
@@ -1461,7 +1465,8 @@
* allowed} for your app.
* @throws IllegalArgumentException if a provider with the given name already exists
*/
- public void addTestProvider(String name, boolean requiresNetwork, boolean requiresSatellite,
+ public void addTestProvider(
+ @NonNull String name, boolean requiresNetwork, boolean requiresSatellite,
boolean requiresCell, boolean hasMonetaryCost, boolean supportsAltitude,
boolean supportsSpeed, boolean supportsBearing, int powerRequirement, int accuracy) {
ProviderProperties properties = new ProviderProperties(requiresNetwork,
@@ -1488,7 +1493,7 @@
* allowed} for your app.
* @throws IllegalArgumentException if no provider with the given name exists
*/
- public void removeTestProvider(String provider) {
+ public void removeTestProvider(@NonNull String provider) {
try {
mService.removeTestProvider(provider, mContext.getOpPackageName());
} catch (RemoteException e) {
@@ -1512,7 +1517,7 @@
* @throws IllegalArgumentException if no provider with the given name exists
* @throws IllegalArgumentException if the location is incomplete
*/
- public void setTestProviderLocation(String provider, Location loc) {
+ public void setTestProviderLocation(@NonNull String provider, @NonNull Location loc) {
if (!loc.isComplete()) {
IllegalArgumentException e = new IllegalArgumentException(
"Incomplete location object, missing timestamp or accuracy? " + loc);
@@ -1546,7 +1551,7 @@
* @deprecated This function has always been a no-op, and may be removed in the future.
*/
@Deprecated
- public void clearTestProviderLocation(String provider) {}
+ public void clearTestProviderLocation(@NonNull String provider) {}
/**
* Sets a mock enabled value for the given provider. This value will be used in place
@@ -1560,7 +1565,7 @@
* allowed} for your app.
* @throws IllegalArgumentException if no provider with the given name exists
*/
- public void setTestProviderEnabled(String provider, boolean enabled) {
+ public void setTestProviderEnabled(@NonNull String provider, boolean enabled) {
try {
mService.setTestProviderEnabled(provider, enabled, mContext.getOpPackageName());
} catch (RemoteException e) {
@@ -1581,7 +1586,7 @@
* @deprecated Use {@link #setTestProviderEnabled(String, boolean)} instead.
*/
@Deprecated
- public void clearTestProviderEnabled(String provider) {
+ public void clearTestProviderEnabled(@NonNull String provider) {
setTestProviderEnabled(provider, false);
}
@@ -1601,7 +1606,8 @@
* @deprecated This method has no effect.
*/
@Deprecated
- public void setTestProviderStatus(String provider, int status, Bundle extras, long updateTime) {
+ public void setTestProviderStatus(
+ @NonNull String provider, int status, @Nullable Bundle extras, long updateTime) {
try {
mService.setTestProviderStatus(provider, status, extras, updateTime,
mContext.getOpPackageName());
@@ -1622,7 +1628,7 @@
* @deprecated This method has no effect.
*/
@Deprecated
- public void clearTestProviderStatus(String provider) {
+ public void clearTestProviderStatus(@NonNull String provider) {
setTestProviderStatus(provider, LocationProvider.AVAILABLE, null, 0L);
}
@@ -1648,13 +1654,11 @@
// This class is used to send Gnss status events to the client's specific thread.
private class GnssStatusListenerTransport extends IGnssStatusListener.Stub {
- private final GpsStatus.Listener mGpsListener;
- private final GpsStatus.NmeaListener mGpsNmeaListener;
private final GnssStatus.Callback mGnssCallback;
private final OnNmeaMessageListener mGnssNmeaListener;
private class GnssHandler extends Handler {
- public GnssHandler(Handler handler) {
+ GnssHandler(Handler handler) {
super(handler != null ? handler.getLooper() : Looper.myLooper());
}
@@ -1663,24 +1667,22 @@
switch (msg.what) {
case NMEA_RECEIVED:
synchronized (mNmeaBuffer) {
- int length = mNmeaBuffer.size();
- for (int i = 0; i < length; i++) {
- Nmea nmea = mNmeaBuffer.get(i);
+ for (Nmea nmea : mNmeaBuffer) {
mGnssNmeaListener.onNmeaMessage(nmea.mNmea, nmea.mTimestamp);
}
mNmeaBuffer.clear();
}
break;
- case GpsStatus.GPS_EVENT_STARTED:
+ case GNSS_EVENT_STARTED:
mGnssCallback.onStarted();
break;
- case GpsStatus.GPS_EVENT_STOPPED:
+ case GNSS_EVENT_STOPPED:
mGnssCallback.onStopped();
break;
- case GpsStatus.GPS_EVENT_FIRST_FIX:
+ case GNSS_EVENT_FIRST_FIX:
mGnssCallback.onFirstFix(mTimeToFirstFix);
break;
- case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ case GNSS_EVENT_SATELLITE_STATUS:
mGnssCallback.onSatelliteStatusChanged(mGnssStatus);
break;
default:
@@ -1691,8 +1693,11 @@
private final Handler mGnssHandler;
- // This must not equal any of the GpsStatus event IDs
- private static final int NMEA_RECEIVED = 1000;
+ private static final int NMEA_RECEIVED = 1;
+ private static final int GNSS_EVENT_STARTED = 2;
+ private static final int GNSS_EVENT_STOPPED = 3;
+ private static final int GNSS_EVENT_FIRST_FIX = 4;
+ private static final int GNSS_EVENT_SATELLITE_STATUS = 5;
private class Nmea {
long mTimestamp;
@@ -1705,98 +1710,31 @@
}
private final ArrayList<Nmea> mNmeaBuffer;
- GnssStatusListenerTransport(GpsStatus.Listener listener) {
- this(listener, null);
- }
-
- GnssStatusListenerTransport(GpsStatus.Listener listener, Handler handler) {
- mGpsListener = listener;
- mGnssHandler = new GnssHandler(handler);
- mGpsNmeaListener = null;
- mNmeaBuffer = null;
- mGnssCallback = mGpsListener != null ? new GnssStatus.Callback() {
- @Override
- public void onStarted() {
- mGpsListener.onGpsStatusChanged(GpsStatus.GPS_EVENT_STARTED);
- }
-
- @Override
- public void onStopped() {
- mGpsListener.onGpsStatusChanged(GpsStatus.GPS_EVENT_STOPPED);
- }
-
- @Override
- public void onFirstFix(int ttff) {
- mGpsListener.onGpsStatusChanged(GpsStatus.GPS_EVENT_FIRST_FIX);
- }
-
- @Override
- public void onSatelliteStatusChanged(GnssStatus status) {
- mGpsListener.onGpsStatusChanged(GpsStatus.GPS_EVENT_SATELLITE_STATUS);
- }
- } : null;
- mGnssNmeaListener = null;
- }
-
- GnssStatusListenerTransport(GpsStatus.NmeaListener listener) {
- this(listener, null);
- }
-
- GnssStatusListenerTransport(GpsStatus.NmeaListener listener, Handler handler) {
- mGpsListener = null;
- mGnssHandler = new GnssHandler(handler);
- mGpsNmeaListener = listener;
- mNmeaBuffer = new ArrayList<Nmea>();
- mGnssCallback = null;
- mGnssNmeaListener = mGpsNmeaListener != null ? new OnNmeaMessageListener() {
- @Override
- public void onNmeaMessage(String nmea, long timestamp) {
- mGpsNmeaListener.onNmeaReceived(timestamp, nmea);
- }
- } : null;
- }
-
- GnssStatusListenerTransport(GnssStatus.Callback callback) {
- this(callback, null);
- }
-
GnssStatusListenerTransport(GnssStatus.Callback callback, Handler handler) {
mGnssCallback = callback;
mGnssHandler = new GnssHandler(handler);
mGnssNmeaListener = null;
mNmeaBuffer = null;
- mGpsListener = null;
- mGpsNmeaListener = null;
- }
-
- GnssStatusListenerTransport(OnNmeaMessageListener listener) {
- this(listener, null);
}
GnssStatusListenerTransport(OnNmeaMessageListener listener, Handler handler) {
mGnssCallback = null;
mGnssHandler = new GnssHandler(handler);
mGnssNmeaListener = listener;
- mGpsListener = null;
- mGpsNmeaListener = null;
- mNmeaBuffer = new ArrayList<Nmea>();
+ mNmeaBuffer = new ArrayList<>();
}
@Override
public void onGnssStarted() {
if (mGnssCallback != null) {
- Message msg = Message.obtain();
- msg.what = GpsStatus.GPS_EVENT_STARTED;
- mGnssHandler.sendMessage(msg);
+ mGnssHandler.obtainMessage(GNSS_EVENT_STARTED).sendToTarget();
}
}
@Override
public void onGnssStopped() {
if (mGnssCallback != null) {
- Message msg = Message.obtain();
- msg.what = GpsStatus.GPS_EVENT_STOPPED;
- mGnssHandler.sendMessage(msg);
+ mGnssHandler.obtainMessage(GNSS_EVENT_STOPPED).sendToTarget();
}
}
@@ -1804,9 +1742,7 @@
public void onFirstFix(int ttff) {
if (mGnssCallback != null) {
mTimeToFirstFix = ttff;
- Message msg = Message.obtain();
- msg.what = GpsStatus.GPS_EVENT_FIRST_FIX;
- mGnssHandler.sendMessage(msg);
+ mGnssHandler.obtainMessage(GNSS_EVENT_FIRST_FIX).sendToTarget();
}
}
@@ -1817,11 +1753,8 @@
mGnssStatus = new GnssStatus(svCount, prnWithFlags, cn0s, elevations, azimuths,
carrierFreqs);
- Message msg = Message.obtain();
- msg.what = GpsStatus.GPS_EVENT_SATELLITE_STATUS;
- // remove any SV status messages already in the queue
- mGnssHandler.removeMessages(GpsStatus.GPS_EVENT_SATELLITE_STATUS);
- mGnssHandler.sendMessage(msg);
+ mGnssHandler.removeMessages(GNSS_EVENT_SATELLITE_STATUS);
+ mGnssHandler.obtainMessage(GNSS_EVENT_SATELLITE_STATUS).sendToTarget();
}
}
@@ -1831,11 +1764,9 @@
synchronized (mNmeaBuffer) {
mNmeaBuffer.add(new Nmea(timestamp, nmea));
}
- Message msg = Message.obtain();
- msg.what = NMEA_RECEIVED;
- // remove any NMEA_RECEIVED messages already in the queue
+
mGnssHandler.removeMessages(NMEA_RECEIVED);
- mGnssHandler.sendMessage(msg);
+ mGnssHandler.obtainMessage(NMEA_RECEIVED).sendToTarget();
}
}
}
@@ -1849,27 +1780,12 @@
*
* @throws SecurityException if the ACCESS_FINE_LOCATION permission is not present
* @deprecated use {@link #registerGnssStatusCallback(GnssStatus.Callback)} instead.
+ * @removed
*/
@Deprecated
@RequiresPermission(ACCESS_FINE_LOCATION)
public boolean addGpsStatusListener(GpsStatus.Listener listener) {
- boolean result;
-
- if (mGpsStatusListeners.get(listener) != null) {
- // listener is already registered
- return true;
- }
- try {
- GnssStatusListenerTransport transport = new GnssStatusListenerTransport(listener);
- result = mService.registerGnssStatusCallback(transport, mContext.getPackageName());
- if (result) {
- mGpsStatusListeners.put(listener, transport);
- }
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
-
- return result;
+ return false;
}
/**
@@ -1877,18 +1793,10 @@
*
* @param listener GPS status listener object to remove
* @deprecated use {@link #unregisterGnssStatusCallback(GnssStatus.Callback)} instead.
+ * @removed
*/
@Deprecated
- public void removeGpsStatusListener(GpsStatus.Listener listener) {
- try {
- GnssStatusListenerTransport transport = mGpsStatusListeners.remove(listener);
- if (transport != null) {
- mService.unregisterGnssStatusCallback(transport);
- }
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
+ public void removeGpsStatusListener(GpsStatus.Listener listener) {}
/**
* Registers a GNSS status callback.
@@ -1900,7 +1808,7 @@
* @throws SecurityException if the ACCESS_FINE_LOCATION permission is not present
*/
@RequiresPermission(ACCESS_FINE_LOCATION)
- public boolean registerGnssStatusCallback(GnssStatus.Callback callback) {
+ public boolean registerGnssStatusCallback(@NonNull GnssStatus.Callback callback) {
return registerGnssStatusCallback(callback, null);
}
@@ -1915,7 +1823,8 @@
* @throws SecurityException if the ACCESS_FINE_LOCATION permission is not present
*/
@RequiresPermission(ACCESS_FINE_LOCATION)
- public boolean registerGnssStatusCallback(GnssStatus.Callback callback, Handler handler) {
+ public boolean registerGnssStatusCallback(
+ @NonNull GnssStatus.Callback callback, @Nullable Handler handler) {
boolean result;
if (mGnssStatusListeners.get(callback) != null) {
// listener is already registered
@@ -1940,7 +1849,7 @@
*
* @param callback GNSS status callback object to remove
*/
- public void unregisterGnssStatusCallback(GnssStatus.Callback callback) {
+ public void unregisterGnssStatusCallback(@NonNull GnssStatus.Callback callback) {
try {
GnssStatusListenerTransport transport = mGnssStatusListeners.remove(callback);
if (transport != null) {
@@ -1960,27 +1869,12 @@
*
* @throws SecurityException if the ACCESS_FINE_LOCATION permission is not present
* @deprecated use {@link #addNmeaListener(OnNmeaMessageListener)} instead.
+ * @removed
*/
@Deprecated
@RequiresPermission(ACCESS_FINE_LOCATION)
public boolean addNmeaListener(GpsStatus.NmeaListener listener) {
- boolean result;
-
- if (mGpsNmeaListeners.get(listener) != null) {
- // listener is already registered
- return true;
- }
- try {
- GnssStatusListenerTransport transport = new GnssStatusListenerTransport(listener);
- result = mService.registerGnssStatusCallback(transport, mContext.getPackageName());
- if (result) {
- mGpsNmeaListeners.put(listener, transport);
- }
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
-
- return result;
+ return false;
}
/**
@@ -1988,18 +1882,10 @@
*
* @param listener a {@link GpsStatus.NmeaListener} object to remove
* @deprecated use {@link #removeNmeaListener(OnNmeaMessageListener)} instead.
+ * @removed
*/
@Deprecated
- public void removeNmeaListener(GpsStatus.NmeaListener listener) {
- try {
- GnssStatusListenerTransport transport = mGpsNmeaListeners.remove(listener);
- if (transport != null) {
- mService.unregisterGnssStatusCallback(transport);
- }
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
+ public void removeNmeaListener(GpsStatus.NmeaListener listener) {}
/**
* Adds an NMEA listener.
@@ -2011,7 +1897,7 @@
* @throws SecurityException if the ACCESS_FINE_LOCATION permission is not present
*/
@RequiresPermission(ACCESS_FINE_LOCATION)
- public boolean addNmeaListener(OnNmeaMessageListener listener) {
+ public boolean addNmeaListener(@NonNull OnNmeaMessageListener listener) {
return addNmeaListener(listener, null);
}
@@ -2026,10 +1912,11 @@
* @throws SecurityException if the ACCESS_FINE_LOCATION permission is not present
*/
@RequiresPermission(ACCESS_FINE_LOCATION)
- public boolean addNmeaListener(OnNmeaMessageListener listener, Handler handler) {
+ public boolean addNmeaListener(
+ @NonNull OnNmeaMessageListener listener, @Nullable Handler handler) {
boolean result;
- if (mGpsNmeaListeners.get(listener) != null) {
+ if (mGnssNmeaListeners.get(listener) != null) {
// listener is already registered
return true;
}
@@ -2052,7 +1939,7 @@
*
* @param listener a {@link OnNmeaMessageListener} object to remove
*/
- public void removeNmeaListener(OnNmeaMessageListener listener) {
+ public void removeNmeaListener(@NonNull OnNmeaMessageListener listener) {
try {
GnssStatusListenerTransport transport = mGnssNmeaListeners.remove(listener);
if (transport != null) {
@@ -2068,6 +1955,7 @@
* Don't use it. Use {@link #registerGnssMeasurementsCallback} instead.
* @hide
* @deprecated Not supported anymore.
+ * @removed
*/
@Deprecated
@SystemApi
@@ -2083,7 +1971,8 @@
* @return {@code true} if the callback was added successfully, {@code false} otherwise.
*/
@RequiresPermission(ACCESS_FINE_LOCATION)
- public boolean registerGnssMeasurementsCallback(GnssMeasurementsEvent.Callback callback) {
+ public boolean registerGnssMeasurementsCallback(
+ @NonNull GnssMeasurementsEvent.Callback callback) {
return registerGnssMeasurementsCallback(callback, null);
}
@@ -2095,8 +1984,8 @@
* @return {@code true} if the callback was added successfully, {@code false} otherwise.
*/
@RequiresPermission(ACCESS_FINE_LOCATION)
- public boolean registerGnssMeasurementsCallback(GnssMeasurementsEvent.Callback callback,
- Handler handler) {
+ public boolean registerGnssMeasurementsCallback(
+ @NonNull GnssMeasurementsEvent.Callback callback, @Nullable Handler handler) {
return mGnssMeasurementCallbackTransport.add(callback, handler);
}
@@ -2120,15 +2009,12 @@
}
/**
- * Returns an integer with flags representing the capabilities of the GNSS chipset.
+ * Returns the integer capability flags of the GNSS chipset as defined in {@code
+ * IGnssCallback.hal}
*
* @hide
*/
@SystemApi
- /**
- * Returns the integer capability flags of the GNSS chipset as defined in {@code
- * IGnssCallback.hal}
- */
public int getGnssCapabilities() {
try {
return mGnssMeasurementCallbackTransport.getGnssCapabilities();
@@ -2144,6 +2030,7 @@
* @hide
* @deprecated use {@link #unregisterGnssMeasurementsCallback(GnssMeasurementsEvent.Callback)}
* instead.
+ * @removed
*/
@Deprecated
@SystemApi
@@ -2155,7 +2042,8 @@
*
* @param callback a {@link GnssMeasurementsEvent.Callback} object to remove.
*/
- public void unregisterGnssMeasurementsCallback(GnssMeasurementsEvent.Callback callback) {
+ public void unregisterGnssMeasurementsCallback(
+ @NonNull GnssMeasurementsEvent.Callback callback) {
mGnssMeasurementCallbackTransport.remove(callback);
}
@@ -2164,6 +2052,7 @@
* Don't use it. Use {@link #registerGnssNavigationMessageCallback} instead.
* @hide
* @deprecated Not supported anymore.
+ * @removed
*/
@Deprecated
@SystemApi
@@ -2179,12 +2068,12 @@
* @deprecated use
* {@link #unregisterGnssNavigationMessageCallback(GnssNavigationMessage.Callback)}
* instead
+ * @removed
*/
@Deprecated
@SystemApi
@SuppressLint("Doclava125")
- public void removeGpsNavigationMessageListener(GpsNavigationMessageEvent.Listener listener) {
- }
+ public void removeGpsNavigationMessageListener(GpsNavigationMessageEvent.Listener listener) {}
/**
* Registers a GNSS Navigation Message callback.
@@ -2193,7 +2082,7 @@
* @return {@code true} if the callback was added successfully, {@code false} otherwise.
*/
public boolean registerGnssNavigationMessageCallback(
- GnssNavigationMessage.Callback callback) {
+ @NonNull GnssNavigationMessage.Callback callback) {
return registerGnssNavigationMessageCallback(callback, null);
}
@@ -2206,7 +2095,7 @@
*/
@RequiresPermission(ACCESS_FINE_LOCATION)
public boolean registerGnssNavigationMessageCallback(
- GnssNavigationMessage.Callback callback, Handler handler) {
+ @NonNull GnssNavigationMessage.Callback callback, @Nullable Handler handler) {
return mGnssNavigationMessageCallbackTransport.add(callback, handler);
}
@@ -2216,7 +2105,7 @@
* @param callback a {@link GnssNavigationMessage.Callback} object to remove.
*/
public void unregisterGnssNavigationMessageCallback(
- GnssNavigationMessage.Callback callback) {
+ @NonNull GnssNavigationMessage.Callback callback) {
mGnssNavigationMessageCallbackTransport.remove(callback);
}
@@ -2230,19 +2119,12 @@
*
* @param status object containing GPS status details, or null.
* @return status object containing updated GPS status.
+ * @removed
*/
@Deprecated
@RequiresPermission(ACCESS_FINE_LOCATION)
- public GpsStatus getGpsStatus(GpsStatus status) {
- if (status == null) {
- status = new GpsStatus();
- }
- // When mGnssStatus is null, that means that this method is called outside
- // onGpsStatusChanged(). Return an empty status to maintain backwards compatibility.
- if (mGnssStatus != null) {
- status.setStatus(mGnssStatus, mTimeToFirstFix);
- }
- return status;
+ public @Nullable GpsStatus getGpsStatus(@Nullable GpsStatus status) {
+ return null;
}
/**
@@ -2319,7 +2201,7 @@
@SystemApi
@RequiresPermission(Manifest.permission.LOCATION_HARDWARE)
public boolean registerGnssBatchedLocationCallback(long periodNanos, boolean wakeOnFifoFull,
- BatchedLocationCallback callback, Handler handler) {
+ @NonNull BatchedLocationCallback callback, @Nullable Handler handler) {
mBatchedLocationCallbackTransport.add(callback, handler);
try {
@@ -2357,7 +2239,8 @@
*/
@SystemApi
@RequiresPermission(Manifest.permission.LOCATION_HARDWARE)
- public boolean unregisterGnssBatchedLocationCallback(BatchedLocationCallback callback) {
+ public boolean unregisterGnssBatchedLocationCallback(
+ @NonNull BatchedLocationCallback callback) {
mBatchedLocationCallbackTransport.remove(callback);
@@ -2379,7 +2262,8 @@
*
* @return true if the command succeeds.
*/
- public boolean sendExtraCommand(String provider, String command, Bundle extras) {
+ public boolean sendExtraCommand(
+ @NonNull String provider, @NonNull String command, @Nullable Bundle extras) {
try {
return mService.sendExtraCommand(provider, command, extras);
} catch (RemoteException e) {
@@ -2448,7 +2332,7 @@
* @hide
*/
@SystemApi
- public boolean isProviderPackage(String packageName) {
+ public boolean isProviderPackage(@NonNull String packageName) {
try {
return mService.isProviderPackage(packageName);
} catch (RemoteException e) {
@@ -2464,7 +2348,7 @@
*/
@SystemApi
@RequiresPermission(Manifest.permission.LOCATION_HARDWARE)
- public void setLocationControllerExtraPackage(String packageName) {
+ public void setLocationControllerExtraPackage(@NonNull String packageName) {
try {
mService.setLocationControllerExtraPackage(packageName);
} catch (RemoteException e) {
diff --git a/location/java/android/location/LocationRequest.java b/location/java/android/location/LocationRequest.java
index 6fd063e..a05d850 100644
--- a/location/java/android/location/LocationRequest.java
+++ b/location/java/android/location/LocationRequest.java
@@ -17,6 +17,8 @@
package android.location;
import android.Manifest;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.TestApi;
@@ -183,14 +185,16 @@
*
* @return a new location request
*/
+ @NonNull
public static LocationRequest create() {
return new LocationRequest();
}
/** @hide */
@SystemApi
- public static LocationRequest createFromDeprecatedProvider(String provider, long minTime,
- float minDistance, boolean singleShot) {
+ @NonNull
+ public static LocationRequest createFromDeprecatedProvider(
+ @NonNull String provider, long minTime, float minDistance, boolean singleShot) {
if (minTime < 0) minTime = 0;
if (minDistance < 0) minDistance = 0;
@@ -215,8 +219,9 @@
/** @hide */
@SystemApi
- public static LocationRequest createFromDeprecatedCriteria(Criteria criteria, long minTime,
- float minDistance, boolean singleShot) {
+ @NonNull
+ public static LocationRequest createFromDeprecatedCriteria(
+ @NonNull Criteria criteria, long minTime, float minDistance, boolean singleShot) {
if (minTime < 0) minTime = 0;
if (minDistance < 0) minDistance = 0;
@@ -287,7 +292,7 @@
* @return the same object, so that setters can be chained
* @throws IllegalArgumentException if the quality constant is not valid
*/
- public LocationRequest setQuality(int quality) {
+ public @NonNull LocationRequest setQuality(int quality) {
checkQuality(quality);
mQuality = quality;
return this;
@@ -330,7 +335,7 @@
* @return the same object, so that setters can be chained
* @throws IllegalArgumentException if the interval is less than zero
*/
- public LocationRequest setInterval(long millis) {
+ public @NonNull LocationRequest setInterval(long millis) {
checkInterval(millis);
mInterval = millis;
if (!mExplicitFastestInterval) {
@@ -362,7 +367,7 @@
* @hide
*/
@SystemApi
- public LocationRequest setLowPowerMode(boolean enabled) {
+ public @NonNull LocationRequest setLowPowerMode(boolean enabled) {
mLowPowerMode = enabled;
return this;
}
@@ -386,7 +391,7 @@
* @return the same object, so that setters can be chained
*/
@RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
- public LocationRequest setLocationSettingsIgnored(boolean locationSettingsIgnored) {
+ public @NonNull LocationRequest setLocationSettingsIgnored(boolean locationSettingsIgnored) {
mLocationSettingsIgnored = locationSettingsIgnored;
return this;
}
@@ -427,7 +432,7 @@
* @return the same object, so that setters can be chained
* @throws IllegalArgumentException if the interval is less than zero
*/
- public LocationRequest setFastestInterval(long millis) {
+ public @NonNull LocationRequest setFastestInterval(long millis) {
checkInterval(millis);
mExplicitFastestInterval = true;
mFastestInterval = millis;
@@ -463,7 +468,7 @@
* @param millis duration of request in milliseconds
* @return the same object, so that setters can be chained
*/
- public LocationRequest setExpireIn(long millis) {
+ public @NonNull LocationRequest setExpireIn(long millis) {
long elapsedRealtime = SystemClock.elapsedRealtime();
// Check for > Long.MAX_VALUE overflow (elapsedRealtime > 0):
@@ -491,7 +496,7 @@
* @param millis expiration time of request, in milliseconds since boot including suspend
* @return the same object, so that setters can be chained
*/
- public LocationRequest setExpireAt(long millis) {
+ public @NonNull LocationRequest setExpireAt(long millis) {
mExpireAt = millis;
if (mExpireAt < 0) mExpireAt = 0;
return this;
@@ -522,7 +527,7 @@
* @return the same object, so that setters can be chained
* @throws IllegalArgumentException if numUpdates is 0 or less
*/
- public LocationRequest setNumUpdates(int numUpdates) {
+ public @NonNull LocationRequest setNumUpdates(int numUpdates) {
if (numUpdates <= 0) {
throw new IllegalArgumentException(
"invalid numUpdates: " + numUpdates);
@@ -553,7 +558,8 @@
}
}
- public LocationRequest setProvider(String provider) {
+ /** Sets the provider to use for this location request. */
+ public @NonNull LocationRequest setProvider(@NonNull String provider) {
checkProvider(provider);
mProvider = provider;
return this;
@@ -561,13 +567,13 @@
/** @hide */
@SystemApi
- public String getProvider() {
+ public @NonNull String getProvider() {
return mProvider;
}
/** @hide */
@SystemApi
- public LocationRequest setSmallestDisplacement(float meters) {
+ public @NonNull LocationRequest setSmallestDisplacement(float meters) {
checkDisplacement(meters);
mSmallestDisplacement = meters;
return this;
@@ -590,13 +596,13 @@
* @hide
*/
@SystemApi
- public void setWorkSource(WorkSource workSource) {
+ public void setWorkSource(@Nullable WorkSource workSource) {
mWorkSource = workSource;
}
/** @hide */
@SystemApi
- public WorkSource getWorkSource() {
+ public @Nullable WorkSource getWorkSource() {
return mWorkSource;
}