Add the Android app: Gradle build, Oboe audio, connection screen

android/ builds core and ts3j from the same sources as the desktop's
Maven build, so the app shares all of the client's logic:

- audio: Oboe streams behind AudioCapture/AudioPlayback, with a lock-free
  ring between the real-time callback and the blocking Java side, and
  libopus 1.5.2 built with the NDK behind OpusCodec. Speakers are mixed
  onto one stream. Capture uses the VoiceRecognition preset, leaving
  noise suppression and gain to the client's own processing.
- app: a plain connection screen to try the port out - connect,
  microphone, mute, deafen, channel chat and a log - until the real UI.

Targets Android 13 and up (minSdk 33) on arm64 and x86_64.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-25 08:24:21 +00:00
parent e211ffa7b6
commit 086b913c8e
26 changed files with 1555 additions and 0 deletions

10
android/app/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,10 @@
# ts3j looks up SRV records through JNDI only where it exists; Android lacks it.
-dontwarn javax.naming.**
# Reached from native code by name.
-keepclasseswithmembernames class com.ts3client.android.audio.** {
native <methods>;
}
# ts3j builds protocol handlers and packet bodies reflectively.
-keep class com.github.manevolent.ts3j.** { *; }