如何在 Android 中使用 Estimote SDK 获取 Beacon 的唯一 ID
How to get Unique Id of a Beacon using Estimote SDK in Android
我正在开发一个使用信标的应用程序。我已经完成了相关的 Estimote SDK。现在问题是我需要知道特定 Beacon 的唯一 ID。假设我有 3 个信标,并且都在设备范围内。现在我想根据信标的唯一 ID 执行不同的功能。为此,我需要知道每个 Beacon 的唯一 ID。
目前我正在为 Beacon 提供 UUID,只是检查它是否在设备区域。我的代码如下:-
private static final String ESTIMOTE_PROXIMITY_UUID = "XYZ";
private static final Region ALL_ESTIMOTE_BEACONS = new Region("regionId",ESTIMOTE_PROXIMITY_UUID, null, null);
beaconManager.setMonitoringListener(new MonitoringListener() {
@Override
public void onExitedRegion(Region region) {
//Region Exited
}
@Override
public void onEnteredRegion(Region arg0, List<Beacon> arg1) {
// TODO Auto-generated method stub
//Do something ...
}
});
现在我需要以编程方式获取 Beacon 的唯一 ID,以便我可以根据 ID 做出决定。
请帮我整理一下。任何帮助将不胜感激。
谢谢
这篇文章是我在试用的时候看到的,希望对你有所帮助。
https://community.estimote.com/hc/en-us/articles/200868188-How-do-I-modify-UUID-major-and-minor-values-
每个信标都有ID
。
ID
是 20 个字节长,分为三个部分:
proximityUUID
(16 字节)
major
个数(2字节)
minor
数字(2 个字节)。
如何使用它们来识别特定的信标?
首先,您必须意识到您周围可能有很多信标。这些信标可能来自其他供应商、公司或开发商,因此您要将它们过滤掉。
要过滤信标,您应该使用 proximityUUID
对您或您的公司提供的信标进行分组。给你所有的信标相同的 proximityUUID
。
之后您可以通过以下方式开始监控和测距:
private final Region MY_BEACONS = new Region("MY_BEACONS","YOUR_PROXIMITY_UUID", null, null);
beaconManager.startMonitoring(MY_BEACONS);
beaconManager.startRanging(MY_BEACONS);
现在,当您的信标位于附近时,您将在您的听众中收到通知。
现在假设您正在为城市的电影院编写应用程序。每个电影院都有两个不同的信标 执行不同的操作 。
如何区分电影院的灯塔以及如何区分特定电影院中的特定灯塔?
使用 major
和 minor
字段。例如:
- 使用
major
识别特定电影院中的所有信标,
- 使用
minor
来识别特定电影院中的特定信标。
当您以这种方式为信标创建ID时,您可以获得特定的信标并执行操作:
private final int SCARY_CINEMA_ID = 1111;
private final int SCARY_CINEMA_BEACON_1 = 1;
private final int SCARY_CINEMA_BEACON_2 = 2;
private final int COMEDY_CINEMA_ID = 2222;
private final int COMEDY_CINEMA_BEACON_1 = 1;
private final int COMEDY_CINEMA_BEACON_2 = 2;
@Override
public void onEnteredRegion(Region region, List<Beacon> beacons) {
for(Beacon beacon : beacons){
if(beacon.getMajor() == SCARY_CINEMA_ID){
if(beacon.getMinor == SCARY_CINEMA_BEACON_1){
//do something for this beacon
} else{
//do something for second beacon in cinema
}
} else if(beacon.getMajor == COMEDY_CINEMA_ID){
...
}
}
希望对您有所帮助:)
我正在开发一个使用信标的应用程序。我已经完成了相关的 Estimote SDK。现在问题是我需要知道特定 Beacon 的唯一 ID。假设我有 3 个信标,并且都在设备范围内。现在我想根据信标的唯一 ID 执行不同的功能。为此,我需要知道每个 Beacon 的唯一 ID。 目前我正在为 Beacon 提供 UUID,只是检查它是否在设备区域。我的代码如下:-
private static final String ESTIMOTE_PROXIMITY_UUID = "XYZ";
private static final Region ALL_ESTIMOTE_BEACONS = new Region("regionId",ESTIMOTE_PROXIMITY_UUID, null, null);
beaconManager.setMonitoringListener(new MonitoringListener() {
@Override
public void onExitedRegion(Region region) {
//Region Exited
}
@Override
public void onEnteredRegion(Region arg0, List<Beacon> arg1) {
// TODO Auto-generated method stub
//Do something ...
}
});
现在我需要以编程方式获取 Beacon 的唯一 ID,以便我可以根据 ID 做出决定。 请帮我整理一下。任何帮助将不胜感激。 谢谢
这篇文章是我在试用的时候看到的,希望对你有所帮助。 https://community.estimote.com/hc/en-us/articles/200868188-How-do-I-modify-UUID-major-and-minor-values-
每个信标都有ID
。
ID
是 20 个字节长,分为三个部分:
proximityUUID
(16 字节)major
个数(2字节)minor
数字(2 个字节)。
如何使用它们来识别特定的信标?
首先,您必须意识到您周围可能有很多信标。这些信标可能来自其他供应商、公司或开发商,因此您要将它们过滤掉。
要过滤信标,您应该使用 proximityUUID
对您或您的公司提供的信标进行分组。给你所有的信标相同的 proximityUUID
。
之后您可以通过以下方式开始监控和测距:
private final Region MY_BEACONS = new Region("MY_BEACONS","YOUR_PROXIMITY_UUID", null, null);
beaconManager.startMonitoring(MY_BEACONS);
beaconManager.startRanging(MY_BEACONS);
现在,当您的信标位于附近时,您将在您的听众中收到通知。
现在假设您正在为城市的电影院编写应用程序。每个电影院都有两个不同的信标 执行不同的操作 。
如何区分电影院的灯塔以及如何区分特定电影院中的特定灯塔?
使用 major
和 minor
字段。例如:
- 使用
major
识别特定电影院中的所有信标, - 使用
minor
来识别特定电影院中的特定信标。
当您以这种方式为信标创建ID时,您可以获得特定的信标并执行操作:
private final int SCARY_CINEMA_ID = 1111;
private final int SCARY_CINEMA_BEACON_1 = 1;
private final int SCARY_CINEMA_BEACON_2 = 2;
private final int COMEDY_CINEMA_ID = 2222;
private final int COMEDY_CINEMA_BEACON_1 = 1;
private final int COMEDY_CINEMA_BEACON_2 = 2;
@Override
public void onEnteredRegion(Region region, List<Beacon> beacons) {
for(Beacon beacon : beacons){
if(beacon.getMajor() == SCARY_CINEMA_ID){
if(beacon.getMinor == SCARY_CINEMA_BEACON_1){
//do something for this beacon
} else{
//do something for second beacon in cinema
}
} else if(beacon.getMajor == COMEDY_CINEMA_ID){
...
}
}
希望对您有所帮助:)