fafdddc121
- AudioSyncPlayer (ExoPlayer media3): играет дорожку (локальный файл или presigned S3-URL), коррекция по PlaybackPosition очков (каждые 5с, порог 1000мс), мгновенная реакция на пульт, индикатор «🔊 звук: N мс»
- Вещдок-лог: audio sync: video=N audio=M diff=K (на стенде diff ~150мс)
- Смена озвучки во время просмотра — перезапуск с позиции очков
- README: секция «Статус реализации»
- Тесты 24/0 (8 новых AudioSyncPlayerTest)
70 lines
2.1 KiB
Kotlin
70 lines
2.1 KiB
Kotlin
plugins {
|
|
alias(libs.plugins.android.application)
|
|
alias(libs.plugins.kotlin.android)
|
|
alias(libs.plugins.kotlinx.serialization)
|
|
alias(libs.plugins.compose.compiler)
|
|
}
|
|
|
|
android {
|
|
namespace = "pw.binom.viewmate.phone"
|
|
compileSdk = 35
|
|
|
|
defaultConfig {
|
|
applicationId = "pw.binom.viewmate.phone"
|
|
minSdk = 26
|
|
targetSdk = 34
|
|
versionCode = 1
|
|
versionName = "0.1.0"
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
isMinifyEnabled = false
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = "17"
|
|
}
|
|
|
|
buildFeatures {
|
|
compose = true
|
|
}
|
|
|
|
}
|
|
|
|
dependencies {
|
|
implementation("androidx.appcompat:appcompat:1.3.0")
|
|
implementation("androidx.core:core-ktx:1.7.0")
|
|
implementation(libs.androidx.activity.compose)
|
|
implementation(platform(libs.androidx.compose.bom))
|
|
implementation(libs.android.material3)
|
|
implementation("androidx.compose.ui:ui")
|
|
implementation("androidx.compose.foundation:foundation")
|
|
implementation("io.coil-kt:coil-compose:2.6.0")
|
|
implementation("com.squareup.okhttp3:okhttp:4.12.0")
|
|
implementation(libs.exoplayer)
|
|
implementation(libs.media3.exoplayer)
|
|
implementation(libs.kotlinx.coroutines.android)
|
|
implementation(libs.kotlinx.serialization.json)
|
|
implementation(project(":lib-core"))
|
|
|
|
// WS-сервер телефона (CIO — работает на Android)
|
|
implementation("io.ktor:ktor-server-core:3.3.0")
|
|
implementation("io.ktor:ktor-server-cio:3.3.0")
|
|
implementation("io.ktor:ktor-server-websockets:3.3.0")
|
|
implementation("io.ktor:ktor-serialization-kotlinx-json:3.3.0")
|
|
|
|
testImplementation(kotlin("test"))
|
|
testImplementation("io.ktor:ktor-server-test-host:3.3.0")
|
|
testImplementation("io.ktor:ktor-client-websockets:3.3.0")
|
|
testImplementation("io.ktor:ktor-client-content-negotiation:3.3.0")
|
|
testImplementation("io.ktor:ktor-serialization-kotlinx-json:3.3.0")
|
|
testImplementation(libs.kotlinx.coroutines.test)
|
|
}
|