java - EddyStone URL 无法在 Android 应用程序上正确显示?
问题描述
所以我最近一直在学习信标,我试图开发一个应用程序来扫描我周围的信标并获取它们的 url,我似乎很难理解我应该为信标选择什么布局,应该是 EDDYSTONE_URL,如果是这样,我应该如何在 android 应用程序中检索这个 url,这就是我所做的:
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
for (Beacon beacon : beacons) {
if (!rangingMessageRaised && beacon.getServiceUuid() == 0xfeaa) {
// This is a Eddystone-UID frame
Identifier namespaceId = beacon.getId1();
Identifier instanceId = beacon.getId2();
String url = UrlBeaconUrlCompressor.uncompress(beacon.getId1().toByteArray());
showAlert(TAG, "I see a beacon transmitting a url: " + url +
" approximately " + beacon.getDistance() + " meters away.");
if (beacon.getExtraDataFields().size() > 0) {
long telemetryVersion = beacon.getExtraDataFields().get(0);
long batteryMilliVolts = beacon.getExtraDataFields().get(1);
long pduCount = beacon.getExtraDataFields().get(3);
long uptime = beacon.getExtraDataFields().get(4);
Log.d(TAG, "The above beacon is sending telemetry version " + telemetryVersion +
", has been up for : " + uptime + " seconds" +
", has a battery level of " + batteryMilliVolts + " mV" +
", and has transmitted " + pduCount + " advertisements.");
}
}
}
rangingMessageRaised=true;
}
设置信标布局的代码:
// Detect the URL frame:
beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout(BeaconParser.EDDYSTONE_URL_LAYOUT));
beaconManager.bind(this);
我用于 EDDYSTONE_URL 的标识符在创建信标区域时是:
try {
beaconRegion = new
Region("MyBeacons", null,null,null);
//I initially wrote this for EDDYSTONE_UID
//which seems to work for getting UID
// And distance but not url
//Identifier myBeaconNamespaceId =
//Identifier.parse("0x2f234454f4911ba9ffa6");
// Identifier myBeaconInstanceId
//Identifier.parse("0x000000000001");
// Region region = new Region("my- beacon-region", myBeaconNamespaceId, myBeaconInstanceId, null);
beaconManager.startMonitoringBeaconsInRegion(beaconRegion);
beaconManager.startRangingBeaconsInRegion(beaconRegion);
} catch (RemoteException e) {
e.printStackTrace();
}
}
我为信标布局 EDDYSTONE_URL 得到的输出是:
“我看到一个信标传输一个 url:DT∆ws#2 大约 0.00969 米远”。
url 似乎被编码或给出了一个非常奇怪的值,也许是我正在应用 url 解压缩器的 beacon.getId1() 的问题。
解决方案
推荐阅读
- python - Python从文件夹中的所有excel文件中提取第一张表
- .net - 没有存储库的 ef 核心控制器
- django - Django内联模型表单集和内联模型表单处理初始不同
- python - 使用朴素贝叶斯模型获得良好结果所需的最少特征数是多少?
- windows - 如何在 Skiko(Kotlin MPP 绑定到 Skia)上制作基本动画?
- netlogo - NetLogo:移动海龟,直到它们找到最佳位置
- javascript - 如何在没有访问控制标头的情况下使用 php 从 Javascript 中读取 Json 文件中的内容
- python - 有没有办法用 Selenium 和 Python 绕过谷歌机器人识别?
- html - HTML跳转到页面的特定部分从第二次点击开始工作
- python - 如何使用 twython python 获取超过 100 条推文