安卓网络连接全解:包括网络连接状态的监听、网络数据使用状态的监听、获取当前网络连接情况、启动wifi、获取当前连接wifi的网络情况、扫描wifi热点
2017-10-22 14:52
791 查看
全栈工程师开发手册 (作者:栾鹏)
安卓教程全解
安卓网络连接情况全解:包括网络连接状态的监听、网络数据使用状态的监听、获取当前网络连接情况、启动wifi、获取当前连接wifi的网络情况、扫描wifi热点
安卓教程全解
安卓网络连接情况全解:包括网络连接状态的监听、网络数据使用状态的监听、获取当前网络连接情况、启动wifi、获取当前连接wifi的网络情况、扫描wifi热点
网络连接情况的监听和网络数据使用情况的监听
private void listen_net() { //注册用于监听后台数据使用情况变化的BroadcastReceiver registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.v("网络数据使用变化", ""); } },new IntentFilter(ConnectivityManager.ACTION_BACKGROUND_DATA_SETTING_CHANGED) //触发监听的广播行为 ); //用于监听网络连接变化的BroadcastReceiver registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.v("网络连接变化", "网络状态已经改变"); netinfo(); } },new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION) //触发监听的广播行为 ); }
获取当前网络信息
移动网络和wifi网络都是网络情况的一种情况public void netinfo() { //访问Connectivity Manager网络连接服务 String service = Context.CONNECTIVITY_SERVICE; final ConnectivityManager connectivity = (ConnectivityManager)getSystemService(service); //访问网络信息 NetworkInfo activeNetwork = connectivity.getActiveNetworkInfo(); boolean isConnected = ((activeNetwork != null) && (activeNetwork.isConnectedOrConnecting())); boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI; Log.v("网络信息", "是否已连接网络:"+isConnected); Log.v("网络信息", "是否连接了wifi:"+isWiFi); if(isConnected) { String netname=activeNetwork.getTypeName(); Log.v("网络信息", "网络名称:"+netname); } }
启动wifi、扫描wifi热点
wifi是网络连接的一种private void scan_wifi() { //访问Wi-Fi Manager String service = Context.WIFI_SERVICE; final WifiManager wifi = (WifiManager)getSystemService(service); //监听并更改Wi-Fi状态 if (!wifi.isWifiEnabled()) if (wifi.getWifiState() != WifiManager.WIFI_STATE_ENABLING) wifi.setWifiEnabled(true); //扫描wifi接入点,在开启了wifi,但还没有连上任何一个ssid时才会触发 //注册用于接收扫描结果的broadcast receiver registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { List<ScanResult> results = wifi.getScanResults(); ScanResult bestSignal = null; for (ScanResult result : results) { if (bestSignal == null || WifiManager.compareSignalLevel(bestSignal.level,result.level) < 0) bestSignal = result; } String connSummary = String.format("%s 个网络被发现,其中 %s 是信号最强的",results.size(),bestSignal.SSID); Log.d("wifi扫描", connSummary); } }, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); //开始扫描 wifi.startScan(); }
获取当前wifi连接情况
private void wifiinfo() { //访问Wi-Fi Manager String service = Context.WIFI_SERVICE; final WifiManager wifi = (WifiManager)getSystemService(service); //监听并更改Wi-Fi状态 if (!wifi.isWifiEnabled()) if (wifi.getWifiState() != WifiManager.WIFI_STATE_ENABLING) wifi.setWifiEnabled(true); //查询活动的网络连接,在连接到某个ssid时才触发 WifiInfo info = wifi.getConnectionInfo(); if (info.getBSSID() != null) { int strength = WifiManager.calculateSignalLevel(info.getRssi(), 5); //信号强弱 int speed = info.getLinkSpeed();//网上速率 String units = WifiInfo.LINK_SPEED_UNITS; //速率单位 String ssid = info.getSSID(); //ssid String mac = info.getMacAddress(); //mac地址 int ip = info.getIpAddress(); //ip地址 String cSummary = String.format("当前wifi正连接到%s,速度%s%s,信号强度 %s/5",ssid, speed, units, strength); Log.d("wifi连接", cSummary); } }
相关文章推荐
- ios获取当前的网络状态, 获取当前连接的wifi名字
- ios获取当前的网络状态, 获取当前连接的wifi名字
- ios获取当前的网络状态, 获取当前连接的wifi名字
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第六节 获取当前UDP连接情况
- Android获取当前的网络连接信息和网络链接状态 GPRS 和 WiFi网络
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第六节 获取当前UDP连接情况
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第四节 获取当前TCP连接情况
- 安卓电话和网络开发全解:电话硬件检测、电话服务信息、sim信息、网络服务信息、数据连接和数据传输信息、电话状态监听
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第四节 获取当前TCP连接情况
- 使用C#调用外部Ping命令获取网络连接情况
- 使用C#调用Ping命令获取网络连接情况
- 使用C#调用外部Ping命令获取网络连接情况
- 使用C#调用外部Ping命令获取网络连接情况
- 使用C#调用外部Ping命令获取网络连接情况
- 使用C#调用外部Ping命令获取网络连接情况
- 使用C#调用Ping命令获取网络连接情况 + 获取DOS返回值
- 使用C#调用外部Ping命令获取网络连接情况[转载CSDN]
- 使用C#调用外部Ping命令获取网络连接情况
- 使用C#调用外部Ping命令获取网络连接情况
- 使用C#调用外部Ping命令获取网络连接情况