一种基于安卓系统的双网卡并存的实现方法

文档序号:7804077阅读:2660来源:国知局
一种基于安卓系统的双网卡并存的实现方法
【专利摘要】本申请公开了一种基于安卓系统的双网卡并存通信方法,包括:应用层分别调用这启用移动数据函数和启用WIFI函数实现移动网络和WIFI网络的开启;建立新网络连接后,判断是否已激活两个默认网络,若是,保留这个新连接的网络并且保留它的网络状态信息,使这个新的网络和原网络并存并结束本流程,否则,判断网络传输唤醒锁定变量是否是保持状态,若是,设置时间延迟关闭屏幕,否则更新激活默认网络变量实现新网络连接,重新设置正在运行的网络类型,同时更新其他的变量;设置拆解请求为否并更新网络设置;更新路由设置、域名系统设置、网络接口设置和连接属性;切换到新连接的网络并发送一个广播消息给网络状态服务通知网络接口名称发生改变。
【专利说明】—种基于安卓系统的双网卡并存的实现方法
【技术领域】
[0001]本申请涉及移动通信【技术领域】,尤其涉及一种基于安卓(android)系统的双网卡并存的实现方法。
【背景技术】
[0002]Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑。现有大部分移动设备具有多块网卡,如通过局域无线网络(WIFI)方式接入互联网络的WIFI网卡以及通过移动通信网络方式接入互联网络的3g/LTE网卡。
[0003]由于WIFI网络可以免费使用,而3g/LTE网络通常是按照流量计费,现有的android系统联网策略通常是WIFI优先,在同一时刻只允许一个网络接口进行通信。具体地说,打开WIFI网络的时候系统默认就会把3G网络给关闭或者是当先打开WIFI网络再开3G网络,系统也会再把3g关闭;WIFI网络和3g网络同时存在的情况下,系统默认只使用WIFI网络,不允许多网卡同时并存。
[0004]然而在实际应用中常常需要多个网卡同时并存,以下列举几个可能的应用场景:
[0005]1、不少公司或组织比如银行、税务等都有自己的内部专网(WIFI),日常工作中经常会碰到需要同时访问内外网的问题,比如在内网上干活,外网(3g/LTE)上查资料,或者和其他人交换信息等;
[0006]2、当用户的wifi信号很差时、很微弱时,已经无法访问internet,这时系统也不会自动切换到3g/LTE网络访问internet ;
[0007]3、当用户有特殊需要,数据业务根据业务类型做多接口分流处理,这时需要多网卡通信;
[0008]4、WIFI带宽受限,希望多网卡同时工作,提高下载速度,负载均衡,提升网络资源利用率。

【发明内容】

