Android网络状态监听,wifi强度监听
2015-08-29 00:21
465 查看
1、网络状态判断
2、网络状态监听
a、自定义broadcastreceive
public class NetworkStateBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equalsIgnoreCase(WifiManager.WIFI_STATE_CHANGED_ACTION)){
wifiStateChange(context, intent);
}else{
networkChange(context);
}
}
public void wifiStateChange(Context context, Intent intent){
int wifi_state = intent.getIntExtra("wifi_state", 0);
int level = Math.abs(((WifiManager)context.getSystemService(Context.WIFI_SERVICE)).getConnectionInfo().getRssi());
Log.e("network", "wifi状态:" + wifi_state + "; wifi强度:" + level);
}
public void networkChange(Context context){
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if(networkInfo != null){
int type = networkInfo.getType();
switch (type) {
case ConnectivityManager.TYPE_MOBILE:
Log.e("network", "手机网络");
break;
case ConnectivityManager.TYPE_WIFI:
Log.e("network", "wifi网络");
break;
}
}else{
Log.e("network", "没有网络");
}
}
}b、注册广播
NetworkStateBroadcastReceiver broadcastReceiver = new NetworkStateBroadcastReceiver();
IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
registerReceiver(broadcastReceiver, filter);
c、权限设置
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; /** * 网络工具 * @author fishpan */ public class NetWorkUtils { public Context context; public NetWorkUtils(Context context) { super(); this.context = context; } /** * 获取是否可用 * @param context * @return */ public boolean available(){ boolean flag = false; ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if(networkInfo != null && networkInfo.isConnected()){ flag = true; } return flag; } /** * 获取当前网络类型名称 * @return mobile 手机网络,wifi wifi网络 */ public String netowrkTypeName(){ ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if(networkInfo != null){ return networkInfo.getTypeName(); } return null; } /** * 手机网络是否可用 * @return */ public boolean mobileAvailable(){ ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkinfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (networkinfo != null) { return networkinfo.isAvailable(); } return false; } /** * wifi是否可用 * @return */ public boolean wifiAvailable(){ ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkinfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (networkinfo != null) { return networkinfo.isAvailable(); } return false; } }
2、网络状态监听
a、自定义broadcastreceive
public class NetworkStateBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equalsIgnoreCase(WifiManager.WIFI_STATE_CHANGED_ACTION)){
wifiStateChange(context, intent);
}else{
networkChange(context);
}
}
public void wifiStateChange(Context context, Intent intent){
int wifi_state = intent.getIntExtra("wifi_state", 0);
int level = Math.abs(((WifiManager)context.getSystemService(Context.WIFI_SERVICE)).getConnectionInfo().getRssi());
Log.e("network", "wifi状态:" + wifi_state + "; wifi强度:" + level);
}
public void networkChange(Context context){
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if(networkInfo != null){
int type = networkInfo.getType();
switch (type) {
case ConnectivityManager.TYPE_MOBILE:
Log.e("network", "手机网络");
break;
case ConnectivityManager.TYPE_WIFI:
Log.e("network", "wifi网络");
break;
}
}else{
Log.e("network", "没有网络");
}
}
}b、注册广播
NetworkStateBroadcastReceiver broadcastReceiver = new NetworkStateBroadcastReceiver();
IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
registerReceiver(broadcastReceiver, filter);
c、权限设置
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
相关文章推荐
- 网络知识点大杂烩
- Comet:基于 HTTP 长连接的“服务器推”技术
- TCP连接和建立
- Linux(Centos6.5)下安装svn服务器,并通过http访问
- RESTful HTTP的实践
- 网络排错大讲解 推荐
- ios开发进阶之多线程03 RunLoop 网络编程
- 虚拟机网络模式
- hdoj 4292 Food 【拆点 网络流】
- Android键盘的显示控制、网络检查、网络监测
- HTTP文件传输
- Android 网络请求超时处理方案
- linux下的apache在httpd.conf配置目录别名和include引入自配置文件配置的方法
- Android中的几种网络请求方式详解
- 《TCP/IP详解卷1:协议》——第2章:链路层(转载)
- Android(java)学习笔记201:网络图片浏览器的实现(ANR)
- 衡量企业网络广告效果的九个指标
- 8成企业不满网络广告评估方法
- 初识Java,基本名字的了解(摘自网络)
- 网络广告效果提高九要诀