android 蓝牙接收数据Thread示例
时间: 2023-10-08 10:13:31 浏览: 40
当在Android应用中使用蓝牙接收数据时,可以通过创建一个线程来处理接收数据的操作。下面是一个简单的示例代码:
```java
private class BluetoothThread extends Thread {
private final BluetoothSocket socket;
private final InputStream inputStream;
public BluetoothThread(BluetoothSocket socket) {
this.socket = socket;
InputStream tempInputStream = null;
try {
tempInputStream = socket.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
inputStream = tempInputStream;
}
@Override
public void run() {
byte[] buffer = new byte[1024];
int bytes;
while (true) {
try {
bytes = inputStream.read(buffer); // 阻塞直到有数据可读
// 在这里处理接收到的数据
String receivedData = new String(buffer, 0, bytes);
// 进行相关操作...
} catch (IOException e) {
e.printStackTrace();
break;
}
}
}
public void cancel() {
try {
inputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在你的Activity或Fragment中,你可以使用以下代码来启动和停止线程:
```java
private BluetoothThread bluetoothThread;
// 启动线程
public void startBluetoothThread(BluetoothSocket socket) {
bluetoothThread = new BluetoothThread(socket);
bluetoothThread.start();
}
// 停止线程
public void stopBluetoothThread() {
if (bluetoothThread != null) {
bluetoothThread.cancel();
bluetoothThread = null;
}
}
```
请确保在使用完蓝牙连接后调用`stopBluetoothThread()`方法来停止线程和关闭相关资源。