android - 当我使用 AltBeacon 将我的 Android 设备用作 ibeacon 时,找不到 CoreBluetooth
问题描述
我有使用 CoreBluetooth 的 Ibeacon 扫描应用程序。我想用我真正的安卓设备作为信标。我可以扫描我的 Ibeacon,但找不到我的安卓设备。
import Foundation
import CoreBluetooth
public class BeaconScanning: NSObject, BKCentralDelegate{
let central = BKCentral()
override init(){
super.init()
central.delegate = self
do {
let serviceUUID = CBUUID(string: "FF80") // For my used Ibeacon Service Data
let characteristicUUID = CBUUID( )
let configuration = BKConfiguration(dataServiceUUID: serviceUUID, dataServiceCharacteristicUUID: characteristicUUID) // Configration for scanning
try central.startWithConfiguration(configuration)
} catch let error { }
central.scanContinuouslyWithChangeHandler({ changes, discoveries in }, stateHandler: { newState in }, duration: 2, inBetweenDelay: 0.1, beaconHandler: { beacons in
for beacon in beacons! {
// get beacons properties
}
}, errorHandler: { error in })
}
public func central(_ central: BKCentral, remotePeripheralDidDisconnect remotePeripheral: BKRemotePeripheral) {
}
}
我可以在 IOS 应用程序中扫描我的 Ibeacon 设备。但是,当我使用我的 Android 设备作为使用 AltBeacon 的 Ibeacon 时找不到它。
Beacon beacon = new Beacon.Builder().
.setId1("e2c56db5-dffb-48d2-b060-d0f5a71096e0") //uuid the same my Ibeacon
.setId2("0")
.setId3("0")
.setManufacturer(0x0118)
.setTxPower(-59)
.setDataFields(Arrays.asList(new Long[] {0l}))
.build();
BeaconParser beaconParser = new BeaconParser()
.setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"); //altbeacon layout for parser transmitting as a beacon
BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser);
beaconTransmitter.startAdvertising(beacon);
解决方案
使用核心位置:
Beacon beacon = new Beacon.Builder()
.setManufacturer(0x004c) // Use Ibeacon Manufacturer
.setId1("e2c56db5-dffb-48d2-b060-d0f5a71096e0")
.setId2("0")
.setId3("0")
.setTxPower(-59)
.setDataFields(Arrays.asList(new Long[] {0l}))
.build();
BeaconParser beaconParser = new BeaconParser()
.setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25");//BeaconLayout startwith ("m:2-3=0215)
BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser);
beaconTransmitter.startAdvertising(beacon);
推荐阅读
- python - 如何为 Django 表格内联添加不同的占位符
- vba - 基于 Outlook 模板,从 Word 菜单创建电子邮件
- javascript - 如何让 HOC 对覆盖道具做出反应?
- google-apps-script - 存档脚本随机停止处理工作表上已填充的数据
- anaconda - Azure ML 无法创建 conda 环境(退出代码:-15)
- tailwind-css - Tailwind 不会吹扫
- angular - 未在角度 11 中调用事件发射器函数
- api - 任何注册为亚马逊产品广告 API 5.0 开发人员的方式
- youtube - youtube如何将其横幅照片保存在频道上,以免被下载
- powershell - PowerShell 输出到多个文件