Realtek 8192cu 支持 Android Hotspot
Android 2.2 開(kāi)始增加了WiFi Hotspot,可將Android設(shè)備作為無(wú)線熱點(diǎn)、向其他WiFi設(shè)備共享網(wǎng)絡(luò)連接,參考 Sharing your mobile data connection
前面,我將 Realtek 8192cu 驅(qū)動(dòng)移植到 Android 2.2。Realtek 8192cu 驅(qū)動(dòng)包中也包含了一個(gè) hostapd 的實(shí)現(xiàn)以及Android SoftapController實(shí)現(xiàn),通過(guò)以下步驟,可以在Android上實(shí)現(xiàn)SoftAP
1、在init.rc中增加hostapd服務(wù)
service hostapd /system/bin/hostapd_wps /data/misc/wifi/hostapd.confgroup wifi inet
disabled
oneshot
2、移植Realtek的hostapd實(shí)現(xiàn)
將驅(qū)動(dòng)包中的external\hostapd-0.6.9_rtl 復(fù)制到Android 的external/ 目錄下。需要修改 external/hostapd-0.6.9_rtl/hostapd/Android.mk,在文件接近末尾處,增刪如下所示的幾行
OBJS_c = hostapd/hostapd_cli.c src/common/wpa_ctrl.c src/utils/os_$(CONFIG_OS).cinclude $(CLEAR_VARS)
LOCAL_MODULE := hostapd_cli
#LOCAL_MODULE_TAGS := optional
LOCAL_SHARED_LIBRARIES := libc libcutils
LOCAL_CFLAGS := $(L_CFLAGS)
LOCAL_SRC_FILES := $(addprefix hostapd$(HOSTAPD_VER)/,$(OBJS_c))
LOCAL_C_INCLUDES := $(INCLUDES)
include $(BUILD_EXECUTABLE)
OBJS_c = hostapd/hostapd_wps.c
include $(CLEAR_VARS)
LOCAL_MODULE := hostapd_wps
#LOCAL_MODULE_TAGS := optional
LOCAL_SHARED_LIBRARIES := libc libcutils
LOCAL_CFLAGS := $(L_CFLAGS)
LOCAL_SRC_FILES := $(addprefix hostapd$(HOSTAPD_VER)/,$(OBJS_c))
LOCAL_C_INCLUDES := $(INCLUDES)
include $(BUILD_EXECUTABLE)
include $(CLEAR_VARS)
LOCAL_MODULE := hostapd
#LOCAL_MODULE_TAGS := optional
LOCAL_SHARED_LIBRARIES := libc libcutils
LOCAL_SHARED_LIBRARIES += $(LIBS)
LOCAL_CFLAGS := $(L_CFLAGS)
LOCAL_SRC_FILES := $(addprefix hostapd$(HOSTAPD_VER)/,$(OBJS))
LOCAL_C_INCLUDES := $(INCLUDES)
include $(BUILD_EXECUTABLE)
local_target_dir := $(TARGET_OUT)/etc/wifi
include $(CLEAR_VARS)
LOCAL_MODULE := hostapd.conf
#LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(local_target_dir)
LOCAL_SRC_FILES := hostapd$(HOSTAPD_VER)/hostapd/hostapd.conf.android
include $(BUILD_PREBUILT)
OBJS_c = src/common/wpa_ctrl.c src/utils/os_$(CONFIG_OS).c
include $(CLEAR_VARS)
LOCAL_MODULE = libhostapd_client
LOCAL_PRELINK_MODULE := false
#LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS = $(L_CFLAGS)
LOCAL_SRC_FILES := $(addprefix hostapd$(HOSTAPD_VER)/,$(OBJS_c))
LOCAL_C_INCLUDES = $(INCLUDES)
LOCAL_SHARED_LIBRARIES := libc libcutils
LOCAL_COPY_HEADERS_TO := libhostapd_client
LOCAL_COPY_HEADERS := hostapd$(HOSTAPD_VER)/src/common/wpa_ctrl.h
include $(BUILD_SHARED_LIBRARY
3、移植Realtek的SoftapController實(shí)現(xiàn)
將Realtek驅(qū)動(dòng)包中system\netd\ 目錄下的Android.mk、SoftapController_realtek.cpp 2個(gè)文件復(fù)制/覆蓋到 Android 源碼 system/netd/ 目錄下
修改 Android 源碼 frameworks/base/core/res/res/values/config.xml 文件,找到下面2個(gè)字符串?dāng)?shù)組,分別增加如下幾個(gè)item:
<!-- List of regexpressions describing the interface (if any) that represent tetherableWifi interfaces. If the device doesn't want to support tethering over Wifi this
should be empty. An example would be "softap.*" -->
<string-array translatable="false" name="config_tether_wifi_regexs">
<item>"wlap0"</item>
</string-array>
<!-- Regex array of allowable upstream ifaces for tethering - for example if you want
tethering on a new interface called "foo2" add <item>"foo\\d"</item> to the array -->
<string-array translatable="false" name="config_tether_upstream_regexs">
<item>"ppp\\d"</item>
<item>"eth\\d"</item>
<item>"wlan\\d"</item>
</string-array>
Android運(yùn)行后,通過(guò)Settings->Wireless & Networks->Portable hotspot 啟用“Portable Wi-Fi hotspot”,并可通過(guò) Portable Wi-Fi hotspot settings->Configure Wi-Fi hotspot 設(shè)置SSID、安全性等。我這邊看到支持Open、WPA2 PSK 2種安全選項(xiàng)
Hotspot啟動(dòng)后,其它WiFi設(shè)備就可以連接上來(lái)
android.net.wifi.WifiManager 類有幾個(gè)關(guān)于SoftAP的隱藏接口,應(yīng)用程序可以通過(guò)反射來(lái)調(diào)用:
- isWifiApEnabled
- setWifiApEnabled
- getWifiApState
- getWifiApConfiguration
- setWifiApConfiguration
轉(zhuǎn)載于:https://www.cnblogs.com/bpasser/archive/2011/10/15/2213483.html
總結(jié)
以上是生活随笔為你收集整理的Realtek 8192cu 支持 Android Hotspot的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 工作中随感
- 下一篇: 粒子滤波实现物体跟踪