Pisanie tagów NFC za pomocą Nexus S

Mam Gingerbread 2.3.4 powered Nexus S i ostatnio dostałem kilka zapisywalnych NFC tagów. Do tej pory mogę je odczytać jako puste znaczniki, ale nie mogłem znaleźć sposobu, aby zapisać do nich dane.
Wszystkie moje badania doprowadziły mnie do tego artykułu: pisanie tagów z Nexus S od stycznia (przed wydaniem 2.3.4).

Jak pisać tagi NFC wewnątrz aplikacji, używając Nexus S? Jakieś wskazówki?

Author: Octavian Damiean, 2011-06-08

9 answers

Znalazłem tekst API Android NFC i przewodnik deweloperów trochę trudne do naśladowania, więc trochę przykładowego kodu może pomóc tutaj. Jest to właściwie port kodu MIDP, którego używałem w urządzeniach Nokia 6212, więc prawdopodobnie jeszcze nie rozgryzłem wszystkiego o Android NFC API poprawnie, ale przynajmniej to działało dla mnie.

Najpierw tworzymy rekord 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;
}

Następnie zapisujemy rekord jako wiadomość 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();
}

Aby napisać do tagu, potrzebny jest oczywiście obiekt Tag, który możesz uzyskać od intencji.

 16
Author: Pasi Välkkynen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-13 13:53:06

Może jestem trochę spóźniony, ale napisałem bibliotekę do tworzenia, czytania i pisania rekordów NDEF, które mogą okazać się przydatne.

Jak zapewne się nauczyłeś, natywne klasy Ndefmessage i ndefrecord na Androida są tylko opakowaniami bajtowymi i chociaż standard NDEF jest dość dobrze określony w standardach forum NFC, obecnie nie ma odpowiedniego wsparcia na wysokim poziomie W Androidzie.

Projekt obejmuje również operacje odczytu, zapisu i wiązki szablonów :-)

 2
Author: ThomasRS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-26 23:32:37

Ten artykuł z Android Dev Guide może Ci pomóc: pisanie do tagu NFC?

 1
Author: inazaruk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-08 18:59:38

Napisałem kilka używając darmowej aplikacji NFC Tagwriter

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

 1
Author: squigglesNbits,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-08 22:24:22

NXP, producent wielu chipów kompatybilnych z NFC, tworzy bezpłatną, ale zamkniętą aplikację źródłową do manipulowania znacznikami NFC. Napisałem z nim kilka tagów.

Zobacz: NXP NFC Tagwriter app

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

Jeśli chcesz napisać w tym celu kod, link inazaruka pomaga, lub możesz wypróbować książkę O ' Reilly "Programowanie Androida" online. Ma NFC sekcja:

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

To nie jest najlepsza książka -- uważam, że jest zbyt gęsta i niektóre części są źle napisane -- ale jego sekcja NFC i próbki kodu jest jedynym, który widziałem do tej pory, oprócz własnego Androida.

 1
Author: MakeSomething,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-09 15:40:42

Do zapisu danych NDEF można użyć Ndef.writeNdefMessage () API.

Jeśli chcesz pisać dane inne niż NDEF, możesz użyć niskopoziomowych API tranceive, takich jak NfcA.transceive (), NfcB.transceive (), czyli Izodep.transceive (). Musisz mieć zaawansowaną wiedzę na temat tagu, z którym się komunikujesz i jego poleceń / odpowiedzi. Nie polecam tego.

NDEF jest standardowym formatem danych i może być łatwo odczytany przez Androida i inne NFC perony.

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

 0
Author: Nick Pelly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-09 17:49:14

To może być pomocne:

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

Zrobiłem trochę pracy NFC podczas mojego stażu i napisał samouczek Jak pisać / czytać z tagu NFC.

 0
Author: Jesse Chen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-27 18:54:31

Ten link ma przykładowy kod do napisania tagu z wyjaśnieniem . http://www.jessechen.net/blog/how-to-nfc-on-the-android-platform/ sprawdź demo sticknote

 0
Author: neeraj t,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-15 05:46:06

NXP tagwriter to świetna aplikacja do pisania tagów.

Moja firma, która ma aplikację do kodowania i zarządzania tagami w chmurze, niedawno odbyła warsztaty w Seattle, spacerując programistom przez proces czytania i pisania tagów NFC w Androidzie.

Posty na blogu dla czytanie i pisanie NFC tags przechodzą przez kod i mają wspierające Klipy wideo z rzeczywistego warsztatu.

Mam nadzieję, że pomoże to niektórym programistom zacząć NFC!

 0
Author: Kelsey Whelan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-02 17:00:58