Библиотека маяков — передатчик

Я создал приложение-передатчик с этой кодом ошибки 2 в маяке передатчик для библиотеки Android Beacon и может передавать как iBeacon.

Проблема 1: приложение больше не может передавать данные, если я убил приложение из недавних (Должен ли я вызывать это из службы переднего плана? Любой встроенный API из библиотеки altbeacons?)

Проблема 2: мне нужно отправить 10-символьную строку на сканер после установления соединения, но setDataFields() допускает только 6 цифр.


person Root    schedule 30.10.2017    source источник
comment
Какую модель устройства и версию операционной системы вы используете? Что касается проблемы 1, вы когда-либо видели, что передача прошла успешно, если вы пытаетесь выполнить передачу после перезагрузки перед тем, как закрыть приложение?   -  person davidgyoung    schedule 30.10.2017
comment
Moto G5 plus с Android N. После перезагрузки не запустился. Должен ли я создать подкласс класса приложения и хранить ссылки на классы маяков даже для передачи? Должен ли я изменить манифест, чтобы он запускался автоматически?   -  person Root    schedule 31.10.2017
comment
Пожалуйста, дайте подсказку для задачи 2, а также. Если я не могу идентифицировать конкретное устройство (маяк) с помощью уникального кода, я не могу получить аналитику о том, кто использует службу. Адрес Bluetooth меняется при каждом другом подключении, а это значит, что я не могу использовать его для уникальной идентификации маяка.   -  person Root    schedule 31.10.2017
comment
@davidgyoung, поможешь мне с этим?   -  person Root    schedule 01.11.2017


Ответы (1)


Немного сложно поддерживать работу приложения Android в фоновом режиме, что вам нужно сделать, чтобы передатчик работал.

Библиотека Android Beacon делает это автоматически для целей сканирования, поэтому вы можете использовать эталонное приложение библиотеки в качестве отправной точки и поместить начало передачи в метод onCreate класса Application.

Это позволит передатчику работать почти вечно на Android 5-7. В Android 8 вы можете работать в фоновом режиме примерно 5 минут из каждых 15, если только вы не создаете службу переднего плана.

ИЗМЕНИТЬ

Если вы хотите объявить несколько байтов данных, лучше всего закодировать их в 16-байтовом поле ID1 (ProximityUUID). Вы можете зарезервировать первые несколько байтов для определения, принадлежит ли маяк вам, а затем использовать последние 10 байт или около того для кодирования ваших данных. На стороне получателя вы можете использовать identifier.getBytes() для преобразования вашего первого идентификатора в массив байтов, чтобы вы могли получить доступ к элементам данных внутри него.

person davidgyoung    schedule 01.11.2017
comment
Спасибо, проблема 1 решена, как насчет отправки данных с передатчика на сканер или наоборот (проблема 2)? - person Root; 02.11.2017