WIFI开启扫描热点

我只想简单的认识一下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);
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值