You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何通过编程获取Android配对设备的蓝牙MAC地址?

获取Android已配对蓝牙设备的MAC地址

嘿,你遇到的无法解析符号address错误原因很直白——你代码里用的address变量根本没定义呀!而且更关键的是,getRemoteDevice(address)这个方法的作用是根据已知的MAC地址获取对应的蓝牙设备对象,不是用来获取已配对设备列表的。

要获取和你的Android设备配对过的蓝牙设备MAC地址,正确的做法是先获取已绑定(配对)的设备集合,再遍历集合提取每个设备的MAC地址,具体步骤如下:

步骤1:获取蓝牙适配器并检查蓝牙状态

首先要获取BluetoothAdapter实例,同时确保蓝牙处于开启状态:

BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter mBluetoothAdapter = bluetoothManager.getAdapter();

// 检查设备是否支持蓝牙,以及蓝牙是否开启
if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {
    // 可提示用户开启蓝牙,或直接跳转到蓝牙设置页面
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    return;
}

步骤2:获取已配对设备列表并提取MAC地址

调用getBondedDevices()方法就能拿到所有已配对的蓝牙设备集合,遍历这个集合后,用getAddress()就能获取每个设备的MAC地址:

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();

if (!pairedDevices.isEmpty()) {
    // 遍历所有已配对设备
    for (BluetoothDevice device : pairedDevices) {
        String deviceName = device.getName();
        String deviceMacAddress = device.getAddress(); // 这就是你需要的MAC地址
        // 可将信息存储或打印查看
        Log.d("BluetoothInfo", "设备名称: " + deviceName + " | MAC地址: " + deviceMacAddress);
    }
} else {
    Log.d("BluetoothInfo", "当前没有已配对的蓝牙设备");
}

权限注意事项

别忘了在AndroidManifest.xml里声明必要权限:

  • Android 12及以下:添加<uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
  • Android 13及以上:需要添加<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />,且该权限需要动态申请

补充说明

如果你确实需要用到getRemoteDevice(address),那得先有一个已知的MAC地址字符串(比如从已配对设备列表中拿到的),示例如下:

String knownMacAddress = "AA:BB:CC:DD:EE:FF";
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(knownMacAddress);

但这是在你已经知晓MAC地址的场景下才会用到的方法,不是用来获取配对设备的方式哦~

内容的提问来源于stack exchange,提问作者Nunna Yobusiness

火山引擎 最新活动