Как получить силу сигнала Dual sim с помощью kotlin - PullRequest
0 голосов
/ 07 ноября 2019

Используя прослушиватель состояния телефона, я получаю уровень сигнала сима по умолчанию, как узнать уровень сигнала второго сима. Пожалуйста, помогите мне найти эту проблему

, а также я использовал Telemetry manager, но я не получаю второй уровень сигнала сима

val phoneStateListener: PhoneStateListener = object : PhoneStateListener() {
    override fun onServiceStateChanged(serviceState: ServiceState) {
        Timber.d("Current cell state : ${serviceState.state}")
        }

    override fun onSignalStrengthsChanged(signalStrength: SignalStrength) 
        {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            Timber.d("Current cell signal: ${signalStrength.level}")
               } else {
      Timber.d("Current cell signal:${signalStrength.gsmSignalStrength}")
        }
    }
}


telephonyManager = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE or PhoneStateListener.LISTEN_SIGNAL_STRENGTHS)

1 Ответ

0 голосов
/ 08 ноября 2019

Я получил решение выше моего вопроса

        fun getRegisteredCellInfo(cellInfos: MutableList<CellInfo>): ArrayList<CellInfo> {
    val registeredCellInfos = ArrayList<CellInfo>()
    if (cellInfos.isNotEmpty()) {
        for (i in cellInfos.indices) {
            if (cellInfos[i].isRegistered) {
                registeredCellInfos.add(cellInfos[i])
            }
        }
    }
    return registeredCellInfos
}



fun getNetworkStrength(): Pair<Int, Int> {

    var strength1 = -1
    var strength2 = -1


    val manager = getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE) as SubscriptionManager


    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

        val telephonyManager = applicationContext.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager


        if (telephonyManager.allCellInfo != null) {


            val allCellinfo = telephonyManager.allCellInfo
            val activeSubscriptionInfoList = manager.activeSubscriptionInfoList

           val regCellInfo= getRegisteredCellInfo(allCellinfo)

                activeSubscriptionInfoList.forEachIndexed { Subindex, subs ->

                    if (activeSubscriptionInfoList.size >= 2) {

                        if (regCellInfo.size >= 2) {

                            if (subs.simSlotIndex == 0) {

                                if (subs.carrierName != "No service") {


                                    strength1 = when (val info1 = regCellInfo[0]) {
                                        is CellInfoLte -> info1.cellSignalStrength.dbm
                                        is CellInfoGsm -> info1.cellSignalStrength.dbm
                                        is CellInfoCdma -> info1.cellSignalStrength.dbm
                                        is CellInfoWcdma -> info1.cellSignalStrength.dbm
                                        else -> 0
                                    }

                                    Timber.i("subs $subs")

                                    Timber.i("sim1   ${subs.carrierName}  ${subs.mnc}  $strength1")
                                } else {

                                    strength1 = -1
                                }

                            } else if (subs.simSlotIndex == 1) {

                                if (subs.carrierName != "No service") {

                                    strength2 = when (val info2 = regCellInfo[1]) {
                                        is CellInfoLte -> info2.cellSignalStrength.dbm
                                        is CellInfoGsm -> info2.cellSignalStrength.dbm
                                        is CellInfoCdma -> info2.cellSignalStrength.dbm
                                        is CellInfoWcdma -> info2.cellSignalStrength.dbm
                                        else -> 0
                                    }

                                    Timber.i("sim2   ${subs.carrierName}  $strength2")
                                } else {

                                    strength2 = -1
                                }

                            }

                        }
                    }else if(activeSubscriptionInfoList.size == 1)
                    {

                        if(regCellInfo.size >= 1) {

                            if (subs.simSlotIndex == 0) {

                                if (subs.carrierName != "No service") {


                                    strength1 = when (val info1 = regCellInfo[0]) {
                                        is CellInfoLte -> info1.cellSignalStrength.level
                                        is CellInfoGsm -> info1.cellSignalStrength.level
                                        is CellInfoCdma -> info1.cellSignalStrength.level
                                        is CellInfoWcdma -> info1.cellSignalStrength.level
                                        else -> 0
                                    }

                                    Timber.i("subs $subs")

                                    Timber.i("sim1   ${subs.carrierName}  ${subs.mnc}  $strength1")
                                } else {

                                    strength1 = -1
                                }

                            }
                        }

                        strength2 = -2

                    }
                }

            }
        }

    Timber.i("final strenght   sim1 $strength1  sim2 $strength2")

    return Pair(strength1, strength2)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...