2015-08-25 5 views
0

J'ai une méthode qui renvoie l'identifiant de cellule pour le périphérique LTE, mais sur certains périphériques, il renvoie -1. Voici la méthode:CellIdentityLte getCi() retourne -1 dans android

public int getCellId() { 
    int cellId = Integer.MAX_VALUE; 
    CellInfo cellInfo = null; 
    List<CellInfo> allCellInfo = telephonyManager.getAllCellInfo(); 
    if(allCellInfo!= null && allCellInfo.size()>0) 
     cellInfo = allCellInfo.get(0); 
    if (cellInfo instanceof CellInfoLte) { 
     CellInfoLte cellInfoLte = (CellInfoLte) cellInfo; 
     if (cellInfoLte != null) { 
      cellId = cellInfoLte.getCellIdentity().getCi(); 
     } 
    } 
    return cellId; 
} 

Répondre

0

Vous avez correctement mis en œuvre, malheureusement pas tous les fabricants mettent en œuvre correctement tous les API Android, en particulier autour de la zone de la téléphonie. Parfois, toutes les valeurs LTE seront -1 également, parfois juste l'IC.

+0

Merci pour la réponse. J'utilise Samsung Core Prime et LG Spirit, la plupart du temps il renvoie un identifiant de cellule valide mais dans certains cas, il renvoie -1. Quelle pourrait en être la raison? Pouvez-vous donner une référence pour cela? –

+0

Ma référence principale est d'expérience personnelle avec une application de signal publié de plus de 300k téléchargements. Fondamentalement, je ne fais pas confiance à la plupart de la documentation de téléphonie pour les valeurs retournées. En outre, même lorsque les API publiques renvoient parfois -1, l'écran d'ingénierie système peut afficher les valeurs correctes. Dans un cas, l'utilisateur a pu récupérer les valeurs LTE après avoir forcé le mode non-LTE, puis revenir en mode LTE. Je suis toujours en train de rechercher d'autres solutions de contournement. – Anonsage