现在一直在做机顶盒开发,之前做过机顶盒的系统设置APK,现在特地把设置中的有线网络模块的开发思路分享下
文章中介绍的API等是基于Android4.4版本的,向Android5.0以上的版本就不同了,包名有些许变化,貌似变得更简单了
和有线网络相关的内容在包android.net.ethernet.EthernetManager
还有拨号上网的包android.net.pppoe.PppoeManager;
获取方法基本和其它的Manager获取方法一样
ethernetManager=(EthernetManager)activity.getSystemService(Context.ETHERNET_SERVICE);
pppoeManager=(PppoeManager)activity.getSystemService(Context.PPPOE_SERVICE); 设置网络模式有如下几种:
自动获取IP(DHCP方式上网)
EthernetManager.ETHERNET_CONNECT_MODE_DHCP 设置一个静态IP上网
EthernetManager.ETHERNET_CONNECT_MODE_MANUAL 拨号上网
EthernetManager.ETHERNET_CONNECT_MODE_PPPOE
获取到设备的上网方式
ethernetManager.getEthernetMode()
获取到设备的IP地址信息(DHCPINFO类还有很多属性,可以进一步查看)
DhcpInfo info=ethernetManager.getDhcpInfo(); 另外如果设置过静态IP地址上网,通过下面的方法可以获取到以前设置过的IP地址(有可能会在静态IP和自动获取IP方式之间切换)
ethernetManager.getSavedEthernetIpInfo();
设置网口的禁用与启用(一般该方法是先调用一次false 如果是启用则再调用一次ture 即是启用的时候关/开各一次)
ethernetManager.setEthernetEnabled(false); 设置上网的模式(如果是自动获取IP则第二个参数传递Null即可)
ethernetManager.setEthernetMode(EthernetManager.ETHERNET_CONNECT_MODE_MANUAL,info);
开发的总体思路是:
前提是先要注册广播接收器哈~
第一步,设置对应的网络模式
第二步,接收系统的广播
第三步,获取网络IP地址等相关信息
第四步,更新UI刷新IP地址等
弄清楚系统发送的几个广播:
有线网络断开的时候将会收到此广播
EthernetManager.EVENT_PHY_LINK_DOWN 有线网络连接时将会收到此广播
EthernetManager.EVENT_PHY_LINK_UP
以DHCP模式获取IP地址并且网络断开时会受到此广播
EthernetManager.EVENT_DHCP_CONNECT_SUCCESSED
以DHCP模式获取IP地址并且网络连接上时会受到此广播
EthernetManager.EVENT_DHCP_CONNECT_FAILED
大意同上
EthernetManager.EVENT_DHCP_DISCONNECT_FAILED
大意同上
EthernetManager.EVENT_DHCP_DISCONNECT_SUCCESSED
以静态IP地址联网方式并且网络连接上时会收到此广播
EthernetManager.EVENT_STATIC_CONNECT_SUCCESSED
以静态IP地址联网方式并且网络连接失败时会受到此广播
EthernetManager.EVENT_STATIC_CONNECT_FAILED
大意同上
EthernetManager.EVENT_STATIC_DISCONNECT_FAILED
大意同上
EthernetManager.EVENT_STATIC_DISCONNECT_SUCCESSED
拨号上网的相关广播(原理基本同上,大家就可以以此类推了~~)
PppoeManager.EVENT_CONNECT_SUCCESSED
PppoeManager.EVENT_CONNECT_FAILED
PppoeManager.EVENT_DISCONNECT_SUCCESSED
PppoeManager.EVENT_DISCONNECT_FAILED
总结下这几个系统广播:其中LINK_UP和LINK_DOWN在我个人实际开发中貌似都没有收到,然后无论是DHCP方式还是静态IP方式联网,失败的广播有多种,那么这几种失败的广播有什么区别?这个还是要以实际调试的为准,以打印的日志为准,不能一概而论,不同的机顶盒,不同的ROOM略微有不同!
对应上面广播接受器的ACTION
网络禁用和启用的设置
EthernetManager.ETHERNET_STATE_CHANGED_ACTION
IP地址获取方式的切换
EthernetManager.NETWORK_STATE_CHANGED_ACTION 拨号上网相关
PppoeManager.PPPOE_STATE_CHANGED_ACTION