欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-03-11 23:16:49
Android Studio 基础 之 获取 Wifi 的状态,设置 Wifi 的开关状态,并监听 Wifi 的状态变化方法整理目录Android Studio 基础 之 获取 Wifi 的状态,设置 Wifi 的开关状态,并监听 Wifi 的状态变化方法整理一、简单介绍二、实现原理三、注意事项四、效果预览五、实现步骤六、关键代码一、简单介绍Android 开发中的一些基础操作,使用整理,便于后期使用。本节介绍,Android 开发中,......

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"/>


四、效果预览

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


五、实现步骤

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

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


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

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

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

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


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

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


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

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


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

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


六、关键代码

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