Add TelephonyHandler.kt
parent
8037502f35
commit
5a931845cb
@ -0,0 +1,46 @@
|
|||||||
|
package org.thoughtcrime.securesms.service
|
||||||
|
|
||||||
|
import android.os.Build
|
||||||
|
import android.telephony.PhoneStateListener
|
||||||
|
import android.telephony.PhoneStateListener.LISTEN_NONE
|
||||||
|
import android.telephony.TelephonyManager
|
||||||
|
import androidx.annotation.RequiresApi
|
||||||
|
import org.thoughtcrime.securesms.webrtc.HangUpRtcOnPstnCallAnsweredListener
|
||||||
|
import org.thoughtcrime.securesms.webrtc.HangUpRtcTelephonyCallback
|
||||||
|
import java.util.concurrent.ExecutorService
|
||||||
|
|
||||||
|
internal interface TelephonyHandler {
|
||||||
|
fun register(telephonyManager: TelephonyManager)
|
||||||
|
fun unregister(telephonyManager: TelephonyManager)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun TelephonyHandler(serviceExecutor: ExecutorService, callback: () -> Unit) = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
|
TelephonyHandlerV31(serviceExecutor, callback)
|
||||||
|
} else {
|
||||||
|
TelephonyHandlerV23(callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresApi(Build.VERSION_CODES.S)
|
||||||
|
private class TelephonyHandlerV31(val serviceExecutor: ExecutorService, callback: () -> Unit): TelephonyHandler {
|
||||||
|
private val callback = HangUpRtcTelephonyCallback(callback)
|
||||||
|
|
||||||
|
override fun register(telephonyManager: TelephonyManager) {
|
||||||
|
telephonyManager.registerTelephonyCallback(serviceExecutor, callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun unregister(telephonyManager: TelephonyManager) {
|
||||||
|
telephonyManager.unregisterTelephonyCallback(callback)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class TelephonyHandlerV23(callback: () -> Unit): TelephonyHandler {
|
||||||
|
val callback = HangUpRtcOnPstnCallAnsweredListener(callback)
|
||||||
|
|
||||||
|
override fun register(telephonyManager: TelephonyManager) {
|
||||||
|
telephonyManager.listen(callback, PhoneStateListener.LISTEN_CALL_STATE)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun unregister(telephonyManager: TelephonyManager) {
|
||||||
|
telephonyManager.listen(callback, LISTEN_NONE)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue