欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android獲取移動(dòng)網(wǎng)絡(luò)信號(hào)強(qiáng)度的方法

 更新時(shí)間:2021年04月14日 08:54:16   作者:lebronzhen  
這篇文章主要介紹了Android獲取移動(dòng)網(wǎng)絡(luò)信號(hào)強(qiáng)度的方法,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下

判斷有沒有 SIM 卡

獲取移動(dòng)網(wǎng)絡(luò)的信號(hào),一定要判斷是否插了 SIM 卡,沒插卡肯定是沒法獲取的

    /**
     * 判斷是否包含SIM卡
     *
     * @return 狀態(tài)
     */
    public static boolean hasSimCard(Context context) {
        TelephonyManager telMgr = (TelephonyManager)
                context.getSystemService(Context.TELEPHONY_SERVICE);
        int simState = telMgr.getSimState();
        boolean result = true;
        switch (simState) {
            case TelephonyManager.SIM_STATE_ABSENT:
            case TelephonyManager.SIM_STATE_UNKNOWN:
                result = false; // 沒有SIM卡
                break;
        }
        return result;
    }

獲取信號(hào)強(qiáng)度

如果插了 SIM 卡,就可以通過下邊方法來獲取移動(dòng)網(wǎng)絡(luò)的信號(hào)強(qiáng)度(單位 dBM),使用的是 TelephonyManager 來監(jiān)聽

    private void getMobileNetworkSignal() {
        if (!PhoneUtils.hasSimCard(mcontext)) {
            logger.info("getMobileNetworkSignal: no sim card");
            return;
        }
        TelephonyManager mTelephonyManager = (TelephonyManager) BaseApplication.getAppContext().getSystemService(Context.TELEPHONY_SERVICE);
        if (mTelephonyManager != null) {
            mTelephonyManager.listen(new PhoneStateListener() {

                @Override
                public void onSignalStrengthsChanged(SignalStrength signalStrength) {
                    super.onSignalStrengthsChanged(signalStrength);
                    int asu = signalStrength.getGsmSignalStrength();
                    int lastSignal = -113 + 2 * asu;
                    if (lastSignal > 0) {
                        mobileNetworkSignal = lastSignal + "dBm";
                    }
                    logger.info("Current mobileNetworkSignal:" + lastSignal + " dBm");
                }
            }, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        }
    }

也可以添加網(wǎng)絡(luò)類型的判斷,來獲取是何種網(wǎng)絡(luò)的信號(hào)強(qiáng)度

int netWorkType = getNetWorkType(mContext);
switch (netWorkType) {
    case NETWORKTYPE_WIFI:
        mTextView.setText("當(dāng)前網(wǎng)絡(luò)為wifi,信號(hào)強(qiáng)度為:" + gsmSignalStrength);
        break;
    case NETWORKTYPE_2G:
        mTextView.setText("當(dāng)前網(wǎng)絡(luò)為2G移動(dòng)網(wǎng)絡(luò),信號(hào)強(qiáng)度為:" + gsmSignalStrength);
        break;
    case NETWORKTYPE_4G:
        mTextView.setText("當(dāng)前網(wǎng)絡(luò)為4G移動(dòng)網(wǎng)絡(luò),信號(hào)強(qiáng)度為:" + gsmSignalStrength);
        break;
    case NETWORKTYPE_NONE:
        mTextView.setText("當(dāng)前沒有網(wǎng)絡(luò),信號(hào)強(qiáng)度為:" + gsmSignalStrength);
        break;
    case -1:
        mTextView.setText("當(dāng)前網(wǎng)絡(luò)錯(cuò)誤,信號(hào)強(qiáng)度為:" + gsmSignalStrength);
        break;
}

用到的獲取網(wǎng)絡(luò)類型的方法:

public static int getNetWorkType(Context context) {
    int mNetWorkType = -1;
    ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = manager.getActiveNetworkInfo();
    if (networkInfo != null && networkInfo.isConnected()) {
        String type = networkInfo.getTypeName();
        if (type.equalsIgnoreCase("WIFI")) {
            mNetWorkType = NETWORKTYPE_WIFI;
        } else if (type.equalsIgnoreCase("MOBILE")) {
            return isFastMobileNetwork(context) ? NETWORKTYPE_4G : NETWORKTYPE_2G;
        }
    } else {
        mNetWorkType = NETWORKTYPE_NONE;//沒有網(wǎng)絡(luò)
    }
    return mNetWorkType;
}

/**
 * 判斷網(wǎng)絡(luò)類型
 */
private static boolean isFastMobileNetwork(Context context) {
    TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    if (telephonyManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_LTE) {
        return true;
    }
    return false;
}

最后添加必要權(quán)限即可

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

以上就是Android獲取移動(dòng)網(wǎng)絡(luò)信號(hào)強(qiáng)度的方法的詳細(xì)內(nèi)容,更多關(guān)于Android獲取網(wǎng)絡(luò)信號(hào)強(qiáng)度的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論