Android设备可以充当iBeacon并确定其他Android设备何时进入其范围吗?这些其他Android设备是否需要打开蓝牙?
如果客户进入我的商店,但他的设备上未安装我的应用程序,那么iBeacon可以工作,还是必须先安装该应用程序?每天都有如此多的客户来我们商店购物,但是如果他们没有安装我的应用程序,那么iBeacon概念是否有效?
Android设备可以充当iBeacon并确定其他Android设备何时进入其范围吗?这些其他Android设备是否需要打开蓝牙?
如果客户进入我的商店,但他的设备上未安装我的应用程序,那么iBeacon可以工作,还是必须先安装该应用程序?每天都有如此多的客户来我们商店购物,但是如果他们没有安装我的应用程序,那么iBeacon概念是否有效?
Answers:
YES这是可能的Android上5+,你可以找到开放源代码发送信标中的Android灯塔图书馆。Google Play商店的Beacon Scope应用程序中还有一个功能齐全的信标发送器版本。
这是一个使用Android Beacon库传输iBeacon的示例:
Beacon beacon = new Beacon.Builder()
.setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6")
.setId2("1")
.setId3("2")
.setManufacturer(0x004c)
.setTxPower(-59)
.build();
BeaconParser beaconParser = new BeaconParser()
.setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24");
BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser);
beaconTransmitter.startAdvertising(beacon);
您也可以在根植的Android 4.4.3设备上作为信标进行传输,但是它需要安装具有系统权限的应用程序。
带有BluetoothLE的Android 4.3设备可以看到iBeacons,但不能充当iBeacons,因为Android 4.3不支持外围设备模式。三星Android设备包含一个单独的专有SDK,但它也不允许设备充当iBeacons。请参阅:使Samsung Android设备做为iBeacon广告)iOS设备可以充当iBeacons。
通常,iBeacon技术不适合手机查看其他手机。但是您可以通过制作一个自定义应用程序来完成您在iOS上的建议,该应用程序可使手机充当iBeacon,并在其周围寻找其他iBeacon。这样一来,使用该应用的任何人都可以看到附近有该应用的其他人。所有手机都需要打开蓝牙。
要回答第二个问题,是的,必须安装一个移动设备(Android或iOS)才能利用iBeacons。除非安装了专门编程用于执行某项操作的应用程序,否则两种操作系统当前都不会在看到iBeacon时执行任何操作。因此,到达商店的客户必须已经安装了应用程序,否则他们无法与iBeacons进行交互。
You can also transmit as a beacon on rooted Android 4.4.3 devices, but it requires an app installed with system privileges.
我怎样才能做到这一点?
是的,Android设备可以充当iBeacon。我使用android 5.x和AltBeacon库来实现这一点。Radius Networks的AltBeacon库提供了一些类来将android构建为信标发射器和接收器。这是一些可以作为iBeacon在Android上运行的代码:
Beacon beacon = new Beacon.Builder()
.setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6") // UUID for beacon
.setId2("1") // Major for beacon
.setId3("5") // Minor for beacon
.setManufacturer(0x004C) // Radius Networks.0x0118 Change this for other beacon layouts//0x004C for iPhone
.setTxPower(-56) // Power in dB
.setDataFields(Arrays.asList(new Long[] {0l})) // Remove this for beacon layouts without d: fields
.build();
BeaconParser beaconParser = new BeaconParser()
.setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24");
BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser);
beaconTransmitter.startAdvertising(beacon, new AdvertiseCallback() {
@Override
public void onStartFailure(int errorCode) {
Log.e(TAG, "Advertisement start failed with code: "+errorCode);
}
@Override
public void onStartSuccess(AdvertiseSettings settingsInEffect) {
Log.i(TAG, "Advertisement start succeeded.");
}
});
希望对用户将iBeacon搜索为android有所帮助。j
纯Android SDK。零第三方代码-适用于开源尽职调查
byte[] payload = {(byte)0x02, (byte)0x15, // this makes it a iBeacon
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, // uuid
(byte)0x00, (byte)0x00, // Major
(byte)0x00, (byte)0x00}; // Minor
AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder();
dataBuilder.addManufacturerData(0x004C, payload); // 0x004c is for Apple inc.
AdvertiseSettings.Builder settingsBuilder = new AdvertiseSettings.Builder();
settingsBuilder.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY);
settingsBuilder.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH);
settingsBuilder.setConnectable(false);
mAdvertiser.startAdvertising(settingsBuilder.build(), dataBuilder.build(), this);
将您的UUID次要市长放在有效负载中的那些位置,但将前两个字节保持不变。