2015-10-29 4 views
1

J'ai une application qui montre la puissance actuelle du signal, dans de nombreux téléphones cela fonctionne, mais quand je l'ai testé sur un téléphone Huawei, il est toujours 0, en même temps les barres de signal sont pleins dans ce téléphone huawei. quel est le problème? Est-ce lié à la version Android? Est-ce lié aux permissions? J'ai ceci:Pourquoi le paramètre gsmSignalStrength est-il toujours 0 dans un téléphone Huawei? Ce n'est pas le cas pour les autres téléphones

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
+0

Avez-vous trouvé la réponse? J'utilise la bonne façon d'obtenir la force du signal mais c'est toujours 0 ASU. – pkuszewski

Répondre

1

Ce n'est pas toujours zéro. La façon dont vous obtenez la force du signal est fausse. Dans certains des téléphones, il pourrait être zéro peut être la suppression de l'API.

Essayez simplement ce code si cela fonctionne pour vous.

 String gsmSignalStrength=null; 
    String ssignal = asu.toString(); 
    String[] parts = ssignal.split(" "); 
    int currentStrength = asu.getGsmSignalStrength(); 
         if (currentStrength <= 0) { 
          gsmSignalStrength= String 
            .valueOf(Integer.parseInt(parts[3])); 
         } else { 
          gsmSignalStrength= String.valueOf(-113 + 2 * asu.getGsmSignalStrength()); 
         } 
    Log.d(TAG,"Signal Strength : "+gsmSignalStrength); 

Cette volonté ne fonctionne que pour GSM;

Les éléments du tableau de pièces sont décrites comme

parts[1] = GsmSignalStrength 
    parts[3] = CDMADBM 
    parts[8] = LteSignalStrength 
    parts[9] = LteRsrp 
    parts[10] = LteRsrq 
    parts[13] = gsm|lte 

Vous pouvez donc une condition pour extraire la valeur de ce tableau.

+0

Salut! J'ai essayé la même chose moi-même. Parfois, le GsmSignalStrength est 0 et parfois ce n'est pas le cas. Avez-vous une idée pourquoi? J'ai remarqué que les deux champs "mWcdmaEcio" est toujours 255 et que le champ "mWcdmaRscp" est toujours 0 lorsque la force du signal n'est pas 0. –

+0

Ils ont modifié l'intensité du signal API. Mieux vaut lire la méthode 'toString()' de l'écouteur de la force du signal. –

+1

Bonne réponse Madhukar, ça m'a beaucoup aidé. – Thirumalvalavan