Android蓝牙LE扫描UUID

问题描述:

我试过android示例应用程序BLE, 但我无法得到所需的输出。 需要知道如何专门扫描UUID并获取设备传输的消息。Android蓝牙LE扫描UUID

对于BLE发射器,我使用MacBook作为发射器使用MacRadius使其充当灯塔。

我只想检测我的Mac的uuid,稍后从中获取一些信息。

需要的代码示例

感谢

主要业务的UUID可以从scanRecord参数使用下面的代码片断传递给BluetoothAdapter.LeScanCallback#onLeScan()解析:

public static List<UUID> parseServiceUuids(final byte[] advertisedData) 
    { 
     List<UUID> uuids = new ArrayList<UUID>(); 

     if(advertisedData == null) return uuids; 

     int offset = 0; 
     while(offset < (advertisedData.length - 2)) 
     { 
      int len = advertisedData[offset++]; 
      if(len == 0) 
       break; 

      int type = advertisedData[offset++]; 
      switch(type) 
      { 
       case 0x02: // Partial list of 16-bit UUIDs 
       case 0x03: // Complete list of 16-bit UUIDs 
        while(len > 1) 
        { 
         int uuid16 = advertisedData[offset++]; 
         uuid16 += (advertisedData[offset++] << 8); 
         len -= 2; 
         uuids.add(UUID.fromString(String.format("%08x-0000-1000-8000-00805f9b34fb", uuid16))); 
        } 
        break; 
       case 0x06:// Partial list of 128-bit UUIDs 
       case 0x07:// Complete list of 128-bit UUIDs 
         // Loop through the advertised 128-bit UUID's. 
        while(len >= 16) 
        { 
         try 
         { 
          // Wrap the advertised bits and order them. 
          ByteBuffer buffer = ByteBuffer.wrap(advertisedData, offset++, 16).order(ByteOrder.LITTLE_ENDIAN); 
          long mostSignificantBit = buffer.getLong(); 
          long leastSignificantBit = buffer.getLong(); 
          uuids.add(new UUID(leastSignificantBit, mostSignificantBit)); 
         } 
         catch(IndexOutOfBoundsException e) 
         { 
          // Defensive programming. 
          Log.e(TAG, e.toString()); 
          continue; 
         } 
         finally 
         { 
          // Move the offset to read the next uuid. 
          offset += 15; 
          len -= 16; 
         } 
        } 
        break; 
       default: 
        offset += (len - 1); 
        break; 
      } 
     } 

     return uuids; 
    } 

然后,您就必须自己解析scanRecord进一步从中获得更多信息。