当前位置:   article > 正文

WIFI开启扫描热点_android.hardware.wifi

android.hardware.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>

  1. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
  2. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>


先贴出代码吧:

  1. package com.example.hejingzhou.wifidemo;
  2. import android.app.AlertDialog;
  3. import android.bluetooth.le.ScanResult;
  4. import android.content.Context;
  5. import android.content.DialogInterface;
  6. import android.content.Intent;
  7. import android.net.wifi.WifiManager;
  8. import android.os.Message;
  9. import android.provider.Settings;
  10. import android.support.v7.app.AppCompatActivity;
  11. import android.os.Bundle;
  12. import android.util.Log;
  13. import android.view.KeyEvent;
  14. import android.widget.ListView;
  15. import android.widget.TextView;
  16. import android.widget.Toast;
  17. import java.util.ArrayList;
  18. import java.util.List;
  19. import java.util.logging.Handler;
  20. public class MainActivity extends AppCompatActivity {
  21. private String TAG = this.getClass().getSimpleName();
  22. private WifiManager wifiManager;
  23. private AlertDialog.Builder alertDialogBuilder;
  24. private List<android.net.wifi.ScanResult> listView;
  25. public static TextView textViewResult;
  26. private ArrayList<String> arrayList = new ArrayList<String>();
  27. @Override
  28. protected void onCreate(Bundle savedInstanceState) {
  29. super.onCreate(savedInstanceState);
  30. setContentView(R.layout.activity_main);
  31. textViewResult = (TextView)findViewById(R.id.textView);
  32. wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);//取得系统服务项
  33. if(wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED){
  34. Scan();
  35. }else {
  36. Log.i(TAG, "WIFI未开启");
  37. wifiManager.setWifiEnabled(true);//直接开启Wifi
  38. while (wifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED){
  39. Log.i(TAG,"WIFI还没有打开");
  40. if(wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED){
  41. Scan();
  42. }
  43. }
  44. /**
  45. * 如果取消注释将自动跳转到开启WIFI界面
  46. */
  47. /*Toast.makeText(MainActivity.this,"您尚未开启WIFI,请开启WIFI",Toast.LENGTH_SHORT).show();
  48. Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
  49. startActivityForResult(intent, 0);*/
  50. textViewResult.setText("因为刷新Activity不知道怎么弄了,用的线程老是报错,所以只能在不关闭WIFI的情况下才能Scan");
  51. }
  52. }
  53. public void ShowDialog(){
  54. alertDialogBuilder = new AlertDialog.Builder(MainActivity.this);
  55. alertDialogBuilder.setTitle("退出");
  56. alertDialogBuilder.setMessage("退出时,需要关闭WIFI吗?");
  57. alertDialogBuilder.setIcon(R.drawable.ww);
  58. alertDialogBuilder.setPositiveButton("关闭", new DialogInterface.OnClickListener() {
  59. @Override
  60. public void onClick(DialogInterface dialog, int which) {
  61. wifiManager.setWifiEnabled(false); //退出软件时关闭WIFI
  62. onDestroy();
  63. System.exit(0);
  64. }
  65. });
  66. alertDialogBuilder.setNeutralButton("不退出", new DialogInterface.OnClickListener() {
  67. @Override
  68. public void onClick(DialogInterface dialog, int which) {
  69. return;
  70. }
  71. });
  72. alertDialogBuilder.setNegativeButton("不关闭", new DialogInterface.OnClickListener() {
  73. @Override
  74. public void onClick(DialogInterface dialog, int which) {
  75. onDestroy();
  76. System.exit(0);
  77. }
  78. });
  79. alertDialogBuilder.show();
  80. }
  81. @Override
  82. public boolean onKeyDown(int keyCode, KeyEvent event) {
  83. if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()==0){
  84. ShowDialog();
  85. }
  86. return super.onKeyDown(keyCode, event);
  87. }
  88. public void Scan(){
  89. Log.i(TAG, "WIFI已经开启");
  90. wifiManager.startScan();
  91. listView = wifiManager.getScanResults();
  92. for(int i=0;i<listView.size();i++){
  93. arrayList.add(listView.get(i).toString() + "\n\n");
  94. textViewResult.setText(String.valueOf(arrayList));
  95. }Log.i(TAG,""+arrayList);
  96. }
  97. }



本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号