Features: - SettingsActivity accessible via Menu button (keycode 82) - Configure server URL and mode (online/offline) in-game - Test connection before saving settings - Switch to offline mode with one tap - Sync settings from web admin panel - Real-time status messages with emoji indicators Implementation: - Created 13 SettingsActivity Smali files (main + inner classes) - Created activity_settings.xml UI layout - Added SettingsActivity to AndroidManifest.xml (portrait mode) - Modified MainActivity.smali to handle Menu button press - Integrated with existing ServerManager for Nimble SDK overrides - Settings stored in SharedPreferences (rr3_server_config.xml) APK: - Built and signed: RR3-v14-Settings-Menu.apk (103 MB) - Keystore: rr3-release.keystore (alias: rr3key) - Ready for distribution Related server changes: - ServerSettingsController.cs with 3 API endpoints - DeviceSettings.cshtml admin page - UserSettings database model and migration Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
225 lines
6.9 KiB
Smali
225 lines
6.9 KiB
Smali
.class Lcom/firemint/realracing/SettingsActivity$5$1;
|
|
.super Ljava/lang/Object;
|
|
.source "SettingsActivity.java"
|
|
|
|
# interfaces
|
|
.implements Ljava/lang/Runnable;
|
|
|
|
# annotations
|
|
.annotation system Ldalvik/annotation/EnclosingMethod;
|
|
value = Lcom/firemint/realracing/SettingsActivity$5;->onClick(Landroid/view/View;)V
|
|
.end annotation
|
|
|
|
.annotation system Ldalvik/annotation/InnerClass;
|
|
accessFlags = 0x0
|
|
name = null
|
|
.end annotation
|
|
|
|
# instance fields
|
|
.field final synthetic this$1:Lcom/firemint/realracing/SettingsActivity$5;
|
|
|
|
# direct methods
|
|
.method constructor <init>(Lcom/firemint/realracing/SettingsActivity$5;)V
|
|
.registers 2
|
|
.param p1, "this$1" # Lcom/firemint/realracing/SettingsActivity$5;
|
|
|
|
.line 196
|
|
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity$5$1;->this$1:Lcom/firemint/realracing/SettingsActivity$5;
|
|
|
|
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
# virtual methods
|
|
.method public run()V
|
|
.registers 11
|
|
|
|
.line 199
|
|
:try_start_0
|
|
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$5$1;->this$1:Lcom/firemint/realracing/SettingsActivity$5;
|
|
|
|
iget-object v0, v0, Lcom/firemint/realracing/SettingsActivity$5;->this$0:Lcom/firemint/realracing/SettingsActivity;
|
|
|
|
invoke-virtual {v0}, Lcom/firemint/realracing/SettingsActivity;->getCurrentServerUrl()Ljava/lang/String;
|
|
|
|
move-result-object v0
|
|
|
|
.line 200
|
|
.local v0, "baseUrl":Ljava/lang/String;
|
|
new-instance v1, Ljava/lang/StringBuilder;
|
|
|
|
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
|
|
|
|
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
const-string v2, "/api/settings/getUserSettings"
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
|
|
|
move-result-object v1
|
|
|
|
.line 201
|
|
.local v1, "syncUrl":Ljava/lang/String;
|
|
new-instance v2, Ljava/net/URL;
|
|
|
|
invoke-direct {v2, v1}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
|
|
|
|
.line 202
|
|
.local v2, "url":Ljava/net/URL;
|
|
invoke-virtual {v2}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection;
|
|
|
|
move-result-object v3
|
|
|
|
check-cast v3, Ljava/net/HttpURLConnection;
|
|
|
|
.line 203
|
|
.local v3, "conn":Ljava/net/HttpURLConnection;
|
|
const/16 v4, 0x1388
|
|
|
|
invoke-virtual {v3, v4}, Ljava/net/HttpURLConnection;->setConnectTimeout(I)V
|
|
|
|
.line 204
|
|
const-string v4, "GET"
|
|
|
|
invoke-virtual {v3, v4}, Ljava/net/HttpURLConnection;->setRequestMethod(Ljava/lang/String;)V
|
|
|
|
.line 206
|
|
invoke-virtual {v3}, Ljava/net/HttpURLConnection;->getResponseCode()I
|
|
|
|
move-result v4
|
|
|
|
.line 207
|
|
.local v4, "responseCode":I
|
|
const/16 v5, 0xc8
|
|
|
|
if-ne v4, v5, :cond_a1
|
|
|
|
.line 208
|
|
new-instance v5, Ljava/io/BufferedReader;
|
|
|
|
new-instance v6, Ljava/io/InputStreamReader;
|
|
|
|
invoke-virtual {v3}, Ljava/net/HttpURLConnection;->getInputStream()Ljava/io/InputStream;
|
|
|
|
move-result-object v7
|
|
|
|
invoke-direct {v6, v7}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;)V
|
|
|
|
invoke-direct {v5, v6}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V
|
|
|
|
.line 209
|
|
.local v5, "reader":Ljava/io/BufferedReader;
|
|
new-instance v6, Ljava/lang/StringBuilder;
|
|
|
|
invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
|
|
|
|
.line 211
|
|
.local v6, "response":Ljava/lang/StringBuilder;
|
|
:goto_55
|
|
invoke-virtual {v5}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String;
|
|
|
|
move-result-object v7
|
|
|
|
move-object v8, v7
|
|
|
|
.local v8, "line":Ljava/lang/String;
|
|
if-eqz v7, :cond_62
|
|
|
|
.line 212
|
|
invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
goto :goto_55
|
|
|
|
.line 214
|
|
:cond_62
|
|
invoke-virtual {v5}, Ljava/io/BufferedReader;->close()V
|
|
|
|
.line 217
|
|
new-instance v7, Lorg/json/JSONObject;
|
|
|
|
invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
|
|
|
move-result-object v9
|
|
|
|
invoke-direct {v7, v9}, Lorg/json/JSONObject;-><init>(Ljava/lang/String;)V
|
|
|
|
.line 218
|
|
.local v7, "json":Lorg/json/JSONObject;
|
|
const-string v9, "mode"
|
|
|
|
invoke-virtual {v7, v9}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
|
|
|
|
move-result-object v9
|
|
|
|
.line 219
|
|
.local v9, "mode":Ljava/lang/String;
|
|
const-string v0, "serverUrl"
|
|
|
|
invoke-virtual {v7, v0}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
|
|
|
|
move-result-object v0
|
|
|
|
.line 221
|
|
.local v0, "serverUrl":Ljava/lang/String;
|
|
iget-object v7, p0, Lcom/firemint/realracing/SettingsActivity$5$1;->this$1:Lcom/firemint/realracing/SettingsActivity$5;
|
|
|
|
.end local v7 # "json":Lorg/json/JSONObject;
|
|
iget-object v7, v7, Lcom/firemint/realracing/SettingsActivity$5;->this$0:Lcom/firemint/realracing/SettingsActivity;
|
|
|
|
invoke-virtual {v7, v9, v0}, Lcom/firemint/realracing/SettingsActivity;->saveSettings(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
.line 222
|
|
iget-object v7, p0, Lcom/firemint/realracing/SettingsActivity$5$1;->this$1:Lcom/firemint/realracing/SettingsActivity$5;
|
|
|
|
iget-object v7, v7, Lcom/firemint/realracing/SettingsActivity$5;->this$0:Lcom/firemint/realracing/SettingsActivity;
|
|
|
|
new-instance v0, Lcom/firemint/realracing/SettingsActivity$5$1$1;
|
|
|
|
.end local v0 # "serverUrl":Ljava/lang/String;
|
|
invoke-direct {v0, p0}, Lcom/firemint/realracing/SettingsActivity$5$1$1;-><init>(Lcom/firemint/realracing/SettingsActivity$5$1;)V
|
|
|
|
invoke-virtual {v7, v0}, Lcom/firemint/realracing/SettingsActivity;->runOnUiThread(Ljava/lang/Runnable;)V
|
|
|
|
.line 223
|
|
.end local v5 # "reader":Ljava/io/BufferedReader;
|
|
.end local v6 # "response":Ljava/lang/StringBuilder;
|
|
.end local v8 # "line":Ljava/lang/String;
|
|
.end local v9 # "mode":Ljava/lang/String;
|
|
goto :goto_b7
|
|
|
|
.line 224
|
|
:cond_a1
|
|
iget-object v5, p0, Lcom/firemint/realracing/SettingsActivity$5$1;->this$1:Lcom/firemint/realracing/SettingsActivity$5;
|
|
|
|
iget-object v5, v5, Lcom/firemint/realracing/SettingsActivity$5;->this$0:Lcom/firemint/realracing/SettingsActivity;
|
|
|
|
new-instance v6, Lcom/firemint/realracing/SettingsActivity$5$1$2;
|
|
|
|
invoke-direct {v6, p0}, Lcom/firemint/realracing/SettingsActivity$5$1$2;-><init>(Lcom/firemint/realracing/SettingsActivity$5$1;)V
|
|
|
|
invoke-virtual {v5, v6}, Lcom/firemint/realracing/SettingsActivity;->runOnUiThread(Ljava/lang/Runnable;)V
|
|
|
|
.line 225
|
|
.end local v1 # "syncUrl":Ljava/lang/String;
|
|
.end local v2 # "url":Ljava/net/URL;
|
|
.end local v3 # "conn":Ljava/net/HttpURLConnection;
|
|
.end local v4 # "responseCode":I
|
|
goto :goto_b7
|
|
|
|
.line 226
|
|
:catch_b3
|
|
move-exception v0
|
|
|
|
.line 227
|
|
.local v0, "e":Ljava/lang/Exception;
|
|
invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V
|
|
|
|
.line 229
|
|
.end local v0 # "e":Ljava/lang/Exception;
|
|
:goto_b7
|
|
return-void
|
|
.end method
|