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
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"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.wifitest">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
本文地址:https://blog.csdn.net/u014361280/article/details/108151754
推荐阅读
-
Android Studio 基础 之 获取蓝牙Bluetooth 的状态,设置的蓝牙Bluetooth 的开关状态,并监听蓝牙Bluetooth 的状态变化方法整理
-
Unity Android 之 获取 Wifi 的状态,设置 Wifi 的开关状态,并监听 Wifi 的状态变化方法整理
-
Android Studio 基础 之 获取各个音量的最大值、最小值、以及当前音量值,并设置音量值,监听音量变化的方法整理
-
Unity Android 之 获取蓝牙Bluetooth 的状态,设置的蓝牙Bluetooth 的开关状态,并监听蓝牙Bluetooth 的状态变化方法整理
-
Android Studio 基础 之 获取蓝牙Bluetooth 的状态,设置的蓝牙Bluetooth 的开关状态,并监听蓝牙Bluetooth 的状态变化方法整理
-
Android Studio 基础之获取Wifi 的状态,设置 Wifi 的开关状态,并监听 Wifi 的状态变化方法整理