Не удается получить идентификатор соседней ячейки (Android) - PullRequest
0 голосов
/ 10 июня 2019

Я работаю над небольшим приложением, которое получает информацию о текущих и соседних ячейках базовых станций сети.

Я могу получить cell_id моей текущей базовой станции (isRegistered == true), но для всех остальных я получаюInt.MAXVALUE

Любое решение, как получить идентификаторы соседних ячеек?

Я пробовал другое приложение с кодом Java, но результат тот же.Нет другого способа получить информацию о сети, кроме менеджера телефонии, и я понятия не имею, что делать сейчас.

        val tel = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
        val infos = tel.allCellInfo

        for (i in infos.indices) {


            try {
                val info = infos[i]
                if (info is CellInfoGsm)
                //if GSM connection
                {
                    val identityGsm = info.cellIdentity
                    if(identityGsm.cid != Int.MAX_VALUE && identityGsm.cid != Int.MAX_VALUE)
                        cellId = identityGsm.cid

                    val gsm = info.cellSignalStrength

                    if(gsm.asuLevel != Int.MAX_VALUE)
                        asuLevel = gsm.asuLevel

                    if(gsm.dbm != Int.MAX_VALUE)
                        dbm = gsm.dbm

                    if(gsm.level != Int.MAX_VALUE)
                        level = gsm.level

                    if(gsm.timingAdvance != Int.MAX_VALUE)
                        timingAdvance = gsm.timingAdvance

                    technogy = "gsm"

                } else if (info is CellInfoLte)
                //if LTE connection
                {
                    val identityLte = info.cellIdentity

                    identityLte.pci
                    if(identityLte.ci != Int.MAX_VALUE)
                        cellId = identityLte.ci

                    val lte = info.cellSignalStrength

                    if(lte.asuLevel != Int.MAX_VALUE)
                        asuLevel = lte.asuLevel

                    if(lte.dbm != Int.MAX_VALUE)
                        dbm = lte.dbm

                    if(lte.level != Int.MAX_VALUE)
                        level = lte.level

                    if(lte.timingAdvance != Int.MAX_VALUE )
                        timingAdvance = lte.timingAdvance


                    //LTE stuff
                    if(lte.rsrp != Int.MAX_VALUE)
                        rsrp = lte.rsrp

                    if(lte.rsrq != Int.MAX_VALUE)
                        rsrq = lte.rsrq

                    if(lte.rssnr != Int.MAX_VALUE)
                        rssnr = lte.rssnr

                    technogy = "lte"
                    //call whatever you want from lte / identityLte
                } else if (info is CellInfoWcdma)
                //if WCDMA connection
                {
                    val identityWcdma = info.cellIdentity
                    if(identityWcdma.cid != Int.MAX_VALUE)
                        cellId = identityWcdma.cid

                    val wcdma = info.cellSignalStrength

                    if(wcdma.asuLevel != Int.MAX_VALUE)
                        asuLevel = wcdma.asuLevel

                    if(wcdma.dbm != Int.MAX_VALUE)
                        dbm = wcdma.dbm

                    if(wcdma.level != Int.MAX_VALUE)
                        level = wcdma.level

                    technogy = "wcdma"

                }


                if(cellId != Int.MAX_VALUE){
                    if (info.isRegistered) { //spI'm connected to this cell
                        networkCellInfo.CellId = cellId.toString()
                    }

                    var neighbor = NeighbourCellInfo()
                    neighbor.RSRQ = rsrq
                    neighbor.RSRP = rsrp
                    neighbor.RSSNR = rssnr
                    neighbor.AsuLevel = asuLevel
                    neighbor.Dbm = dbm
                    neighbor.Level = level
                    neighbor.CellId = cellId
                    neighbor.Technology = technogy

                    neihgbors += neighbor

                }
            } catch (ex: Exception) {
                Log.d(TAG + " cells:", ex.message)
            }

        }

Мы получаем значения идентификаторов и сильных сторон для каждой ячейки, нам нужно только получить cell_id.

...