15

在 Android 4.3 之前,支持低功耗蓝牙的 Android 设备只能充当中央设备。如Android 4.3 Bluetooth LE文档中所述:

Android 4.3(API 级别 18)在核心角色中引入了对低功耗蓝牙的内置平台支持,并提供了应用程序可用于发现设备、查询服务和读/写特征的 API。

随着Android 4.4 KitKat的推出,它现在是否也可以充当外围设备?我找不到任何相关文件。如果没有,那么我们是否必须等待 Android 4.5 才能在 Android 设备上获得 BTLE 外围模式?或者有没有其他方法可以让 Android 设备充当外围设备?

4

3 回答 3

18

不在此版本中,但有证据表明它即将推出。
如果您在 android-19 源代码中查看 BluetoothGatt.java,就会发现一些新方法listen,而setAdvData这些方法在 android-18 中不存在。
但是这些没有记录,因为我认为本机支持还没有完成。对外围模式的 AOSP 的最后一次检查标题为“LE:添加外围角色支持 (2/4)”。另外,setAdvData并且listen有这个代码:

if (mContext == null || !mContext.getResources().getBoolean(com.android.internal.R.bool.config_bluetooth_le_peripheral_mode_supported))
{
    throw new UnsupportedOperationException("BluetoothGatt#listen is blocked");
}

从 Android 来源查看 android/platform_frameworks_base/blob/master/core/res/res/values/config.xml,您可以看到当前已禁用:

<!-- Boolean indicating if current platform supports BLE peripheral mode -->
<bool name="config_bluetooth_le_peripheral_mode_supported">false</bool>
于 2013-12-13T14:39:20.303 回答
11

谢谢大家的回答。只是为了更新,截至 2014 年 6 月,它在 Android L 开发者预览版中提供。希望能在Android L正式版中看到。来自他们的博客New in Android: L Developer Preview 和 Google Play Services 5.0

L 开发者预览版可让您探索下一版 Android 的许多新特性和功能,并提供您在新平台上开始开发和测试所需的一切。以下是开发人员的一些亮点:

BLE 外设模式— Android 设备现在可以在蓝牙低功耗 (BLE)外设模式下运行。应用程序可以使用此功能向附近的设备广播它们的存在——例如,您现在可以构建让设备充当计步器或健康监视器并将数据传输到另一个 BLE 设备的应用程序。

更新:

坏消息是 BLE 外设模式仅适用于较新的 Android 设备(根据日期),即 Nexus 6 和 Nexus 9。即使您在 Nexus 4/Nexus 5/nexus 7/nexus 10 上也无法使用将其更新到 Android 5.0。您可以阅读其中一位 Android 项目经理关于BLE 广告模式无效票证的评论。他说:

我们在 Android 5.0 Lollipop 中引入了 BLE 外设模式。Nexus 6 和 Nexus 9 是支持 BLE 外设模式的前两款生产 Nexus 设备。由于硬件芯片组依赖性,较旧的 Nexus 设备 (4/5/7) 将无法访问 Lollipop 上的功能。

于 2014-08-29T02:02:53.440 回答
7

http://developer.android.com/sdk/api_diff/19/changes.html

通过查看完整的 api 差异,简而言之:否

===============

现在要添加外围角色支持,您必须亲自动手在操作系统级别自定义 Bluedroid 堆栈,或者在 XDA 开发人员身上试试运气,看看以前是否有人这样做过。不过,我不确定当前的 Android 手机是否支持硬件级别的外围角色。

于 2013-11-01T03:54:01.083 回答