>[0365] string
[0366] priority
[0367] Connection priority over other APs
[0368] number(0being the default low priority)
[0369] bssid
[0370] Mac address of the access point
[0371] mac address
[0372] scan-ssid
[0373] Enable/disbale ssid scan
[0374] 0,1,2
[0375] key-mgmt
[0376] Type of key management
[0377] WPA-PSK,WPA-EAP,None
[0378] pairwise
[0379] Pairwise ciphers for WPA
[0380] CCMPJKIP
[0381] group = TKIP
[0382] Group ciphers for WPA
[0383] CCMP,TKIP,WEP104,WEP40
[0384] psk
[0385] Pre-Shared Key(clear or encrypted)
[0386] string
[0387] wep_key0
[0388] WEP key(up to 4:wep_key[0123])
[0389] string
[0390] eap
[0391] Extensible Authentication Protocol
[0392] MD5,MSCHAPV2,OTP,GTC,TLS,PEAP,TTLS
[0393] identity
[0394] EAP identity string
[0395] string
[0396] password
[0397] EAP password
[0398] string
[0399] ca-cert
[0400] Pathname to CA certificate file
[0401 ] /ful1/path/to/certificate
[0402] client-cert
[0403] Pathname to client certificate
[0404] /full/path/to/certificate(PEM/DER)
[0405] private-key
[0406] Pathname to a client private key file
[0407] /ful1/path/to/private_key(PEM/DER/PFX)
[0408] 同理,以上参数表也可通过公共途径从Android官方得到,仅供参考同,恕不赘述D 以下利用一用于连接无加密的AP的具体实例说明如何实现网络连接:
[0409] >add_network(将显示一网络ID,假定返回值为0)
[0410] >set-network 0ssid"666〃
[0411] >set-network Okey-mgmt NONE
[0412] >enable-network 0
[0413] >quit
[0414] 再利用一用于连接WEP加密的AP的具体实例加以说明:
[0415] >add_network(假定网络 ID 返回 1)
[0416] >set-network lssid"666〃
[0417] >set-network lkey-mgmt NONE
[0418] >set-network lwep-key0"your ap password"
[0419] >enable_network 1
[0420] 至于连接WPA-PSK/WPA2-PSK加密的AP的示例如下:
[0421 ] >add_network (假定网络 ID返回2)
[0422] >set-network 2ssid"666〃
[0423] >set-network 2psk〃your pre-shared key"
[0424] >enable-network 2
[0425] 到此,wifi模块就能连接上AP 了。
[0426] 以上是通过命令行工具wpa_cli来实现wif i网络的连接。当然,也可以通过wpa_ supp 1 i cant的配置文件来实现连接。
[0427] 不妨再回顾前面运行wpa_supp 1 i cant时执行的命令:
[0428] /system/bin/wpa_supplicant-d-Dwext-iwlan〇-c/data/misc/wif i/wpa_ supplicant.conf
[0429] 我们在执行时加上了-c/data/misc/wif i/wpa_suppli cant ? conf,故而可以将要 连接的AP的设置以一定的格式写入wpa_supplicant.conf配置文件中即可。例如:
[0430] ctrl_interface = DIR = /data/system/wpa_supplicant GROUP = system update_config = l
[0431] network= {
[0432] ssid = //my access point"
[0433] proto=WPA
[0434] key_mgmt=WPA-PSK
[0435] psk = "you pass words"
[0436] }
[0437] 可见,即使是调用站点进程启动智能终端WiFi芯片模组的站点模式,也可通过以 上运用指令、运用配置文件两种不同方式,来实现由应用程序进程自行控制所述的站点进 程的开启,从而使智能终端工作于站点模式之下。
[0438] 由以上的分析可知,本发明可以借助多种方式激活智能终端的站点模式,并通过 调用点对点连接管理类的cr eateGroup方法来激活智能终端的热点模式,这两种模式可以 并存于Android智能终端中。从而使得智能终端能够利用其站点模式接入外网,同时利用热 点模式建构一个小型网络。
[0439] 为使上述的双模状态更易于操作,体现更佳的用户体验,本发明的应用程序进程 可以通过对用户界面进行设计来对此加以完善。
[0440]用户界面泛指能够用于实现人机交互并且能够接收用户控制指令的显示界面,例 如,可以为Android系统的设置页面中的一个选项(或按键,由所述应用程序添加其中,下 同),也可以是从桌面呼出的通知栏或者交互页面中的一个选项,还可以是所述应用程序的 一个活动组件所构造的页面中的一个选项。
[0441] 本发明优选如下两种方式,用于接收所述的控制指令:
[0442] 其一,通过在用户界面提供单个控制按键,以用于一键式地接收所述的控制指令, 这种方式便于用户实现一键式操作。
[0443] 其二,通过在用户界面对应热点模式和站点模式而分别提供控制按键,以分别对 应不同按键而产生对应启动相应的模式的控制指令。
[0444] 根据以上的方式提供的控制按键,通常这些按键可以优选设置在系统桌面通知栏 列表处,或者以桌面悬浮窗的方式提供,既便于用户触控控制,又不影响用户视觉效果,当 然也可作为系统的默认功能而随用户开启WiFi按键时激活。较佳的,所述应用程序可以将 自身设为自启动项,使得系统启动时,可以自行加载所述的按键,从而便于用户操作。
[0445] 当用户通过所述的用户界面,触控所述的控制按键之后,便产生相应的控制指令, 该控制指令将被所述应用程序的进程接收,从而对应控制热点模式和/或站点模式开启。
[0446] 具体而言,用户既可以通过单个控制按键来希望同时开启热点模式和站点模式, 也可以通过两个与两种模式相对应的按键来开启,实质上提供了多种操作变化例。对应这 些变化,以下进一步示例说明。
[0447] 设用户界面提供单个控制按键,用户通过该单个控制按键而触发其用户指令,此 处便可以先调用createGroupO创建热点。继而,本发明的应用程序进程再自行启动该站点 进程,由此便可实现两种模式的并存。反之,也可以先行启动站点进程,在其完成开启之后, 再行参照上述示例开启热点模式。也就是说,对应于单个控制按键引起的控制指令,可以以 不同的实施方式灵活安排所述热点模式和站点模式的启动顺序。
[0448] 而对应用户界面提供不同的控制按键,分别表征开启不同的模式的实例而言,则 可按用户点击不同控制按键的顺序而按序开启相应的模式,此举并不影响本发明的实施。 [0449]在优选的方案中,推荐优先让站点模式先于热点模式开启,在确保本智能终端可 以连接外网的情况下,向其他智能终端提供接入功能,可以免除一些无用功,更为节能。
[0450] 由此可见,将站点模式与热点模式相继启动后,便可以实现两种模式的共存。在此 基础上,本发明的应用程序进程可以向用户界面输出一些结果信息,以告知用户该智能终 端当前已经处于热点模式和站点模式共存的双模状态。至于所述的结果信息的表达形式, 既可以是通过系统消息显示到通知栏中,也可以在桌面上弹窗显示,更优的方式可以是调 用一个预设的第三方图标,用于表征该智能终端处于热点模式和站点模式共存的双模状 态,将该第三方图标显示到用户界面的系统状态栏中,使得用户更易于获知相应的结果信 息。
[0451] 所述的配置单元12,被配置为调用网络守护进程执行如下过程:开通连通热点模 式与站点模式之间的网络连接的数据包转发功能,畅通热点模式与站点模式之间网络连接 的数据包过滤表的设置内容,去除客户端共享上网限制解析DNS的选项。
[0452] 涉及到对网络守护进程直接调用的操作,依照Android的规范,需要获取系统的最 高权限,因而,在获取Android系统最高权限或者Android系统已经开放最高权限的前提下, 可以通过对所述网络守护进程进行调用,借此修改涉及到网络共享的配置信息,即网络共 享配置信息,以便连通热点模式与站点模式之间的网络连接,让客户端可以通过服务端来 访问外网。
[0453] 所述的网络守护进程,即NetcUNetwork Daemon的缩写。Netd负责跟一些涉及物理 端口的网络操作相关的功能实现,例如带宽控制(Bandwidth),网络地址转换(NAT),个人局 域网(pan),PPP链接,soft-ap,本智能终端的热点模式所涉及的共享上网(Tether)等 等……都是按照模块(.cpp+.h)组织在netd文件目录下的。
[0454] Android Netd相关的基本框架的四大部分:
[0455] (l)Linux Kernel用于检测网络相关的所有事件。
[0456] (2) Ne td作为Kerne 1 (内核层)与Frame work (框架层)之间通信的桥梁。
[0457] (3)框架层操作Netd,向Netd发送操作命令。
[0458] (4)应用层与框架层交互,用于用户进行网络的操控。
[0459] Android为Netd提供了一个测试工具,即ndc,其主要功能有:
[0460] 监视Netd中发生的事件。
[0461 ]支持通过命令行发送命令给Netd去执行。ndc的实现原理,便是连接上位于netd进 程中的"netd"监听socket,然后从Netd接收信息或发送命令给Netd。
[0462] 由此可见,可以通过ndc来驱动网络守护进程执行相关指令,本发明中,实现对网 络共享配置信息的修改的功能,便可利用ndc命令来实施。
[0463] 请先参照如下对Android系统实施的观测过程:
[0464] 首先,通过分析,发现createGroup ()仓ij建热点之后,虽然产生可以被客户端连接, 但其用于向用户反馈DHCP配置信息的配置进程DNSmasq的参数如下:
[0465] /system/bin/dnsmasq-keep-in-foreground-no-resolv-n〇-poll-dhcp-auth oritative-dhcp-〇ption-force=43,ANDROID_METERED-pid-file-dhcp-rang e = 192.168.42.2,192.168.42.254,lh-dhcp-range = 192.168.43.2,192.168.43.254, lh-dhcp-range = 192.168.44.2,192.168.44.254,lh-dhcp-range = 192.168.45.2, 192.168.45.254,lh-dhcp-range = 192?168?46?2,192?168?46?254,lh-dhcp-range = 192.168.47.2,192.168.47.254, lh-dhcp-range = 192.168.48.2,192.168.48.254, lh- dhcp-range=192.168.49.2,192.168.49.254,lh
[0466] 从中可以看出,其中增加了强制配置序列为43的控制选项即dhcp-option-force = 43,ANDR0ID_METERED,序号43的官方释义是厂商指定选项,用于表示当前连接为计费连 接,在这种情况下,客户端将不能利用服务端的外网连接,以免产生巨额费用。然而,这种设 计逻辑是以服务端将通过运营商的计费连接而提供访问外网服务的,但服务端存在以WiFi 站点模式建立的免费外网连接的情况,并未被Android所兼容。
[0467] 继而,通过分析Android官方文档中对于了61:1161^〇111:1'〇1161'(共享控制器)的源代 码可知,在这种情况下,该处对ANDR0ID_METERED进行了规范,然而,却未见默认网关的设 置。
[0468] 而对客户端中进行分析,从core ? java ? android ? net ? Dhcplnfolnternal也就是 dhcp客户端那边,利用下述的代码实施检测: public boolean hasMeteredHint() { if (vendorlnfo := null) { return vendoiinfo.containsC'ANDROID METERED");
[0469] } else { return false; }