es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo escribir en una tarjeta Mifare Ultralight en Android Studio (Java)

He estado tratando de crear una app que escriba datos en una tarjeta NFC Mifare Ultralight, pero no puedo encontrar ninguna documentación que me pueda ayudar. Los documentos oficiales son muy vagos. Solo quiero escribir dos páginas de datos cuando presiono un botón, pero no tengo idea de cómo hacer que el teléfono detecte la tarjeta y escriba.
Tengo algo de experiencia en Java, pero acabo de empezar a usar Android Studio.
¡Gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Escribir datos en tarjetas NFC Mifare Ultralight se puede lograr utilizando la API NFC de Android. Aquí están los pasos que puedes seguir para escribir datos en la tarjeta cuando se presiona un botón:

    1. Verifica si el dispositivo admite NFC agregando la siguiente línea en el archivo AndroidManifest.xml de la aplicación:
      <uses-feature android:name="android.hardware.nfc" android:required="true"></uses-feature>
      
    2. Dentro de tu actividad o fragmento, crea una instancia de NfcAdapter:
      NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
      
    3. Sobrescribe el método onNewIntent para manejar la intención NFC:
      @Override
      protected void onNewIntent(Intent intent) {
         super.onNewIntent(intent);
         if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
             // escribir datos en la tarjeta aquí
         }
      }
      
    4. Dentro del método onCreate, habilita el despacho de primer plano NFC:
      IntentFilter techFilter = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
      String[][] techList = new String[][] { new String[] { MifareUltralight.class.getName() } };
      PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
             new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
      nfcAdapter.enableForegroundDispatch(this, pendingIntent, new IntentFilter[]{techFilter}, techList);
      
    5. Cuando se presione el botón, codifica los datos y escríbelos en la tarjeta:
      Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
      MifareUltralight mifare = MifareUltralight.get(tag);
      mifare.connect();
      // escribir en la página 4 y 5 (especifica los datos que deseas escribir)
      mifare.writePages(4, new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 });
      mifare.writePages(5, new byte[] { 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10 });
      mifare.close();
      

    Nota: Asegúrate de manejar las intenciones NFC apropiadamente y desconéctate de la tarjeta cuando hayas terminado. Además, este ejemplo asume que escribir en las páginas 4 y 5 está permitido en tu tarjeta Mifare Ultralight. Consulta la documentación oficial para la tarjeta específica que estás utilizando.

Comments are closed.