Android 蓝牙教程
时间: 2023-09-03 11:10:38 浏览: 83
好的,以下是一个简单的 Android 蓝牙教程:
1. 添加权限
在 AndroidManifest.xml 文件中添加如下权限:
```xml
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
```
2. 初始化 BluetoothAdapter
在需要使用蓝牙的 Activity 中初始化 BluetoothAdapter:
```java
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
```
如果返回 null,则表示该设备不支持蓝牙。
3. 打开蓝牙
调用 BluetoothAdapter 的 enable() 方法可以打开蓝牙:
```java
bluetoothAdapter.enable();
```
需要注意的是,用户可以在系统设置中关闭蓝牙,因此建议在打开蓝牙前先检查当前蓝牙状态,避免出现异常情况。
4. 搜索设备
调用 BluetoothAdapter 的 startDiscovery() 方法可以搜索周围的蓝牙设备:
```java
bluetoothAdapter.startDiscovery();
```
搜索到设备后,系统会发送广播,可以通过注册 BroadcastReceiver 来接收:
```java
BroadcastReceiver receiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// 处理找到的设备
}
}
};
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, filter);
```
5. 连接设备
可以通过 BluetoothDevice 的 createRfcommSocketToServiceRecord() 方法来创建一个与指定设备连接的 BluetoothSocket 对象:
```java
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(uuid);
socket.connect();
```
其中 uuid 是一个唯一标识符,用于指定要连接的服务。需要注意的是,连接操作可能会很耗时,建议在子线程中执行。
6. 发送和接收数据
连接建立后,可以通过 BluetoothSocket 的 getInputStream() 和 getOutputStream() 方法来获取输入输出流,进行数据的收发:
```java
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
String receivedData = new String(buffer, 0, len);
outputStream.write(data.getBytes());
```
需要注意的是,数据的收发也建议在子线程中执行。
以上是一个简单的 Android 蓝牙教程,希望能对你有所帮助。
阅读全文