log - tag android studio
¿Cuál es la diferencia entre enableReaderMode y enableForegroundDispatch? (2)
enableReaderMode
: enableReaderMode
el controlador NFC al modo lector mientras esta actividad está en primer plano.
enableForegroundDispatch
: esto le dará prioridad a la actividad de primer plano al enviar una etiqueta descubierta a una aplicación.
Así que, básicamente, puede usar ambos con el mismo propósito, que es leer / escribir una etiqueta. enableReaderMode
es utilizado por los teléfonos Android en combinación con un controlador Broadcom NFC, porque hay un error en la comprobación de incidentes. Por lo que sé, solo enableReaderMode
puede esquivar esto al aumentar EXTRA_READER_PRESENCE_CHECK_DELAY
.
Encontré dos enfoques para permitir que una aplicación de Android detecte y procese etiquetas NFC:
NfcAdapter.enableReaderMode(activity, callback, flags, extras)
y luego recibir la información de la etiqueta en la devolución de llamada.NfcAdapter.enableForegroundDispatch(activity, intent, filters, techLists)
y luego recibir la información de la etiqueta en el método de actividadonNewIntent(intent)
.
Actualmente uso el segundo enfoque, sin embargo, recientemente descubrí el método enableReaderMode
y me pregunto si es mejor usarlo para procesar etiquetas NFC.
Entonces, ¿cuál es la diferencia entre enableReaderMode
y enableForegroundDispatch
?
Sistema de envío de primer plano
El sistema de envío forground ( NfcAdapter.enableForegroundDispatch()
) existe desde Android 2.3.3 (que es básicamente el comienzo de Android NFC). Por lo tanto, este método es compatible con todos los dispositivos Android con capacidades NFC.
El sistema de despacho en primer plano se utiliza para dar una actividad que actualmente está en la prioridad de primer plano en el manejo de eventos de descubrimiento NFC (es decir, etiquetas NFC descubiertas y mensajes NDEF recibidos de dispositivos punto a punto). Esto significa que incluso si se registra otra aplicación (por medio de un filtro de intención en AndroidManifest.xml) para un tipo de etiqueta específico o datos NDEF, el evento NFC se pasará a la actividad de primer plano en lugar de esa otra actividad. En consecuencia, el método no cambia la forma en que Android escucha los dispositivos NFC (etiquetas NFC, dispositivos P2P), solo cambia la prioridad para el manejo de dispositivos descubiertos.
API en modo lector
La API de modo lector ( NfcAdapter.enableReaderMode()
) se introdujo en Android 4.4. En consecuencia, no todos los dispositivos Android con capacidades NFC admiten este método.
A diferencia del sistema de despacho en primer plano, la API en modo lector cambia la forma en que Android escucha los dispositivos NFC. La API en modo lector deshabilita el modo de igual a igual. Esto, por ejemplo, le permite descubrir el modo de emulación de tarjeta de otros dispositivos que tienen el modo de igual a igual y el modo de emulación de tarjeta habilitado de forma simultánea (como es el caso con Android HCE). (Normalmente, dicho dispositivo se descubriría como dispositivo punto a punto y una aplicación de Android no podría acceder a la funcionalidad de emulación de la tarjeta).
Además, puede cambiar los parámetros específicos del modo de lector NFC, por ejemplo, puede
- definir las tecnologías de etiquetas para las que el lector de NFC sondea,
- defina el intervalo en el que Android prueba si todavía hay una etiqueta presente enviando una determinada secuencia de comandos a la etiqueta y comprobando si aún se recibe una respuesta,
- evitar que Android envíe automáticamente comandos a la etiqueta para probar si la etiqueta contiene un mensaje NDEF,
- evitar que Android reproduzca un sonido al descubrir una etiqueta.