public class WifiConfigActivity extends BaseActivity { private EditText mET_WifiName; private EditText mET_WifiPassword; private String wifiName; private String wifiPassword; private WifiAdmin wifiManager; private List<ScanResult> wifiList; private MyAdapter myAdapter; private ListView dialog_ListView; private Dialog dialog; @SuppressLint("HandlerLeak") private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0) { if (dialog.isShowing()) { if (wifiList == null) { MyApplication.Toaster("wifi未打开!"); handler.sendEmptyMessageDelayed(0, 2000); } else { if (wifiAdmin != null) { wifiAdmin = null; } wifiAdmin = new WifiAdmin(WifiConfigActivity.this); wifiAdmin.startScan(); wifiList = wifiAdmin.getWifiList(); for (int i = 0; i < wifiList.size() - 1; i++) { for (int j = wifiList.size() - 1; j > i; j--) { if (wifiList.get(j).SSID.equals(wifiList.get(i).SSID)) { wifiList.remove(j); } } } if (isWifiConnect()) { String temp = ""; String s = wifiAdmin.getWifiInfo().split(",")[0].split(":")[1].trim(); for (int i = 0; i < wifiList.size() - 1; i++) { if (wifiList.get(i).SSID.equals(s)) { if (i != 0) { temp = wifiList.get(0).SSID; wifiList.get(0).SSID = wifiList.get(i).SSID; wifiList.get(i).SSID = temp; } } } } myAdapter.setData(wifiList); myAdapter.notifyDataSetChanged(); /*dialog_ListView.setAdapter(myAdapter);*/ handler.sendEmptyMessageDelayed(0, 1000); } } } } }; private WifiAdmin wifiAdmin; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wifi_config); initView(); } @Override protected void onResume() { super.onResume(); hideScreenSaver(); } private void initView() { mSetTitleText("Wifi配置"); mET_WifiName = (EditText) findViewById(R.id.et_wifi_name); mET_WifiPassword = (EditText) findViewById(R.id.et_wifi_password); wifiManager = new WifiAdmin(this); String wifiConfig = MySharedPreferences.getAIUIWifi(); if (wifiConfig != null) { String[] wifi = wifiConfig.split("&"); mET_WifiName.setText(wifi[0]); mET_WifiName.setSelection(wifi[0].length()); mET_WifiPassword.setText(wifi[1]); } } public void myOnClick(View view) { wifiName = mET_WifiName.getText().toString(); wifiPassword = mET_WifiPassword.getText().toString(); if (!wifiName.equals("") && !wifiPassword.equals("")) { boolean b = wifiManager.addNetwork(wifiManager.CreateWifiInfo(wifiName, wifiPassword, 3)); if (b) { MySharedPreferences.setAIUIWifi(wifiName + "&" + wifiPassword); Intent intent = new Intent(Constant.ConnectAIUIWifi); sendBroadcast(intent); MyApplication.Toaster("Wifi配置成功"); } else { MyApplication.Toaster("密码错误,请重新输入"); } } else { MyApplication.Toaster("Wifi名称与密码均不能为空"); } } public void scanWifi(View view) { WifiConnectDialog(); } /** * wifi验证dialog */ public void WifiConnectDialog() { dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); Window window = dialog.getWindow(); window.setGravity(Gravity.CENTER); window.setBackgroundDrawable(new BitmapDrawable()); dialog.setCanceledOnTouchOutside(true); dialog.show(); window.setLayout(500, 1200); View dialogView = LayoutInflater.from(this).inflate(R.layout.dialog_wifilist, null); dialog.addContentView(dialogView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams .WRAP_CONTENT)); dialog_ListView = (ListView) dialogView.findViewById(R.id.dialog_listView); wifiManager.openWifi(); myAdapter = new MyAdapter(getApplicationContext()); WifiScanList(); } public void WifiScanList() { wifiManager.startScan(); wifiList = wifiManager.getWifiList(); for (int i = 0; i < wifiList.size() - 1; i++) { for (int j = wifiList.size() - 1; j > i; j--) { if (wifiList.get(j).SSID.equals(wifiList.get(i).SSID)) { wifiList.remove(j); } } } if (isWifiConnect()) { String temp = ""; String s = wifiManager.getWifiInfo().split(",")[0].split(":")[1].trim(); for (int i = 0; i < wifiList.size() - 1; i++) { if (wifiList.get(i).SSID.equals(s)) { if (i != 0) { temp = wifiList.get(0).SSID; wifiList.get(0).SSID = wifiList.get(i).SSID; wifiList.get(i).SSID = temp; } } } } if (wifiList == null) { MyApplication.Toaster("wifi未打开!"); } else { myAdapter.setData(wifiList); dialog_ListView.setAdapter(myAdapter); handler.sendEmptyMessageDelayed(0, 200); } } public class MyAdapter extends BaseAdapter { LayoutInflater inflater; List<ScanResult> list; public MyAdapter(Context context) { // TODO Auto-generated constructor stub this.inflater = LayoutInflater.from(context); } public void setData(List<ScanResult> list) { this.list = list; } @Override public int getCount() { // TODO Auto-generated method stub return list.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 final ScanResult scanResult = list.get(position); ViewHolder viewHolder; if (null == convertView) { convertView = View.inflate(WifiConfigActivity.this, R.layout.item_wifi_list, null); viewHolder = new ViewHolder(); viewHolder.textView = (TextView) convertView.findViewById(R.id.textView); viewHolder.tvConfigured = (TextView) convertView.findViewById(R.id.tv_configured); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } if (position == 0) { if (isWifiConnect()) { viewHolder.tvConfigured.setVisibility(View.VISIBLE); } else { viewHolder.tvConfigured.setVisibility(View.GONE); } } else { viewHolder.tvConfigured.setVisibility(View.GONE); } viewHolder.textView.setText(scanResult.SSID); convertView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss(); mET_WifiName.setText(scanResult.SSID); mET_WifiPassword.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); } }); return convertView; } } static class ViewHolder { TextView textView; TextView tvConfigured; } /** * 检查wifi是否处开连接状态 * * @return */ public boolean isWifiConnect() { ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mWifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); return mWifiInfo.isConnected(); } @Override protected void onDestroy() { super.onDestroy(); if (dialog != null) { dialog = null; } handler.removeCallbacksAndMessages(null); } }
列表布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@null" android:gravity="center"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:background="@drawable/dialog_round_bg_shape" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:paddingBottom="10dp" android:paddingLeft="20dp" android:paddingTop="10dp" android:text="Wifi列表" android:textColor="#000" android:textSize="20sp" android:textStyle="bold"/> <ListView android:id="@+id/dialog_listView" android:layout_width="match_parent" android:layout_height="wrap_content"> </ListView> </LinearLayout> </RelativeLayout>
activity布局
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.haribit.media.activity.WifiConfigActivity"> <com.haribit.media.view.CustomerTitle android:id="@+id/customerTitle" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="116dp" android:layout_marginStart="16dp" android:text="Wifi 名称:" app:layout_constraintBottom_toBottomOf="@+id/et_wifi_name" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/et_wifi_name"/> <EditText android:id="@+id/et_wifi_name" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:ems="10" android:enabled="false" android:hint="请输入Wifi名称" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toStartOf="@+id/btn_scanwifi" app:layout_constraintStart_toEndOf="@+id/textView5" app:layout_constraintTop_toBottomOf="@+id/customerTitle"/> <Button android:id="@+id/btn_scanwifi" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:onClick="scanWifi" android:text="搜索Wifi" app:layout_constraintBottom_toBottomOf="@+id/et_wifi_name" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@+id/et_wifi_name"/> <TextView android:id="@+id/textView6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="16dp" android:layout_marginStart="16dp" android:text="Wifi 密码:" app:layout_constraintBottom_toBottomOf="@+id/et_wifi_password" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/et_wifi_password"/> <EditText android:id="@+id/et_wifi_password" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:layout_marginStart="8dp" android:layout_marginTop="16dp" android:ems="10" android:hint="请输入Wifi密码" android:inputType="textPersonName" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/textView6" app:layout_constraintTop_toBottomOf="@+id/et_wifi_name"/> <Button android:id="@+id/button" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="24dp" android:onClick="myOnClick" android:text="连接并保存" android:textSize="18sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/et_wifi_password"/> </android.support.constraint.ConstraintLayout>