Android蓝牙服务发现

时间:2015-06-24 15:19:26

标签: android bluetooth

我正在尝试构建一个应用程序来发现运行相同应用程序的范围内的所有设备。 我已完成所有发现等,但我不知道如何过滤掉运行我的应用程序的那些而不连接它们。仅从发现的结果。 那可能吗?以什么方式?我正在调查UUID,但我不知道能够判断它们是否可以用于此目的,以及如何使用。 提前谢谢!

1 个答案:

答案 0 :(得分:1)

  

我不知道如何过滤掉正在运行我的应用的那些

这取决于您想要运行的Android的风格。

Android 4.4及更高版本将支持128位UUID的蓝牙扫描过滤

以下是代码摘录。

private static final String CT_UUID = "Your specific 128-bit UUID string";  
.........  
String myOSVersion = android.os.Build.VERSION.RELEASE; // e.g. myOSVersion := "4.2"
float myOSVersionNum = Float.valueOf(myOSVersion.substring(0,3));  // Example 4.3, 4.4, etc.  
.........  
if (myOSVersionNum < 4.4) {
    // --- Android 4.3 (NO UUID Filtering) ---
    mBluetoothAdapter.startLeScan(mLeScanCallback);
} else {
    // --- Android 4.4 or Later (With UUID Filtering) ---
    UUID[] uuids = new UUID[1];
    uuids[0] = UUID.fromString(CT_UUID);
    mBluetoothAdapter.startLeScan(uuids, mLeScanCallback);
}

但对于之前的Android版本,这不起作用 关于Android 4.3及更早版本可能适用的替代方案,这里有很多帖子。

根据我自己的需要,涉及Android 4.3,进行后期获取设备名称过滤就足够了。