session-android/app/src/main/java/org/thoughtcrime/securesms/calls/WebRtcCallActivity.kt

104 lines
3.3 KiB
Kotlin
Raw Normal View History

package org.thoughtcrime.securesms.calls
import android.Manifest
import android.content.BroadcastReceiver
import android.content.Context
2021-08-30 08:39:47 +02:00
import android.content.Intent
import android.content.IntentFilter
import android.media.AudioManager
import android.os.Bundle
import android.view.MenuItem
import android.view.Window
import android.view.WindowManager
import androidx.activity.viewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import dagger.hilt.android.AndroidEntryPoint
2021-08-20 01:14:54 +02:00
import kotlinx.android.synthetic.main.activity_webrtc_tests.*
import kotlinx.coroutines.delay
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import network.loki.messenger.R
2021-08-30 08:39:47 +02:00
import org.session.libsession.messaging.messages.control.CallMessage
import org.session.libsession.messaging.sending_receiving.MessageSender
import org.session.libsession.messaging.utilities.WebRtcUtils
2021-08-30 08:39:47 +02:00
import org.session.libsession.utilities.Address
import org.session.libsignal.protos.SignalServiceProtos
import org.session.libsignal.utilities.Log
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
import org.thoughtcrime.securesms.permissions.Permissions
import org.thoughtcrime.securesms.webrtc.CallViewModel
import org.webrtc.*
2021-10-21 23:52:57 +02:00
import java.util.*
2021-08-20 01:14:54 +02:00
@AndroidEntryPoint
class WebRtcCallActivity: PassphraseRequiredActionBarActivity() {
2021-08-20 01:14:54 +02:00
companion object {
2021-08-30 08:39:47 +02:00
const val CALL_ID = "call_id_session"
private const val LOCAL_TRACK_ID = "local_track"
private const val LOCAL_STREAM_ID = "local_track"
const val ACTION_ANSWER = "answer"
const val ACTION_END = "end-call"
2021-08-30 08:39:47 +02:00
const val BUSY_SIGNAL_DELAY_FINISH = 5500L
2021-08-20 01:14:54 +02:00
}
private val viewModel by viewModels<CallViewModel>()
private val acceptedCallMessageHashes = mutableSetOf<Int>()
2021-08-30 08:39:47 +02:00
private val candidates: MutableList<IceCandidate> = mutableListOf()
2021-08-30 08:39:47 +02:00
private lateinit var callAddress: Address
2021-10-21 23:52:57 +02:00
private lateinit var callId: UUID
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == android.R.id.home) {
finish()
return true
}
return super.onOptionsItemSelected(item)
}
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
super.onCreate(savedInstanceState, ready)
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.activity_webrtc_tests)
volumeControlStream = AudioManager.STREAM_VOICE_CALL
initializeResources()
Permissions.with(this)
.request(Manifest.permission.RECORD_AUDIO)
.onAllGranted {
setupStreams()
}
.execute()
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel
}
}
registerReceiver(object: BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
finish()
}
}, IntentFilter(ACTION_END))
}
private fun initializeResources() {
}
private fun setupStreams() {
}
}