.class public Lcom/moji/tool/fps/FPSMeterBuilder; .super Ljava/lang/Object; .source "FPSMeterBuilder.java" # annotations .annotation build Landroid/annotation/TargetApi; value = 0x10 .end annotation # static fields .field private static a:Lcom/moji/tool/fps/FPSConfig; .field private static b:Lcom/moji/tool/fps/FPSFrameCallback; .field private static c:Lcom/moji/tool/fps/ui/FPSFloat; .field private static d:Lcom/moji/tool/fps/Foreground$Listener; # direct methods .method static constructor ()V .locals 1 .line 28 new-instance v0, Lcom/moji/tool/fps/FPSMeterBuilder$1; invoke-direct {v0}, Lcom/moji/tool/fps/FPSMeterBuilder$1;->()V sput-object v0, Lcom/moji/tool/fps/FPSMeterBuilder;->d:Lcom/moji/tool/fps/Foreground$Listener; return-void .end method .method protected constructor ()V .locals 1 .line 40 invoke-direct {p0}, Ljava/lang/Object;->()V .line 41 new-instance v0, Lcom/moji/tool/fps/FPSConfig; invoke-direct {v0}, Lcom/moji/tool/fps/FPSConfig;->()V sput-object v0, Lcom/moji/tool/fps/FPSMeterBuilder;->a:Lcom/moji/tool/fps/FPSConfig; return-void .end method .method static synthetic a()Lcom/moji/tool/fps/ui/FPSFloat; .locals 1 .line 24 sget-object v0, Lcom/moji/tool/fps/FPSMeterBuilder;->c:Lcom/moji/tool/fps/ui/FPSFloat; return-object v0 .end method .method protected static a(Landroid/content/Context;)V .locals 2 .line 65 sget-object v0, Lcom/moji/tool/fps/FPSMeterBuilder;->b:Lcom/moji/tool/fps/FPSFrameCallback; if-eqz v0, :cond_0 .line 66 sget-object v0, Lcom/moji/tool/fps/FPSMeterBuilder;->b:Lcom/moji/tool/fps/FPSFrameCallback; const/4 v1, 0x0 invoke-virtual {v0, v1}, Lcom/moji/tool/fps/FPSFrameCallback;->a(Z)V .line 69 :cond_0 invoke-static {}, Lcom/moji/tool/fps/Foreground;->a()Lcom/moji/tool/fps/Foreground; move-result-object v0 if-eqz v0, :cond_1 .line 70 invoke-static {p0}, Lcom/moji/tool/fps/Foreground;->a(Landroid/content/Context;)Lcom/moji/tool/fps/Foreground; move-result-object p0 sget-object v0, Lcom/moji/tool/fps/FPSMeterBuilder;->d:Lcom/moji/tool/fps/Foreground$Listener; invoke-virtual {p0, v0}, Lcom/moji/tool/fps/Foreground;->b(Lcom/moji/tool/fps/Foreground$Listener;)V .line 73 :cond_1 sget-object p0, Lcom/moji/tool/fps/FPSMeterBuilder;->c:Lcom/moji/tool/fps/ui/FPSFloat; if-eqz p0, :cond_2 .line 74 sget-object p0, Lcom/moji/tool/fps/FPSMeterBuilder;->c:Lcom/moji/tool/fps/ui/FPSFloat; invoke-virtual {p0}, Lcom/moji/tool/fps/ui/FPSFloat;->a()V :cond_2 const/4 p0, 0x0 .line 78 sput-object p0, Lcom/moji/tool/fps/FPSMeterBuilder;->c:Lcom/moji/tool/fps/ui/FPSFloat; .line 79 sput-object p0, Lcom/moji/tool/fps/FPSMeterBuilder;->b:Lcom/moji/tool/fps/FPSFrameCallback; .line 80 sput-object p0, Lcom/moji/tool/fps/FPSMeterBuilder;->a:Lcom/moji/tool/fps/FPSConfig; return-void .end method .method private c(Landroid/content/Context;)V .locals 3 const-string v0, "window" .line 51 invoke-virtual {p1, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object p1 check-cast p1, Landroid/view/WindowManager; invoke-interface {p1}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display; move-result-object p1 .line 52 sget-object v0, Lcom/moji/tool/fps/FPSMeterBuilder;->a:Lcom/moji/tool/fps/FPSConfig; invoke-virtual {p1}, Landroid/view/Display;->getRefreshRate()F move-result v1 const/high16 v2, 0x447a0000 # 1000.0f div-float/2addr v2, v1 iput v2, v0, Lcom/moji/tool/fps/FPSConfig;->deviceRefreshRateInMs:F .line 53 sget-object v0, Lcom/moji/tool/fps/FPSMeterBuilder;->a:Lcom/moji/tool/fps/FPSConfig; invoke-virtual {p1}, Landroid/view/Display;->getRefreshRate()F move-result p1 iput p1, v0, Lcom/moji/tool/fps/FPSConfig;->refreshRate:F return-void .end method .method private d(Landroid/content/Context;)Z .locals 4 .line 202 sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x17 if-lt v0, v1, :cond_1 .line 203 invoke-static {p1}, Landroid/provider/Settings;->canDrawOverlays(Landroid/content/Context;)Z move-result v0 if-nez v0, :cond_1 .line 204 new-instance v0, Landroid/content/Intent; const-string v1, "android.settings.action.MANAGE_OVERLAY_PERMISSION" new-instance v2, Ljava/lang/StringBuilder; invoke-direct {v2}, Ljava/lang/StringBuilder;->()V const-string v3, "package:" invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; .line 205 invoke-virtual {p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; move-result-object v3 invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v2 invoke-static {v2}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; move-result-object v2 invoke-direct {v0, v1, v2}, Landroid/content/Intent;->(Ljava/lang/String;Landroid/net/Uri;)V const/high16 v1, 0x10000000 .line 206 invoke-virtual {v0, v1}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent; .line 207 invoke-virtual {p1}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; move-result-object v1 const/16 v2, 0x80 invoke-virtual {v1, v0, v2}, Landroid/content/pm/PackageManager;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List; move-result-object v1 invoke-interface {v1}, Ljava/util/List;->isEmpty()Z move-result v1 if-nez v1, :cond_0 .line 208 invoke-virtual {p1, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V :cond_0 const/4 p1, 0x1 goto :goto_0 :cond_1 const/4 p1, 0x0 :goto_0 return p1 .end method # virtual methods .method public b(Landroid/content/Context;)Z .locals 4 const/4 v0, 0x0 if-nez p1, :cond_0 return v0 .line 95 :cond_0 sget v1, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v2, 0x10 const/4 v3, 0x1 if-ge v1, v2, :cond_1 .line 96 sget v1, Lcom/moji/tool/R$string;->open_fps_failed_version:I invoke-static {p1, v1, v3}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; move-result-object p1 invoke-virtual {p1}, Landroid/widget/Toast;->show()V return v0 .line 99 :cond_1 invoke-direct {p0, p1}, Lcom/moji/tool/fps/FPSMeterBuilder;->d(Landroid/content/Context;)Z move-result v1 if-eqz v1, :cond_2 .line 101 sget v1, Lcom/moji/tool/R$string;->reopen_fps_after_permission:I invoke-static {p1, v1, v3}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; move-result-object p1 invoke-virtual {p1}, Landroid/widget/Toast;->show()V return v0 .line 106 :cond_2 sget-object v0, Lcom/moji/tool/fps/FPSMeterBuilder;->c:Lcom/moji/tool/fps/ui/FPSFloat; if-eqz v0, :cond_3 .line 107 sget-object p1, Lcom/moji/tool/fps/FPSMeterBuilder;->c:Lcom/moji/tool/fps/ui/FPSFloat; invoke-virtual {p1}, Lcom/moji/tool/fps/ui/FPSFloat;->b()V return v3 .line 112 :cond_3 invoke-direct {p0, p1}, Lcom/moji/tool/fps/FPSMeterBuilder;->c(Landroid/content/Context;)V .line 115 new-instance v0, Lcom/moji/tool/fps/ui/FPSFloat; invoke-virtual {p1}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context; move-result-object v1 check-cast v1, Landroid/app/Application; sget-object v2, Lcom/moji/tool/fps/FPSMeterBuilder;->a:Lcom/moji/tool/fps/FPSConfig; invoke-direct {v0, v1, v2}, Lcom/moji/tool/fps/ui/FPSFloat;->(Landroid/app/Application;Lcom/moji/tool/fps/FPSConfig;)V sput-object v0, Lcom/moji/tool/fps/FPSMeterBuilder;->c:Lcom/moji/tool/fps/ui/FPSFloat; .line 118 new-instance v0, Lcom/moji/tool/fps/FPSFrameCallback; sget-object v1, Lcom/moji/tool/fps/FPSMeterBuilder;->a:Lcom/moji/tool/fps/FPSConfig; sget-object v2, Lcom/moji/tool/fps/FPSMeterBuilder;->c:Lcom/moji/tool/fps/ui/FPSFloat; invoke-direct {v0, v1, v2}, Lcom/moji/tool/fps/FPSFrameCallback;->(Lcom/moji/tool/fps/FPSConfig;Lcom/moji/tool/fps/ui/FPSFloat;)V sput-object v0, Lcom/moji/tool/fps/FPSMeterBuilder;->b:Lcom/moji/tool/fps/FPSFrameCallback; .line 119 invoke-static {}, Landroid/view/Choreographer;->getInstance()Landroid/view/Choreographer; move-result-object v0 sget-object v1, Lcom/moji/tool/fps/FPSMeterBuilder;->b:Lcom/moji/tool/fps/FPSFrameCallback; invoke-virtual {v0, v1}, Landroid/view/Choreographer;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V .line 122 invoke-virtual {p1}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context; move-result-object p1 check-cast p1, Landroid/app/Application; invoke-static {p1}, Lcom/moji/tool/fps/Foreground;->a(Landroid/app/Application;)Lcom/moji/tool/fps/Foreground; move-result-object p1 sget-object v0, Lcom/moji/tool/fps/FPSMeterBuilder;->d:Lcom/moji/tool/fps/Foreground$Listener; invoke-virtual {p1, v0}, Lcom/moji/tool/fps/Foreground;->a(Lcom/moji/tool/fps/Foreground$Listener;)V return v3 .end method