- Connect screen with an address or a bookmark, which can be added and removed there. - Server screen: the channel tree with each client's status, folding channels, joining (asking for a password where needed) and subscribing from a channel's sheet; private message, poke and volume from a client's sheet. - Chat: the server log, the channel and private conversations with their history, unread marks, BBCode and clickable client, channel and web links. Chat lines are the HTML the desktop shows, turned into styled text. - Voice bar: mute, deafen, away, and a hold-to-talk button in push-to-talk mode. The microphone permission is asked for on connect. - Settings: nickname, transmission mode, voice activation, noise suppression, gain control and playback volume, in effect at once. The session's state reaches Compose as immutable snapshots: the tree at most every 30 ms, rebuilt only when channels or clients changed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
58 lines
1.5 KiB
Plaintext
58 lines
1.5 KiB
Plaintext
plugins {
|
|
alias(libs.plugins.android.application)
|
|
alias(libs.plugins.kotlin.compose)
|
|
}
|
|
|
|
android {
|
|
namespace = "com.ts3client.android"
|
|
compileSdk = 37
|
|
ndkVersion = "30.0.16248370"
|
|
|
|
defaultConfig {
|
|
applicationId = "com.ts3client.android"
|
|
minSdk = 33
|
|
targetSdk = 36
|
|
versionCode = 1
|
|
versionName = "0.1.0"
|
|
ndk {
|
|
abiFilters += listOf("arm64-v8a", "x86_64")
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
isMinifyEnabled = true
|
|
isShrinkResources = true
|
|
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
|
}
|
|
}
|
|
|
|
buildFeatures {
|
|
compose = true
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
|
|
packaging {
|
|
resources {
|
|
// BouncyCastle ships Java 9+ module metadata Android has no use for.
|
|
excludes += "META-INF/versions/9/OSGI-INF/MANIFEST.MF"
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation(project(":audio"))
|
|
|
|
implementation(platform(libs.androidx.compose.bom))
|
|
implementation(libs.androidx.compose.ui)
|
|
implementation(libs.androidx.compose.material3)
|
|
implementation(libs.androidx.compose.material.icons)
|
|
implementation(libs.androidx.activity.compose)
|
|
implementation(libs.androidx.lifecycle.runtime.compose)
|
|
implementation(libs.androidx.lifecycle.service)
|
|
}
|