You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Android设备蓝牙角色从主设备切换为从设备?

Android蓝牙主从角色切换实现方案

一、nRF Connect应用快速切换操作

如果你用nRF Connect实现从设备角色,步骤如下:

  • 打开nRF Connect应用,底部切换到Peripheral标签页(对应从设备/外设角色)
  • 点击右上角的「+」按钮,创建新的广播配置:可选择预设GATT服务,也能自定义UUID、广播名称
  • 配置完成后,点击「Start Advertising」按钮开始广播,此时你的手机会以从设备身份等待其他主设备(如另一台手机、蓝牙模块)发起连接

二、Android系统开发者选项切换(部分机型支持)

部分品牌的Android手机提供系统级的蓝牙角色切换选项:

  • 开启开发者选项:设置 → 关于手机 → 连续点击「版本号」直到提示开启成功
  • 进入开发者选项,找到蓝牙外设模式或蓝牙角色切换相关选项(不同厂商命名有差异,华为、小米等品牌均有类似选项)
  • 选择「外设(从设备)」模式,重启蓝牙后即可生效

三、代码层面集成(适配项目开发)

如果是自行开发Android应用实现角色切换,可通过Bluetooth LE API实现从设备(Peripheral)模式:

1. 申请必要权限

在AndroidManifest.xml中添加适配Android 12+的权限:

<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />

运行时需动态申请上述权限。

2. 初始化广播器并启动广播

// 获取蓝牙管理器与适配器
BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();

// 检查蓝牙状态,未开启则请求开启
if (!bluetoothAdapter.isEnabled()) {
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    return;
}

// 获取BLE广播器,判断设备是否支持外设模式
BluetoothLeAdvertiser advertiser = bluetoothAdapter.getBluetoothLeAdvertiser();
if (advertiser == null) {
    // 当前设备不支持BLE外设模式
    return;
}

// 配置广播参数
AdvertiseSettings advertiseSettings = new AdvertiseSettings.Builder()
        .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER)
        .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
        .setConnectable(true) // 允许主设备发起连接
        .build();

// 配置广播数据
AdvertiseData advertiseData = new AdvertiseData.Builder()
        .setIncludeDeviceName(true) // 广播设备名称
        .addServiceUuid(new ParcelUuid(UUID.fromString("0000FFE0-0000-1000-8000-00805F9B34FB"))) // 自定义服务UUID
        .build();

// 启动广播,监听状态
advertiser.startAdvertising(advertiseSettings, advertiseData, new AdvertiseCallback() {
    @Override
    public void onStartSuccess(AdvertiseSettings settingsInEffect) {
        super.onStartSuccess(settingsInEffect);
        // 广播启动成功,设备已切换为从设备
    }

    @Override
    public void onStartFailure(int errorCode) {
        super.onStartFailure(errorCode);
        // 广播启动失败,根据错误码排查:权限不足、设备不支持等
    }
});

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 08:05:23