IOException: read failed, socket might closed - Bluetooth on Android 4.3

后端 未结 16 2305
天涯浪人
天涯浪人 2020-11-22 04:08

Currently I am trying to deal with a strange Exception when opening a BluetoothSocket on my Nexus 7 (2012), with Android 4.3 (Build JWR66Y, I guess the second 4.3 update). I

16条回答
  •  执笔经年
    2020-11-22 04:52

    In case somebody is having issues with Kotlin, I had to follow the accepted answer with some variations:

    fun print(view: View, text: String) {
        var adapter = BluetoothAdapter.getDefaultAdapter();
        var pairedDevices = adapter.getBondedDevices()
        var uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")
        if (pairedDevices.size > 0) {
            for (device in pairedDevices) {
                var s = device.name
                if (device.getName().equals(printerName, ignoreCase = true)) {
                    Thread {
                        var socket = device.createInsecureRfcommSocketToServiceRecord(uuid)
                        var clazz = socket.remoteDevice.javaClass
                        var paramTypes = arrayOf>(Integer.TYPE)
                        var m = clazz.getMethod("createRfcommSocket", *paramTypes)
                        var fallbackSocket = m.invoke(socket.remoteDevice, Integer.valueOf(1)) as BluetoothSocket
                        try {
                            fallbackSocket.connect()
                            var stream = fallbackSocket.outputStream
                            stream.write(text.toByteArray(Charset.forName("UTF-8")))
                        } catch (e: Exception) {
                            e.printStackTrace()
                            Snackbar.make(view, "An error occurred", Snackbar.LENGTH_SHORT).show()
                        }
                    }.start()
                }
            }
        }
    }
    

    Hope it helps

提交回复
热议问题