赞
踩
我只想简单的认识一下WIFI基础,就看了会API然后,就瞎写,写出来后bug乱出,还有一些以前学过的基础竟然给忘了。
这个只是WIFI简单的开启关闭扫描,没有设计到核心的东西。留起来吧,以后用到就不用翻别人的资料了。
写完后就出现一个大问题,就是在你没有开启WIFI的条件下,这个是出不来的,我写的是在没有WIFI的环境下自动打开WIFI但是硬件的启动速度没法和软件的速度走的,所以在扫描的时候,如果WIFI还没有启动开,就造成扫不到设备。本来感觉是一个简单问题,但是思想太固执或者就不会,所以没有完成这个大问题,我尝试着有if while dowhile Activity生命周期还有线程还是不行。睡之前把这个部分问题得查查资料,看看怎么弄。
里面还有一个简单的设计,就是Back键的退出设置,大部分APP都是这样配置做的,今天一想,就查查实现了吧,很简单就是当back按下&& 第一次按下就展示这个对话框。
Note:
<manifest ...> <uses-feature android:name="android.hardware.wifi" /> ... </manifest>
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
先贴出代码吧:
- package com.example.hejingzhou.wifidemo;
-
- import android.app.AlertDialog;
- import android.bluetooth.le.ScanResult;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.net.wifi.WifiManager;
- import android.os.Message;
- import android.provider.Settings;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.widget.ListView;
- import android.widget.TextView;
- import android.widget.Toast;
-
- import java.util.ArrayList;
- import java.util.List;
- import java.util.logging.Handler;
-
- public class MainActivity extends AppCompatActivity {
- private String TAG = this.getClass().getSimpleName();
- private WifiManager wifiManager;
- private AlertDialog.Builder alertDialogBuilder;
- private List<android.net.wifi.ScanResult> listView;
- public static TextView textViewResult;
- private ArrayList<String> arrayList = new ArrayList<String>();
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
-
- textViewResult = (TextView)findViewById(R.id.textView);
- wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);//取得系统服务项
-
- if(wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED){
- Scan();
-
- }else {
-
- Log.i(TAG, "WIFI未开启");
- wifiManager.setWifiEnabled(true);//直接开启Wifi
- while (wifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED){
- Log.i(TAG,"WIFI还没有打开");
- if(wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED){
-
- Scan();
- }
- }
- /**
- * 如果取消注释将自动跳转到开启WIFI界面
- */
- /*Toast.makeText(MainActivity.this,"您尚未开启WIFI,请开启WIFI",Toast.LENGTH_SHORT).show();
- Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
- startActivityForResult(intent, 0);*/
- textViewResult.setText("因为刷新Activity不知道怎么弄了,用的线程老是报错,所以只能在不关闭WIFI的情况下才能Scan");
-
- }
- }
-
- public void ShowDialog(){
- alertDialogBuilder = new AlertDialog.Builder(MainActivity.this);
- alertDialogBuilder.setTitle("退出");
- alertDialogBuilder.setMessage("退出时,需要关闭WIFI吗?");
- alertDialogBuilder.setIcon(R.drawable.ww);
- alertDialogBuilder.setPositiveButton("关闭", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- wifiManager.setWifiEnabled(false); //退出软件时关闭WIFI
- onDestroy();
- System.exit(0);
- }
- });
- alertDialogBuilder.setNeutralButton("不退出", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- return;
- }
- });
- alertDialogBuilder.setNegativeButton("不关闭", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- onDestroy();
- System.exit(0);
- }
- });
- alertDialogBuilder.show();
- }
-
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()==0){
- ShowDialog();
-
- }
- return super.onKeyDown(keyCode, event);
- }
- public void Scan(){
- Log.i(TAG, "WIFI已经开启");
- wifiManager.startScan();
- listView = wifiManager.getScanResults();
- for(int i=0;i<listView.size();i++){
- arrayList.add(listView.get(i).toString() + "\n\n");
- textViewResult.setText(String.valueOf(arrayList));
- }Log.i(TAG,""+arrayList);
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。