java如何获取蓝牙
获取蓝牙设备的基本步骤
在Java中获取蓝牙设备通常涉及使用Android的蓝牙API。以下是基本操作流程:
启用蓝牙适配器
通过BluetoothAdapter检查设备是否支持蓝牙,并启用它。需要检查BluetoothAdapter.getDefaultAdapter()是否为null。
请求蓝牙权限 在AndroidManifest.xml中添加必要权限:

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
发现蓝牙设备
启动设备发现
调用startDiscovery()方法开始扫描附近的蓝牙设备。需要注册BroadcastReceiver来接收发现的设备信息。
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter != null && !bluetoothAdapter.isDiscovering()) {
bluetoothAdapter.startDiscovery();
}
处理发现结果 通过广播接收器获取发现的设备信息:

private final BroadcastReceiver receiver = 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);
String deviceName = device.getName();
String deviceAddress = device.getAddress();
}
}
};
配对和连接设备
配对蓝牙设备
使用createBond()方法发起配对请求:
BluetoothDevice device = ...; // 获取目标设备
if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
device.createBond();
}
建立蓝牙连接
对于客户端连接,使用BluetoothSocket:
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID);
socket.connect();
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
处理运行时权限
对于Android 6.0及以上版本,需要动态请求位置权限:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
REQUEST_LOCATION_PERMISSION);
}
最佳实践建议
- 扫描完成后及时调用
cancelDiscovery()以节省电量 - 在Android 12及以上版本需要额外声明
BLUETOOTH_SCAN和BLUETOOTH_CONNECT权限 - 考虑使用
BluetoothLeScanner进行低功耗蓝牙(BLE)设备扫描 - 处理各种蓝牙状态变化和异常情况






