API Opentalk(Vonage) установил callertune для обнаружения звонка телефонного звонка
Как определить время, когда телефон начинает звонить для исходящих вызовов. Я разрабатываю приложение, в котором я пытаюсь сделать вызов программно, и когда вызов подключен к Интернету, например, приложение для аудиовызова приложения Whats. Я не нашел решение, как определить, что вызов звонит или занят на стороне получателя. я подключаю свой вызов, используя ключ токена и ключ сеанса через Интернет. мой код ниже для передачи намерения вызвать активность.
val intent = Intent(this@AstroDetailsActivity, CallActivity::class.java)
intent.putExtra(SESSION_ID_KEY, res!!.session_id)
intent.putExtra(TOKEN_KEY, res.token)
intent.putExtra("userId", MyApplication.sharedPreference?.userId.toString())
intent.putExtra("astroId", astroId)
intent.addCategory(Intent.ACTION_CALL)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
1 ответ
В примере кода не используются дополнительные функции намерения, поэтому я не уверен, внесли ли вы изменения в этот код для фактической инициализации.
Но если вы посмотрите на это действие, вы увидите файл . Этот объект присоединяется к вызову с помощью:
private fun registerPhoneListener() {
val telephonyManager = getSystemService(TELEPHONY_SERVICE) as TelephonyManager
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE)
}
В
PhoneStateListener
тогда есть метод
onCallStateChanged
который вызывается при изменении текущего состояния телефонного звонка. Это можно переопределить для выполнения пользовательской логики, как показано ниже:
private val phoneStateListener: PhoneStateListener = object : PhoneStateListener() {
override fun onCallStateChanged(state: Int, incomingNumber: String) {
super.onCallStateChanged(state, incomingNumber)
when (state) {
TelephonyManager.CALL_STATE_IDLE -> {
publisher?.publishVideo = true
publisher?.publishAudio = true
}
TelephonyManager.CALL_STATE_RINGING -> Log.d("onCallStateChanged", "CALL_STATE_RINGING")
TelephonyManager.CALL_STATE_OFFHOOK -> {
Log.d("onCallStateChanged", "CALL_STATE_OFFHOOK")
publisher?.publishVideo = false
publisher?.publishAudio = false
}
else -> Log.d("onCallStateChanged", "Unknown Phone State !")
}
}
}