reactormonk
10/27/2023, 2:39 PMconnectionScope.launch(<http://Dispatchers.IO|Dispatchers.IO>) {
Looper.prepare()
listener = object : PhoneStateListener() {
override fun onSignalStrengthChanged(asu: Int) {
}
override fun onDataConnectionStateChanged(state: Int, networkType: Int) {
dataState.setValue(state.toDataByteArray())
networkTypeC.setValue(networkType.toDataByteArray())
}
@SuppressLint("MissingPermission")
override fun onServiceStateChanged(serviceState: ServiceState?) {
Log.d(TAG, "Service state changed to $serviceState")
if (serviceState != null) {
updateFormServiceState(serviceState)
}
}
}
telephonyManager.listen(
listener,
PhoneStateListener.LISTEN_DATA_CONNECTION_STATE or
PhoneStateListener.LISTEN_SERVICE_STATE or
PhoneStateListener.LISTEN_SIGNAL_STRENGTH
)
Looper.loop()
}
Chrimaeon
10/27/2023, 6:00 PMHandlerThread
and use it as the launch context.
val handlerThread = HandlerThread("MyThread")
handlerThread.start()
val handler = Handler(handlerThread.looper)
val myDispatcher = handler.asCoroutineDispatcher()