Делаем NFC/Beam более автоматическими

Я добавляю возможности NFC/Beam в свое приложение и хочу, чтобы оно работало максимально автоматически. Я хотел бы избавиться от экрана «Touch To Beam» от отправителя и экрана «Отсканировано нового тега» от получателя. По сути, я хочу, чтобы это работало, как в рекламе Samsung!!! Я прочитал в stackoverflow, что, похоже, нет способа избавиться от экрана «Touch To Beam», однако я надеюсь, что у кого-то есть обновленная информация или кто-то знает, как удалить экран приемника. Спасибо!


person user306517    schedule 24.11.2012    source источник


Ответы (2)


Отправляющая сторона

При использовании одноранговой связи NFC (также известной как Android Beam) между двумя устройствами Android (4.0+) невозможно избежать пользовательского интерфейса Beam. Таким образом, передача данных без «Touch to Beam» невозможна.

До Android Beam (фактически Android 2.3.3-2.3.7) это было возможно с помощью переднего плана NDEF push (который теперь (a) устарел и (b) в Android 4.0+ реализован через Beam). В этом случае сообщения NDEF немедленно передаются без окна «Touch to Beam».

Начиная с Android 4.4, есть возможность обмениваться данными между двумя устройствами Android через NFC без пользовательского интерфейса Beam (фактически вообще без использования Android Beam и однорангового режима): если оба устройства 4.4+, одно устройство может использовать Android HCE для эмуляции бесконтактной смарт-карты, и одно устройство может использовать API режима чтения (это работает только с API режима чтения, представленным в версии 4.4, поэтому оба устройства должны быть версии 4.4+) для связи с эмулируемой смарт-картой.

Принимающая сторона

Если вы отправляете сообщение NDEF через Beam, вы можете, по крайней мере, заставить принимающую сторону делать то, что вы хотите. В этом случае вам необходимо зарегистрировать правильный фильтр намерений NDEF_DISCOVERED (который соответствует типу записи/типу данных первой записи NDEF отправленного сообщения NDEF) в файле AndroidManifest.xml вашего приложения.

person Michael Roland    schedule 16.04.2014
comment
Вы пробовали идею HCE/режима чтения? Этот вариант использования официально не задокументирован. - person Will White; 25.01.2017
comment
@WillWhite Да, я пробовал. Работает просто отлично и задокументировано Google с помощью два примера приложений на GitHub - person Michael Roland; 25.01.2017
comment
Извините, не знаю, о чем я думал. Спасибо за ссылку. - person Will White; 25.01.2017

Вы можете вручную управлять передачей через foregroundDispatch http://developer.android.com/guide/topics/connectivity/nfc/advanced-nfc.html Это позволит вашему приложению автоматически отправлять сообщения.

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

person MrChaz    schedule 24.11.2012
comment
Нет, foregrounddispatch применяется только к получению событий NFC, а не к Android Beam. - person NFC guy; 25.11.2012
comment
Парень с NFC — значит ли это, что нет возможности делать то, что я хочу? - person user306517; 25.11.2012
comment
Итак, вместо того, чтобы использовать хороший API-интерфейс луча, который оборачивает события nfc, вы делаете это вручную. - person MrChaz; 25.11.2012