AltBeacon:select 一个 Beacon Eddystone 的简单方法
AltBeacon: easy way to select a beacon Eddystone
这是 select 类型的信标 Eddystone 的唯一途径?
if (b.getServiceUuid() == 0xfeaa) {
if (b.getBeaconTypeCode() == 0x00) {
// Eddystone-UID
} else if (b.getBeaconTypeCode() == 0x10) {
// Eddystone-URL
} else if (b.getBeaconTypeCode() == 0x20) {
// Eddystone-TLM
}
} else {
// AltBeacon...
}
检查 altbeacon 库:http://altbeacon.org
要区分信标,请按以下方式使用 if 语句:
if (String.valueOf(beac.getId2()).trim().equals("13191"))//Getting the major of the beacon
{
//do something
}
一旦信标在范围内,代码就会在 UI 线程中运行:
public void Run(View view){
beaconManager.addRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(final Collection<Beacon> collection, Region region) {
runOnUiThread(new Runnable() {
@Override
public void run() {
for (Beacon beac : collection) { //LOOP searches for all the beacons within the range...
//beac.getId1()//
beaconUUID = beac.getId2().toString(); //Major
//beac.getId3()//Minor
udaljenost1 = Math.round(beac.getDistance() * 100.0) / 100.0; //dobivanje integera iz decimala, zaokruzivanje na cjeli broj
if (String.valueOf(beac.getId2()).trim().equals("13191"))//Getting the major of the beacon
{
//do something
}
}
}
});
}
});
}
是的! 使用 Android Beacon Library 2.8+ 版本,这要容易得多。每个 BeaconParser
中都添加了一个可选的字符串标识符。此标识符将传递给使用该解析器匹配的任何 Beacon
实例,因此您可以轻松分辨出哪种信标类型。
这是一个工作原理示例:
beaconManager.getBeaconParsers().add(new BeaconParser("Eddystone-UID")
.setBeaconLayout(BeaconParser.EDDYSTONE_UID_LAYOUT));
...
if (beacon.getParserIdentifier().equals("Eddystone-UID")) {
// This is Eddystone-UID
}
请务必在构建 BeaconParser
时设置标识符。
这正是由于确定您的问题中指出的信标类型的尴尬而添加的。
这是 select 类型的信标 Eddystone 的唯一途径?
if (b.getServiceUuid() == 0xfeaa) {
if (b.getBeaconTypeCode() == 0x00) {
// Eddystone-UID
} else if (b.getBeaconTypeCode() == 0x10) {
// Eddystone-URL
} else if (b.getBeaconTypeCode() == 0x20) {
// Eddystone-TLM
}
} else {
// AltBeacon...
}
检查 altbeacon 库:http://altbeacon.org
要区分信标,请按以下方式使用 if 语句:
if (String.valueOf(beac.getId2()).trim().equals("13191"))//Getting the major of the beacon
{
//do something
}
一旦信标在范围内,代码就会在 UI 线程中运行:
public void Run(View view){
beaconManager.addRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(final Collection<Beacon> collection, Region region) {
runOnUiThread(new Runnable() {
@Override
public void run() {
for (Beacon beac : collection) { //LOOP searches for all the beacons within the range...
//beac.getId1()//
beaconUUID = beac.getId2().toString(); //Major
//beac.getId3()//Minor
udaljenost1 = Math.round(beac.getDistance() * 100.0) / 100.0; //dobivanje integera iz decimala, zaokruzivanje na cjeli broj
if (String.valueOf(beac.getId2()).trim().equals("13191"))//Getting the major of the beacon
{
//do something
}
}
}
});
}
});
}
是的! 使用 Android Beacon Library 2.8+ 版本,这要容易得多。每个 BeaconParser
中都添加了一个可选的字符串标识符。此标识符将传递给使用该解析器匹配的任何 Beacon
实例,因此您可以轻松分辨出哪种信标类型。
这是一个工作原理示例:
beaconManager.getBeaconParsers().add(new BeaconParser("Eddystone-UID")
.setBeaconLayout(BeaconParser.EDDYSTONE_UID_LAYOUT));
...
if (beacon.getParserIdentifier().equals("Eddystone-UID")) {
// This is Eddystone-UID
}
请务必在构建 BeaconParser
时设置标识符。
这正是由于确定您的问题中指出的信标类型的尴尬而添加的。