2012-04-09 22 views
28

Estoy buscando una forma de crear una etiqueta NFC que comparta las credenciales wifi de mi red sin que mis invitados tengan aplicaciones NFC especiales en sus teléfonos (aparte de las que vienen con el teléfono). He estado buscando aplicaciones y servicios como NFC Tag Writer, WifiTap, NFC Task Launcher y NFCLabels.com, pero me parece que debería tener también las aplicaciones en el móvil invitado para poder usarlo , pero no puedo probarlo, ya que solo tengo un teléfono habilitado para NFC disponible. (Sí, lo sé, torciendo los sesos para nada, pero diablos, comportamiento extraño es nada nuevo ...)Compartir las credenciales de Wifi a través de la etiqueta NFC sin aplicaciones especiales

Mi idea es que más cerca WifiTap establece que:

La aplicación procesa los URI en el formato de wifi: // [SSID de la red]/[wep | wpa | abierto]/[clave de red]

Si esto es realmente universal, esto significaría que yo podría hacer lo que lo que quiero, pero tengo no encontré ninguna confirmación sobre esto. Entonces, ¿cómo podría hacerse lo que quiero y estoy en el camino correcto con la pista de WifiTap?

Respuesta

11

Hay un estándar oficial para este tipo de situación: NFC Forum Connection Handover Technical Specification. Sin embargo, esto actualmente no es compatible con Android. No creo que haya ninguna forma de transferir las credenciales WiFi usando NFC sin la ayuda de una aplicación dedicada.

Una manera de ir sobre esto es crear (o encontrar) una aplicación en la tienda de Google Play que tiene las siguientes propiedades: filtro

  1. Intención para ACTION_NDEF_DISCOVERED y como URI de la URL de la aplicación en el Tienda de juegos.
  2. filtro de Intención para ACTION_NDEF_DISCOVERED y como tipo algún tipo de propiedad (por ejemplo, un tipo MIME)

continuación, puede crear etiquetas con un mensaje NDEF que contiene los siguientes registros NDEF:

  1. registro SmartPoster con Play tienda URI y un texto descriptivo (por ejemplo, nombre de la aplicación)
  2. de registros de tipo patentada que contiene las credenciales WiFi
  3. Android Application Record para la aplicación

El tercer registro se asegurará de que siempre se inicie la aplicación adecuada o que el usuario del dispositivo sea redirigido a Play Store para instalarlo. Sin embargo, esto solo funciona en ICS, pero el primer registro (combinado con el primer filtro de intención) cumple la misma función en Gingerbread.

+0

¿No es la especificación de transferencia de conexión destinada a conexiones peer-to-peer a corto plazo? Tengo entendido que su propósito es facilitar la transmisión de mensajes más largos que lo que es práctico sobre NFC solo, no para servir como un protocolo de configuración de red de propósito general. Esperaría que Android implementara esto, y de hecho lo hace - vea http://androidxref.com/4.1.1/xref/packages/apps/Nfc/src/com/android/nfc/handover/HandoverManager.java . –

+0

@ IanNi-Lewis La especificación no es muy clara en ese punto, diría yo. Ver, por ejemplo, la introducción en la sección 2.1: no menciona el tiempo que dura la conexión resultante. Sin embargo, estaba pensando específicamente en el caso "Handover estático" (sección 2.3), donde el Selector de traspaso no es un Dispositivo de foro NFC y, en su lugar, se usa una etiqueta para configurar una conexión (que no es NFC). En el código al que se refiere, esto se implementa actualmente solo para las conexiones de audio Bluetooth en la función 'parse()'. –

+1

¿Cuál es el estado hoy? Gracias – igr

0

URI de la forma WIFI: T: WPA; S: SSID; P: PASAPORTE ;; configurará WiFi si está codificado a un código QR y escaneado; pero cuando se codifica en una etiqueta NFC, no se reconoce como un URI. Esto me sugiere que la API de NFC es deficiente en Android.

+4

Por lo que puedo decir, el controlador para esa cadena (¿es incluso un URI?) Está en el Barcode Scanner de ZXing, no en el sistema operativo Android. Si ese es el caso, parece irrazonable esperar que los componentes Android no relacionados puedan manejarlo. –

2

He creado un app que en realidad escribe redes para etiquetar de forma estandarizada; el problema es que Android no reconoce actualmente los registros de traspaso y los agrega automágicamente. Y tal vez eso está bien, después de todo, hay más para agregar una red que simplemente agregar una red; por ejemplo, puede verificar el compositor de los contenidos de la etiqueta, etc.

Además, si desea escribir más de una red en una etiqueta, es probable que no haya suficiente espacio para hacerlo en la forma correcta (mediante registros estandarizados).

1

Puede que tenga el extremo equivocado pero con las herramientas de la aplicación nfc descargadas de Play Store puede escribir una red wifi en una etiqueta que cuando se escanea con defult android 5.0.2. En un nexus 7 2013 se abre un cuadro de mensaje que solicita la confirmación de la conexión wifi, aunque esto siempre ha fallado. O

+3

Sí, esta es una vieja pregunta del '12. En Lollipop puedo presionar una red encriptada en la configuración WIFI y seleccionar "escribir en la etiqueta NFC". Al escanear la etiqueta, la conexión a la red funciona para mi Nexus 4 y 5 con Lollipop. – Alex

18

Como escribió Alex en un comentario, ahora puede (desde Lollipop) escribir una etiqueta que contenga credenciales de Wi-Fi directamente desde la configuración de Wi-Fi de Android: toque prolongadamente una red → Escribir en la etiqueta NFC.

Parece una etiqueta con formato NDEF con el tipo MIME application/vnd.wfa.wsc y un token "WPS NFC".

El código fuente correspondiente se puede encontrar en platform/packages/apps/Settings/src/com/android/settings/wifi/WriteWifiConfigToNfcDialog.java.

+0

Si está intentando tocar durante mucho tiempo una red para escribir en la etiqueta NFC, recuerde encender NFC. –

Cuestiones relacionadas