当前位置:首页 > Java

java如何获取蓝牙

2026-03-20 20:15:33Java

获取蓝牙设备的基本步骤

在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及以上版本,需要动态请求位置权限:

java如何获取蓝牙

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_SCANBLUETOOTH_CONNECT权限
  • 考虑使用BluetoothLeScanner进行低功耗蓝牙(BLE)设备扫描
  • 处理各种蓝牙状态变化和异常情况

标签: 蓝牙java
分享给朋友:

相关文章

java如何下载

java如何下载

下载Java的步骤 访问Oracle官方网站或OpenJDK项目页面下载Java开发工具包(JDK)。Oracle JDK适用于商业用途,OpenJDK为开源版本。 打开浏览器,进入Oracle J…

如何运行java程序

如何运行java程序

编写Java代码 创建一个以.java为扩展名的文件,例如HelloWorld.java。文件内容需包含一个类定义,类名必须与文件名一致。例如: public class HelloWorld {…

java如何处理高并发

java如何处理高并发

Java处理高并发的方法 使用多线程和线程池 Java的java.util.concurrent包提供了线程池(如ThreadPoolExecutor)和并发工具类(如CountDownLatch、C…

java如何打印数组

java如何打印数组

打印数组的方法 在Java中,打印数组有多种方式,以下是几种常见的方法: 使用Arrays.toString()方法 这种方法适用于一维数组,可以快速将数组转换为字符串形式输出: int[] a…

教你如何完全卸载java

教你如何完全卸载java

卸载 Java 的步骤 Windows 系统 打开控制面板,选择“程序和功能”或“卸载程序”。在列表中找到 Java 相关的条目,通常显示为“Java”或“Java(TM)”。右键点击选择卸载,按照…

java实现php

java实现php

Java 实现 PHP 功能的方法 在 Java 中实现 PHP 的功能通常涉及以下几个方面:字符串处理、Web 开发、数据库操作等。以下是几种常见需求的实现方法。 字符串处理 PHP 中的字符串处…