Отправить URL-адрес между двумя устройствами NFC

У меня есть приложение для Android с веб-просмотром.
Когда веб-просмотр получает URL с определенным текстом, например. билет, то я хотел бы отправить URL-адрес на другое устройство NFC через NFC.
Мне удалось отправить URL-адрес тегу NFC типа 4, но я не могу узнать, как отправить его на другое устройство NFC. устройства, чтобы он запускал браузер с URL-адресом.
Я просто использовал следующее для создания NDEF

NdefRecord uriRecord = NdefRecord.createUri(url);
NdefMessage message = new NdefMessage(new NdefRecord[] {
            uriRecord            
});

а затем используйте это, чтобы написать

ndef.writeNdefMessage(message);

Я пишу приложение в ICS (на galaxy nexus) и пытаюсь отправить на galaxy s2 с 2.3.6.

Любая помощь и указатель будут оценены.


person DaiLak    schedule 20.03.2012    source источник
comment
есть ли у галакси с2 чип NFC?   -  person Ethan Liou    schedule 20.03.2012
comment
да, я смог прочитать тег nfc на galaxy s2   -  person DaiLak    schedule 20.03.2012


Ответы (1)


При отправке сообщения NDEF на другой телефон вы не используете API чтения/записи тегов, например Ndef. Вместо этого ваше сообщение NDEF доставляется через одноранговую сеть NFC. Один из способов сделать это — использовать setNdefPushMessageCallback в ваших Activity onCreate():

    NfcAdapter nfc = NfcAdapter.getDefaultAdapter(this);
    nfc.setNdefPushMessageCallback(new NfcAdapter.CreateNdefMessageCallback()
    {
        /*
         * (non-Javadoc)
         * @see android.nfc.NfcAdapter.CreateNdefMessageCallback#createNdefMessage(android.nfc.NfcEvent)
         */
        @Override
        public NdefMessage createNdefMessage(NfcEvent event) 
        {
            NdefRecord uriRecord = NdefRecord.createUri(Uri.encode("http://www.google.com/"));
            return new NdefMessage(new NdefRecord[] { uriRecord });
        }

    }, this, this);  

Обратный вызов будет вызван, когда появится другое устройство NFC и будет установлено одноранговое соединение. Затем обратный вызов создает сообщение NDEF для отправки (в вашем случае: URL-адрес, отображаемый в веб-просмотре).

person NFC guy    schedule 20.03.2012
comment
Спасибо, это работает! Я обнаружил, что соединение между Galaxy Nexus 4.04 и Galaxy S2 2.36 нестабильно. Но в целом я смог передать URL. - person DaiLak; 22.03.2012
comment
Вы хотите немного поэкспериментировать с позиционированием устройств вертикально относительно друг друга, чтобы антенны NFC правильно выстроились. - person NFC guy; 22.03.2012
comment
но как отправить несколько сообщений без отключения? - person Pittfall; 24.04.2013
comment
Вы не можете :( К сожалению, это текущее ограничение Android API. - person NFC guy; 25.04.2013
comment
@Pittfall вы можете отправить только одно сообщение NdefMessage, но оно может содержать несколько записей NDEF. Может быть, это поможет... разработчик .android.com/reference/android/nfc/ - person leo9r; 21.09.2013