【发布时间】:2023-03-14 11:52:02
【问题描述】:
我正在开发一个应用程序,该应用程序需要检测您所在地区附近的可用信标,并且检测到的信标详细信息需要使用 API 调用发送到我的服务器。 我正在获取信标详细信息,但我无法从应用程序后台将详细信息发送到我的服务器,发现任何信标。
这里是 Beacon 的详细信息;
private class ScanProcessor extends AsyncTask<ScanData, Void, Void> {
@Override
protected Void doInBackground(ScanData... params) {
ScanData scanData = params[0];
IBeacon iBeacon = IBeacon.fromScanData(scanData.scanRecord, scanData.rssi);
if (iBeacon != null) {
lastIBeaconDetectionTime = new Date();
trackedBeacons.add(iBeacon);
Log.d(TAG, "iBeacon detected :"+iBeacon.getProximityUuid()+" Major: "+iBeacon.getMajor()+" Minor: "+iBeacon.getMinor()+" accuracy: "+iBeacon.getAccuracy()+" proximity: "+iBeacon.getProximity());
List<Region> matchedRegions = matchingRegions(iBeacon, monitoredRegionState.keySet());
Iterator<Region> matchedRegionIterator = matchedRegions.iterator();
while (matchedRegionIterator.hasNext()) {
Region region = matchedRegionIterator.next();
MonitorState state = monitoredRegionState.get(region);
// if (state.markInside()) {
// state.getCallback().call(IBeaconService.this, "monitoringData", new MonitoringData(state.isInside(), region));
// }
}
Log.d(TAG, "looking for ranging region matches for this ibeacon");
matchedRegions = matchingRegions(iBeacon, rangedRegionState.keySet());
matchedRegionIterator = matchedRegions.iterator();
while (matchedRegionIterator.hasNext()) {
Region region = matchedRegionIterator.next();
Log.d(TAG, "matches ranging region: "+region);
RangeState rangeState = rangedRegionState.get(region);
rangeState.addIBeacon(iBeacon);
}
}
//I see a device: 00:02:72:C5:EC:33 with scan data: 02 01 1A 1A FF 4C 00 02 15 84 2A F9 C4 08 F5 11 E3 92 82 F2 3C 91 AE C0 5E D0 00 00 69 C5 0000000000000000000000000000000000000000000000000000000000000000
//
// 9: proximityUuid (16 bytes) 84 2A F9 C4 08 F5 11 E3 92 82 F2 3C 91 AE C0 5E
// 25: major (2 bytes unsigned int)
// 27: minor (2 bytes unsigned int)
// 29: tx power (1 byte signed int)
return null;
}
@Override
protected void onPostExecute(Void result) {
}
@Override
protected void onPreExecute() {
}
@Override
protected void onProgressUpdate(Void... values) {
}
}
当我在应用后台找到信标时,请帮助我如何将信标详细信息发送到我的服务器。
【问题讨论】:
-
你为什么不能这样做?
-
当应用处于后台时,您可以使用 Android X Work Manager 启动一个可以向您的服务器发送数据的作业。
-
是的,我可以从应用程序的一个特定屏幕轻松发送 .. 但我需要从应用程序后台案例发送也请给我示例或任何 stackoverflow 解决了这种类型的链接
标签: android ibeacon ibeacon-android