在DBM得到SignalStrength(get SignalStrength in dbm)

2019-10-20 11:30发布

我想显示在DBM的信号强度。 但是,我的代码,我总是会成为结果-1。 但是,当我在设置查看信号强度是围绕-81 ..你能找到一个错误? 谢谢!

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*/
}

Answer 1:

尝试这个:

 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."); } } } 

如果您的手机是三星,它会返回0 dBm时,0 ASU。 如果没有,那么它应该工作(在我的Xperia M2水族工作)。



文章来源: get SignalStrength in dbm