gpt4 book ai didi

android - 在 Android 中获取信号强度

转载 作者:IT老高 更新时间:2023-10-28 22:20:58 28 4
gpt4 key购买 nike

我想在调用 API 时获取设备的信号强度。我已经搜索了所有相关线程,但我还没有成功。

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

SignalStrength ss = null  ; // some initialization

int n = ss.getGsmSignalStrength();

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

另外我不想使用 PhoneStateListener 因为它只有在信号变化时才会触发。

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

TelephonyManager telephonyManager = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
CellInfoGsm cellinfogsm = (CellInfoGsm)telephonyManager.getAllCellInfo().get(0);
CellSignalStrengthGsm cellSignalStrengthGsm = cellinfogsm.getCellSignalStrength();
cellSignalStrengthGsm.getDbm();

但我不想使用 CellSignalStrength,因为它仅在 API 级别 17 中添加,并且在 17 岁以下无法使用。我希望代码在 API 级别 7+ 上工作。

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

最佳答案

定义变量:

TelephonyManager mTelephonyManager;
MyPhoneStateListener mPhoneStatelistener;
int mSignalStrength = 0;

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

class MyPhoneStateListener extends PhoneStateListener {

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

并在您的 onCreate 方法中使用:

mPhoneStatelistener = new MyPhoneStateListener();
mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
mTelephonyManager.listen(mPhoneStatelistener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);

关于android - 在 Android 中获取信号强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19805880/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com