2012-04-09 8 views
28

Szukam sposobu na utworzenie tagu NFC, który udostępnia dane Wi-Fi w mojej sieci, bez konieczności posiadania przez gości specjalnych aplikacji NFC na telefonie (poza tym, co nadchodzi z telefonem). Przeglądam aplikacje i usługi takie jak NFC Tag Writer, WifiTap, NFC Task Launcher i NFCLabels.com, ale wydaje mi się, że muszę mieć aplikacje na komórce gościa, aby móc z niego korzystać , ale nie mogę go przetestować, ponieważ mam dostępny tylko jeden telefon z obsługą NFC. (Tak, wiem, wykręcając sobie głowę za nic, ale do cholery, dziwne zachowanie nie jest niczym nowym ...)Udostępnianie danych uwierzytelniających Wi-Fi przy użyciu tagu NFC bez specjalnych aplikacji

Moja najbliższa wskazówką jest to, że WifiTap stwierdza:

Aplikacja przetwarza URI w formacie z wifi: // [ssid sieci]/[wep | wpa | open]/[klucz sieciowy]

Jeśli to jest rzeczywiście uniwersalne, oznaczałoby to, że mogłem zrobić to, co chcę, ale mam nie znaleziono żadnego potwierdzenia na ten temat. Jak więc mógłbym zrobić to, co chcę, i czy jestem na dobrej drodze z kluczem z WifiTap?

Odpowiedz

11

Istnieje oficjalny standard dla tego rodzaju sytuacji: NFC Forum Connection Handover Technical Specification. Jednak nie jest to obecnie obsługiwane przez Androida. Nie sądzę, że istnieje obecnie sposób na transfer danych uwierzytelniających Wi-Fi za pomocą NFC bez pomocy dedykowanej aplikacji.

Jednym ze sposobów będzie o to, aby stworzyć (lub znaleźć) aplikacji w Sklepie Google Play, który ma następujące właściwości: filtr

  1. intencyjny ACTION_NDEF_DISCOVERED i jak URI URL aplikacji w Sklep Play.
  2. Intent filtr ACTION_NDEF_DISCOVERED i jak rodzaj jakiegoś własnego typu (np typ MIME)

Następnie można tworzyć tagi z komunikatem NDEF zawierającego następujące rekordy NDEF:

  1. rekord SmartPoster z luzem Przechowywać URI, a niektóre tekst opisowy (np nazwa aplikacji)
  2. Record zastrzeżonych typu zawierający poświadczenia WiFi
  3. Android Application Record dla aplikacji

Trzeci rekord zapewni, że właściwa aplikacja będzie zawsze uruchomiona lub użytkownik urządzenia zostanie przekierowany do Sklepu Play, aby go zainstalować. Działa to jednak tylko na ICS, ale pierwsza płyta (w połączeniu z filtrem pierwszego zamiaru) służy temu samemu celowi na Gingerbread.

+0

Czy specyfikacja przekazywania połączenia nie jest przeznaczona dla krótkoterminowych połączeń peer-to-peer? Rozumiem, że jego celem jest ułatwienie transmisji dłuższych wiadomości, niż jest to praktyczne w porównaniu z samą NFC, a nie służyć jako ogólny protokół konfiguracji sieci. Spodziewam się, że Android to zaimplementuje - i tak właśnie jest - zobacz http://androidxref.com/4.1.1/xref/packages/apps/Nfc/src/com/android/nfc/handover/HandoverManager.java . –

+0

@ IanNi-Lewis Specyfikacja nie jest bardzo jasna w tej kwestii, powiedziałbym. Zobacz na przykład wprowadzenie w sekcji 2.1: nie wspomina się o czasie trwania uzyskanego połączenia. Jednak szczególnie myślałem o przypadku "przejęcia statycznego" (sekcja 2.3), w którym selektor przełączania nie jest urządzeniem forum NFC, a zamiast niego służy do ustanowienia połączenia (nie-NFC). W kodzie, do którego się odnosisz, jest to aktualnie realizowane tylko dla połączeń Bluetooth Audio w funkcji 'parse()'. –

+1

Jaki jest stan dzisiaj? Dziękuję – igr

0

URI formularza WIFI: T: WPA; S: SSID; P: PASSPHRASE ;; ustawi Wi-Fi, jeśli zostanie zakodowany do kodu QR i zeskanowany; ale po zakodowaniu do tagu NFC nie jest rozpoznawany jako URI. Sugeruje to mi, że API NFC ma niedobór Androida.

+4

O ile wiem, program obsługi tego łańcucha (czy to nawet URI?) Jest w skanerze kodów kreskowych ZXing, a nie w systemie operacyjnym Android. Jeśli tak jest, wydaje się nierozsądne oczekiwanie, że niezwiązane z nim komponenty Androida będą w stanie sobie z tym poradzić. –

2

Stworzyłem app, który faktycznie zapisuje sieci do tagowania w znormalizowany sposób - problem polega na tym, że Android obecnie nie rozpoznaje rekordów przekazywania i automagicznie je dodaje. A może to w porządku - w końcu dodanie sieci wymaga czegoś więcej niż tylko dodania sieci; możesz na przykład zweryfikować kompozytora zawartości znacznika i tak dalej.

Ponadto, jeśli chcesz napisać więcej niż jedną sieć do znacznika, może być po prostu za mało miejsca, aby zrobić to prawym (przy użyciu standardowych rekordów) sposobem.

1

Mogę mieć nieprawidłowy koniec kija, ale z narzędziami aplikacji nfc pobranymi z Play Store możesz napisać sieć Wi-Fi na tagu, który po zeskanowaniu z defult Androidem 5.0.2. Na nexusie 7 2013 otwiera się okno z pytaniem o potwierdzenie z połączenia WiFi, chociaż zawsze się to nie udawało o

+3

Tak, to stare pytanie z '12. W Lollipop mogę długo naciskać zaszyfrowaną sieć w ustawieniach WIFI i wybrać "write to NFC tag". Podczas skanowania tagu połączenie z siecią działa na moim Nexusie 4 i 5 za pomocą Lollipopa. – Alex

18

Jak napisał Alex w komentarzu, możesz teraz (od Lollipopa) napisać znacznik zawierający dane uwierzytelniające Wi-Fi bezpośrednio z ustawienia Wi-Fi Androida: długie stuknięcie w sieć → Zapis do tagu NFC.

Wygląda na to, że jest to tag sformatowany w NDEF z typem MIME application/vnd.wfa.wsc i tokenem "WPS NFC".

Odpowiedni kod źródłowy można znaleźć w platform/packages/apps/Settings/src/com/android/settings/wifi/WriteWifiConfigToNfcDialog.java.

+0

Jeśli próbujesz długo naciskać sieć, aby pisać do tagu NFC, pamiętaj, aby włączyć NFC. –

Powiązane problemy