Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo desarrollar los tipos de tecnología de etiquetas compatibles con Android NFC

Cómo desarrollar los tipos de tecnología de etiquetas compatibles con Android NFC

1. Conocimientos básicos de NFC

1.

NFC, o Near Field Communication, es una tecnología de comunicación inalámbrica de alta frecuencia (13,56 M Hz) de corta distancia (normalmente <=4 cm o menos) que proporciona una solución táctil sencilla que permite a los consumidores para intercambiar información y acceder a contenidos y servicios de forma sencilla e intuitiva.

2. ¿Cuáles son las ventajas técnicas del NFC?

En comparación con Bluetooth: NFC es fácil de operar y se empareja rápidamente

En comparación con RFID: NFC tiene una amplia gama de aplicaciones, se puede leer y escribir y se puede integrar directamente en el teléfono móvil. teléfonos

En comparación con los infrarrojos: transmisión de datos más rápida, alta seguridad, bajo consumo de energía

En comparación con el código QR: reconocimiento rápido, diversos tipos de información

Futuro y móvil La combinación de pagos simplificará inevitablemente el proceso de compra mediante pagos y remodelará los patrones de compra de los consumidores.

2. Proceso de prueba específico:

1. Primero, declare la siguiente información de configuración en AndroidManifest.xml:

Utilice el elemento uses-permissiongt; Acceso al dispositivo NFC hardware:

[html] ver Plaincopyprint?

lt usa-permission android: name="android.permission.NFC"

Utilice el elemento

[html] ver Plaincopyprint?

lt;uses-sdk android : minSdkVersion="14" android: targetSdkVersion="14" /gt;

No es necesario lo siguiente si desea que su software muestre el hardware NFC en el archivo. Android Market, puedes usar lt; uses-featuregt; declaración de elemento:

[html] ver Plaincopyprint?

lt; " android: require="true" /gt;

La declaración básica se completó anteriormente y el sistema de liberación de NFC TAG se explicará a continuación.

2. El sistema de liberación de TAG NFC:

Cuando el dispositivo Android escanea Cuando se alcanza una etiqueta NFC, automáticamente encontrará la Actividad más adecuada para procesar la TAG. Si hay varias actividades que cumplen con las condiciones, el usuario será. Se le pide que elija qué actividad utilizar para el procesamiento. Puede entenderse como una simple respuesta a un evento y un tratamiento de evento.

Entonces, ¿cómo hacer que una Actividad escuche el evento "cuando se escanea una etiqueta NFC"? Utilice el filtro de intención.

Se puede entender que cuando se detecta una etiqueta NFC, el sistema crea automáticamente un objeto de intención relacionado y la actividad que contiene el filtro de intención de respuesta manejará la intención.

Entre ellos, el filtro de intención se declara de la siguiente manera: (Declarado en AndroidManifest.xml en la Actividad donde necesita capturar este Intent) (La siguiente es la etiqueta para identificar el formato NDEF):

[html] ver Plaincopyprint?

lt;intent-filtergt;

lt;action android: name="android.nfc.action.NDEF_DISCOVERED" gt;lt ;/actiongt;

lt;categoría android:name="android.intent.category.DEFAULT" gt;lt;/categorygt

lt;data android:mimeType="texto /plain" gt;lt; /datagt;

lt; /intent-filtergt;

Por supuesto, también puede identificar otros formatos. Para obtener más información, puede consultar NFC de Google. Documentos de especificación Aquí simplemente realiza las dos funciones de leer información de texto en formato NDEF en etiquetas NFC y escribir información de texto en etiquetas NFC en formato NDEF.

Después de completar los dos pasos anteriores, cuando el teléfono toque la etiqueta NFC, saltará automáticamente a la Actividad correspondiente. Simplemente implemente las funciones de lectura y escritura correspondientes a continuación.

3. Lea la información de texto en formato NDEF en la etiqueta NFC:

Primero determine si el teléfono móvil admite la función NFC. Si es así, si se ha configurado para la función NFC. sobre el estado.

[java] ver Plaincopyprint?

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_write);

nfcTView=(TextView)findViewById(R.id.info_tv);

nfcAdapter = NfcAdapter.getDefaultAdapter); (this);

if (nfcAdapter == null) {

nfcTView.setText("¡El dispositivo no es compatible con NFC!"); );

return;

}

if (nfcAdapter!=nullamp; !nfcAdapter.isEnabled()) {

nfcTView. setText("¡Primero habilite la función NFC en la configuración del sistema!"); p >}

[java] ver Plaincopyprint?

@Override

protected void onResume() {

super.onResume()

if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {

readFromTag(getIntent());

}

}

Leer contenido:

[java] ¿ver Plaincopyprint?

readFromTag booleano privado (intención de intención){

Parcelable[] rawArray = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);

NdefMessage mNdefMsg = (NdefMessage)rawArray[0]

NdefRecord mNdefRecord = mNdefMsg.getRecords()[0] ];

intente {

if(mNdefRecord != null){

readResult = new String(mNdefRecord.getPayload(), "UTF

-8");

devuelve verdadero;

}

}

catch (UnsupportedEncodingException e) {

e.printStackTrace();

};

return false

}

Hablemos brevemente del formato NDEF: Formato NDEF La etiqueta está empaquetada con un NdefMessage. Un NdefMessage consta de 0 o más NdefRecords. Hay varios NdefRecords, como los de URL, los de información de texto, etc. Aquí presentamos el formato NdefRecord:

Un NdefRecord consta de cuatro campos:

TNF de 3 bits: formato de nombre de tipo, tipo de longitud variable RTD: definición de tipo de registro, longitud variable ID: identificador único Este registro, carga útil de longitud variable: es información de texto

Esto es útil para leer información de etiquetas en formato NDEF. También se usa al escribir información y al construir NdefMessage usted mismo.

4. Escribe información de texto en formato NDEF en la etiqueta NFC:

Con la base anterior, escribir es muy fácil. No es más que construir la información en el formato correspondiente. y luego escríbalo, como se muestra a continuación:

[java] view Plaincopyprint?

@Override

protected void onResume() {

super.onResume();

if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {

Etiqueta tag=getIntent().getParcelableExtra( NfcAdapter.EXTRA_TAG);

Ndef ndef=Ndef.get(etiqueta);

prueba {

ndef.connect(); > NdefRecord ndefRecord=createTextRecord(data,Locale.US,true);

NdefRecord[] registros={ndefRecord}

NdefMessage ndefMessage=new NdefMessage(registros

ndef.writeNdefMessage(ndefMessage);

} catch (IOException e1) {

// TODO Bloque catch generado automáticamente

e1.printStackTrace ()

} catch (FormatException e) {

lt; span style="white-space:pre"gt;/spangt; bloquear

lt; span style="espacio en blanco: pre"gt; /p >