Android 确定信号强度是否足以发送SMS

Android 确定信号强度是否足以发送SMS,android,sms,signal-strength,Android,Sms,Signal Strength,我正在构建一个android应用程序,可以发送短信。当发送短信时,我想检查信号强度是否足以发送短信。如果没有,那么应用程序应该构建一个侦听器,侦听信号强度,并在信号足够时发送短信 我想我只需要检查是否有任何信号,因为我相信只有非常低的信号就足以发送短信。我应该在开始时使用android.telephony.SignalStrength getGsmSignalStrength()来检查信号强度是多少。如果返回值为0,那么我应该创建一个侦听器侦听信号强度?还是有更好的办法 感谢转发使用以下内容:

我正在构建一个android应用程序,可以发送短信。当发送短信时,我想检查信号强度是否足以发送短信。如果没有,那么应用程序应该构建一个侦听器,侦听信号强度,并在信号足够时发送短信

我想我只需要检查是否有任何信号,因为我相信只有非常低的信号就足以发送短信。我应该在开始时使用android.telephony.SignalStrength getGsmSignalStrength()来检查信号强度是多少。如果返回值为0,那么我应该创建一个侦听器
侦听信号强度
?还是有更好的办法

感谢转发

使用以下内容:

intdbmlevel=0;
国际水平=0;
List-cellInfoList=tm.getAllCellInfo();
//检查列表值是否不为null
如果(cellInfoList!=null){
用于(最终手机信息:手机信息列表){
if(手机信息GSM的信息实例){
//GSM网络
CellSignalStrengthGsm cellSignalStrength=((CellInfoGsm)信息)。getCellSignalStrength();
dBmlevel=cellSignalStrength.getDbm();
asulevel=cellSignalStrength.getAsuLevel();
}
else if(CellInfoCdma的信息实例){
//CDMA网络
CellSignalStrengthCdma cellSignalStrength=((CellInfoCdma)信息)。getCellSignalStrength();
dBmlevel=cellSignalStrength.getDbm();
asulevel=cellSignalStrength.getAsuLevel();
}
else if(CellInfoLte的信息实例){
//LTE网络
CellSignalStrengthLte cellSignalStrength=((CellInfoLte)info).getCellSignalStrength();
dBmlevel=cellSignalStrength.getDbm();
asulevel=cellSignalStrength.getAsuLevel();
}
else if(CellInfoWcdma的信息实例){
//WCDMA网络
cellSignalStrength HWCDMA cellSignalStrength=((CellInfoWcdma)信息)。getCellSignalStrength();
dBmlevel=cellSignalStrength.getDbm();
asulevel=cellSignalStrength.getAsuLevel();
}
否则{
//作为Cordova插件开发,这就是我使用callbackContext的原因
callbackContext.error(“未知类型的单元格信号”);
}
}
}
获取所有网络(LTE、GSM、CDMA和WCDMA)的信号强度(以dBm和asu为单位)。然后创建一个if()来限制信号电平。例:


if(dBmlevel Ah,它不适用于三星设备。三星有一种“特殊的方法”来做到这一点(我也在努力寻找答案)谢谢你的回答……你知道我需要什么精确的BMLASH来发送SMS吗?因为我不知道我应该给席西找到什么值:这是120是不可接受的——100是差的,但是是有用的——80是可以接受的/体面的——60是好的。40是很好的,你的If必须保留从-100上升的值。发送短信。我想是的,因为这是可以接受的级别。你也可以限制在-100以上,但我不认为这是个好主意,因为你可以给低于这些级别的人打电话,但电话会非常非常差。干杯。
   int dBmlevel = 0;
   int asulevel = 0;
   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.");
                    }
                }
          }
if (dBmlevel <= x){ print("You can't sent messages with this current signal");}