在我的应用程序中,我想通过蓝牙发送和接收短信。我可以在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);
}
}
答案 0 :(得分:2)
假设您的应用程序只使用一个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中的部分。
我知道代码可能听起来很乱,但这是尽可能快速使用它的最简单方法,观看视频教程或文本教程几个小时会让它变得更复杂,相信我以前尝试过这个。