Маяки Eddystone не работают при использовании библиотеки Beacons- Android - PullRequest
0 голосов
/ 09 апреля 2020

Я пытался реализовать маяк Eddystone на устройстве android, используя маяк- android library https://github.com/adriancretu/beacons-android#features следующим образом.

public class MainActivity extends AppCompatActivity {

    EddystoneURL beacon = new EddystoneURL("www.github.com");

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Beacons.initialize(this);

        beacon.init(5, AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY,AdvertiseSettings.ADVERTISE_TX_POWER_HIGH,0,"Eddie");
        beacon.start();

        UUID uuid = beacon.getUUID();
        String name = beacon.getName();
        Log.i("Log","name is "+name);
        Log.i("Log",uuid.toString());
        String url = beacon.getURL();
        Log.i("Log",url);
        Log.i("Log","App started");
        int k = beacon.getActiveState();
        Log.i("Log","active state : "+k);
        int powerlvl = beacon.getTxPowerLevel();
        Log.i("Log","Power Lvl : "+ powerlvl);
    }


}

, и я получаю журналы следующим образом

2020-04-09 20:27:42.771 14922-14922/? I/Log: name is Eddie
2020-04-09 20:27:42.772 14922-14922/? I/Log: 21ac707d-2ef0-4578-aa52-f8b8020d97c3
2020-04-09 20:27:42.772 14922-14922/? I/Log: www.github.com
2020-04-09 20:27:42.772 14922-14922/? I/Log: App started
2020-04-09 20:27:42.772 14922-14922/? I/Log: active state : 0
2020-04-09 20:27:42.772 14922-14922/? I/Log: Power Lvl : 3

проблема в том, что эмулируемый маяк не был идентифицирован сканерами маяка. Я очень ценю вашу помощь. Спасибо.

1 Ответ

0 голосов
/ 09 апреля 2020

Я понимаю, что этот вопрос касается создания передатчика с библиотекой beacons- android, поэтому лучшим ответом будет показать, как правильно настроить эту библиотеку.

Однако, если нет решения найден, и OP открыт для использования Android Beacon Library (с аналогичным именем, но совершенно другим) для выполнения sh этого, код ниже сделает это:

try {
    byte[] urlBytes = UrlBeaconUrlCompressor.compress("https://www.github.com"");
    Identifier encodedUrlIdentifier = Identifier.fromBytes(urlBytes, 0, urlBytes.length, false);
    ArrayList<Identifier> identifiers = new ArrayList<Identifier>();
    identifiers.add(encodedUrlIdentifier);
    beacon = new Beacon.Builder()
            .setIdentifiers(identifiers)
            .setTxPower(-59)
            .build();
    BeaconParser beaconParser = new BeaconParser()
            .setBeaconLayout(BeaconParser.EDDYSTONE_URL_LAYOUT);
    BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), 
              beaconParser);
    beaconTransmitter.startAdvertising(beacon);
} catch (MalformedURLException e) {
    Log.d(TAG, "That URL cannot be parsed");
}

Полное раскрытие информации: я являюсь ведущим разработчиком проекта Android Beacon Library с открытым исходным кодом.

...