Написание тегов NFC с использованием Nexus S - PullRequest
10 голосов
/ 08 июня 2011

У меня есть Gingerbread 2.3.4 с питанием Nexus S , и недавно я получил несколько доступных для записи тегов NFC . Пока что я могу читать их как пустые теги, но не могу найти способ записать в них данные.
Все мои исследования привели меня к этой статье: Написание тегов с Nexus S с января ( до выпуска 2.3.4 ).

Как вы пишете метки NFC внутри своего приложения, используя свой Nexus S? Есть указатели?

Ответы [ 9 ]

16 голосов
/ 13 июня 2011

Я нашел текст Android NFC API и руководство разработчика немного сложным для подражания, поэтому здесь может помочь небольшой пример кода.На самом деле это порт MIDP-кода, который я использовал в устройствах Nokia 6212, так что я, вероятно, еще не все правильно понял в API NFC Android, но по крайней мере это сработало для меня.

Сначаламы создаем запись NDEF:

private NdefRecord createRecord() throws UnsupportedEncodingException {
    String text       = "Hello, World!";
    String lang       = "en";
    byte[] textBytes  = text.getBytes();
    byte[] langBytes  = lang.getBytes("US-ASCII");
    int    langLength = langBytes.length;
    int    textLength = textBytes.length;
    byte[] payload    = new byte[1 + langLength + textLength];

    // set status byte (see NDEF spec for actual bits)
    payload[0] = (byte) langLength;

    // copy langbytes and textbytes into payload
    System.arraycopy(langBytes, 0, payload, 1,              langLength);
    System.arraycopy(textBytes, 0, payload, 1 + langLength, textLength);

    NdefRecord record = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, 
                                       NdefRecord.RTD_TEXT, 
                                       new byte[0], 
                                       payload);

    return record;
}

Затем мы записываем запись в виде сообщения NDEF:

private void write(Tag tag) throws IOException, FormatException {
    NdefRecord[] records = { createRecord() };
    NdefMessage  message = new NdefMessage(records);

    // Get an instance of Ndef for the tag.
    Ndef ndef = Ndef.get(tag);

    // Enable I/O
    ndef.connect();

    // Write the message
    ndef.writeNdefMessage(message);

    // Close the connection
    ndef.close();
}

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

2 голосов
/ 27 ноября 2012

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

Как вы, возможно, узнали, нативные классы Android NdefMessage и NdefRecord являются только обертками для байтовых массивов, и поэтому, хотя стандарт NDEF довольно хорошо определен в стандартах форума NFC, в настоящее время не существует надлежащей поддержки высокого уровня.в Android.

Проект также включает в себя операции чтения, записи и передачи шаблонов: -)

1 голос
/ 09 июня 2011

NXP, производитель многих NFC-совместимых чипов, делает бесплатное приложение с закрытым исходным кодом для манипулирования тегами NFC. Я написал немало тегов.

См. Приложение NXP NFC Tagwriter

https://market.android.com/details?id=com.nxp.nfc.tagwriter

Если вы хотите написать код для этого, вам поможет ссылка на inazaruk, или вы можете попробовать онлайн-книгу O'Reilly "Программирование Android". Он имеет раздел NFC:

http://programming -android.labs.oreilly.com / ch16.html # ch18_id316624

Это не самая лучшая книга - я нахожу ее слишком плотной, а некоторые ее части плохо написаны - но ее раздел NFC и примеры кода - единственная, которую я действительно видел на сегодняшний день, кроме собственной Android.

1 голос
/ 09 июня 2011

Я написал несколько с помощью бесплатного приложения NFC Tagwriter

https://market.android.com/details?id=com.nxp.nfc.tagwriter

1 голос
/ 08 июня 2011

Эта статья из Android Dev Guide может помочь вам: Запись в тег NFC ?

0 голосов
/ 02 августа 2012

Tagwriter от NXP - отличное приложение для написания тегов.

Моя компания, у которой есть приложение для кодирования и управления тегами в облаке, недавно провела семинар для разработчиков в Сиэтле, посвященный процессу чтения и записи тегов NFC в Android.

Сообщения в блоге для чтения и записи Теги NFC пролистывают код и содержат вспомогательные видеоклипы с самого семинара.

Надеюсь, это поможет некоторым разработчикам начать работу с NFC!

0 голосов
/ 15 октября 2011

Эта ссылка содержит пример кода для записи тега с объяснением.http://www.jessechen.net/blog/how-to-nfc-on-the-android-platform/ проверка демоверсии стикера

0 голосов
/ 27 сентября 2011

Это может быть полезно:

http://www.jessechen.net/blog/how-to-nfc-on-the-android-platform/

Во время стажировки я работал над NFC и написал учебник о том, как писать / читать по тегу NFC.

0 голосов
/ 09 июня 2011

Для записи данных NDEF вы можете использовать API-интерфейс Ndef.writeNdefMessage ().

Если вы хотите записывать данные не-NDEF, вы можете использовать низкоуровневые API-интерфейсы передачи, такие как NfcA.transceive (), NfcB.transceive () или IsoDep.transceive ().Вам необходимо иметь расширенные знания о теге, с которым вы общаетесь, и его командах / ответах.Я не рекомендую это.

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

http://developer.android.com/reference/android/nfc/tech/Ndef.html#writeNdefMessage(android.nfc.NdefMessage)

...