Код: Выделить всё
private suspend fun startListening(ip: String) = withContext(Dispatchers.IO) {
val input = sslSocket.inputStream
try {
while (true) {
val msg = Remotemessage.RemoteMessage.parseDelimitedFrom(input) ?: break
when {
msg.hasRemoteImeBatchEdit() -> {
imeCounter = msg.remoteImeBatchEdit.imeCounter
imeFieldCounter = msg.remoteImeBatchEdit.fieldCounter
}
msg.hasRemoteImeShowRequest() -> handleImeShow(msg)
msg.hasRemoteSetActive() -> sendActive()
msg.hasRemoteConfigure() -> sendConfigure()
msg.hasRemotePingRequest() -> sendPingResponse(msg.remotePingRequest.val1)
msg.hasRemoteError() ->
Log.e(TAG, "RemoteError: ${msg.remoteError.message}")
else -> Log.w(TAG, "Unknown message: $msg")
}
}
} catch (e: Exception) {
Log.w(TAG, "Socket closed or error", e)
}
}
private fun handleImeShow(msg: Remotemessage.RemoteMessage) {
val imeStatus = msg.remoteImeShowRequest.remoteTextFieldStatus
val text = imeStatus.value
val start = imeStatus.start
val end = imeStatus.end
val label = imeStatus.label
Log.d("RemoteIME", "Text on TV: \"$text\" (len=${text.length})")
Log.d("RemoteIME", "Cursor: start=$start end=$end label=$label")
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... sful-using