Android實時獲得周圍wifi信息(SSID,強度等)

</pre>轉載請註明出處,謝謝!</p><p></p><p><strong>1.首先在Manifext裏聲明權限:</strong></p><p><pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'宋體';font-size:9.0pt;"><span style="color:#e8bf6a;"><uses-permission </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:name=</span><span style="color:#a5c261;">"android.permission.ACCESS_WIFI_STATE" </span><span style="color:#e8bf6a;">/>
</span><span style="color:#e8bf6a;"><uses-permission </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:name=</span><span style="color:#a5c261;">"android.permission.INTERNET" </span><span style="color:#e8bf6a;">/>
</span><span style="color:#e8bf6a;"><uses-permission </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:name=</span><span style="color:#a5c261;">"android.permission.ACCESS_NETWORK_STATE" </span><span style="color:#e8bf6a;">/>
</span><span style="color:#e8bf6a;"><uses-permission </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:name=</span><span style="color:#a5c261;">"android.permission.CHANGE_NETWORK_STATE"</span><span style="color:#e8bf6a;">/>
</span><span style="color:#e8bf6a;"><uses-permission </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:name=</span><span style="color:#a5c261;">"android.permission.CHANGE_WIFI_STATE"</span><span style="color:#e8bf6a;">/></span>

2.創建一個TextView用來顯示wifi信息:


<?xml version="1.0" encoding="utf-8"?>
<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.edu.tongji.wifi_around.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>

3.然後是MianActivity:

package com.edu.tongji.wifi_around;

import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView)findViewById(R.id.textView);
        ScanWifiInfo();
        //寫線程
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                while(true)
                {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            ScanWifiInfo();
                        }
                    });
                    try{Thread.sleep(500);}catch(InterruptedException e){e.printStackTrace();}
                }
            }
        });
        t.start();
    }
    private void ScanWifiInfo(){
        WifiManager wifiManager= (WifiManager) getSystemService(WIFI_SERVICE);
        wifiManager.startScan(); //啓動掃描
        StringBuilder scanBuilder= new StringBuilder();
        List<ScanResult> scanResults=wifiManager.getScanResults();//搜索到的設備列表
        for (ScanResult scanResult : scanResults) {
            scanBuilder.append("\n設備名:"+scanResult.SSID
                    +"\n信號強度:"+wifiManager.calculateSignalLevel(scanResult.level,1001)+"\n");
        }
        textView.setText(scanBuilder)}
}


最後是效果圖:


wifi強度會實時改變


如有問題請在下方評論處留言。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章