Подтвердить что ты не робот

Может ли устройство Android действовать как iBeacon?

Может ли устройство Android действовать как iBeacon и выяснить, когда в его диапазон входят другие устройства Android? У других устройств Android необходимо включить Bluetooth?

Если клиент входит в мой магазин, и у него нет моего приложения, установленного на его устройстве, может ли iBeacon работать, или он должен сначала установить приложение? Есть так много клиентов, которые ежедневно посещают наш магазин, но если у них нет моего приложения, работает ли концепция iBeacon?

4b9b3361

Ответ 1

ОБНОВЛЕНИЕ: теперь это возможно на Android 5.0, и вы можете найти открытый исходный код для передачи в виде маяка в 2. 1+ версии библиотеки маяков Android. Существует также полнофункциональная версия передатчика маяка в приложении Locate в Google Play Store. Вы также можете передавать как маяк на корневых устройствах Android 4.4.3, но для этого требуется приложение, установленное с системными привилегиями. Для более старых версий ОС читайте ниже.

Вот пример передачи iBeacon с библиотекой маяков Android:

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.3 с BluetoothLE могут видеть iBeacons, но не действуют как iBeacons, потому что Android 4.3 не поддерживает периферийный режим. Устройства Samsung Android содержат отдельный проприетарный SDK, но они также не позволяют устройствам действовать как iBeacons. См.: Сделайте так, чтобы устройство Android на Android рекламировалось как iBeacon. Устройства iOS могут выступать в качестве iBeacon.

Обычно технологии iBeacon не предназначены для того, чтобы телефоны могли видеть другие телефоны. Но вы можете сделать то, что вы предлагаете на iOS, сделав специальное приложение, которое заставляет телефоны работать как iBeacon и искать другие iBeacon вокруг них. Это позволило бы любому с приложением видеть других с тем же приложением поблизости. Все телефоны должны были бы включить Bluetooth. В настоящее время это можно сделать только на устройствах Android.

Чтобы ответить на ваш второй вопрос, да, на мобильном устройстве, как на Android, так и на iOS, должно быть установлено приложение, чтобы использовать iBeacons. Ни одна из операционных систем в настоящее время ничего не делает, когда видит iBeacon, если не установлено приложение, которое специально запрограммировано на что-либо. Таким образом, покупатели, которые приходят в магазин, должны иметь уже установленное приложение, иначе они не смогут взаимодействовать с iBeacons.

Ответ 2

Да, устройства Android могут действовать как iBeacon. Я достигаю этого, используя андроид 5.X и библиотеку AltBeacon. Библиотека AltBeacon от Radius Networks предоставляет классы для создания android как излучателя маяка и рецептора. Вот фрагмент кода, который будет работать для android как iBeacon:

 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.");
            }
        });

Надеюсь, что это будет полезно для пользователя, ищущего android, как iBeacon. JJ

Ответ 3

Чистый Android SDK. Ноль стороннего кода - хорошо для Open Source Due Diligence

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 Minor Mayor в эти места в полезной нагрузке, но оставьте первые два байта как есть.