2012-04-09 7 views
28

Sto cercando un modo per creare un tag NFC che condivida le credenziali wifi della mia rete senza che i miei ospiti debbano avere app NFC speciali sul proprio telefono (diverse da quelle che stanno arrivando con il telefono). Ho visto applicazioni e servizi come NFC Tag Writer, WifiTap, NFC Task Launcher e NFCLabels.com, ma mi sembra che avrei bisogno di avere le app anche sul cellulare guest per poterlo usare , ma non sono in grado di testarlo in quanto ho a disposizione solo un telefono abilitato NFC. (Sì, lo so, torcendo il mio cervello per niente, ma diamine, strano comportamento non è una novità ...)Condivisione di credenziali WiFi tramite tag NFC senza app speciali

mio indizio prossima risulta essere quella WifiTap afferma che:

L'applicazione elabora URI nel formato di wifi: // [SSID della rete]/[wep | wpa | aperto]/[chiave di rete]

Se questo è in realtà universale, questo vorrebbe dire che avrei potuto fare quello che quello che voglio, ma ho non trovato alcuna conferma su questo. Quindi, come potrebbe ciò che voglio essere fatto e sono sulla buona strada con l'indizio di WifiTap?

risposta

11

Esiste uno standard ufficiale per questo tipo di situazione: NFC Forum Connection Handover Technical Specification. Tuttavia, questo non è attualmente supportato da Android. Non credo ci sia attualmente alcun modo per trasferire le credenziali WiFi usando NFC senza l'aiuto di un'app dedicata.

Un modo per andare su questo è quello di creare (o trovare) un app nel Play Store di Google, che ha le seguenti proprietà: filtro

  1. intenti per ACTION_NDEF_DISCOVERED e come URI l'URL dell'app nella Play Store.
  2. filtro intenti per ACTION_NDEF_DISCOVERED e come tipo un certo tipo di proprietà (ad esempio, un tipo MIME)

Quindi è possibile creare tag con un messaggio NDEF contenente i seguenti record NDEF:

  1. record di SmartPoster con PLAY Conservare URI e un testo descrittivo (ad esempio nome dell'app)
  2. Record di tipo proprietario che contiene le credenziali WiFi
  3. Android Application Record per l'applicazione

Il terzo record farà in modo che l'app corretta verrà sempre avviata o l'utente del dispositivo verrà reindirizzato al Play Store per installarlo. Questo funziona solo su ICS, tuttavia, ma il primo record (combinato con il primo filtro intent) ha lo stesso scopo su Gingerbread.

+0

Non è la specifica di passaggio delle connessioni per le connessioni peer-to-peer a breve termine? La mia comprensione è che il suo scopo è quello di facilitare la trasmissione di messaggi più lunghi di quanto sia pratico su NFC da solo, non di fungere da protocollo di configurazione di rete per uso generale. Mi aspetterei che Android implementasse questo, e in effetti lo fa - vedi http://androidxref.com/4.1.1/xref/packages/apps/Nfc/src/com/android/nfc/handover/HandoverManager.java . –

+0

@ IanNi-Lewis Le specifiche non sono molto chiare su questo punto, direi. Vedi, per esempio, l'introduzione nella sezione 2.1: non menziona il tempo che dura la connessione risultante. Tuttavia, stavo pensando specificamente al caso "Static Handover" (sezione 2.3), dove il Handover Selector non è un dispositivo Forum NFC e invece viene usato un tag per impostare una connessione (non NFC). Nel codice a cui si fa riferimento, questo è attualmente implementato solo per le connessioni Audio Bluetooth nella funzione 'parse()'. –

+1

Qual è lo stato oggi? Grazie – igr

0

Un URI del modulo WIFI: T: WPA; S: SSID; P: PASSPHRASE ;; imposta WiFi se codificato su un codice QR e scansionato; ma quando codificato su un tag NFC non viene riconosciuto come URI. Questo mi suggerisce che l'API NFC è carente in Android.

+4

Per quanto ne so, il gestore di quella stringa (è anche un URI?) Si trova nello scanner di codici a barre di ZXing, non nel sistema operativo Android. In questo caso, sembra irragionevole aspettarsi che i componenti Android non collegati siano in grado di gestirli. –

2

Ho creato uno app che in realtà scrive reti per taggare in un modo standardizzato - il problema è che Android attualmente non riconosce i record di handover e li aggiunge automagicamente. E forse va bene - dopo tutto c'è dell'altro per aggiungere una rete piuttosto che aggiungere una rete; potresti ad esempio verificare il compositore del contenuto del tag e così via.

Inoltre, se si desidera scrivere più di una rete su un tag, potrebbe semplicemente non esserci spazio sufficiente per farlo nel modo corretto (utilizzando i record standardizzati).

1

Potrei avere la parte sbagliata del bastone ma con gli strumenti nfc dell'app scaricati dal Play Store è possibile scrivere una rete wifi su un tag che è stato scansionato con defult Android 5.0.2. In un nexus 7 2013 apre una finestra di messaggio che chiede conferma della connessione wifi, anche se questo ha sempre fallito bar o

+3

Sì, questa è una vecchia domanda da '12. In Lollipop posso premere a lungo una rete crittografata nelle impostazioni WIFI e selezionare "scrivi su tag NFC". Durante la scansione del tag, la connessione alla rete funziona per il mio Nexus 4 e 5 con Lollipop. – Alex

18

Come Alex ha scritto in un commento, ora puoi (dal Lollipop) scrivere un tag contenente le credenziali Wi-Fi direttamente da le impostazioni Wi-Fi Android: tocca a lungo una rete → Scrivi sul tag NFC.

Sembra un tag formattato NDEF con il tipo MIME application/vnd.wfa.wsc e un token "WPS NFC".

Il codice sorgente pertinente è disponibile in platform/packages/apps/Settings/src/com/android/settings/wifi/WriteWifiConfigToNfcDialog.java.

+0

Se si sta tentando di toccare a lungo una rete per scrivere sul tag NFC, ricordarsi di attivare NFC. –