Add in-game settings menu with web panel sync
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>
This commit is contained in:
123
smali_classes2/com/firemint/realracing/SettingsActivity$1.smali
Normal file
123
smali_classes2/com/firemint/realracing/SettingsActivity$1.smali
Normal file
@@ -0,0 +1,123 @@
|
||||
.class Lcom/firemint/realracing/SettingsActivity$1;
|
||||
.super Ljava/lang/Object;
|
||||
.source "SettingsActivity.java"
|
||||
|
||||
# interfaces
|
||||
.implements Ljava/lang/Runnable;
|
||||
|
||||
|
||||
# annotations
|
||||
.annotation system Ldalvik/annotation/EnclosingMethod;
|
||||
value = Lcom/firemint/realracing/SettingsActivity;->testConnection(Ljava/lang/String;)V
|
||||
.end annotation
|
||||
|
||||
.annotation system Ldalvik/annotation/InnerClass;
|
||||
accessFlags = 0x0
|
||||
name = null
|
||||
.end annotation
|
||||
|
||||
|
||||
# instance fields
|
||||
.field final synthetic this$0:Lcom/firemint/realracing/SettingsActivity;
|
||||
|
||||
.field final synthetic val$serverUrl:Ljava/lang/String;
|
||||
|
||||
|
||||
# direct methods
|
||||
.method constructor <init>(Lcom/firemint/realracing/SettingsActivity;Ljava/lang/String;)V
|
||||
.locals 0
|
||||
|
||||
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity$1;->this$0:Lcom/firemint/realracing/SettingsActivity;
|
||||
|
||||
iput-object p2, p0, Lcom/firemint/realracing/SettingsActivity$1;->val$serverUrl:Ljava/lang/String;
|
||||
|
||||
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
|
||||
|
||||
return-void
|
||||
.end method
|
||||
|
||||
|
||||
# virtual methods
|
||||
.method public run()V
|
||||
.locals 5
|
||||
|
||||
:try_start_0
|
||||
new-instance v0, Ljava/net/URL;
|
||||
|
||||
new-instance v1, Ljava/lang/StringBuilder;
|
||||
|
||||
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
|
||||
|
||||
iget-object v2, p0, Lcom/firemint/realracing/SettingsActivity$1;->val$serverUrl:Ljava/lang/String;
|
||||
|
||||
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||
|
||||
const-string v2, "/director/api/android/getDirectionByPackage?packageName=test"
|
||||
|
||||
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
|
||||
|
||||
invoke-direct {v0, v1}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
|
||||
|
||||
invoke-virtual {v0}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
check-cast v0, Ljava/net/HttpURLConnection;
|
||||
|
||||
const/16 v1, 0x1388
|
||||
|
||||
invoke-virtual {v0, v1}, Ljava/net/HttpURLConnection;->setConnectTimeout(I)V
|
||||
|
||||
invoke-virtual {v0, v1}, Ljava/net/HttpURLConnection;->setReadTimeout(I)V
|
||||
|
||||
invoke-virtual {v0}, Ljava/net/HttpURLConnection;->getResponseCode()I
|
||||
|
||||
move-result v1
|
||||
|
||||
invoke-virtual {v0}, Ljava/net/HttpURLConnection;->disconnect()V
|
||||
|
||||
const/16 v0, 0xc8
|
||||
|
||||
if-ne v1, v0, :cond_0
|
||||
|
||||
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$1;->this$0:Lcom/firemint/realracing/SettingsActivity;
|
||||
|
||||
new-instance v1, Lcom/firemint/realracing/SettingsActivity$1$1;
|
||||
|
||||
invoke-direct {v1, p0}, Lcom/firemint/realracing/SettingsActivity$1$1;-><init>(Lcom/firemint/realracing/SettingsActivity$1;)V
|
||||
|
||||
invoke-virtual {v0, v1}, Landroid/app/Activity;->runOnUiThread(Ljava/lang/Runnable;)V
|
||||
|
||||
goto :goto_0
|
||||
|
||||
:cond_0
|
||||
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$1;->this$0:Lcom/firemint/realracing/SettingsActivity;
|
||||
|
||||
new-instance v2, Lcom/firemint/realracing/SettingsActivity$1$2;
|
||||
|
||||
invoke-direct {v2, p0, v1}, Lcom/firemint/realracing/SettingsActivity$1$2;-><init>(Lcom/firemint/realracing/SettingsActivity$1;I)V
|
||||
|
||||
invoke-virtual {v0, v2}, Landroid/app/Activity;->runOnUiThread(Ljava/lang/Runnable;)V
|
||||
:try_end_0
|
||||
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
|
||||
|
||||
goto :goto_0
|
||||
|
||||
:catch_0
|
||||
move-exception v0
|
||||
|
||||
iget-object v1, p0, Lcom/firemint/realracing/SettingsActivity$1;->this$0:Lcom/firemint/realracing/SettingsActivity;
|
||||
|
||||
new-instance v2, Lcom/firemint/realracing/SettingsActivity$1$3;
|
||||
|
||||
invoke-direct {v2, p0, v0}, Lcom/firemint/realracing/SettingsActivity$1$3;-><init>(Lcom/firemint/realracing/SettingsActivity$1;Ljava/lang/Exception;)V
|
||||
|
||||
invoke-virtual {v1, v2}, Landroid/app/Activity;->runOnUiThread(Ljava/lang/Runnable;)V
|
||||
|
||||
:goto_0
|
||||
return-void
|
||||
.end method
|
||||
Reference in New Issue
Block a user