2014-07-16 2 views
1

Je voudrais montrer la force du signal en dbm. Mais avec mon code je deviens toujours le résultat -1. Mais quand je vois la force du signal dans les réglages, c'est autour de -81 .. Pouvez-vous trouver une erreur? Je vous remercie!get SignalStrength en dbm

public class MainActivity extends Activity implements OnClickListener { 
    TextView dateAndTimeLabel; 
    private int signalDBM = 0; 

    public class GetParams extends PhoneStateListener { 
     @Override 
     public void onSignalStrengthsChanged(SignalStrength signalStrength) { 
      super.onSignalStrengthsChanged(signalStrength); 
      signalDBM = signalStrength.getEvdoDbm(); 
     } 
    } 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 

     GetParams listener = new GetParams(); 
     TelephonyManager TelManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
     TelManager.listen(listener ,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); 

     Button btn = (Button)findViewById(R.id.start); 
     btn.setOnClickListener(this);    
    } 

    public void onClick(View v) { 
     Toast.makeText(this, "CDMA signal strength is " + this.signalDBM, Toast.LENGTH_SHORT).show();    
    } 

    /* Create options menu etc*/ 
} 
+0

Quelqu'un peut-il m'aider? – user3379235

Répondre

0

Essayez ceci:

List<CellInfo> cellInfoList = tm.getAllCellInfo(); 
      //Checking if list values are not null 
      if (cellInfoList != null) { 
       for (final CellInfo info : cellInfoList) { 
        if (info instanceof CellInfoGsm) { 
         //GSM Network 
         CellSignalStrengthGsm cellSignalStrength = ((CellInfoGsm)info).getCellSignalStrength(); 
         dBmlevel = cellSignalStrength.getDbm(); 
         asulevel = cellSignalStrength.getAsuLevel(); 
        } 
        else if (info instanceof CellInfoCdma) { 
         //CDMA Network 
         CellSignalStrengthCdma cellSignalStrength = ((CellInfoCdma)info).getCellSignalStrength(); 
         dBmlevel = cellSignalStrength.getDbm(); 
         asulevel = cellSignalStrength.getAsuLevel(); 
        } 
        else if (info instanceof CellInfoLte) { 
         //LTE Network 
         CellSignalStrengthLte cellSignalStrength = ((CellInfoLte)info).getCellSignalStrength(); 
         dBmlevel = cellSignalStrength.getDbm(); 
         asulevel = cellSignalStrength.getAsuLevel(); 
        } 
        else if (info instanceof CellInfoWcdma) { 
         //WCDMA Network 
         CellSignalStrengthWcdma cellSignalStrength = ((CellInfoWcdma)info).getCellSignalStrength(); 
         dBmlevel = cellSignalStrength.getDbm(); 
         asulevel = cellSignalStrength.getAsuLevel(); 
        } 
        else{ 
         //Developed as a Cordova plugin, that's why I'm using callbackContext 
         callbackContext.error("Unknown type of cell signal."); 
        } 
       } 
      } 

Si votre téléphone portable est Samsung, il retournera 0 dBm, 0 asu. Si ce n'est pas le cas, alors cela devrait fonctionner (cela a fonctionné dans mon Xperia M2 Aqua).

Questions connexes