package com.martin.simpledevelop.utils.net; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.ScanResult; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.IBinder; import com.martin.simpledevelop.utils.log.SaLogUtils; import java.util.List; /** * @Description 网络 工具类<Br> * @File SaNetWorkUtils.java * @Package com.martin.simpledevelop.utils.net * @Date 2015年6月26日上午1:22:57 * @Author Donghongyu 1358506549@qq.com * @Version v1.0.0 */ public class SaNetWorkUtils { /** * Log 输出标签 */ public static String TAG = SaNetWorkUtils.class.getName(); /** * 接受网络状态的广播Action */ public static final String NET_BROADCAST_ACTION = "com.network.state.action"; public static final String NET_STATE_NAME = "network_state"; /** * 实时更新网络状态<br> * -1为网络无连接<br> * 1为WIFI<br> * 2为移动网络<br> */ public static int CURRENT_NETWORK_STATE = -1; /** * 判断网络是否连接 * * @param context * @return */ public static boolean isConnected(Context context) { ConnectivityManager connectivity = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (null != connectivity) { NetworkInfo info = connectivity.getActiveNetworkInfo(); if (null != info && info.isConnected()) { if (info.getState() == NetworkInfo.State.CONNECTED) { SaLogUtils.i(TAG, "当前网络可用..."); return true; } } } SaLogUtils.e(TAG, "当前网络不可用...."); return false; } /** * 判断是否是wifi连接 * * @param context * @return */ public static boolean isWifi(Context context) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (cm == null) { SaLogUtils.i(TAG, "当前网络----->不可用"); return false; } boolean isWifi = cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI; if (isWifi) SaLogUtils.i(TAG, "当前网络----->WIFI环境"); else SaLogUtils.i(TAG, "当前网络----->非WIFI环境"); return isWifi; } /** * 打开网络设置界面 * * @param activity * 当前界面 */ public static void openSetting(Activity activity) { Intent intent = new Intent("/"); // 判断手机系统的版本 即API大于10 就是3.0或以上版本 if (android.os.Build.VERSION.SDK_INT > 10) { intent = new Intent( android.provider.Settings.ACTION_WIRELESS_SETTINGS); } else { intent = new Intent(); ComponentName component = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings"); intent.setComponent(component); intent.setAction("android.intent.action.VIEW"); } activity.startActivityForResult(intent, 0); } /** * * 开启服务,实时监听网络变化 需要自己在清单文件中配置服务<br> * 然后把对应的Action传入<br> * 服务类:com.martin.utils.net.NetWrokListener * * @param context * @param action */ public static void startNetService(Context context, String action) { // 注册广播 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(NET_BROADCAST_ACTION); context.registerReceiver(mReceiver, intentFilter); // 开启服务 Intent intent = new Intent(); SaLogUtils.d(TAG, "开启网络监听服务"); intent.setAction(action); context.bindService(intent, new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { } @Override public void onServiceConnected(ComponentName name, IBinder service) { } }, Context.BIND_AUTO_CREATE); } // 接受服务上发过来的广播 private static BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent != null) { CURRENT_NETWORK_STATE = (Integer) intent.getExtras().get( NET_STATE_NAME); switch (CURRENT_NETWORK_STATE) { case -1: SaLogUtils.d(TAG, "网络更改为 无网络 CURRENT_NETWORK_STATE =" + CURRENT_NETWORK_STATE); break; case 1: SaLogUtils.d(TAG, "网络更改为 WIFI网络 CURRENT_NETWORK_STATE=" + CURRENT_NETWORK_STATE); break; case 2: SaLogUtils.d(TAG, "网络更改为 移动网络 CURRENT_NETWORK_STATE =" + CURRENT_NETWORK_STATE); break; default: break; } } } }; /** * * 描述:打开wifi. * * @param context * @param enabled * @return */ public static void setWifiEnabled(Context context, boolean enabled) { WifiManager wifiManager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE); if (enabled) { wifiManager.setWifiEnabled(true); } else { wifiManager.setWifiEnabled(false); } } /** * * 描述:得到所有的WiFi列表. * * @param context * @return */ public static List<ScanResult> getScanResults(Context context) { WifiManager wifiManager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE); List<ScanResult> list = null; // 开始扫描WiFi boolean f = wifiManager.startScan(); if (!f) { getScanResults(context); } else { // 得到扫描结果 list = wifiManager.getScanResults(); } return list; } /** * * 描述:根据SSID过滤扫描结果. * * @param context * @param bssid * @return */ public static ScanResult getScanResultsByBSSID(Context context, String bssid) { WifiManager wifiManager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE); ScanResult scanResult = null; // 开始扫描WiFi boolean f = wifiManager.startScan(); if (!f) { getScanResultsByBSSID(context, bssid); } // 得到扫描结果 List<ScanResult> list = wifiManager.getScanResults(); if (list != null) { for (int i = 0; i < list.size(); i++) { // 得到扫描结果 scanResult = list.get(i); if (scanResult.BSSID.equals(bssid)) { break; } } } SaLogUtils.d(TAG, "根据SSID过滤扫描结果>>>" + scanResult); return scanResult; } /** * * 描述:获取连接的WIFI信息. * * @param context * @return */ public static WifiInfo getConnectionInfo(Context context) { WifiManager wifiManager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); SaLogUtils.d(TAG, "获取连接的WIFI信息>>>" + wifiInfo); return wifiInfo; } }