S, Galaxy S II, Xperia Acro, Lg LU6200, Acer Liquid express, Sony Nozomi, Nexus Prime, LG Gelato nfc, ...) • Les prochains blackberry • Iphone 5 ? • Nokia N9 sous meego • Nokia-6131 ( le premier téléphone nfc) , nokia C7 • Windows phone 7: peu probable pour le moment
S • Première API nfc avec Android 2.3 (API 9, Décembre 2010) Très limitée • API complète avec Android 2.3.3 (API 10, Février 2011) • Fournit des outils pour détecter les Tags, lire ou écrire le contenu de ces tags, et communiquer avec d'autres puces NFC
• Pour n'apparaître sur l'android market que pour les devices ayant une puce nfc: <uses-feature android:name="android.hardware.nfc" android:required="true" /> • Pour définir le niveau d'api nécessaire: <uses-sdk android:minSdkVersion="10"/>
pour le traitement des tags pi = PendingIntent.getActivity(this, 0, new Intent(this,getClass()).addFlags(Intent.FLAG_ACTI VITY_SINGLE_TOP) , 0); ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); try{ ndef.addDataType("text/plain"); }catch (MalformedMimeTypeException e) { Log.e("NfcForecast", e.getMessage()); } intentFiltersArray = new IntentFilter[] {ndef}; techList = new String[][]{new String[] {NfcA.class.getName() }};
classes must implement. NfcA Provides access to NFC-A (ISO 14443-3A) properties and I/O operations. NfcB Provides access to NFC-B (ISO 14443-3B) properties and I/O operations. NfcF Provides access to NFC-F (JIS 6319-4) properties and I/O operations. NfcV Provides access to NFC-V (ISO 15693) properties and I/O operations. IsoDep Provides access to ISO-DEP (ISO 14443-4) properties and I/O operations. Ndef Provides access to NDEF data and operations on NFC tags that have been formatted as NDEF. NdefFormatable Provides a format operations for tags that may be NDEF formattable. MifareClassic Provides access to MIFARE Classic properties and I/O operations, if this Android device supports MIFARE. MifareUltralight Provides access to MIFARE Ultralight properties and I/O operations, if this Android device supports MIFARE.
qui contiennent les données. public NdefMessage[] getNdefMessages(Intent intent){ NdefMessage[] messages=null; Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); if (rawMsgs != null) { messages = new NdefMessage[rawMsgs.length]; for (int i = 0; i < rawMsgs.length; i++) { messages[i] = (NdefMessage) rawMsgs[i]; } } else { // Type du tag inconnu byte[] empty = new byte[] {}; NdefRecord record = new NdefRecord(NdefRecord.TNF_UNKNOWN, empty, empty, empty); NdefMessage msg = new NdefMessage(new NdefRecord[] {record}); messages = new NdefMessage[] {msg}; } return messages; }
est composé de : _ un id : byte[] id = record.getId(); _ un TypeNameFormat : short tnf = record.getTnf(); _ un type: byte[] type = record.getType(); _ un payload = byte[] payload = record.getPayload(); Problème: Il faut "décoder" les informations.
des NdefMessage. public void onResume() { super.onResume(); if (mAdapter != null) mAdapter.enableForegroundNdefPush(this,myNdefMessage); } public void onPause() { super.onPause(); if (mAdapter != null) mAdapter.disableForegroundNdefPush(this); }
précis possible pour la récupération des tags : définir la technologie attendue ainsi que son contenu • Pour la lecture, faire attention au décodage • Pour l’écriture, bien construire son NdefRecord