Android(安卓)Studio 基础 之 获取 Wifi 的状态,设置 Wifi 的开关状态,并监听 Wifi 的状态变化方法整理
16lz
2021-01-24
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 相关权限
四、效果预览
五、实现步骤
1、打开 Android Studio 新建一个工程,或者新建一个模块
2、默认操作,一路创建一个模块
3、创建一个 WifiUtil,编写获取Wifi状态,设置Wifi状态,和监听Wifi状态变化的方法
4、MainActivity ,测试 WifiUtil 封装的方法
5、打包,在设备上测试,效果如上
六、关键代码
1、WifiUtil
package com.example.wifitest;import android.bluetooth.BluetoothAdapter;import android.bluetooth.BluetoothDevice;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.net.wifi.WifiManager;import android.util.Log;import android.widget.Toast;public class WifiUtil { private static final String TAG = "Main"; private WifiManager _WifiManager; private Context _Context; private WifiStateBroadcastReceive mReceive; public WifiUtil(Context context) { _Context = context; _WifiManager = (WifiManager)_Context.getSystemService(Context.WIFI_SERVICE); } public boolean getWifiState() { // 获取蓝牙状态 return _WifiManager.isWifiEnabled(); } public boolean openWifi() { if (getWifiState()) return true; // 打开蓝牙 return _WifiManager.setWifiEnabled(true); } public boolean cloaseWifi() { if (!getWifiState()) return true; // 关闭蓝牙 return _WifiManager.setWifiEnabled(false); } public void registerWifiReceiver(){ if(mReceive == null){ mReceive = new WifiStateBroadcastReceive(); } IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); _Context.registerReceiver(mReceive, intentFilter); } public void unregisterWifiReceiver(){ if(mReceive != null){ _Context.unregisterReceiver(mReceive); mReceive = null; } } class WifiStateBroadcastReceive extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0); switch (wifiState) { case WifiManager.WIFI_STATE_DISABLED: Toast.makeText(context , "Wifi已关闭", Toast.LENGTH_SHORT).show(); Log.i(TAG, "onReceive: "+"Wifi已关闭"); break; case WifiManager.WIFI_STATE_DISABLING: Toast.makeText(context , "Wifi正在关闭", Toast.LENGTH_SHORT).show(); Log.i(TAG, "onReceive: "+"Wifi正在关闭..."); break; case WifiManager.WIFI_STATE_ENABLED: Toast.makeText(context , "Wifi已打开", Toast.LENGTH_SHORT).show(); Log.i(TAG, "onReceive: "+"Wifi已打开"); break; case WifiManager.WIFI_STATE_ENABLING: Toast.makeText(context , "Wifi正在打开", Toast.LENGTH_SHORT).show(); Log.i(TAG, "onReceive: "+"Wifi正在打开..."); break; case WifiManager.WIFI_STATE_UNKNOWN: break; } } }}
2、MainActivity
package com.example.wifitest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; WifiUtil _WifiUtil; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); _WifiUtil = new WifiUtil(this); Log.i(TAG, "onCreate: getWifiState() " + _WifiUtil.getWifiState()); _WifiUtil.cloaseWifi(); Log.i(TAG, "onCreate: getWifiState() " + _WifiUtil.getWifiState()); _WifiUtil.openWifi(); Log.i(TAG, "onCreate: getWifiState() " + _WifiUtil.getWifiState()); _WifiUtil.registerWifiReceiver(); } @Override protected void onDestroy() { _WifiUtil.unregisterWifiReceiver(); super.onDestroy(); }}
3、AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
更多相关文章
- Android开发中立即停止AsyncTask和Thread的一些办法
- Qt for Android(安卓)拉起微信登录、分享等功能
- Android(安卓)小应用之一个activity实现简易手电筒(内附免费源码)
- Android沉浸式模式实现导航栏与状态栏的隐藏,上滑呼出导航栏与状
- Android开发资源下载目录
- android 自定义闪退Dialog 收集闪退信息
- Android照相功能驱动层中HAL的实现(基于OK6410开发板+OV9650摄像
- Android多媒体开发 Pro Android(安卓)Media 第二章 创建自定义相
- Android多媒体开发 Pro Android(安卓)Media 第二章 创建自定义相