android - 安卓手机的蓝牙设备类别有哪些?

标签 android bluetooth

对于我的应用程序,我进行了蓝牙发现搜索以列出所有可用的蓝牙设备。如果我在一个有很多计算机等的房间里,那么列表会很长。所以我想从列表中过滤 Android 手机。

我阅读了以下文档: http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.htmlhttp://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.Major.html

所以我可以过滤一些设备,比如笔记本电脑、电脑等。

有人知道安卓手机可能有哪些常量吗?我不想冒险过滤太多设备,但我也想将列表限制为仅 Android 设备。

有什么提示吗?

最佳答案

蓝牙服务类是标准化的。根据类中存在的位,您可以确定该设备是否为计算机。事实上,该类可以公开有关每个决策的很多有用信息。

查看 hcid.conf 的联机帮助页。此页面描述了类的构建方式:

http://linux.die.net/man/5/hcid.conf

如上述文档所述:

Example: class 0x02hhhh : the device offers networking service Major device class allocation:

0x00: Miscellaneous

0x01: Computer (desktop,notebook, PDA, organizers, .... )

编辑: 其他一些注意事项:

  1. 默认情况下,Android 手机不处于可发现模式。所以很有可能,除非您在设备上启动了可发现模式,否则您发现的设备都不会是 Android 设备。

  2. 许多手机都可以确定已发现设备的 RSSI(信号强度)。此信息在发现期间作为 bundle extra 传递给您的应用。附近的设备通常比远处的设备具有更高的 RSSI。所以你也可以通过“设备有多近”来过滤。

  3. 用于各种设备的蓝牙 MAC 将在一定范围内。 Bluetooth MAC的前三个字节对应的是Hardware Vendor……有很多供应商,但大多数都不生产手机蓝牙硬件。因此,您还可以通过蓝牙 MAC 进行过滤 - 如果它落在已知范围内,则它可能是 Android。

关于android - 安卓手机的蓝牙设备类别有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3109710/

相关文章:

安卓工作室 : Discovered Bluetooth device name not found and struggling to pair to device

android - 问:如何在gradle任务中转换此Gradle命令行?

android - 通过蓝牙将流发送到已连接的设备

linux - 在 Fedora 20 上使用 bluez 注册一个 sdp 服务

java - 如何在 Android 中创建锁 (concurrent.locks.Lock)?

java - 如何使用 jsoup post 请求提交没有按钮名称的表单

python - pyBluez python 服务器 - 手机看不到我的服务器

android - 从 G-Shock watch 蓝牙 android 获取 UUID

ios - PeerId(MCPeerID)定制

java - 为什么 Dagger 2 中需要@SubComponent?