Использование Android Beacon Library для передачи в качестве iBeacon

Я пытаюсь передать iBeacon с помощью Android Beacon Library, но я не уверен, что мой код правильный. Я использую такое приложение, как nRF Master Control Panel, чтобы проверить, передает ли он как iBeacon, но, похоже, это не так.

Ниже мой код

Beacon beacon = new Beacon.Builder()
                        .setId1("6fb0e0e9-2ae6-49d3-bba3-3cb7698c77e2")
                        .setId2(Integer.toString(minor1))
                        .setId3(Integer.toString(minor2))
                        .setManufacturer(0x0000)
                        .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");
                BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser);
                beaconTransmitter.startAdvertising(beacon);
            }
        });

Спасибо!


person Helmi    schedule 08.08.2016    source источник
comment
измените .setManufacturer(0x0000) на .setManufacturer(0x4c00), где 0x4C00 — идентификатор компании Apple.   -  person Jaycee    schedule 05.05.2020


Ответы (1)


Код выглядит правильно. Несколько советов:

  1. Убедитесь, что Bluetooth включен.
  2. Убедитесь, что ваше устройство поддерживает передачу. Проверьте список здесь http://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html
  3. Сделайте этот вызов, чтобы проверить, поддерживается ли он:

    int result = BeaconTransmitter.checkTransmissionSupported(context);
    

Если устройство поддерживает передачу, метод возвращает BeaconTransmitter.SUPPORTED. Также может вернуться:

    NOT_SUPPORTED_MIN_SDK
    NOT_SUPPORTED_BLE
    NOT_SUPPORTED_MULTIPLE_ADVERTISEMENTS (deprecated)
    NOT_SUPPORTED_CANNOT_GET_ADVERTISER_MULTIPLE_ADVERTISEMENTS
    NOT_SUPPORTED_CANNOT_GET_ADVERTISER

Возврат NOT_SUPPORTED_CANNOT_GET_ADVERTISER_MULTIPLE_ADVERTISEMENTS, NOT_SUPPORTED_MULTIPLE_ADVERTISEMENTS и NOT_SUPPORTED_CANNOT_GET_ADVERTISER обычно указывает на то, что устройство либо не имеет совместимого набора микросхем, либо производитель не реализовал поддержку драйверов, требуемую Google для API-интерфейсов передачи BLE Android 5.x.

person davidgyoung    schedule 08.08.2016
comment
Привет @davidgyoung. Я следовал всем вашим советам, и это выглядит хорошо. Другие приложения на других телефонах, такие как nRF Master Control Panel или LightBlue, могут обнаруживать передачу маяка. Я предполагаю, что мое аппаратное устройство, которое должно обнаруживать маяк, не обнаруживает его. Я уточню это у своего инженера. Спасибо! - person Helmi; 10.08.2016
comment
@davidgyoung Мое устройство поддерживает передачу маяка, Bluetooth включен, и код такой же, но мой маяк обнаруживается в локации, но не в инструментах маяка или в соседнем (Google) приложении. - person Pratik Vyas; 19.07.2017