Android获取蓝牙信息

蓝牙技术是一种无线通信技术,能够在短距离内实现设备之间的数据传输。在Android开发中,我们可以利用蓝牙技术实现与其他设备的通信。本文将介绍如何在Android应用程序中获取蓝牙设备的信息,并给出相应的代码示例。

1. 蓝牙设备的基本信息

在Android中,我们可以通过BluetoothAdapter类来获取蓝牙设备的基本信息。首先需要获取默认的蓝牙适配器对象:

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

然后,我们可以通过蓝牙适配器对象获取设备的名称、地址和状态等信息。下表是一些常用的方法和说明:

方法 说明
getName() 获取设备的名称
getAddress() 获取设备的MAC地址
isEnabled() 判断蓝牙是否已启用
getBondedDevices() 获取已配对的蓝牙设备列表
startDiscovery() 开始搜索周围的蓝牙设备
cancelDiscovery() 取消搜索蓝牙设备
getProfileProxy() 获取指定的蓝牙设备的Profile代理对象
closeProfileProxy() 关闭指定的蓝牙设备的Profile代理对象

您可以根据需要使用这些方法来获取蓝牙设备的信息。例如,获取设备的名称和地址:

String deviceName = bluetoothAdapter.getName();
String deviceAddress = bluetoothAdapter.getAddress();

2. 搜索蓝牙设备

要搜索蓝牙设备,我们需要注册一个广播接收器来监听搜索结果。首先,我们需要定义一个广播接收器类:

private class BluetoothReceiver extends 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();
        }
    }
}

然后,在Activity的onCreate方法中注册广播接收器和过滤器:

BluetoothReceiver receiver = new BluetoothReceiver();
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, filter);

最后,我们可以调用startDiscovery方法开始搜索蓝牙设备:

bluetoothAdapter.startDiscovery();

搜索结果将通过广播接收器进行处理,您可以在onReceive方法中对搜索到的设备进行处理。

3. 获取已配对的设备列表

在Android中,我们可以使用getBondedDevices方法获取已配对的蓝牙设备列表。该方法将返回一个Set集合,其中包含了已配对的设备对象。您可以遍历该集合来获取设备的详细信息:

Set<BluetoothDevice> bondedDevices = bluetoothAdapter.getBondedDevices();
for (BluetoothDevice device : bondedDevices) {
    String deviceName = device.getName();
    String deviceAddress = device.getAddress();
}

4. 示例应用

下面是一个简单的示例应用,演示了如何获取蓝牙设备的信息和搜索蓝牙设备。首先,在res/layout目录下创建一个名为activity_main.xml的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp">

    <Button
        android:id="@+id/btn_get_info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="获取设备信息" />

    <Button
        android:id="@+id/btn_search_device"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="搜索蓝牙设备" />

    <TextView
        android:id="@+id/tv_device_info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop