在实际开发中我们会经常需要获取周围WiFi热点,最近做了这个demo,写出来和大家一起分享一下吧。大体思路呢是这样的,首先WifiManger获取WiFi服务,然后将结果储存在ArrayList<ScanResult>中,好了,具体内容大家可以直接看代码:
MainActivity.java:
public class MainActivity extends AppCompatActivity {ArrayList<ScanResult> list;//存放周围wifi热点对象的列表WifiManager wifiManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);//获得系统wifi服务list = (ArrayList<ScanResult>)wifiManager.getScanResults();sortByLevel(list);init();}private void init(){TextView tv1=(TextView)findViewById(R.id.tv1);TextView tv2=(TextView)findViewById(R.id.tv2);TextView tv3=(TextView)findViewById(R.id.tv3);if (list.get(0).SSID != null && list.get(1).SSID != null){tv1.setText("信号最强为"+list.get(0).SSID);tv2.setText("信号第二位:"+list.get(1).SSID);tv3.setText("共有"+list.size()+"个wifi");}}//将搜索到的wifi根据信号强度从强到弱进行排序private void sortByLevel(ArrayList<ScanResult> list) {for(int i=0;i<list.size();i++)for(int j=1;j<list.size();j++){if(list.get(i).level<list.get(j).level)//level属性即为强度{ScanResult temp = null;temp = list.get(i);list.set(i, list.get(j));list.set(j, temp);}}}} 布局文件activity_main.xml: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/tv1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!" /><TextViewandroid:id="@+id/tv2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!" /><TextViewandroid:id="@+id/tv3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!" /></LinearLayout>
OK,就是这个样子吧。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。