[0009]本申请提供了一种基于安卓系统的双网卡并存的实现方法,可以实现两个网卡同时工作。
[0010]本申请实施例提供的一种基于安卓系统的双网卡并存通信方法,包括:
[0011]A、应用层分别调用这启用移动数据函数和启用WIFI函数实现移动网络和wifi网络的开启;
[0012]B、建立新网络连接后,判断是否已激活两个默认网络,若是,保留这个新连接的网络并且保留它的网络状态信息,使这个新的网络和原网络并存并结束本流程,否则,执行步骤C ;
[0013]C、判断网络传输唤醒锁定变量是否是保持状态,若是,设置时间延迟关闭屏幕,然后执行步骤D,否则直接执行步骤D ;[0014]D、更新激活默认网络变量实现新网络连接,重新设置正在运行的网络类型,同时更新其他的变量;
[0015]E、设置拆解请求为否并更新网络设置;
[0016]F、更新路由设置、域名系统设置、网络接口设置和连接属性;切换到新连接的网络并发送一个广播消息给网络状态服务,用于通知网络接口名称发生改变。
[0017]较佳地,步骤A包括:
[0018]通过java中的反射实现调用到连接管理器类中的启动移动数据函数;
[0019]使能移动网络后,发送一条设置移动数据事件消息至连接服务模块的消息处理单元;所述消息处理单元连接接入点,通过动态主机配置协议获得IP地址,配置rmnet_usbO。
[0020]较佳地,步骤A包括:
[0021]调用Wifi服务模块中的启用wifi函数使能wifi,wifi服务模块接着向自身发送一条 CMD_WIFI_TOGGLED 消息;
[0022]wifi服务模块加载wifi内核驱动模块,然后启动wpa_supplicant程序;
[0023]wpa_supplicant程序完成接入点扫描,扫描后将扫描结果通过事件通知framework 层;
[0024]framework层的wif i状态追踪器创建wif i监视器接收来自底层的事件,而Wifi监视器负责从wpa_supplicant程序接收事件通知,Wifi监视器把命令下发给wpa_supplicant程序,配置并连接接入点,获取IP地址。
[0025]较佳地,步骤B所述判断是否已激活两个默认网络之前,进一步包括:判断新连接的网络类型是否是默认的网络,若是,执行所述判断是否已激活两个默认网络的步骤,否则执行步骤F。
[0026]较佳地,步骤B为:
[0027]建立新网络连接后,判断激活默认网络变量是否已经设置并且新连接的网络类型不等于这个激活默认网络变量已激活的网络类型,若满足以上条件保留这个新连接的网络并且保留它的网络状态信息,使这个新的网络和原网络并存并结束本流程,否则,执行步骤C0
[0028]从以上技术方案可以看出,通过不同于现有技术的网络连接处理流程实现双网卡同时开启并且分别建立网络连接,在此基础上可以进一步实现双网卡并存通信;从而提高网络的使用率或者基于android的内网和外网同时访问。
【专利附图】

