From 59b8e0ce55f131f6a2f31d7f5de099ceda3d9dc5 Mon Sep 17 00:00:00 2001 From: liujing Date: Fri, 30 Jul 2021 11:45:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BD=91=E7=BB=9C=E4=BF=A1?= =?UTF-8?q?=E5=8F=B7=E5=BC=BA=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../network/utils/NetworkStatusUtil.java | 77 ++++++++++++++++--- .../mogo/module/check/view/CheckActivity.java | 10 ++- 2 files changed, 74 insertions(+), 13 deletions(-) diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/network/utils/NetworkStatusUtil.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/network/utils/NetworkStatusUtil.java index 286043c56f..a4ed3c6758 100644 --- a/foudations/mogo-utils/src/main/java/com/mogo/utils/network/utils/NetworkStatusUtil.java +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/network/utils/NetworkStatusUtil.java @@ -1,12 +1,21 @@ package com.mogo.utils.network.utils; import android.content.Context; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.net.wifi.WifiInfo; +import android.net.wifi.WifiManager; import android.os.Build; import android.telephony.PhoneStateListener; import android.telephony.SignalStrength; import android.telephony.TelephonyManager; import android.util.Log; +import com.mogo.utils.CommonUtils; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + /** * @author liujing * @description 网络状态监听 @@ -16,24 +25,72 @@ public class NetworkStatusUtil { private static PhoneStatListener phoneStatListener; private static int mSignalStrength; + private static SignalStrength signal; /** * 监听网络强度 */ - public static int networkState(Context context) { - TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - if (telephonyManager == null) { - telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + public static String networkState(Context context) { + + ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo info = connectivityManager.getActiveNetworkInfo(); + if (info != null && info.isAvailable()) { + String netWorkStatus = CommonUtils.getNetworkType(context); + + switch (info.getType()) { + case ConnectivityManager.TYPE_WIFI: + //wifi + WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); + WifiInfo connectionInfo = manager.getConnectionInfo(); + int rsSi = connectionInfo.getRssi(); + return String.valueOf(rsSi); + case ConnectivityManager.TYPE_MOBILE: + TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + if (telephonyManager == null) { + telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + } + if (phoneStatListener == null) { + phoneStatListener = new PhoneStatListener(); + } + telephonyManager.listen(phoneStatListener, PhoneStatListener.LISTEN_SIGNAL_STRENGTHS); + //移动网络,可以通过TelephonyManager来获取具体细化的网络类型 + if (netWorkStatus != "UNKNOWN") { + try { + if (signal == null) { + Log.e("CheckActivity", "getNetWorkInfo: signal为空"); + break; + } + Method method = signal.getClass().getMethod("getDbm"); + mSignalStrength = (int) method.invoke(signal); + if (mSignalStrength > -90) { + Log.e("CheckActivity", "getNetWorkInfo: 信号强度强"); + } else { + Log.e("CheckActivity", "getNetWorkInfo: 信号强度弱"); + } + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + + } else { + if (signal == null) { + break; + } + mSignalStrength = signal.getGsmSignalStrength(); + } + return String.valueOf(mSignalStrength); + } + } else { + return "UNKNOWN"; } - if (phoneStatListener == null) { - phoneStatListener = new PhoneStatListener(); - } - telephonyManager.listen(phoneStatListener, PhoneStatListener.LISTEN_SIGNAL_STRENGTHS); - return mSignalStrength; + return "UNKNOWN"; } /** - * 监听网络信号的强度变化 + * 监听非WiFi网络信号强度变化 */ static class PhoneStatListener extends PhoneStateListener { @Override diff --git a/modules/mogo-module-check/src/main/java/com/mogo/module/check/view/CheckActivity.java b/modules/mogo-module-check/src/main/java/com/mogo/module/check/view/CheckActivity.java index fe92c50f11..c4632be75f 100644 --- a/modules/mogo-module-check/src/main/java/com/mogo/module/check/view/CheckActivity.java +++ b/modules/mogo-module-check/src/main/java/com/mogo/module/check/view/CheckActivity.java @@ -35,7 +35,7 @@ public class CheckActivity extends AppCompatActivity { private ArrayList dataArrayList = new ArrayList(); private CheckItemInfo mCheckItemInfo = new CheckItemInfo(); private Context context; - private static int mSignalStrength; + private static String mSignalStrength; private Button mButton; @Override @@ -111,8 +111,12 @@ public class CheckActivity extends AppCompatActivity { //网络类型 String networkType = CommonUtils.getNetworkType(context); //网络强度 - mSignalStrength = NetworkStatusUtil.networkState(context); - Log.d(TAG, "网络类型:" + networkType + "网络强度:" + mSignalStrength); + if (mSignalStrength != "UNKNOWN") { + mSignalStrength = NetworkStatusUtil.networkState(context); + Log.d(TAG, "网络类型:" + networkType + "网络强度:" + mSignalStrength); + } else { + Log.d(TAG, "网络未连接"); + } }