BLE obtain uuid encoded in advertising packet
2015-09-17 11:59
651 查看
private BluetoothAdapter.LeScanCallback mBleScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) { printScanRecord(scanRecord); } }; public void printScanRecord (byte[] scanRecord) { // Simply print all raw bytes try { String decodedRecord = new String(scanRecord,"UTF-8"); Log.d("DEBUG----1","decoded String : " + ByteArrayToString(scanRecord)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } // Parse data bytes into individual records List<AdRecord> records = AdRecord.parseScanRecord(scanRecord); // Print individual records if (records.size() == 0) { Log.i("DEBUG", "Scan Record Empty"); } else { Log.i("DEBUG---2", "Scan Record: " + TextUtils.join(",", records)); } } public static String ByteArrayToString(byte[] ba) { StringBuilder hex = new StringBuilder(ba.length * 2); for (byte b : ba) hex.append(b + " "); return hex.toString(); } public static class AdRecord { public AdRecord(int length, int type, byte[] data) { String decodedRecord = ""; try { decodedRecord = new String(data,"UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } Log.d("DEBUG", "Length: " + length + " Type : " + type + " Data : " + ByteArrayToString(data)); } // ... public static List<AdRecord> parseScanRecord(byte[] scanRecord) { List<AdRecord> records = new ArrayList<AdRecord>(); int index = 0; while (index < scanRecord.length) { int length = scanRecord[index++]; //Done once we run out of records if (length == 0) break; int type = scanRecord[index]; //Done if our record isn't a valid type if (type == 0) break; byte[] data = Arrays.copyOfRange(scanRecord, index + 1, index + length); records.add(new AdRecord(length, type, data)); //Advance index += length; } return records; } // ... }
相关文章推荐
- JS获取request参数 和改变request参数
- UEdit插件使用
- *** does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE
- Solr Multivalue field的索引和搜索
- Android异步更新UI的方式之使用runOnUiThread(action)方法
- finished with non-zero exit value 2
- UIScrollView的一些特点
- iOS开发:设置 UITabBar 的背景色
- easyUI window 拖不动的情况
- ESP8266-01 使用 Arduino IDE
- UIday1603:图片异步下载、KVO
- Redhat 6 Mounting a File System as Encrypted Guide
- Redhat6 File System Structure and Maintenance Guide
- Redhat FS-Cache Guide
- Redhat Network File System (NFS) Guide
- Redhat XFS File System Guide
- Redhat Global File System 2 Guide
- Redhat Ext4 File System Guide
- Build Active Architecture Only
- Get value from agent failed: cannot connect to [[ip]:10050]: [4] [Interrupted system call]