Android实现蓝牙连接和传输数据
时间: 2023-07-31 16:05:59 浏览: 92
Android实现蓝牙连接和传输数据是一个常见的需求。下面是一些基本的步骤:
1. 确保你的设备支持蓝牙功能,并且已经开启蓝牙。
2. 在 AndroidManifest.xml 文件中添加蓝牙权限:
```
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
```
3. 创建一个 BluetoothAdapter 对象,通过调用 getDefaultAdapter() 方法获取系统默认的蓝牙适配器:
```
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
```
4. 检查蓝牙是否可用:
```
if (bluetoothAdapter == null) {
// 设备不支持蓝牙
return;
}
if (!bluetoothAdapter.isEnabled()) {
// 蓝牙未开启,可以通过调用 Intent 请求用户开启蓝牙
Intent enableBluetoothIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBluetoothIntent, REQUEST_ENABLE_BLUETOOTH);
}
```
5. 开始搜索设备并建立连接:
```
bluetoothAdapter.startDiscovery();
```
6. 注册 BroadcastReceiver 监听搜索到的设备:
```
BroadcastReceiver discoveryReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
// 搜索到设备
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// 连接设备
connectToDevice(device);
}
}
};
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(discoveryReceiver, filter);
```
7. 连接到设备:
```
private void connectToDevice(BluetoothDevice device) {
BluetoothSocket socket = null;
try {
// 创建蓝牙Socket
socket = device.createRfcommSocketToServiceRecord(MY_UUID);
// 连接
socket.connect();
// 开始传输数据
sendData(socket);
} catch (IOException e) {
e.printStackTrace();
}
}
```
8. 传输数据:
```
private void sendData(BluetoothSocket socket) throws IOException {
// 获取输出流
OutputStream outputStream = socket.getOutputStream();
// 发送数据
String message = "Hello, Bluetooth!";
outputStream.write(message.getBytes());
}
```
以上是一个简单的示例,涵盖了蓝牙连接和传输数据的基本步骤。你可以根据自己的需求进行扩展和优化。