最近在做Android 连接 Wifi 打印机的功能,无意间看到这个列表功能,比较简单,就实现了一下,没有DEMO。
其实主要的就是使用 WifiManager 这个对象来进行操作。
实现很简单,添加一个页面 :activity_wifilist.xml
android:id="@+id/lst_wifi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true">
再添加一个 item : item_wifi_list.xml
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:id="@+id/txt_ssid"
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_weight="6" />
android:id="@+id/txt_rssi"
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_weight="1" />
页面搞定之后,新建一个Activity : MainActivity 随便搞的也就没有太过去注意命名
MainActivity :
public class MainActivity extends Activity {
ListView lst_wifi;
List mlist_wifi;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
init();
getWifiInfo();
super.onCreate(savedInstanceState);
}
private void init() {
// TODO Auto-generated method stub
lst_wifi = (ListView) findViewById(R.id.lst_wifi);
}
/**
*
* @Description:获取WIFI INFO
* @Title: MainActivity.java
* @author: Gift
* @date 2015年5月15日下午4:54:11
* @return void
*/
private void getWifiInfo() {
WifiManager mWifiManager = (WifiManager) this
.getSystemService(Context.WIFI_SERVICE);
if (!mWifiManager.isWifiEnabled()) {
System.out.println("No WiFi connection------->> Enabled");
mWifiManager.setWifiEnabled(true);
}
mlist_wifi = mWifiManager.getScanResults();
lst_wifi.setAdapter(new WifiListAdapter(this, mlist_wifi));
/**
* 这一块不关wifi列表的事,只是顺便获取出来而已
**/
WifiInfo mWifiInfo = mWifiManager.getConnectionInfo();
System.out.println("ipAddress-->>"
+ intIpToStrIp(mWifiInfo.getIpAddress()));// 原本是自己转换的
DhcpInfo mDhcpInfo = mWifiManager.getDhcpInfo();
System.out.println("serverAddress-->>"
+ android.text.format.Formatter
.formatIpAddress(mDhcpInfo.serverAddress));// 后来发现工具包里面有提供方法
}
/**
*
* @Description:转换ip地址
* @Title: MainActivity.java
* @author: Gift
* @date 2015年5月15日下午4:49:51
* @param ipAddress
* @return
* @return String
*/
private String intIpToStrIp(int ipAddress) {
return ((ipAddress & 0xff) + "." + (ipAddress >> 8 & 0xff) + "."
+ (ipAddress >> 16 & 0xff) + "." + (ipAddress >> 24 & 0xff));
}
public class WifiListAdapter extends BaseAdapter {
LayoutInflater mLayoutInflater;
List mlist_wifi;
public WifiListAdapter(Context context, List mlist_wifi) {
// TODO Auto-generated constructor stub
this.mLayoutInflater = LayoutInflater.from(context);
this.mlist_wifi = mlist_wifi;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mlist_wifi.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View mView = null;
mView = mLayoutInflater.inflate(R.layout.item_wifi_list, null);
ScanResult mScanResult = mlist_wifi.get(position);
TextView txt_ssid = (TextView) mView.findViewById(R.id.txt_ssid);
TextView txt_rssi = (TextView) mView.findViewById(R.id.txt_rssi);
txt_ssid.setText(mScanResult.SSID);
txt_rssi.setText(String.valueOf(Math.abs(mScanResult.level)));
return mView;
}
}
}
就这么简单,一个 WIFI 列表功能就实现了...