如何通过android中的蓝牙向配对设备发送短信?

时间:2014-01-31 09:45:56

标签: android bluetooth stream android-bluetooth

在我的应用程序中,我想通过蓝牙发送和接收短信。我可以在listview中看到配对设备名称和地址的列表。但是当我尝试将文本发送到配对设备时,没有任何反应。在其他设备中没有收到任何文字。

这是我的代码,用于向配对设备发送消息。

private void sendDataToPairedDevice(String message, String adress) {
        byte[] toSend = message.getBytes();
        try {
            BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(adress);
            // BluetoothSocket socket
            // =device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"));
            BluetoothSocket socket = null;
            Method m = null;
            try {
                m = device.getClass().getMethod("createRfcommSocket",
                        new Class[] { int.class });
            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                socket = (BluetoothSocket) m.invoke(device, 1);
            } catch (Exception e) {
                e.printStackTrace();
            }

            OutputStream mmOutStream = socket.getOutputStream();
            mBluetoothAdapter.cancelDiscovery();
            socket.connect();
            mmOutStream.write(toSend);
        } catch (Exception e) {
            Log.d("TAG", "Exception during write", e);
        }
    }

1 个答案:

答案 0 :(得分:2)

如果你是使用蓝牙api的新手,那么bluetoothchat样本实际上是完美的选择。

假设您的应用程序只使用一个Activity,即BluetoothChat类:

要将文本发送到您连接的设备,请使用" sendMessage(字符串消息)"在BluetoothChat类中发送文本的方法。

至于接收和处理文本,你会在bluetoothchat类的某个地方找到handleMessage(Message msg)方法然后转到这一部分:

case MESSAGE_READ:
            byte[] readBuf = (byte[]) msg.obj;
            // construct a string from the valid bytes in the buffer
            String readMessage = new String(readBuf, 0, msg.arg1);

请参阅readMessage String?

这是您从其他设备收到的文本,现在您可以根据需要处理它。

然后只需更改BluetoothChat类所引用的主要布局,然后在BluetoothChat聊天中注释或删除有错误的部分,这些部分实际上将是您已删除或更改的UI中的部分。

我知道代码可能听起来很乱,但这是尽可能快速使用它的最简单方法,观看视频教程或文本教程几个小时会让它变得更复杂,相信我以前尝试过这个。