从其他设备获取文本信息(通过蓝牙)

3df52oht  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(261)

我有一个条形码扫描仪,我的手机可以识别为键盘。他们通过蓝牙连接。读取条形码后,我需要在应用程序中执行一些操作。我不想添加输入,因为它会破坏应用程序的整体外观。我试图自己创建一些东西,但它只起作用,因为edittext在视图中(有趣的是,即使字段被禁用,它也会输入文本)
是否可以在不使用输入的情况下检查键盘键入的文本?

1l5u6lss

1l5u6lss1#

您可以覆盖 onKeyDown 在里面 Activity 并检查按下了哪些键

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    Log.i("onKeyDown", "key pressed code:" + keyCode); // log your key codes
    return true; // returning true means event handled
}

在这里你可以检查所有的代码,除此之外还有 onKeyUp 方法,可能有用。波沃泽尼亚

7nbnzgx9

7nbnzgx92#

好的,可以从其他设备获取数据而不使用活动。以下是我的工作:

val bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
    val pairedDevice = bluetoothAdapter.bondedDevices
    if (pairedDevice.isNotEmpty()) {
        val device = pairedDevice.first()
        val mmSocket: BluetoothSocket = device.javaClass.getMethod(
            "createRfcommSocket", Int::class.javaPrimitiveType
        ).invoke(device, 1) as BluetoothSocket // I had problem with connection with my device and this is only way to connect via Bluetooth
        try {
            if (mmSocket.isConnected) mmSocket.close() else mmSocket.connect()
            readData(mmSocket)
        } catch (ex: Exception) {
            mmSocket.close()
        }
    }

和读取数据功能:

while (mmSocket.isConnected) {
        val inputStream = mmSocket.inputStream
        val available = inputStream.available()
        val bytes = ByteArray(available)

        inputStream.read(bytes, 0, available)
        val barcode = String(bytes)

        if (barcode.isNotBlank()) {
            withContext(Dispatchers.Main) {
                textView?.text = barcode //display result on UI
            }
        }
    }

相关问题