.class public final Landroidx/core/location/LocationManagerCompat; .super Ljava/lang/Object; .source "SourceFile" # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Landroidx/core/location/LocationManagerCompat$Api28Impl;, Landroidx/core/location/LocationManagerCompat$Api31Impl;, Landroidx/core/location/LocationManagerCompat$Api30Impl;, Landroidx/core/location/LocationManagerCompat$CancellableLocationListener;, Landroidx/core/location/LocationManagerCompat$LocationListenerTransport;, Landroidx/core/location/LocationManagerCompat$LocationListenerKey;, Landroidx/core/location/LocationManagerCompat$Api19Impl;, Landroidx/core/location/LocationManagerCompat$Api24Impl;, Landroidx/core/location/LocationManagerCompat$GnssListenersHolder;, Landroidx/core/location/LocationManagerCompat$GnssMeasurementsTransport;, Landroidx/core/location/LocationManagerCompat$InlineHandlerExecutor;, Landroidx/core/location/LocationManagerCompat$GpsStatusTransport;, Landroidx/core/location/LocationManagerCompat$PreRGnssStatusTransport;, Landroidx/core/location/LocationManagerCompat$GnssStatusTransport; } .end annotation # static fields .field private static final GET_CURRENT_LOCATION_TIMEOUT_MS:J = 0x7530L .field private static final MAX_CURRENT_LOCATION_AGE_MS:J = 0x2710L .field private static final PRE_N_LOOPER_TIMEOUT_S:J = 0x5L .field private static sContextField:Ljava/lang/reflect/Field; .field private static sGnssRequestBuilderBuildMethod:Ljava/lang/reflect/Method; .field private static sGnssRequestBuilderClass:Ljava/lang/Class; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/lang/Class<", "*>;" } .end annotation .end field .field static final sLocationListeners:Ljava/util/WeakHashMap; .annotation build Landroidx/annotation/GuardedBy; value = "sLocationListeners" .end annotation .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/WeakHashMap<", "Landroidx/core/location/LocationManagerCompat$LocationListenerKey;", "Ljava/lang/ref/WeakReference<", "Landroidx/core/location/LocationManagerCompat$LocationListenerTransport;", ">;>;" } .end annotation .end field .field private static sRegisterGnssMeasurementsCallbackMethod:Ljava/lang/reflect/Method; # direct methods .method public static synthetic $r8$lambda$BuDFX8p4cZynZHSiCJ1nwl98OSc(Landroidx/core/util/Consumer;Landroid/location/Location;)V .locals 0 .line 0 invoke-static {p0, p1}, Landroidx/core/location/LocationManagerCompat;->lambda$getCurrentLocation$0(Landroidx/core/util/Consumer;Landroid/location/Location;)V return-void .end method .method static constructor ()V .locals 1 .line 253 new-instance v0, Ljava/util/WeakHashMap; invoke-direct {v0}, Ljava/util/WeakHashMap;->()V sput-object v0, Landroidx/core/location/LocationManagerCompat;->sLocationListeners:Ljava/util/WeakHashMap; return-void .end method .method private constructor ()V .locals 0 .line 694 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method .method public static getCurrentLocation(Landroid/location/LocationManager;Ljava/lang/String;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/core/util/Consumer;)V .locals 8 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p1 # Ljava/lang/String; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Landroid/os/CancellationSignal; .annotation build Landroidx/annotation/Nullable; .end annotation .end param .param p3 # Ljava/util/concurrent/Executor; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p4 # Landroidx/core/util/Consumer; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/RequiresPermission; anyOf = { "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" } .end annotation .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroid/location/LocationManager;", "Ljava/lang/String;", "Landroid/os/CancellationSignal;", "Ljava/util/concurrent/Executor;", "Landroidx/core/util/Consumer<", "Landroid/location/Location;", ">;)V" } .end annotation sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1e if-lt v0, v1, :cond_0 .line 220 invoke-static {p0, p1, p2, p3, p4}, Landroidx/core/location/LocationManagerCompat$Api30Impl;->getCurrentLocation(Landroid/location/LocationManager;Ljava/lang/String;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/core/util/Consumer;)V return-void :cond_0 if-eqz p2, :cond_1 .line 226 invoke-virtual {p2}, Landroid/os/CancellationSignal;->throwIfCanceled()V .line 229 :cond_1 invoke-virtual {p0, p1}, Landroid/location/LocationManager;->getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location; move-result-object v0 if-eqz v0, :cond_2 .line 232 invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J move-result-wide v1 invoke-static {v0}, Landroidx/core/location/LocationCompat;->getElapsedRealtimeMillis(Landroid/location/Location;)J move-result-wide v3 sub-long/2addr v1, v3 const-wide/16 v3, 0x2710 cmp-long v1, v1, v3 if-gez v1, :cond_2 .line 234 new-instance p0, Landroidx/core/location/LocationManagerCompat$$ExternalSyntheticLambda0; invoke-direct {p0, p4, v0}, Landroidx/core/location/LocationManagerCompat$$ExternalSyntheticLambda0;->(Landroidx/core/util/Consumer;Landroid/location/Location;)V invoke-interface {p3, p0}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V return-void .line 239 :cond_2 new-instance v0, Landroidx/core/location/LocationManagerCompat$CancellableLocationListener; invoke-direct {v0, p0, p3, p4}, Landroidx/core/location/LocationManagerCompat$CancellableLocationListener;->(Landroid/location/LocationManager;Ljava/util/concurrent/Executor;Landroidx/core/util/Consumer;)V const-wide/16 v3, 0x0 const/4 v5, 0x0 .line 242 invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper; move-result-object v7 move-object v1, p0 move-object v2, p1 move-object v6, v0 .line 241 invoke-virtual/range {v1 .. v7}, Landroid/location/LocationManager;->requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;Landroid/os/Looper;)V if-eqz p2, :cond_3 .line 245 new-instance p0, Landroidx/core/location/LocationManagerCompat$$ExternalSyntheticLambda1; invoke-direct {p0, v0}, Landroidx/core/location/LocationManagerCompat$$ExternalSyntheticLambda1;->(Landroidx/core/location/LocationManagerCompat$CancellableLocationListener;)V invoke-virtual {p2, p0}, Landroid/os/CancellationSignal;->setOnCancelListener(Landroid/os/CancellationSignal$OnCancelListener;)V :cond_3 const-wide/16 p0, 0x7530 .line 248 invoke-virtual {v0, p0, p1}, Landroidx/core/location/LocationManagerCompat$CancellableLocationListener;->startTimeout(J)V return-void .end method .method public static getCurrentLocation(Landroid/location/LocationManager;Ljava/lang/String;Landroidx/core/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/core/util/Consumer;)V .locals 0 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p1 # Ljava/lang/String; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Landroidx/core/os/CancellationSignal; .annotation build Landroidx/annotation/Nullable; .end annotation .end param .param p3 # Ljava/util/concurrent/Executor; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p4 # Landroidx/core/util/Consumer; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/RequiresPermission; anyOf = { "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" } .end annotation .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroid/location/LocationManager;", "Ljava/lang/String;", "Landroidx/core/os/CancellationSignal;", "Ljava/util/concurrent/Executor;", "Landroidx/core/util/Consumer<", "Landroid/location/Location;", ">;)V" } .end annotation .annotation runtime Ljava/lang/Deprecated; .end annotation if-eqz p2, :cond_0 .line 192 invoke-virtual {p2}, Landroidx/core/os/CancellationSignal;->getCancellationSignalObject()Ljava/lang/Object; move-result-object p2 check-cast p2, Landroid/os/CancellationSignal; goto :goto_0 :cond_0 const/4 p2, 0x0 .line 191 :goto_0 invoke-static {p0, p1, p2, p3, p4}, Landroidx/core/location/LocationManagerCompat;->getCurrentLocation(Landroid/location/LocationManager;Ljava/lang/String;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/core/util/Consumer;)V return-void .end method .method public static getGnssHardwareModelName(Landroid/location/LocationManager;)Ljava/lang/String; .locals 2 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/Nullable; .end annotation sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1c if-lt v0, v1, :cond_0 .line 386 invoke-static {p0}, Landroidx/core/location/LocationManagerCompat$Api28Impl;->getGnssHardwareModelName(Landroid/location/LocationManager;)Ljava/lang/String; move-result-object p0 return-object p0 :cond_0 const/4 p0, 0x0 return-object p0 .end method .method public static getGnssYearOfHardware(Landroid/location/LocationManager;)I .locals 2 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1c if-lt v0, v1, :cond_0 .line 398 invoke-static {p0}, Landroidx/core/location/LocationManagerCompat$Api28Impl;->getGnssYearOfHardware(Landroid/location/LocationManager;)I move-result p0 return p0 :cond_0 const/4 p0, 0x0 return p0 .end method .method public static hasProvider(Landroid/location/LocationManager;Ljava/lang/String;)Z .locals 2 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p1 # Ljava/lang/String; .annotation build Landroidx/annotation/NonNull; .end annotation .end param sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1f if-lt v0, v1, :cond_0 .line 147 invoke-static {p0, p1}, Landroidx/core/location/LocationManagerCompat$Api31Impl;->hasProvider(Landroid/location/LocationManager;Ljava/lang/String;)Z move-result p0 return p0 .line 151 :cond_0 invoke-virtual {p0}, Landroid/location/LocationManager;->getAllProviders()Ljava/util/List; move-result-object v0 invoke-interface {v0, p1}, Ljava/util/List;->contains(Ljava/lang/Object;)Z move-result v0 const/4 v1, 0x1 if-eqz v0, :cond_1 return v1 :cond_1 const/4 v0, 0x0 .line 157 :try_start_0 invoke-virtual {p0, p1}, Landroid/location/LocationManager;->getProvider(Ljava/lang/String;)Landroid/location/LocationProvider; move-result-object p0 :try_end_0 .catch Ljava/lang/SecurityException; {:try_start_0 .. :try_end_0} :catch_0 if-eqz p0, :cond_2 goto :goto_0 :cond_2 move v1, v0 :goto_0 return v1 :catch_0 return v0 .end method .method public static isLocationEnabled(Landroid/location/LocationManager;)Z .locals 2 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1c if-lt v0, v1, :cond_0 .line 102 invoke-static {p0}, Landroidx/core/location/LocationManagerCompat$Api28Impl;->isLocationEnabled(Landroid/location/LocationManager;)Z move-result p0 return p0 :cond_0 const-string v0, "network" .line 133 invoke-virtual {p0, v0}, Landroid/location/LocationManager;->isProviderEnabled(Ljava/lang/String;)Z move-result v0 if-nez v0, :cond_2 const-string v0, "gps" .line 134 invoke-virtual {p0, v0}, Landroid/location/LocationManager;->isProviderEnabled(Ljava/lang/String;)Z move-result p0 if-eqz p0, :cond_1 goto :goto_0 :cond_1 const/4 p0, 0x0 goto :goto_1 :cond_2 :goto_0 const/4 p0, 0x1 :goto_1 return p0 .end method .method private static synthetic lambda$getCurrentLocation$0(Landroidx/core/util/Consumer;Landroid/location/Location;)V .locals 0 .line 234 invoke-interface {p0, p1}, Landroidx/core/util/Consumer;->accept(Ljava/lang/Object;)V return-void .end method .method private static synthetic lambda$registerGnssStatusCallback$1(Landroid/location/LocationManager;Landroidx/core/location/LocationManagerCompat$GpsStatusTransport;)Ljava/lang/Boolean; .locals 0 .annotation system Ldalvik/annotation/Throws; value = { Ljava/lang/Exception; } .end annotation .line 620 invoke-virtual {p0, p1}, Landroid/location/LocationManager;->addGpsStatusListener(Landroid/location/GpsStatus$Listener;)Z move-result p0 invoke-static {p0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; move-result-object p0 return-object p0 .end method .method public static registerGnssMeasurementsCallback(Landroid/location/LocationManager;Landroid/location/GnssMeasurementsEvent$Callback;Landroid/os/Handler;)Z .locals 2 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p1 # Landroid/location/GnssMeasurementsEvent$Callback; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Landroid/os/Handler; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/RequiresApi; value = 0x18 .end annotation .annotation build Landroidx/annotation/RequiresPermission; value = "android.permission.ACCESS_FINE_LOCATION" .end annotation sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1e if-le v0, v1, :cond_0 .line 428 invoke-static {p0, p1, p2}, Landroidx/core/location/LocationManagerCompat$Api24Impl;->registerGnssMeasurementsCallback(Landroid/location/LocationManager;Landroid/location/GnssMeasurementsEvent$Callback;Landroid/os/Handler;)Z move-result p0 return p0 :cond_0 if-ne v0, v1, :cond_1 .line 431 invoke-static {p2}, Landroidx/core/os/ExecutorCompat;->create(Landroid/os/Handler;)Ljava/util/concurrent/Executor; move-result-object p2 .line 430 invoke-static {p0, p2, p1}, Landroidx/core/location/LocationManagerCompat;->registerGnssMeasurementsCallbackOnR(Landroid/location/LocationManager;Ljava/util/concurrent/Executor;Landroid/location/GnssMeasurementsEvent$Callback;)Z move-result p0 return p0 .line 434 :cond_1 sget-object v0, Landroidx/core/location/LocationManagerCompat$GnssListenersHolder;->sGnssMeasurementListeners:Landroidx/collection/SimpleArrayMap; monitor-enter v0 .line 435 :try_start_0 invoke-static {p0, p1}, Landroidx/core/location/LocationManagerCompat;->unregisterGnssMeasurementsCallback(Landroid/location/LocationManager;Landroid/location/GnssMeasurementsEvent$Callback;)V .line 436 invoke-static {p0, p1, p2}, Landroidx/core/location/LocationManagerCompat$Api24Impl;->registerGnssMeasurementsCallback(Landroid/location/LocationManager;Landroid/location/GnssMeasurementsEvent$Callback;Landroid/os/Handler;)Z move-result p0 if-eqz p0, :cond_2 .line 438 invoke-virtual {v0, p1, p1}, Landroidx/collection/SimpleArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 439 monitor-exit v0 const/4 p0, 0x1 return p0 :catchall_0 move-exception p0 goto :goto_0 .line 441 :cond_2 monitor-exit v0 const/4 p0, 0x0 return p0 .line 443 :goto_0 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p0 .end method .method public static registerGnssMeasurementsCallback(Landroid/location/LocationManager;Ljava/util/concurrent/Executor;Landroid/location/GnssMeasurementsEvent$Callback;)Z .locals 2 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p1 # Ljava/util/concurrent/Executor; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Landroid/location/GnssMeasurementsEvent$Callback; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/RequiresApi; value = 0x18 .end annotation .annotation build Landroidx/annotation/RequiresPermission; value = "android.permission.ACCESS_FINE_LOCATION" .end annotation sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1e if-le v0, v1, :cond_0 .line 462 invoke-static {p0, p1, p2}, Landroidx/core/location/LocationManagerCompat$Api31Impl;->registerGnssMeasurementsCallback(Landroid/location/LocationManager;Ljava/util/concurrent/Executor;Landroid/location/GnssMeasurementsEvent$Callback;)Z move-result p0 return p0 :cond_0 if-ne v0, v1, :cond_1 .line 464 invoke-static {p0, p1, p2}, Landroidx/core/location/LocationManagerCompat;->registerGnssMeasurementsCallbackOnR(Landroid/location/LocationManager;Ljava/util/concurrent/Executor;Landroid/location/GnssMeasurementsEvent$Callback;)Z move-result p0 return p0 .line 468 :cond_1 sget-object v0, Landroidx/core/location/LocationManagerCompat$GnssListenersHolder;->sGnssMeasurementListeners:Landroidx/collection/SimpleArrayMap; monitor-enter v0 .line 469 :try_start_0 new-instance v1, Landroidx/core/location/LocationManagerCompat$GnssMeasurementsTransport; invoke-direct {v1, p2, p1}, Landroidx/core/location/LocationManagerCompat$GnssMeasurementsTransport;->(Landroid/location/GnssMeasurementsEvent$Callback;Ljava/util/concurrent/Executor;)V .line 471 invoke-static {p0, p2}, Landroidx/core/location/LocationManagerCompat;->unregisterGnssMeasurementsCallback(Landroid/location/LocationManager;Landroid/location/GnssMeasurementsEvent$Callback;)V .line 472 invoke-static {p0, v1}, Landroidx/core/location/LocationManagerCompat$Api24Impl;->registerGnssMeasurementsCallback(Landroid/location/LocationManager;Landroid/location/GnssMeasurementsEvent$Callback;)Z move-result p0 if-eqz p0, :cond_2 .line 473 invoke-virtual {v0, p2, v1}, Landroidx/collection/SimpleArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 474 monitor-exit v0 const/4 p0, 0x1 return p0 :catchall_0 move-exception p0 goto :goto_0 .line 476 :cond_2 monitor-exit v0 const/4 p0, 0x0 return p0 .line 478 :goto_0 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p0 .end method .method private static registerGnssMeasurementsCallbackOnR(Landroid/location/LocationManager;Ljava/util/concurrent/Executor;Landroid/location/GnssMeasurementsEvent$Callback;)Z .locals 8 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p1 # Ljava/util/concurrent/Executor; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Landroid/location/GnssMeasurementsEvent$Callback; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/RequiresApi; value = 0x1e .end annotation sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1e if-ne v0, v1, :cond_4 const/4 v0, 0x0 :try_start_0 sget-object v1, Landroidx/core/location/LocationManagerCompat;->sGnssRequestBuilderClass:Ljava/lang/Class; if-nez v1, :cond_0 const-string v1, "android.location.GnssRequest$Builder" .line 514 invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class; move-result-object v1 sput-object v1, Landroidx/core/location/LocationManagerCompat;->sGnssRequestBuilderClass:Ljava/lang/Class; :cond_0 sget-object v1, Landroidx/core/location/LocationManagerCompat;->sGnssRequestBuilderBuildMethod:Ljava/lang/reflect/Method; const/4 v2, 0x1 if-nez v1, :cond_1 sget-object v1, Landroidx/core/location/LocationManagerCompat;->sGnssRequestBuilderClass:Ljava/lang/Class; const-string v3, "build" new-array v4, v0, [Ljava/lang/Class; .line 518 invoke-virtual {v1, v3, v4}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; move-result-object v1 sput-object v1, Landroidx/core/location/LocationManagerCompat;->sGnssRequestBuilderBuildMethod:Ljava/lang/reflect/Method; .line 520 invoke-virtual {v1, v2}, Ljava/lang/reflect/AccessibleObject;->setAccessible(Z)V :cond_1 sget-object v1, Landroidx/core/location/LocationManagerCompat;->sRegisterGnssMeasurementsCallbackMethod:Ljava/lang/reflect/Method; const/4 v3, 0x2 const/4 v4, 0x3 if-nez v1, :cond_2 const-class v1, Landroid/location/LocationManager; const-string v5, "registerGnssMeasurementsCallback" new-array v6, v4, [Ljava/lang/Class; const-string v7, "android.location.GnssRequest" .line 526 invoke-static {v7}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class; move-result-object v7 aput-object v7, v6, v0 const-class v7, Ljava/util/concurrent/Executor; aput-object v7, v6, v2 const-class v7, Landroid/location/GnssMeasurementsEvent$Callback; aput-object v7, v6, v3 .line 524 invoke-virtual {v1, v5, v6}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; move-result-object v1 sput-object v1, Landroidx/core/location/LocationManagerCompat;->sRegisterGnssMeasurementsCallbackMethod:Ljava/lang/reflect/Method; .line 528 invoke-virtual {v1, v2}, Ljava/lang/reflect/AccessibleObject;->setAccessible(Z)V :cond_2 sget-object v1, Landroidx/core/location/LocationManagerCompat;->sRegisterGnssMeasurementsCallbackMethod:Ljava/lang/reflect/Method; new-array v4, v4, [Ljava/lang/Object; sget-object v5, Landroidx/core/location/LocationManagerCompat;->sGnssRequestBuilderBuildMethod:Ljava/lang/reflect/Method; sget-object v6, Landroidx/core/location/LocationManagerCompat;->sGnssRequestBuilderClass:Ljava/lang/Class; new-array v7, v0, [Ljava/lang/Class; .line 533 invoke-virtual {v6, v7}, Ljava/lang/Class;->getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor; move-result-object v6 new-array v7, v0, [Ljava/lang/Object; invoke-virtual {v6, v7}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object; move-result-object v6 new-array v7, v0, [Ljava/lang/Object; .line 532 invoke-virtual {v5, v6, v7}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; move-result-object v5 aput-object v5, v4, v0 aput-object p1, v4, v2 aput-object p2, v4, v3 .line 531 invoke-virtual {v1, p0, v4}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; move-result-object p0 if-eqz p0, :cond_3 .line 535 check-cast p0, Ljava/lang/Boolean; invoke-virtual {p0}, Ljava/lang/Boolean;->booleanValue()Z move-result p0 :try_end_0 .catch Ljava/lang/ClassNotFoundException; {:try_start_0 .. :try_end_0} :catch_0 .catch Ljava/lang/reflect/InvocationTargetException; {:try_start_0 .. :try_end_0} :catch_0 .catch Ljava/lang/NoSuchMethodException; {:try_start_0 .. :try_end_0} :catch_0 .catch Ljava/lang/IllegalAccessException; {:try_start_0 .. :try_end_0} :catch_0 .catch Ljava/lang/InstantiationException; {:try_start_0 .. :try_end_0} :catch_0 if-eqz p0, :cond_3 move v0, v2 :catch_0 :cond_3 return v0 .line 541 :cond_4 new-instance p0, Ljava/lang/IllegalStateException; invoke-direct {p0}, Ljava/lang/IllegalStateException;->()V throw p0 .end method .method private static registerGnssStatusCallback(Landroid/location/LocationManager;Landroid/os/Handler;Ljava/util/concurrent/Executor;Landroidx/core/location/GnssStatusCompat$Callback;)Z .locals 2 .annotation build Landroidx/annotation/RequiresPermission; value = "android.permission.ACCESS_FINE_LOCATION" .end annotation sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1e if-lt v0, v1, :cond_0 .line 601 invoke-static {p0, p1, p2, p3}, Landroidx/core/location/LocationManagerCompat$Api30Impl;->registerGnssStatusCallback(Landroid/location/LocationManager;Landroid/os/Handler;Ljava/util/concurrent/Executor;Landroidx/core/location/GnssStatusCompat$Callback;)Z move-result p0 return p0 .line 604 :cond_0 invoke-static {p0, p1, p2, p3}, Landroidx/core/location/LocationManagerCompat$Api24Impl;->registerGnssStatusCallback(Landroid/location/LocationManager;Landroid/os/Handler;Ljava/util/concurrent/Executor;Landroidx/core/location/GnssStatusCompat$Callback;)Z move-result p0 return p0 .end method .method public static registerGnssStatusCallback(Landroid/location/LocationManager;Landroidx/core/location/GnssStatusCompat$Callback;Landroid/os/Handler;)Z .locals 2 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p1 # Landroidx/core/location/GnssStatusCompat$Callback; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Landroid/os/Handler; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/RequiresPermission; value = "android.permission.ACCESS_FINE_LOCATION" .end annotation sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1e if-lt v0, v1, :cond_0 .line 556 invoke-static {p2}, Landroidx/core/os/ExecutorCompat;->create(Landroid/os/Handler;)Ljava/util/concurrent/Executor; move-result-object p2 invoke-static {p0, p2, p1}, Landroidx/core/location/LocationManagerCompat;->registerGnssStatusCallback(Landroid/location/LocationManager;Ljava/util/concurrent/Executor;Landroidx/core/location/GnssStatusCompat$Callback;)Z move-result p0 return p0 .line 559 :cond_0 new-instance v0, Landroidx/core/location/LocationManagerCompat$InlineHandlerExecutor; invoke-direct {v0, p2}, Landroidx/core/location/LocationManagerCompat$InlineHandlerExecutor;->(Landroid/os/Handler;)V invoke-static {p0, v0, p1}, Landroidx/core/location/LocationManagerCompat;->registerGnssStatusCallback(Landroid/location/LocationManager;Ljava/util/concurrent/Executor;Landroidx/core/location/GnssStatusCompat$Callback;)Z move-result p0 return p0 .end method .method public static registerGnssStatusCallback(Landroid/location/LocationManager;Ljava/util/concurrent/Executor;Landroidx/core/location/GnssStatusCompat$Callback;)Z .locals 2 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p1 # Ljava/util/concurrent/Executor; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Landroidx/core/location/GnssStatusCompat$Callback; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/RequiresPermission; value = "android.permission.ACCESS_FINE_LOCATION" .end annotation sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1e if-lt v0, v1, :cond_0 const/4 v0, 0x0 .line 586 invoke-static {p0, v0, p1, p2}, Landroidx/core/location/LocationManagerCompat;->registerGnssStatusCallback(Landroid/location/LocationManager;Landroid/os/Handler;Ljava/util/concurrent/Executor;Landroidx/core/location/GnssStatusCompat$Callback;)Z move-result p0 return p0 .line 588 :cond_0 invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper; move-result-object v0 if-nez v0, :cond_1 .line 590 invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper; move-result-object v0 .line 592 :cond_1 new-instance v1, Landroid/os/Handler; invoke-direct {v1, v0}, Landroid/os/Handler;->(Landroid/os/Looper;)V invoke-static {p0, v1, p1, p2}, Landroidx/core/location/LocationManagerCompat;->registerGnssStatusCallback(Landroid/location/LocationManager;Landroid/os/Handler;Ljava/util/concurrent/Executor;Landroidx/core/location/GnssStatusCompat$Callback;)Z move-result p0 return p0 .end method .method public static registerLocationListenerTransport(Landroid/location/LocationManager;Landroidx/core/location/LocationManagerCompat$LocationListenerTransport;)V .locals 3 .annotation build Landroidx/annotation/GuardedBy; value = "sLocationListeners" .end annotation .annotation build Landroidx/annotation/RequiresPermission; anyOf = { "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" } .end annotation sget-object v0, Landroidx/core/location/LocationManagerCompat;->sLocationListeners:Ljava/util/WeakHashMap; .line 301 invoke-virtual {p1}, Landroidx/core/location/LocationManagerCompat$LocationListenerTransport;->getKey()Landroidx/core/location/LocationManagerCompat$LocationListenerKey; move-result-object v1 new-instance v2, Ljava/lang/ref/WeakReference; invoke-direct {v2, p1}, Ljava/lang/ref/WeakReference;->(Ljava/lang/Object;)V invoke-virtual {v0, v1, v2}, Ljava/util/WeakHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 check-cast p1, Ljava/lang/ref/WeakReference; if-eqz p1, :cond_0 .line 302 invoke-virtual {p1}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object; move-result-object p1 check-cast p1, Landroidx/core/location/LocationManagerCompat$LocationListenerTransport; goto :goto_0 :cond_0 const/4 p1, 0x0 :goto_0 if-eqz p1, :cond_1 .line 304 invoke-virtual {p1}, Landroidx/core/location/LocationManagerCompat$LocationListenerTransport;->unregister()V .line 305 invoke-virtual {p0, p1}, Landroid/location/LocationManager;->removeUpdates(Landroid/location/LocationListener;)V :cond_1 return-void .end method .method public static removeUpdates(Landroid/location/LocationManager;Landroidx/core/location/LocationListenerCompat;)V .locals 6 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p1 # Landroidx/core/location/LocationListenerCompat; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/RequiresPermission; anyOf = { "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" } .end annotation sget-object v0, Landroidx/core/location/LocationManagerCompat;->sLocationListeners:Ljava/util/WeakHashMap; .line 347 monitor-enter v0 .line 350 :try_start_0 invoke-virtual {v0}, Ljava/util/WeakHashMap;->values()Ljava/util/Collection; move-result-object v1 invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator; move-result-object v1 const/4 v2, 0x0 :cond_0 :goto_0 invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z move-result v3 if-eqz v3, :cond_3 invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v3 check-cast v3, Ljava/lang/ref/WeakReference; .line 351 invoke-virtual {v3}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object; move-result-object v3 check-cast v3, Landroidx/core/location/LocationManagerCompat$LocationListenerTransport; if-nez v3, :cond_1 goto :goto_0 .line 355 :cond_1 invoke-virtual {v3}, Landroidx/core/location/LocationManagerCompat$LocationListenerTransport;->getKey()Landroidx/core/location/LocationManagerCompat$LocationListenerKey; move-result-object v4 .line 356 iget-object v5, v4, Landroidx/core/location/LocationManagerCompat$LocationListenerKey;->mListener:Landroidx/core/location/LocationListenerCompat; if-ne v5, p1, :cond_0 if-nez v2, :cond_2 .line 358 new-instance v2, Ljava/util/ArrayList; invoke-direct {v2}, Ljava/util/ArrayList;->()V goto :goto_1 :catchall_0 move-exception p0 goto :goto_3 .line 360 :cond_2 :goto_1 invoke-virtual {v2, v4}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z .line 361 invoke-virtual {v3}, Landroidx/core/location/LocationManagerCompat$LocationListenerTransport;->unregister()V .line 362 invoke-virtual {p0, v3}, Landroid/location/LocationManager;->removeUpdates(Landroid/location/LocationListener;)V goto :goto_0 :cond_3 if-eqz v2, :cond_4 .line 366 invoke-virtual {v2}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator; move-result-object v1 :goto_2 invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z move-result v2 if-eqz v2, :cond_4 invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v2 check-cast v2, Landroidx/core/location/LocationManagerCompat$LocationListenerKey; sget-object v3, Landroidx/core/location/LocationManagerCompat;->sLocationListeners:Ljava/util/WeakHashMap; .line 367 invoke-virtual {v3, v2}, Ljava/util/WeakHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; goto :goto_2 .line 370 :cond_4 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 374 invoke-virtual {p0, p1}, Landroid/location/LocationManager;->removeUpdates(Landroid/location/LocationListener;)V return-void .line 370 :goto_3 :try_start_1 monitor-exit v0 :try_end_1 .catchall {:try_start_1 .. :try_end_1} :catchall_0 throw p0 .end method .method public static requestLocationUpdates(Landroid/location/LocationManager;Ljava/lang/String;Landroidx/core/location/LocationRequestCompat;Landroidx/core/location/LocationListenerCompat;Landroid/os/Looper;)V .locals 8 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p1 # Ljava/lang/String; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Landroidx/core/location/LocationRequestCompat; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p3 # Landroidx/core/location/LocationListenerCompat; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p4 # Landroid/os/Looper; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/RequiresPermission; anyOf = { "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" } .end annotation sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1f if-lt v0, v1, :cond_0 .line 325 invoke-virtual {p2}, Landroidx/core/location/LocationRequestCompat;->toLocationRequest()Landroid/location/LocationRequest; move-result-object p2 new-instance v0, Landroid/os/Handler; invoke-direct {v0, p4}, Landroid/os/Handler;->(Landroid/os/Looper;)V .line 326 invoke-static {v0}, Landroidx/core/os/ExecutorCompat;->create(Landroid/os/Handler;)Ljava/util/concurrent/Executor; move-result-object p4 .line 324 invoke-static {p0, p1, p2, p4, p3}, Landroidx/core/location/LocationManagerCompat$Api31Impl;->requestLocationUpdates(Landroid/location/LocationManager;Ljava/lang/String;Landroid/location/LocationRequest;Ljava/util/concurrent/Executor;Landroid/location/LocationListener;)V return-void .line 330 :cond_0 invoke-static {p0, p1, p2, p3, p4}, Landroidx/core/location/LocationManagerCompat$Api19Impl;->tryRequestLocationUpdates(Landroid/location/LocationManager;Ljava/lang/String;Landroidx/core/location/LocationRequestCompat;Landroidx/core/location/LocationListenerCompat;Landroid/os/Looper;)Z move-result v0 if-eqz v0, :cond_1 return-void .line 335 :cond_1 invoke-virtual {p2}, Landroidx/core/location/LocationRequestCompat;->getIntervalMillis()J move-result-wide v3 .line 336 invoke-virtual {p2}, Landroidx/core/location/LocationRequestCompat;->getMinUpdateDistanceMeters()F move-result v5 move-object v1, p0 move-object v2, p1 move-object v6, p3 move-object v7, p4 .line 335 invoke-virtual/range {v1 .. v7}, Landroid/location/LocationManager;->requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;Landroid/os/Looper;)V return-void .end method .method public static requestLocationUpdates(Landroid/location/LocationManager;Ljava/lang/String;Landroidx/core/location/LocationRequestCompat;Ljava/util/concurrent/Executor;Landroidx/core/location/LocationListenerCompat;)V .locals 8 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p1 # Ljava/lang/String; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Landroidx/core/location/LocationRequestCompat; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p3 # Ljava/util/concurrent/Executor; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p4 # Landroidx/core/location/LocationListenerCompat; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/RequiresPermission; anyOf = { "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" } .end annotation sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1f if-lt v0, v1, :cond_0 .line 271 invoke-virtual {p2}, Landroidx/core/location/LocationRequestCompat;->toLocationRequest()Landroid/location/LocationRequest; move-result-object p2 .line 270 invoke-static {p0, p1, p2, p3, p4}, Landroidx/core/location/LocationManagerCompat$Api31Impl;->requestLocationUpdates(Landroid/location/LocationManager;Ljava/lang/String;Landroid/location/LocationRequest;Ljava/util/concurrent/Executor;Landroid/location/LocationListener;)V return-void :cond_0 const/16 v1, 0x1e if-lt v0, v1, :cond_1 .line 275 invoke-static {p0, p1, p2, p3, p4}, Landroidx/core/location/LocationManagerCompat$Api30Impl;->tryRequestLocationUpdates(Landroid/location/LocationManager;Ljava/lang/String;Landroidx/core/location/LocationRequestCompat;Ljava/util/concurrent/Executor;Landroidx/core/location/LocationListenerCompat;)Z move-result v0 if-eqz v0, :cond_1 return-void .line 280 :cond_1 new-instance v0, Landroidx/core/location/LocationManagerCompat$LocationListenerTransport; new-instance v1, Landroidx/core/location/LocationManagerCompat$LocationListenerKey; invoke-direct {v1, p1, p4}, Landroidx/core/location/LocationManagerCompat$LocationListenerKey;->(Ljava/lang/String;Landroidx/core/location/LocationListenerCompat;)V invoke-direct {v0, v1, p3}, Landroidx/core/location/LocationManagerCompat$LocationListenerTransport;->(Landroidx/core/location/LocationManagerCompat$LocationListenerKey;Ljava/util/concurrent/Executor;)V .line 283 invoke-static {p0, p1, p2, v0}, Landroidx/core/location/LocationManagerCompat$Api19Impl;->tryRequestLocationUpdates(Landroid/location/LocationManager;Ljava/lang/String;Landroidx/core/location/LocationRequestCompat;Landroidx/core/location/LocationManagerCompat$LocationListenerTransport;)Z move-result p3 if-eqz p3, :cond_2 return-void :cond_2 sget-object p3, Landroidx/core/location/LocationManagerCompat;->sLocationListeners:Ljava/util/WeakHashMap; .line 288 monitor-enter p3 .line 289 :try_start_0 invoke-virtual {p2}, Landroidx/core/location/LocationRequestCompat;->getIntervalMillis()J move-result-wide v3 .line 290 invoke-virtual {p2}, Landroidx/core/location/LocationRequestCompat;->getMinUpdateDistanceMeters()F move-result v5 .line 291 invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper; move-result-object v7 move-object v1, p0 move-object v2, p1 move-object v6, v0 .line 289 invoke-virtual/range {v1 .. v7}, Landroid/location/LocationManager;->requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;Landroid/os/Looper;)V .line 292 invoke-static {p0, v0}, Landroidx/core/location/LocationManagerCompat;->registerLocationListenerTransport(Landroid/location/LocationManager;Landroidx/core/location/LocationManagerCompat$LocationListenerTransport;)V .line 293 monitor-exit p3 return-void :catchall_0 move-exception p0 monitor-exit p3 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p0 .end method .method public static unregisterGnssMeasurementsCallback(Landroid/location/LocationManager;Landroid/location/GnssMeasurementsEvent$Callback;)V .locals 2 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p1 # Landroid/location/GnssMeasurementsEvent$Callback; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/RequiresApi; value = 0x18 .end annotation sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1e if-lt v0, v1, :cond_0 .line 490 invoke-static {p0, p1}, Landroidx/core/location/LocationManagerCompat$Api24Impl;->unregisterGnssMeasurementsCallback(Landroid/location/LocationManager;Landroid/location/GnssMeasurementsEvent$Callback;)V goto :goto_1 .line 492 :cond_0 sget-object v0, Landroidx/core/location/LocationManagerCompat$GnssListenersHolder;->sGnssMeasurementListeners:Landroidx/collection/SimpleArrayMap; monitor-enter v0 .line 494 :try_start_0 invoke-virtual {v0, p1}, Landroidx/collection/SimpleArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 check-cast p1, Landroid/location/GnssMeasurementsEvent$Callback; if-eqz p1, :cond_2 .line 496 instance-of v1, p1, Landroidx/core/location/LocationManagerCompat$GnssMeasurementsTransport; if-eqz v1, :cond_1 .line 497 move-object v1, p1 check-cast v1, Landroidx/core/location/LocationManagerCompat$GnssMeasurementsTransport; invoke-virtual {v1}, Landroidx/core/location/LocationManagerCompat$GnssMeasurementsTransport;->unregister()V goto :goto_0 :catchall_0 move-exception p0 goto :goto_2 .line 499 :cond_1 :goto_0 invoke-static {p0, p1}, Landroidx/core/location/LocationManagerCompat$Api24Impl;->unregisterGnssMeasurementsCallback(Landroid/location/LocationManager;Landroid/location/GnssMeasurementsEvent$Callback;)V .line 501 :cond_2 monitor-exit v0 :goto_1 return-void :goto_2 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p0 .end method .method public static unregisterGnssStatusCallback(Landroid/location/LocationManager;Landroidx/core/location/GnssStatusCompat$Callback;)V .locals 1 .param p0 # Landroid/location/LocationManager; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p1 # Landroidx/core/location/GnssStatusCompat$Callback; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .line 675 sget-object v0, Landroidx/core/location/LocationManagerCompat$GnssListenersHolder;->sGnssStatusListeners:Landroidx/collection/SimpleArrayMap; monitor-enter v0 .line 676 :try_start_0 invoke-virtual {v0, p1}, Landroidx/collection/SimpleArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 if-eqz p1, :cond_0 .line 678 invoke-static {p0, p1}, Landroidx/core/location/LocationManagerCompat$Api24Impl;->unregisterGnssStatusCallback(Landroid/location/LocationManager;Ljava/lang/Object;)V goto :goto_0 :catchall_0 move-exception p0 goto :goto_1 .line 680 :cond_0 :goto_0 monitor-exit v0 return-void :goto_1 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p0 .end method