首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android中获取信号强度

在Android中获取信号强度
EN

Stack Overflow用户
提问于 2013-11-06 14:55:28
回答 9查看 62.1K关注 0票数 34

我想要获得设备在我点击API调用时的信号强度。我已经搜索了所有相关的帖子,但我还没有成功。

所以我想要得到这样的信号强度

代码语言:javascript
复制
SignalStrength ss = null  ; // some initialization

int n = ss.getGsmSignalStrength();

但在使用它时,很明显我会得到空指针异常,因为我已经将SignalStrength初始化为空。但我不知道如何初始化它。

另外,我不想使用PhoneStateListener,因为它只在信号改变时触发。

我正在使用下面的代码获取信号强度

代码语言:javascript
复制
TelephonyManager telephonyManager = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
CellInfoGsm cellinfogsm = (CellInfoGsm)telephonyManager.getAllCellInfo().get(0);
CellSignalStrengthGsm cellSignalStrengthGsm = cellinfogsm.getCellSignalStrength();
cellSignalStrengthGsm.getDbm();

但我不想使用CellSignalStrength,因为它只在API17级添加,在17级下不能工作。我希望代码能在API级7+上工作。

或者,有没有其他方法,以便我可以在命中API调用时获得信号强度?

EN

回答 9

Stack Overflow用户

发布于 2014-09-26 18:50:12

定义变量:

代码语言:javascript
复制
TelephonyManager mTelephonyManager;
MyPhoneStateListener mPhoneStatelistener;   
int mSignalStrength = 0;

然后将这个类添加到您的代码中:

代码语言:javascript
复制
class MyPhoneStateListener extends PhoneStateListener {

     @Override
     public void onSignalStrengthsChanged(SignalStrength signalStrength) {
         super.onSignalStrengthsChanged(signalStrength);
         mSignalStrength = signalStrength.getGsmSignalStrength();
         mSignalStrength = (2 * mSignalStrength) - 113; // -> dBm           
     }
 }

在你的onCreate方法中使用:

代码语言:javascript
复制
mPhoneStatelistener = new MyPhoneStateListener();
mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
mTelephonyManager.listen(mPhoneStatelistener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
票数 29
EN

Stack Overflow用户

发布于 2015-06-19 20:01:36

全局定义:

代码语言:javascript
复制
TelephonyManager telephonyManager;
myPhoneStateListener psListener;
TextView txtSignalStr;

onCreate方法:

代码语言:javascript
复制
@Override
protected void onCreate(final Bundle savedInstanceState) {
 txtSignalStr = (TextView)findViewById(R.id.signalStrength);
 psListener = new myPhoneStateListener();
 telephonyManager = (TelephonyManager)getActivity().getSystemService(Context.TELEPHONY_SERVICE);
 telephonyManager.listen(psListener,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}

创建myPhoneStateListener类:

代码语言:javascript
复制
public class myPhoneStateListener extends PhoneStateListener {
    public int signalStrengthValue;

    public void onSignalStrengthsChanged(SignalStrength signalStrength) {
        super.onSignalStrengthsChanged(signalStrength);
        if (signalStrength.isGsm()) {
            if (signalStrength.getGsmSignalStrength() != 99)
                signalStrengthValue = signalStrength.getGsmSignalStrength() * 2 - 113;
            else
                signalStrengthValue = signalStrength.getGsmSignalStrength();
        } else {
            signalStrengthValue = signalStrength.getCdmaDbm();
        }
        txtSignalStr.setText("Signal Strength : " + signalStrengthValue);
    }
}
票数 6
EN

Stack Overflow用户

发布于 2017-03-08 23:13:15

代码语言:javascript
复制
public class PhoneCustomStateListener extends PhoneStateListener {

    public int signalSupport = 0;

    @Override
    public void onSignalStrengthsChanged(SignalStrength signalStrength) {
        super.onSignalStrengthsChanged(signalStrength);

        signalSupport = signalStrength.getGsmSignalStrength();
        Log.d(getClass().getCanonicalName(), "------ gsm signal --> " + signalSupport);

        if (signalSupport > 30) {
            Log.d(getClass().getCanonicalName(), "Signal GSM : Good");


        } else if (signalSupport > 20 && signalSupport < 30) {
            Log.d(getClass().getCanonicalName(), "Signal GSM : Avarage");


        } else if (signalSupport < 20 && signalSupport > 3) {
            Log.d(getClass().getCanonicalName(), "Signal GSM : Weak");


        } else if (signalSupport < 3) {
            Log.d(getClass().getCanonicalName(), "Signal GSM : Very weak");


        }
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19805880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档