onSignalStrengthchanged

onSignalStrengthchanged

是否有人知道如何在不调用信号强度更改的情况下获得信号强度。onsignalstrengthchanged的问题是,当信号强度发生变化时调用onsignalstrengthchanged,我需要根据不同的标准获取信号强度的值。
提前谢谢。

最佳答案

仅在API级别17上,以下是一些可用于Activity子类(或任何其他Context子类)的代码:

import android.telephony.CellInfo;
import android.telephony.CellInfoCdma;
import android.telephony.CellInfoGsm;
import android.telephony.CellInfoLte;
import android.telephony.CellSignalStrengthCdma;
import android.telephony.CellSignalStrengthGsm;
import android.telephony.CellSignalStrengthLte;
import android.telephony.TelephonyManager;

try {
    final TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
    for (final CellInfo info : tm.getAllCellInfo()) {
        if (info instanceof CellInfoGsm) {
            final CellSignalStrengthGsm gsm = ((CellInfoGsm) info).getCellSignalStrength();
            // do what you need
        } else if (info instanceof CellInfoCdma) {
            final CellSignalStrengthCdma cdma = ((CellInfoCdma) info).getCellSignalStrength();
            // do what you need
        } else if (info instanceof CellInfoLte) {
            final CellSignalStrengthLte lte = ((CellInfoLte) info).getCellSignalStrength();
            // do what you need
        } else {
            throw new Exception("Unknown type of cell signal!");
        }
    }
} catch (Exception e) {
    Log.e(TAG, "Unable to obtain cell signal information", e);
}

以前版本的android需要调用监听器,没有其他选择(请参见this link)。
还要确保应用程序包含适当的权限。

10-05 22:44