zoukankan      html  css  js  c++  java
  • Android监听WIFI网络的变化并且获得当前信号强度

    MainActivity如下:

    package cc.testwifi;
    
    import android.os.Bundle;
    import android.app.Activity;
    /**
     * Demo描述:
     * 监听Wifi网络的变化并且获得当前信号强度
     * 
     * 参考资料:
     * http://blog.csdn.net/way_ping_li/article/details/8777478
     * Thank you very much
     *
     */
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    	}
    }
    


    WifiChangeBroadcastReceiver如下:

    package cc.testwifi;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.net.wifi.WifiInfo;
    import android.net.wifi.WifiManager;
    
    public class WifiChangeBroadcastReceiver extends BroadcastReceiver {
    	private Context mContext;
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		mContext=context;
    		System.out.println("Wifi发生变化");
    		getWifiInfo();
    	}
    	
    	private void getWifiInfo() {
            WifiManager wifiManager = (WifiManager) mContext.getSystemService(mContext.WIFI_SERVICE);
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
            if (wifiInfo.getBSSID() != null) {
            	//wifi名称
                String ssid = wifiInfo.getSSID();
                //wifi信号强度
                int signalLevel = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), 5);
                //wifi速度
                int speed = wifiInfo.getLinkSpeed();
                //wifi速度单位
                String units = WifiInfo.LINK_SPEED_UNITS;
                System.out.println("ssid="+ssid+",signalLevel="+signalLevel+",speed="+speed+",units="+units);
            }
       }
    
    }
    


    AndroidManifest.xml如下:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="cc.testwifi"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="10"
            android:targetSdkVersion="10" />
        
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="cc.testwifi.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            
            <receiver android:name="cc.testwifi.WifiChangeBroadcastReceiver">
                <intent-filter >
                    <action android:name="android.net.wifi.RSSI_CHANGED" />         
                </intent-filter>
            </receiver>
        </application>
    
    </manifest>

    main.xml如下:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="监听wifi变化并获得当前信号强度" 
            android:layout_centerHorizontal="true"
            android:layout_marginTop="50dip"
        />
    
    </RelativeLayout>
  • 相关阅读:
    SOAP webserivce 和 RESTful webservice 对比及区别(转载)
    JavaWeb工程中web.xml基本配置(转载学习)
    iframe 自适应
    SQL分组求每组最大值问题的解决方法收集 (转载)
    关于试用jquery的jsonp实现ajax跨域请求数据的问题
    解决Mysql连接池被关闭 ,hibernate尝试连接不能连接的问题。 (默认mysql连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池。系统发布第二天访问链接关闭问题。
    Hadoop编译源码(面试重点)
    Hadoop学习(二)自己编译Hadoop安装包
    代理模式实现方式及优缺点对比
    zookeeper
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3395461.html
Copyright © 2011-2022 走看看