Compile real Telecom integration against explicit host boundaries

This commit is contained in:
evgeny committed 2026-10-29 13:34:25 +01:00
1 parent 06058fad8e
commit 3babc636b4
3 files changed
+21 -5

No files matched your search

@@ -5,7 +5,7 @@ kotlin {
sourceSets.named("main") {
// Настоящий RX/протокольный формат; Android codecs, probe и JNI управляются на аппаратных границах.
kotlin.srcDir("../app/src/main/java")
kotlin.include("android/**", "com/utun/chat/data/VideoHost.kt", "com/utun/chat/data/CallVideoPlayer.kt",
kotlin.include("android/**", "androidx/**", "com/utun/chat/data/VideoHost.kt", "com/utun/chat/data/CallVideoPlayer.kt",
"com/utun/chat/data/CallVideoFormat.kt", "com/utun/chat/data/StreamVideoCodec.kt", "com/utun/chat/data/H264AnnexB.kt",
"com/utun/chat/data/StreamPreview.kt", "com/utun/chat/data/VideoCodecResources.kt",
"com/utun/chat/data/StreamVideoPlayback.kt", "com/utun/chat/data/StreamDecodePump.kt")
@@ -15,7 +15,8 @@ kotlin {
kotlin.include("com/utun/chat/data/StreamHost.kt", "com/utun/chat/data/StreamPlayerEngine.kt",
"com/utun/chat/data/StreamAudioMixer.kt", "com/utun/chat/data/StreamAudioOutput.kt",
"com/utun/chat/data/StreamAudioMix.kt", "com/utun/chat/data/StreamReadQueue.kt", "com/utun/chat/data/StreamPlaybackTelemetry.kt",
"com/utun/chat/data/StreamCaptureEngine.kt", "com/utun/chat/data/StreamCaptureConfig.kt")
"com/utun/chat/data/StreamCaptureEngine.kt", "com/utun/chat/data/StreamCaptureConfig.kt",
"com/utun/chat/data/TelecomCallManager.kt", "com/utun/chat/data/UtunConnection.kt", "com/utun/chat/data/UtunConnectionService.kt")
}
}
dependencies {
@@ -62,6 +62,18 @@ object SystemClock {
fun elapsedRealtime(): Long = System.nanoTime() / 1_000_000
fun elapsedRealtimeNanos(): Long = System.nanoTime()
}
object Build { object VERSION { const val SDK_INT = 36 } }
object Build { object VERSION { var SDK_INT = 36 }; object VERSION_CODES { const val UPSIDE_DOWN_CAKE = 34 } }
object Process { const val THREAD_PRIORITY_AUDIO = -16; fun setThreadPriority(value: Int) {} }
class Bundle { val values = mutableMapOf<String, Int>(); fun putInt(key: String, value: Int) { values[key] = value } }
class Bundle {
val values = mutableMapOf<String, Any>()
fun putInt(key: String, value: Int) { values[key] = value }
fun putLong(key: String, value: Long) { values[key] = value }
fun putString(key: String, value: String) { values[key] = value }
fun putBundle(key: String, value: Bundle) { values[key] = value }
fun putParcelable(key: String, value: Any) { values[key] = value }
fun getLong(key: String, fallback: Long): Long = values[key] as? Long ?: fallback
fun getString(key: String): String? = values[key] as? String
fun keySet() = values.keys
}
data class ParcelUuid(val uuid: java.util.UUID)
interface OutcomeReceiver<R, E : Throwable> { fun onResult(result: R?); fun onError(error: E) }
@@ -27,7 +27,10 @@ object MicrophoneCapture {
}
}
object CallController { var blocked = false; fun blocksMedia() = blocked }
enum class AudioRoute { EARPIECE, SPEAKER, HEADSET }
enum class CallPhase { NONE, OUTGOING, RINGING, INCOMING, ACTIVE, ENDED, WAIT_DECISION, PENDING_INCOMING }
data class HostCallState(val callId: Long, val phase: CallPhase) { val ongoing get() = phase != CallPhase.NONE && phase != CallPhase.ENDED }
object CallController { var blocked = false; val state = MutableStateFlow<HostCallState?>(null); fun blocksMedia() = blocked }
object StreamController { private val ids = AtomicLong(100); fun nextId() = ids.incrementAndGet() }
object MediaAudioController {
data class State(val switching: Boolean = false)