当前位置:   article > 正文

Android Studio 基础 之 获取 Wifi 的状态,设置 Wifi 的开关状态,并监听 Wifi 的状态变化方法整理

Android Studio 基础 之 获取 Wifi 的状态,设置 Wifi 的开关状态,并监听 Wifi 的状态变化方法整理

 

 

Android Studio 基础 之 获取 Wifi 的状态,设置 Wifi 的开关状态,并监听 Wifi 的状态变化方法整理

 

目录

Android Studio 基础 之 获取 Wifi 的状态,设置 Wifi 的开关状态,并监听 Wifi 的状态变化方法整理

一、简单介绍

二、实现原理

三、注意事项

四、效果预览

五、实现步骤

六、关键代码


 

一、简单介绍

Android 开发中的一些基础操作,使用整理,便于后期使用。

本节介绍,Android 开发中,获取手机设备的蓝牙Bluetooth的状态,并设置蓝牙Bluetooth开关,监听蓝牙Bluetooth的状态变化,方法不唯一,欢迎指正。

 

二、实现原理

1、getSystemService(Context.WIFI_SERVICE) 获取 Wifi 管理器 WifiManager

2、WifiManager.isWifiEnabled() 获取 Wifi 状态

3、WifiManager.setWifiEnabled(true)/WifiManager.setWifiEnabled(false) 设置 Wifi 开关

4、使用广播监听 WifiManager.WIFI_STATE_CHANGED_ACTION 网络Wifi 的状态变化

 

三、注意事项

1、需要添加 Wifi 相关权限

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

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

 

四、效果预览

 

五、实现步骤

1、打开 Android Studio 新建一个工程,或者新建一个模块

 

2、默认操作,一路创建一个模块

 

3、创建一个 WifiUtil,编写获取Wifi状态,设置Wifi状态,和监听Wifi状态变化的方法

 

4、MainActivity ,测试 WifiUtil 封装的方法

 

5、打包,在设备上测试,效果如上

 

六、关键代码

1、WifiUtil

  1. package com.example.wifitest;
  2. import android.bluetooth.BluetoothAdapter;
  3. import android.bluetooth.BluetoothDevice;
  4. import android.content.BroadcastReceiver;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.content.IntentFilter;
  8. import android.net.wifi.WifiManager;
  9. import android.util.Log;
  10. import android.widget.Toast;
  11. public class WifiUtil {
  12. private static final String TAG = "Main";
  13. private WifiManager _WifiManager;
  14. private Context _Context;
  15. private WifiStateBroadcastReceive mReceive;
  16. public WifiUtil(Context context) {
  17. _Context = context;
  18. _WifiManager = (WifiManager)_Context.getSystemService(Context.WIFI_SERVICE);
  19. }
  20. public boolean getWifiState() {
  21. // 获取蓝牙状态
  22. return _WifiManager.isWifiEnabled();
  23. }
  24. public boolean openWifi() {
  25. if (getWifiState()) return true;
  26. // 打开蓝牙
  27. return _WifiManager.setWifiEnabled(true);
  28. }
  29. public boolean cloaseWifi() {
  30. if (!getWifiState()) return true;
  31. // 关闭蓝牙
  32. return _WifiManager.setWifiEnabled(false);
  33. }
  34. public void registerWifiReceiver(){
  35. if(mReceive == null){
  36. mReceive = new WifiStateBroadcastReceive();
  37. }
  38. IntentFilter intentFilter = new IntentFilter();
  39. intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
  40. _Context.registerReceiver(mReceive, intentFilter);
  41. }
  42. public void unregisterWifiReceiver(){
  43. if(mReceive != null){
  44. _Context.unregisterReceiver(mReceive);
  45. mReceive = null;
  46. }
  47. }
  48. class WifiStateBroadcastReceive extends BroadcastReceiver {
  49. @Override
  50. public void onReceive(Context context, Intent intent) {
  51. int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
  52. switch (wifiState) {
  53. case WifiManager.WIFI_STATE_DISABLED:
  54. Toast.makeText(context , "Wifi已关闭", Toast.LENGTH_SHORT).show();
  55. Log.i(TAG, "onReceive: "+"Wifi已关闭");
  56. break;
  57. case WifiManager.WIFI_STATE_DISABLING:
  58. Toast.makeText(context , "Wifi正在关闭", Toast.LENGTH_SHORT).show();
  59. Log.i(TAG, "onReceive: "+"Wifi正在关闭...");
  60. break;
  61. case WifiManager.WIFI_STATE_ENABLED:
  62. Toast.makeText(context , "Wifi已打开", Toast.LENGTH_SHORT).show();
  63. Log.i(TAG, "onReceive: "+"Wifi已打开");
  64. break;
  65. case WifiManager.WIFI_STATE_ENABLING:
  66. Toast.makeText(context , "Wifi正在打开", Toast.LENGTH_SHORT).show();
  67. Log.i(TAG, "onReceive: "+"Wifi正在打开...");
  68. break;
  69. case WifiManager.WIFI_STATE_UNKNOWN:
  70. break;
  71. }
  72. }
  73. }
  74. }

 

2、MainActivity

  1. package com.example.wifitest;
  2. import android.support.v7.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. import android.util.Log;
  5. public class MainActivity extends AppCompatActivity {
  6. private static final String TAG = "MainActivity";
  7. WifiUtil _WifiUtil;
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.activity_main);
  12. _WifiUtil = new WifiUtil(this);
  13. Log.i(TAG, "onCreate: getWifiState() " + _WifiUtil.getWifiState());
  14. _WifiUtil.cloaseWifi();
  15. Log.i(TAG, "onCreate: getWifiState() " + _WifiUtil.getWifiState());
  16. _WifiUtil.openWifi();
  17. Log.i(TAG, "onCreate: getWifiState() " + _WifiUtil.getWifiState());
  18. _WifiUtil.registerWifiReceiver();
  19. }
  20. @Override
  21. protected void onDestroy() {
  22. _WifiUtil.unregisterWifiReceiver();
  23. super.onDestroy();
  24. }
  25. }

 

3、AndroidManifest.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.example.wifitest">
  4. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
  5. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
  6. <application
  7. android:allowBackup="true"
  8. android:icon="@mipmap/ic_launcher"
  9. android:label="@string/app_name"
  10. android:roundIcon="@mipmap/ic_launcher_round"
  11. android:supportsRtl="true"
  12. android:theme="@style/AppTheme">
  13. <activity android:name=".MainActivity">
  14. <intent-filter>
  15. <action android:name="android.intent.action.MAIN" />
  16. <category android:name="android.intent.category.LAUNCHER" />
  17. </intent-filter>
  18. </activity>
  19. </application>
  20. </manifest>

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/300759
推荐阅读
相关标签
  

闽ICP备14008679号