Получить SignalStrength в дБм
Я хотел бы показать силу сигнала в дБм. Но с моим кодом я всегда становлюсь результатом -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*/
}
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."); } } }
Если ваш сотовый телефон Samsung, он вернет 0 дБм, 0 asu. Если нет, то он должен работать (он работал на моем Xperia M2 Aqua).