AndroidPhoneStateListener.LISTEN_SIGNAL_STRENGTHS和TelephonyManager#requestCellInfoUpdate返回的信号强度不同
创始人
2024-10-09 12:35:45
0

在Android设备上获取信号强度时,使用PhoneStateListener.LISTEN_SIGNAL_STRENGTHS和TelephonyManager#requestCellInfoUpdate返回的值可能不同。这是因为PhoneStateListener.LISTEN_SIGNAL_STRENGTHS返回当前连接的塔信号强度,而TelephonyManager#requestCellInfoUpdate返回不同基站的信号强度。

为了获得最新的信号强度值,请在onSignalStrengthsChanged回调中同时使用两个方法:

public class MyPhoneStateListener extends PhoneStateListener {

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

        TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            telephonyManager.requestCellInfoUpdate(getMainExecutor(), new TelephonyManager.CellInfoCallback() {
                @Override
                public void onCellInfo(@NonNull List cellInfo) {
                    for (CellInfo info : cellInfo) {
                        if (info instanceof CellInfoLte) {
                            CellSignalStrengthLte lte = ((CellInfoLte) info).getCellSignalStrength();
                            Log.d(TAG, "Lte signal strength: " + lte.getDbm());
                        } else if (info instanceof CellInfoGsm) {
                            CellSignalStrengthGsm gsm = ((CellInfoGsm) info).getCellSignalStrength();
                            Log.d(TAG, "Gsm signal strength: " + gsm.getDbm());
                        }
                    }
                }
            });
        }

        List cellInfoList = telephonyManager.getAllCellInfo();
        for (CellInfo cellInfo : cellInfoList) {
            if (cellInfo instanceof CellInfoLte) {
                CellSignalStrengthLte lte = ((CellInfoLte) cellInfo).getCellSignalStrength();
                Log.d(TAG, "Lte signal strength: " + lte.getDbm());
            } else if (cellInfo instanceof CellInfoGsm) {
                CellSignalStrengthGsm gsm = ((CellInfoGsm) cellInfo).getCellSignalStrength();
                Log.d(TAG, "Gsm signal strength: " + gsm.getDbm());
            }
        }

    }
}

使用TelephonyManager#getCellSignalStrengths获取多个基站的信号强度,将所有信号强度平均后将其用于更准确的信号强度测量

相关内容

热门资讯

aapoker透视辅助!wep... aapoker透视辅助!wepoke打伙牌,德州专用扑克高科技,规律教程(有挂教学)1)aapoke...
透视科技(wEpOke)透明挂... 透视科技(wEpOke)透明挂辅助安装(WePoKe透明挂)一直真的是有挂(详细透视必赢教程)是一款...
wepoke有辅助挂!德扑牌力... wepoke有辅助挂!德扑牌力分析软件,线上德州有后台操控,wpk教程(有挂辅助挂)是一款可以让一直...
透视讲解(wepoker)透明... 透视讲解(wepoker)透明挂辅助工具(wepoke的确有挂)切实存在有挂(详细透视揭秘攻略);1...
wepoke一定有挂!微扑克有... wepoke一定有挂!微扑克有保险吗,微扑克wpk辅助软件,揭秘教程(有挂辅助挂)是一款可以让一直输...
透视中牌率(wepOke)透视... 透视中牌率(wepOke)透视辅助插件(WePoKe透视挂)确实是真的有挂(详细透视德州论坛);科技...
德州ai辅助软件!wepoke... 德州ai辅助软件!wepoke防外挂,wepoke透明挂,安装教程(有挂攻略)1)德州ai辅助软件辅...
透视软件(WEpoke)外挂透... 透视软件(WEpoke)外挂透明挂辅助器(wepokeai机器人)一向存在有挂(详细透视解密教程);...
透视透视(wePOKE)外挂透... 1、透视透视(wePOKE)外挂透明挂辅助技巧(wepoke的确有挂)本来存在有挂(详细透视wepo...
微扑克有辅助挂!鱼扑克app ... 微扑克有辅助挂!鱼扑克app ai,wepoke真的有挂嘛,技巧教程(有挂辅助挂)是一款可以让一直输...