对于我的应用程序,我进行了蓝牙发现搜索以列出所有可用的蓝牙设备。如果我在一个有很多计算机等的房间里,那么列表会很长。所以我想从列表中过滤 Android 手机。
我阅读了以下文档: http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.html和 http://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, .... )
编辑: 其他一些注意事项:
默认情况下,Android 手机不处于可发现模式。所以很有可能,除非您在设备上启动了可发现模式,否则您发现的设备都不会是 Android 设备。
许多手机都可以确定已发现设备的 RSSI(信号强度)。此信息在发现期间作为
bundle extra
传递给您的应用。附近的设备通常比远处的设备具有更高的 RSSI。所以你也可以通过“设备有多近”来过滤。用于各种设备的蓝牙 MAC 将在一定范围内。 Bluetooth MAC的前三个字节对应的是Hardware Vendor……有很多供应商,但大多数都不生产手机蓝牙硬件。因此,您还可以通过蓝牙 MAC 进行过滤 - 如果它落在已知范围内,则它可能是 Android。
关于android - 安卓手机的蓝牙设备类别有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3109710/