在连接到蓝牙设备的应用程序中,我使用 RxKotlin 使用以下功能:
private fun startBluetoothPair(device: BluetoothDevice) {
Observable.just(device)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.map {
var uuid: UUID = BLUETOOTH_UUID
var socket = it.createRfcommSocketToServiceRecord(uuid)
socket.connect()
return socket
}
.subscribe {
// Do something with the BluetoothSocket
}
}
这个函数应该简单地在后台连接蓝牙设备,然后对套接字做一些事情(再次在主线程中)。但是,map
无法处理该return socket
部分,告诉我有一个Type mismatch
,它BluetoothSocket
在需要的地方找到了一个Unit
。
这里出了什么问题?我认为地图应该能够推断出返回类型。