【附图说明】
[0029]图1为本申请实施例提供的双网卡启动整体实现流程不意图;
[0030]图2为现有技术启动双网卡启动网络状态图;
[0031]图3为本申请实施例中启动双网卡启动网络状态图。
【具体实施方式】
[0032]本申请的设计思想是:在原有android系统的网络架构设计机制的基础下对网络进行改造,从而实现多网卡并存的网络架构,提出支持LTE/3G、WLAN等多网融合、并存通信的网络总体架构。[0033]为使本申请技术方案的技术原理、特点以及技术效果更加清楚,以下结合具体实施例对本申请技术方案进行详细阐述。
[0034]根据用户策略开启双网卡,实现双网卡并存通信的网络架构是本申请的核心部分。下面将详细讲述关于移动网络和wifi网络是如何开启的,及两个网络如何并存。
[0035]双网卡启动过程:
[0036]应用层分别调用这两个函数:启用移动数据(SetMobileDataEnabled)和启用WIFI(setWifiEnable)实现移动网络和wifi网络的开启。下面简要说明移动网络、wifi网络开启过程。
[0037]开启移动网络(LTE/3G)流程说明:
[0038]当开启移动网络时,应用程序会调用连接管理器启用移动数据(ConnectivityManager.setMobiIeDataEnable)方法,但是这个方法被定义为私有(private)类型,系统级的应用才能调用。本申请实施例中通过如下方式实现用户级的应用调用:通过java中的反射就可以实现调用到连接管理器(ConnectivityManager)类中的启动移动数据(SetMobileDataEnable)函数。使能移动网络后,接着会发送一条设置移动数据事件(EVENT_SET_MOBILE_DATA)消息,连接服务(ConnectivityService)的消息处理单元(handleMessage)将接收并处理这条消息,在处理该消息的代码中做真正的使能工作:连接接入点(APN),通过动态主机配置协议(DHCP, Dynamic Host ConfigurationProtocol)获得IP地址,配置rmnet_usbO使得移动网络状态为已连接,至此移动网络使能完成。
[0039]开启wifi流程说明:
[0040]当开启wifi时,应用程序会调用Wifi服务(WifiService)模块中的启用wifi (setffifiEnable)函数使能 wifi, WifiService 模块接着向自身发送一条 CMD_WIFI_TOGGLED消息,在处理该消息的代码中做真正的使能工作:首先加载wifi内核驱动模块,然后启动 wpa_supplicant 程序(WifiService 负责启动和关闭 wpa_supplicant), wpa_supplicant程序主要是完成AP扫描,扫描后将扫描结果通过事件通知framework层,在framework 层的 wifi 状态追踪器(wifiStateTracker)会创建 wifi 监视器(WifiMonitor)接收来自底层的事件,而WifiMonitor负责从wpa_supplicant接收事件通知,同时WifiMontior监视线程会把命令下发给wpa_supplicant,配置AP,连接AP,获取IP地址,wifi状态为已连接,至此wifi使能完成。
[0041]在两个网卡都启动后,本申请实施例通过修改framework层的网络连接处理流程而实现双网卡共存。本申请实施例提供的双网卡启动整体实现流程如图1所示,包括如下步骤:
[0042]步骤101:判断新连接的网络类型是否是默认的网络(默认的网络指的是wifi或移动网络,即本申请所要开启的双网卡对应的网络),如果这个网络是默认的网络,继续步骤102,否则跳转到步骤107 ;
[0043]步骤102:判断激活默认网络(mActiveDefaultNetwork)变量是否已经设置(之前已开启过一个网络wifi或移动网络,已经处于连接状态,如果已开启过网络,mActiveDefaultNetwork值为是I或O,否则值为-1),并且新连接的网络类型不等于这个mActiveDefaultNetwork已激活的网络类型,如果条件满足则保留这个新连接的网络并且保留它的网络状态信息,使这个新的网络和原网络并存,结束本流程;否则说明之前没有开启过任何网络,将继续步骤103 ;
[0044]步骤103:使能同步处理函数,该函数的具体处理过程包括:首先判断网络传输唤醒锁定(mNetTransitionWakeLock)变量是否是保持(held)状态,这里是判断屏幕是否亮着,若亮着,一秒之后关闭屏幕,之所以一秒钟之后关闭是留给应用程序连接新网络所用的时间;
[0045]步骤104:更新激活默认网络(mActiveDefaultNetwork)变量实现新网络连接,重新设置正在运行的网络类型,同时更新其他的变量;
[0046]步骤105:设置拆解(teardown)请求为否,不关闭网络;
[0047]步骤106:更新网络设置;这一步主要是从系统属性里面读出要连接的那个网络的属性信息,然后把它写到安卓系统的内核(kernel)里;
[0048]步骤107:改变网络连接,主要包括更新路由设置、域名系统设置、网络接口设置和连接属性;切换到新连接的网络上;
[0049]步骤108:发送一个广播消息至网络状态服务(NetWorkStateService),用于通知网络接口名称发生改变。
[0050]该流程与现有技术开启网络流程的区别:
[0051]现有技术在两个网络(wifi和3g/lte)同时开启时,虽然在网络设置界面上看到两个网络都是开启状态,但实质上它的内部程序处理策略是优先选择wifi网络,程序在内部处理上是只打开了 wifi,而将3g/lte关闭,这时虽然打开了两个网络但只有wifi网络可用,3g/lte是无法使用的。通过查看网络状态,只有WLAN处于up状态并且有IP地址,如图2所示。
[0052]本专利在启动双网卡时也是先在网络设置界面上使能了 wifi和3g/lte后,程序在内部处理上和现有技术有所区别,本专利在程序的内部会修改网络连接的处理流程,使之双网并存。具体实现流程上参见图1。这样当LTE/3G、WLAN两个网卡同时打开之后,用网络配置(netcfg)命令查看信息,会看到相应的会有两个网络已经开启处于UP状态,分别为rmnet_usbO、wlanO网络,分别被分配相应的IP地址,WIFI还会有MAC地址。这样两个网络已经同时开启,这样就可以进行IP分流和多流处理了。
[0053]LTE/3G.WLAN网卡启动之后的信息,如图3所示。
[0054]在双网络并存的情况下,可以进行多网协同分流、多流并发和单业务双网分流,此外还可以实现内网、外网同时访问。下面具体列举一些实例:
[0055]实例1:分应用指定网络接口上网。
[0056]首先选择浏览器I,通过程序获取这个应用的用户id并将其网络出去的接口配置到WIFI网络接口上,配置好之后设定其相应的路由策略,然后再选择浏览器2,同样是通过程序获取这个应用的用户id,再将其出去的接口配置到3G/LTE网络接口上,分别打开浏览器I和浏览器2上网,它们的数据包分别通过WIFI和3G/LTE出去,可以用tcpdump抓包工具查看两个网络接口的数据。在这里体现了多网协同多流并发这项技术,充分、有效的利用了 android系统的网络资源。
[0057]实例2、在android系统的终端上,用户要下载一些比较大的数据包时,则可以通过多个网络接口下载数据包,配置路由。数据包一路通过WIFI,一路通过3G/LTE,同时从两个网络接口接收数据报文,提高了下载速度,使网络负载均衡。
[0058]实例3、在android系统的终端上,在WIFI网络不能连到外网的情况下,这时3G/LTE网络并存是很有必要的,如果没有3G/LTE这个网络是无法访问internet的,这时体现了多网卡能够同时并存通信的必要性。
[0059]以上所述仅为本申请的较佳实施例而已,并不用以限制本申请的保护范围,凡在本申请技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
【权利要求】
1.一种基于安卓系统的双网卡并存通信方法,其特征在于,包括: A、应用层分别调用这启用移动数据函数和启用WIFI函数实现移动网络和wifi网络的开启; B、建立新网络连接后,判断是否已激活两个默认网络,若是,保留这个新连接的网络并且保留它的网络状态信息,使这个新的网络和原网络并存并结束本流程,否则,执行步骤C; C、判断网络传输唤醒锁定变量是否是保持状态,若是,设置时间延迟关闭屏幕,然后执行步骤D,否则直接执行步骤D ; D、更新激活默认网络变量实现新网络连接,重新设置正在运行的网络类型,同时更新其他的变量; E、设置拆解请求为否并更新网络设置; F、更新路由设置、域名系统设置、网络接口设置和连接属性;切换到新连接的网络并发送一个广播消息给网络状态服务,用于通知网络接口名称发生改变。
2.根据权利要求1所述的方法,其特征在于,步骤A包括: 通过java中的反射实现调用到连接管理器类中的启动移动数据函数; 使能移动网络后,发送一条设置移动数据事件消息至连接服务模块的消息处理单元;所述消息处理单元连接接入点,通过动态主机配置协议获得IP地址,配置rmnetjsbO。
3.根据权利要求1所述的方法,其特征在于,步骤A包括: 调用Wifi服务模块中的启用wifi函数使能wifi,wifi服务模块接着向自身发送一条CMD_WIFI_TOGGLED 消息; wifi服务模块加载wifi内核驱动模块,然后启动wpa_supplicant程序; wpa_supplicant程序完成接入点扫描,扫描后将扫描结果通过事件通知framework层; framework层的wifi状态追踪器创建wifi监视器接收来自底层的事件,Wifi监视器负责从wpa_supplicant程序接收事件通知,Wifi监视器把命令下发给wpa_supplicant程序,配置并连接接入点,获取IP地址。
4.根据权利要求1所述的方法,其特征在于,步骤B所述判断是否已激活两个默认网络之前,进一步包括:判断新连接的网络类型是否是默认的网络,若是,执行所述判断是否已激活两个默认网络的步骤,否则执行步骤F。
5.根据权利要求1所述的方法,其特征在于,步骤B为: 建立新网络连接后,判断激活默认网络变量是否已经设置并且新连接的网络类型不等于这个激活默认网络变量已激活的网络类型,若满足以上条件保留这个新连接的网络并且保留它的网络状态信息,使这个新的网络和原网络并存并结束本流程,否则,执行步骤C。
【文档编号】H04L29/08GK103973800SQ201410210282
【公开日】2014年8月6日 申请日期:2014年5月19日 优先权日:2014年5月19日
【发明者】霍平, 张凡, 姜涌 申请人:普天信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1