Android 确定信号强度是否足以发送SMS
我正在构建一个android应用程序,可以发送短信。当发送短信时,我想检查信号强度是否足以发送短信。如果没有,那么应用程序应该构建一个侦听器,侦听信号强度,并在信号足够时发送短信 我想我只需要检查是否有任何信号,因为我相信只有非常低的信号就足以发送短信。我应该在开始时使用android.telephony.SignalStrength getGsmSignalStrength()来检查信号强度是多少。如果返回值为0,那么我应该创建一个侦听器Android 确定信号强度是否足以发送SMS,android,sms,signal-strength,Android,Sms,Signal Strength,我正在构建一个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");}