亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android獲取移動網(wǎng)絡(luò)信號強度的方法

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

判斷有沒有 SIM 卡

獲取移動網(wǎng)絡(luò)的信號,一定要判斷是否插了 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;
    }

獲取信號強度

如果插了 SIM 卡,就可以通過下邊方法來獲取移動網(wǎng)絡(luò)的信號強度(單位 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ò)的信號強度

int netWorkType = getNetWorkType(mContext);
switch (netWorkType) {
    case NETWORKTYPE_WIFI:
        mTextView.setText("當(dāng)前網(wǎng)絡(luò)為wifi,信號強度為:" + gsmSignalStrength);
        break;
    case NETWORKTYPE_2G:
        mTextView.setText("當(dāng)前網(wǎng)絡(luò)為2G移動網(wǎng)絡(luò),信號強度為:" + gsmSignalStrength);
        break;
    case NETWORKTYPE_4G:
        mTextView.setText("當(dāng)前網(wǎng)絡(luò)為4G移動網(wǎng)絡(luò),信號強度為:" + gsmSignalStrength);
        break;
    case NETWORKTYPE_NONE:
        mTextView.setText("當(dāng)前沒有網(wǎng)絡(luò),信號強度為:" + gsmSignalStrength);
        break;
    case -1:
        mTextView.setText("當(dāng)前網(wǎng)絡(luò)錯誤,信號強度為:" + 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獲取移動網(wǎng)絡(luò)信號強度的方法的詳細內(nèi)容,更多關(guān)于Android獲取網(wǎng)絡(luò)信號強度的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android自定義view倒計時60秒

    Android自定義view倒計時60秒

    這篇文章主要為大家詳細介紹了Android自定義view倒計時60秒,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Android編程之藍牙測試實例

    Android編程之藍牙測試實例

    這篇文章主要介紹了Android編程之藍牙測試,較為詳細的分析了Android藍牙測試的相關(guān)運行環(huán)境與調(diào)試技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • Android開發(fā)實現(xiàn)ScrollView中嵌套兩個ListView的方法

    Android開發(fā)實現(xiàn)ScrollView中嵌套兩個ListView的方法

    這篇文章主要介紹了Android開發(fā)實現(xiàn)ScrollView中嵌套兩個ListView的方法,結(jié)合實例形式分析了Android ScrollView中嵌套兩個ListView的操作技巧與相關(guān)注意事項,需要的朋友可以參考下
    2017-11-11
  • 使用adb命令向Android模擬器中導(dǎo)入通訊錄聯(lián)系人的方法

    使用adb命令向Android模擬器中導(dǎo)入通訊錄聯(lián)系人的方法

    這篇文章主要介紹了使用adb命令向Android模擬器中導(dǎo)入通訊錄聯(lián)系人的方法,實例分析了導(dǎo)入通訊錄存儲文件的技巧,需要的朋友可以參考下
    2015-01-01
  • Android ViewFlipper的詳解及實例

    Android ViewFlipper的詳解及實例

    這篇文章主要介紹了Android ViewFlipper的詳解及實例的相關(guān)資料,通過本文希望能幫助大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • Android藍牙開發(fā)深入解析

    Android藍牙開發(fā)深入解析

    由于近期正在開發(fā)一個通過藍牙進行數(shù)據(jù)傳遞的模塊,在參考了有關(guān)資料,并詳細閱讀了Android的官方文檔后,總結(jié)了Android中藍牙模塊的使用
    2013-10-10
  • Android自定義相機界面的實現(xiàn)代碼

    Android自定義相機界面的實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了Android自定義相機界面的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android開發(fā)中模仿qq列表信息滑動刪除功能

    Android開發(fā)中模仿qq列表信息滑動刪除功能

    這篇文章主要介紹了Android開發(fā)中模仿qq列表信息滑動刪除功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-01-01
  • Android編程中Tween動畫和Frame動畫實例分析

    Android編程中Tween動畫和Frame動畫實例分析

    這篇文章主要介紹了Android編程中Tween動畫和Frame動畫,結(jié)合實例形式較為詳細的分析了Android中Tween動畫和Frame動畫的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2015-12-12
  • Android Studio中debug功能詳解

    Android Studio中debug功能詳解

    這篇文章主要為大家詳細介紹了Android Studio中debug功能的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評論