Android设备可以充当iBeacon吗?

Har*_*shi 75 android bluetooth bluetooth-lowenergy android-bluetooth ibeacon

Android设备是否可以充当iBeacon并了解其他Android设备何时进入其范围?那些其他Android设备是否需要打开蓝牙?

如果客户进入我的商店并且他的设备上没有安装我的应用程序,iBeacon可以工作,还是必须先安装应用程序?有很多客户每天访问我们的商店,但如果他们没有安装我的应用程序,iBeacon概念是否有效?

dav*_*ung 71

更新:现在可以在Android 5.0上使用,您可以找到用于Android信标库的2.1+版本中作为信标进行传输的开源代码.Google Play商店中的Locate应用程序中还有一个全功能的信标发射器版本.您还可以在有根的Android 4.4.3设备上作为信标进行传输,但它需要安装具有系统权限的应用程序.对于较旧的OS版本,请阅读以下内容

以下是使用Android Beacon Library传输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);
Run Code Online (Sandbox Code Playgroud)

使用BluetoothLE的Android 4.3设备可以看到iBeacons但不能充当iBeacons,因为Android 4.3不支持外设模式.三星Android设备包含一个单独的专有SDK,但它也不允许设备充当iBeacons.请参阅:将三星Android设备作为iBeacon进行宣传)然而,iOS设备可以充当iBeacons.

通常,iBeacon技术不适用于手机查看其他手机.但你可以通过制作一个自定义应用来做你在iOS上的建议,这个应用让手机充当iBeacon,并寻找周围的其他iBeacons.这将允许任何拥有该应用的人在附近看到其他人使用相同的应用.所有手机都需要打开蓝牙. 目前只有三星设备可以在Android上执行此操作.

要回答您的第二个问题,是的,移动设备(Android或iOS)必须安装应用才能利用iBeacons.当操作系统看到iBeacon时,它们当前都没有做任何事情,除非安装了专门编程执行某项操作的应用程序.因此,到达商店的客户必须已安装应用程序或无法与iBeacons交互.

  • 如果您发布一个新问题,我会回答 - 没有足够的空间在评论中解释. (2认同)

Yog*_*esh 16

是的,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.");
            }
        });
Run Code Online (Sandbox Code Playgroud)

希望它有助于用户搜索android作为iBeacon.JJ


Zbi*_*zur 8

纯安卓SDK。零 3rd 方代码 - 有利于开源尽职调查

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);
Run Code Online (Sandbox Code Playgroud)

将您的 UUID Minor Mayor 放在有效载荷中的那些位置,但保持前两个字节不变。