discord-jadx/app/src/main/java/androidx/core/location/LocationCompat.java

78 lines
2.5 KiB
Java

package androidx.core.location;
import android.location.Location;
import androidx.annotation.DoNotInline;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.concurrent.TimeUnit;
public final class LocationCompat {
private static final String EXTRA_IS_MOCK = "mockLocation";
@Nullable
private static Method sSetIsFromMockProviderMethod;
@RequiresApi(17)
public static class Api17Impl {
private Api17Impl() {
}
@DoNotInline
public static long getElapsedRealtimeNanos(Location location) {
return location.getElapsedRealtimeNanos();
}
}
@RequiresApi(18)
public static class Api18Impl {
private Api18Impl() {
}
@DoNotInline
public static boolean isMock(Location location) {
return location.isFromMockProvider();
}
}
private LocationCompat() {
}
public static long getElapsedRealtimeMillis(@NonNull Location location) {
return TimeUnit.NANOSECONDS.toMillis(Api17Impl.getElapsedRealtimeNanos(location));
}
public static long getElapsedRealtimeNanos(@NonNull Location location) {
return Api17Impl.getElapsedRealtimeNanos(location);
}
private static Method getSetIsFromMockProviderMethod() throws NoSuchMethodException {
if (sSetIsFromMockProviderMethod == null) {
Method declaredMethod = Location.class.getDeclaredMethod("setIsFromMockProvider", Boolean.TYPE);
sSetIsFromMockProviderMethod = declaredMethod;
declaredMethod.setAccessible(true);
}
return sSetIsFromMockProviderMethod;
}
public static boolean isMock(@NonNull Location location) {
return Api18Impl.isMock(location);
}
public static void setMock(@NonNull Location location, boolean z2) {
try {
getSetIsFromMockProviderMethod().invoke(location, Boolean.valueOf(z2));
} catch (NoSuchMethodException e) {
NoSuchMethodError noSuchMethodError = new NoSuchMethodError();
noSuchMethodError.initCause(e);
throw noSuchMethodError;
} catch (IllegalAccessException e2) {
IllegalAccessError illegalAccessError = new IllegalAccessError();
illegalAccessError.initCause(e2);
throw illegalAccessError;
} catch (InvocationTargetException e3) {
throw new RuntimeException(e3);
}
}
}