2012-09-19 14 views
6

Czy można napisać aplikację na Androida za pomocą interfejsu API Wi-Fi, który będzie działał jak hotspot (dzięki czemu uzyska dostęp do sieci dla klientów Wi-Fi), jednocześnie pozwalając lokalnemu urządzeniu Wi-Fi łączyć się z inną siecią Wi-Fi?Multipleksowany hotspot w Androidzie

Ten, który testowałem, wyłącza lokalne połączenie Wi-Fi w celu utworzenia hotspotu.

Odpowiedz

9

Publikuję tutaj po kilku miesiącach, aby pomóc osobom, które chciałyby to zaimplementować na urządzeniu z Androidem.

Jest na to sposób, aby mieć jeden układ bezprzewodowy pracujący w trybie hybrydowym, ze zarówno w trybie stacji (STA) i trybie punktu dostępowego(AP) włączona.

W tym celu zastąpiłem bezprzewodowy sterownik mojego układu za pomocą bezprzewodowego sterownika multi-role. Na szczęście mój układ wspierał ten tryb, jednak nie jest tak w przypadku wszystkich bezprzewodowych układów. Mój układ to oparty na TI układ: (wl1271), obsługiwana była rola multi, chociaż nie była dostępna w poprzednim sterowniku.

Raz dostałem ten nowy sterownik, musiałem przekompilować go wraz z moim jądra w celu uzyskania .ko sterownika bezprzewodowej i pokrewnych mac80211 i cfg80211 modułów (świadczących API potrzebnych nowym kierowcą) wygenerowane. Ostatnim krokiem było uaktualnienie wpa_supplicant i hostapd z niestandardową poprawioną wersją dostarczoną przez TI.

Ponownie, dla osób zainteresowanych wl1271tylko Oto odpowiednie sterowniki/narzędzia użyłem i zgłaszane prace nad Androidem 4.0.4 ICS :

https://github.com/TI-OpenLink/hostap/tree/ol_R5.SP3.01

https://github.com/TI-OpenLink/iw/tree/ol_R5.SP3.01

https://github.com/TI-OpenLink/ti-utils/tree/ol_R5.SP3.01

https://github.com/TI-OpenLink/wl12xx_target_scripts/tree/ol_R5.SP3.01/sta

https://github.com/TI-OpenLink/compat/tree/ol_R5.SP3.01/

https://github.com/TI-OpenLink/compat-wireless/tree/ol_R5.SP3.01/

Jeśli istnieje wiele kierowca rolę bezprzewodowego chipie, to może być warto dowiedzieć się, co wersję lub płaty wpa_supplicant i hostapd powinien użyć, i skompiluj/wypróbuj je.

Po zakończeniu procesu miałem dostęp do dwóch interfejsów sieciowych (wlan0 i wlan1) i mogłem uruchomić wpa_supplicant na wlan0 i hostapd na wlan1.

1

To, co opisujesz, nazywa się WDS (Wireless Distribution System). Myślę, że ta funkcja nie jest zaimplementowana w interfejsie API Wi-Fi Androida. Jest używany w bezprzewodowych punktach dostępowych, aby umożliwić połączenie bezprzewodowe w górę.

+0

To naprawdę odnosi się do tego, co chciałem. Mimo to WDS wydaje się owijać wiele koncepcji i protokołów. Chciałem tylko kilka prostych rad, jak to zrobić bez posiadania całego systemu wymiany AP. Niektórzy radzą, jak to zrobić z Androidem API (nie jest to zaimplementowane) lub elektronicznie (może za pomocą drugiego urządzenia wifi) -> i jak to zrobić w Androidzie bez zmiany jądra :). –

+0

@HQarroum Moje zrozumienie (i nie jestem ekspertem w tej dziedzinie) jest to, że potrzebujesz co najmniej punktu dostępowego obsługującego WDS i kompatybilnej implementacji WDS w systemie Android. Wydaje mi się, że nie jest to obecnie implementowane w systemie Android, a więc wymagałoby trochę dość niskiego poziomu kodowania ... – jhonkola

+0

Wielkie dzięki! Zbadam to głębiej :) –