android开发--WIFI应用开发

来源:互联网 发布:外国人对中国美女知乎 编辑:程序博客网 时间:2024/05/20 13:11

 手机系统打开WIFI可以搜索到附近的WIFI信息,第三方应用在代码中同样也可以实现,来查询WIFI信息。并且根据WIFI信号的强弱进行排序。

 1 适配器

package com.quvii.bell.adapter;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import com.quvii.bell.R;import android.content.Context;import android.net.wifi.ScanResult;import android.net.wifi.WifiManager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class WifiListAdapter extends BaseAdapter {protected Context mContext;protected List<ScanResult> mDatas;private LayoutInflater inflater;public WifiListAdapter(Context mContext, List<ScanResult> mDatas) {this.mContext = mContext;this.mDatas = mDatas;this.inflater = LayoutInflater.from(mContext);sortByLevel((ArrayList<ScanResult>) mDatas);}@Overridepublic int getCount() {return mDatas.size();}@Overridepublic Object getItem(int position) {return mDatas.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// 定义ViewHolderViewHolder viewHolder;if (convertView == null) {// convertView = mContext.viewHolder = new ViewHolder();convertView = inflater.inflate(R.layout.item_wifi_info, null);viewHolder.tvSSID = (TextView) convertView.findViewById(R.id.tvSSID);viewHolder.tvSign = (TextView) convertView.findViewById(R.id.tvSign);viewHolder.lvSign = (ImageView) convertView.findViewById(R.id.lvSign);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}viewHolder.tvSSID.setText(mDatas.get(position).SSID);//viewHolder.tvSign.setText(Math.abs(mDatas.get(position).level)+"");setLvSign( Math.abs(mDatas.get(position).level),viewHolder.lvSign );return convertView;}private void setLvSign(int level, ImageView lv) {if (level <= 50) {lv.setImageDrawable(mContext.getResources().getDrawable(R.drawable.wifi_4));} else if (50 < level && level <= 60) {lv.setImageDrawable(mContext.getResources().getDrawable(R.drawable.wifi_3));} else if (60 < level && level <= 70) {lv.setImageDrawable(mContext.getResources().getDrawable(R.drawable.wifi_2));} else if (level > 70) {lv.setImageDrawable(mContext.getResources().getDrawable(R.drawable.wifi_1));}}// 根据wifi的强弱排序private void sortByLevel(ArrayList<ScanResult> list) {Collections.sort(list, new Comparator<ScanResult>() {@Overridepublic int compare(ScanResult lhs, ScanResult rhs) {return rhs.level - lhs.level;}});}static class ViewHolder {TextView tvSSID ,tvSign;ImageView lvSign;}}
2 item  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="horizontal"     android:background="@drawable/selector_btn_syn"     android:gravity="center_vertical"    android:padding="10dp" >    <TextView         android:id="@+id/tvSSID"        android:layout_width="0dp"        android:layout_weight="1"        android:layout_height="40dp"        android:gravity="center_vertical"/>    <TextView         android:id="@+id/tvSign"        android:layout_width="wrap_content"        android:layout_height="wrap_content"         android:gravity="center_vertical"/>    <ImageView        android:id="@+id/lvSign"         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginRight="10dp"        />    <ImageView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/icon_arrowlistright"/>    </LinearLayout>

3 主页面 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" >        <android.support.v4.widget.SwipeRefreshLayout            android:id="@+id/srl"            android:layout_width="match_parent"            android:layout_height="match_parent" >            <ListView                android:id="@+id/lv"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:dividerHeight="3dp" >            </ListView>        </android.support.v4.widget.SwipeRefreshLayout>    </RelativeLayout></LinearLayout>
4 MainActivity

package com.quvii.bell.activity;import java.util.List;import com.quvii.bell.R;import com.quvii.bell.adapter.WifiListAdapter;import com.quvii.bell.app.BaseActivity;import com.quvii.bell.common.Final;import com.quvii.bell.common.WifiConnect;import com.quvii.bell.utils.LogUtils;import com.quvii.bell.utils.Utils;import android.app.Activity;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.net.wifi.ScanResult;import android.net.wifi.WifiManager;import android.os.Bundle;import android.os.Handler;import android.support.v4.widget.SwipeRefreshLayout;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;public class WifiInfoActivity extends BaseActivity implementsOnItemClickListener, OnClickListener, SwipeRefreshLayout.OnRefreshListener  {private SwipeRefreshLayout srl;private ListView mLv;private List<ScanResult> mDatas;private WifiListAdapter mAdapter;public static final String TAG = "WifiInfoActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_wifi_info);init();}private void init() {srl = (SwipeRefreshLayout) findViewById(R.id.srl);mLv = (ListView) findViewById(R.id.lv);srl.setOnRefreshListener(this);srl.setColorSchemeResources(android.R.color.holo_blue_bright,android.R.color.holo_green_light,android.R.color.holo_orange_light,android.R.color.holo_red_light);mLv.setOnItemClickListener(this);mDatas = getWifiListDatas(this);mAdapter = new WifiListAdapter(this, mDatas);mLv.setAdapter(mAdapter);}@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {}private List<ScanResult> getWifiListDatas(Context context) {WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);if (!mWifiManager.isWifiEnabled()) {toast("please open wifi connection");}return mWifiManager.getScanResults();}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.lvBack:finish();break;default:break;}}@Overridepublic void onRefresh() {new Handler().postDelayed(new Runnable() {@Overridepublic void run() {srl.setRefreshing(false);}}, 500);}}



0 0
原创粉丝点击