可以使用android-beacon-library提供的方法来获取iBeacon的服务数据。具体步骤如下:
private static final String IBEACON_FORMAT = "IBeacon (proximityUUID:major:minor)";
private static final String[] IBEACON_SCAN_FILTERS = { "m:2-3=0215", "i:4-19" };
//添加服务UUID
private static final String[] IBEACON_SCAN_FILTERS_WITH_UUID = {
"m:2-3=0215",
"i:4-19",
"s:20-21=UUID",
"s:22-23=UUID",
"s:24-25=UUID",
"s:26-27=UUID"};
//设置服务UUID
private static final String SERVICE_UUID = "E2C56DB5-DFFB-48D2-B060-D0F5A71096E0";
@Override
public void onBeaconServiceConnect() {
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection beacons, Region region) {
for (Beacon beacon : beacons) {
//获取服务数据
byte[] serviceData = beacon.getServiceData();
if (serviceData != null) {
//解析服务数据
parseServiceData(serviceData);
}
}
}
});
try {
//开始范围查找
beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
} catch (RemoteException e) {
e.printStackTrace();
}
}
private void parseServiceData(byte[] serviceData) {
if (serviceData.length > 3) {
//获取服务UUID
String uuid =