Мне нужно позвонить с объекта (Singleton). Этот объект получает телефонный номер из Интернета (websocket), и после этого мне нужно начать вызов (мое приложение заменило номеронабиратель по умолчанию) после того, как я получу этот номер. Как я могу инициировать вызов / деятельность / другой способ начать вызов? Я пробовал Intent(Intent.ACTION_CALL, "some_number".toUri())
, но это не работает.
Я использую этот пример звонилки в качестве подвала и только что добавил веб-сокет (Скарлет)
Мой объект:
object Connection {
fun connect() {
val moshi = Moshi.Builder()
.add(MoshiAdapters())
.build()
val okHttpClient = OkHttpClient.Builder()
.readTimeout(0, TimeUnit.MILLISECONDS)
.build()
val protocol = OkHttpWebSocket(
okHttpClient,
OkHttpWebSocket.SimpleRequestFactory(
{ Request.Builder().url(wsUrl).build() },
{ ShutdownReason.GRACEFUL }
)
)
val configuration = Scarlet.Configuration(
messageAdapterFactories = listOf(MoshiMessageAdapter.Factory(moshi)),
streamAdapterFactories = listOf(RxJava2StreamAdapterFactory())
)
val scarletInstance = Scarlet(protocol, configuration)
val webSocketService = scarletInstance.create<WebSocketService>()
webSocketService.observeStateTransition()
.observeOn(Schedulers.io())
.subscribe({ stateTransition ->
val event = stateTransition.event
val description = when (event) {
is Event.OnLifecycleStateChange -> when (event.lifecycleState) {
LifecycleState.Started -> Timber.d("On Lifecycle Start")
LifecycleState.Stopped -> Timber.d("On Lifecycle Stop")
LifecycleState.Completed -> Timber.d("On Lifecycle Terminate")
}
is Event.OnProtocolEvent -> {
when (stateTransition.toState) {
is State.WillConnect -> Timber.d("WaitingToRetry")
is State.Connecting -> Timber.d("Connecting")
is State.Connected -> Timber.d("Connected")
is State.Disconnecting -> Timber.d("Disconnecting")
is State.Disconnected -> Timber.d("Disconnected")
is State.Destroyed -> Timber.d("Destroyed")
}
}
Event.OnShouldConnect -> Timber.d("Should Connect")
}
}, { e ->
Timber.e(e)
})
webSocketService.observeWebSocketEvent()
.observeOn(Schedulers.io())
.subscribe({ event ->
val description = when (event) {
is WebSocketEvent.OnConnectionOpened -> {
Timber.d("On WebSocket Connection Opened")
Timber.d("Sent data")
}
is WebSocketEvent.OnMessageReceived -> {
Timber.d("On WebSocket NewMessageUpdate Received")
}
is WebSocketEvent.OnConnectionClosing -> {
Timber.d("On WebSocket Connection Closing")
}
is WebSocketEvent.OnConnectionClosed -> {
Timber.d("On WebSocket Connection Closed")
}
is WebSocketEvent.OnConnectionFailed -> {
Timber.d("On WebSocket Connection Failed")
}
}
},
{
Timber.e(it)
})
webSocketService.observeIncomingMessage()
.observeOn(Schedulers.io())
.subscribe({
THERE I GET PHONE NUMBER AND AFTER SHOULD CALL
})
}}
В MainActivity я запускаю соединение Connection.connect
Что я делаю не так и что мне делать?