2014-11-05 184 views
0

我試過android示例應用程序BLE, 但我無法得到所需的輸出。 需要知道如何專門掃描UUID並獲取設備傳輸的消息。Android藍牙LE掃描UUID

對於BLE發射器,我使用MacBook作爲發射器使用MacRadius使其充當燈塔。

我只想檢測我的Mac的uuid,稍後從中獲取一些信息。

需要的代碼示例

感謝

回答

0

主要業務的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進一步從中獲得更多信息。