Android 8.1 Sim卡联通3G&4G信号增强
2023-09-14 09:13:53 时间
vendor/mediatek/proprietary/frameworks/opt/telephony-base/java/mediatek/telephony/SignalStrengthExt.java
联通3G信号增强:移动网络设置成3G后,可以在Settings-System-About tablet-Status-SIM status 查看SIM卡的信号强度值,一般 -85 以上满格。
12345678910111213141516171819202122232425 public int mapUmtsSignalLevel(int phoneId, int UmtsRscp) { // [ALPS03252546] -- START , for 3G network int phoneRaf; boolean isTdd3G = false; int level = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN; log("mapUmtsSignalLevel, phoneId=" + phoneId); // TDD/FDD mode if ((UmtsRscp > -25) || (UmtsRscp == SignalStrength.INVALID)) level = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN; else if (UmtsRscp >= -85) level = SignalStrength.SIGNAL_STRENGTH_GREAT; else if (UmtsRscp >= -100) level = SignalStrength.SIGNAL_STRENGTH_GOOD; else if (UmtsRscp >= -110) level = SignalStrength.SIGNAL_STRENGTH_MODERATE; else if (UmtsRscp >= -120) level = SignalStrength.SIGNAL_STRENGTH_POOR; else level = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN; log("mapUmtsSignalLevel, level=" + level); return level; // [ALPS03252546] -- END }
public int mapUmtsSignalLevel(int phoneId, int UmtsRscp) {
// [ALPS03252546] -- START , for 3G network
int phoneRaf;
boolean isTdd3G = false;
int level = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
log("mapUmtsSignalLevel, phoneId=" + phoneId);
// TDD/FDD mode
if ((UmtsRscp > -25) || (UmtsRscp == SignalStrength.INVALID))
level = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
else if (UmtsRscp >= -85)
level = SignalStrength.SIGNAL_STRENGTH_GREAT;
else if (UmtsRscp >= -100)
level = SignalStrength.SIGNAL_STRENGTH_GOOD;
else if (UmtsRscp >= -110)
level = SignalStrength.SIGNAL_STRENGTH_MODERATE;
else if (UmtsRscp >= -120)
level = SignalStrength.SIGNAL_STRENGTH_POOR;
else
level = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
log("mapUmtsSignalLevel, level=" + level);
return level;
// [ALPS03252546] -- END
}
联通4G信号增强:移动网络设置成4G后,可以在Settings-System-About tablet-Status-SIM status 查看SIM卡的信号强度值,一般 -85 以上满格。
public int mapLteSignalLevel(int mLteRsrp, int mLteRssnr, int mLteSignalStrength) {
/*
* TS 36.214 Physical Layer Section 5.1.3 TS 36.331 RRC RSSI = received
* signal + noise RSRP = reference signal dBm RSRQ = quality of signal
* dB= Number of Resource blocksxRSRP/RSSI SNR = gain=signal/noise ratio
* = -10log P1/P2 dB
*/
int rssiIconLevel = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
int rsrpIconLevel = -1;
int snrIconLevel = -1;
if (mLteRsrp > -44) {
rsrpIconLevel = -1;
} else if (mLteRsrp >= -85) {//zhuangwf
rsrpIconLevel = SignalStrength.SIGNAL_STRENGTH_GREAT;
} else if (mLteRsrp >= -100) {
rsrpIconLevel = SignalStrength.SIGNAL_STRENGTH_GOOD;
} else if (mLteRsrp >= -115) {
rsrpIconLevel = SignalStrength.SIGNAL_STRENGTH_MODERATE;
} else if (mLteRsrp >= -125) {
rsrpIconLevel = SignalStrength.SIGNAL_STRENGTH_POOR;
} else if (mLteRsrp >= -140) {
rsrpIconLevel = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
}
/*
* Values are -200 dB to +300 (SNR*10dB) RS_SNR >= 13.0 dB =>4 bars 4.5
* dB <= RS_SNR < 13.0 dB => 3 bars 1.0 dB <= RS_SNR < 4.5 dB => 2 bars
* -3.0 dB <= RS_SNR < 1.0 dB 1 bar RS_SNR < -3.0 dB/No Service Antenna
* Icon Only
*/
if (mLteRssnr > 300) {
snrIconLevel = -1;
} else if (mLteRssnr >= 65) {
snrIconLevel = SignalStrength.SIGNAL_STRENGTH_GREAT;
} else if (mLteRssnr >= 45) {
snrIconLevel = SignalStrength.SIGNAL_STRENGTH_GOOD;
} else if (mLteRssnr >= 10) {
snrIconLevel = SignalStrength.SIGNAL_STRENGTH_MODERATE;
} else if (mLteRssnr >= -30) {
snrIconLevel = SignalStrength.SIGNAL_STRENGTH_POOR;
} else if (mLteRssnr >= -200) {
snrIconLevel = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
}
Rlog.i(TAG, "getLTELevel - rsrp:" + mLteRsrp + " snr:" + mLteRssnr + " rsrpIconLevel:"
+ rsrpIconLevel + " snrIconLevel:" + snrIconLevel);
/* Choose a measurement type to use for notification */
if (snrIconLevel != -1 && rsrpIconLevel != -1) {
/*
* The number of bars displayed shall be the smaller of the bars
* associated with LTE RSRP and the bars associated with the LTE
* RS_SNR
*/
return (rsrpIconLevel < snrIconLevel ? rsrpIconLevel : snrIconLevel);
}
......
}
相关文章
- "Android"牵手"iOS",WP滚蛋
- [Android Pro] android 4.4 Android原生权限管理:AppOps
- android https安全连接
- Android API之android.content.BroadcastReceiver
- Android API之android.widget.Filterable
- Android API之android.os.Parcelable
- 【IOS-COCOS2D-X 游戏开发之十三】详细讲解在XCODE中利用预编译并通过JNI调用ANDROID的JAVA层代码(COCOS2DX里访问调用ANDROID函数)!
- 【COCOS2DX通信(HTTP&SOCKET)相关编译到ANDROID细节总结】编译加入CURL关联LIB与头文件 && 解决PTHREAD的CANCEL函数NDK不支持,找不到SOCKADDR_IN、HTONS等问题;
- Android高级控件(三)—— 使用Google ZXing实现二维码的扫描和生成相关功能体系
- Android开发学习---使用Intelij idea 13.1 进行android 开发
- android技巧:EditText输入错误时该怎样提示用户
- Android应用开发提高系列(4)——Android动态加载(上)——加载未安装APK中的类
- Android Studio / IDEA 中.android 文件夹移动出默认位置
- Android 系统如何预装第三方应用以及常见问题汇集
- Android 12.0 SystemUI状态栏屏蔽掉通知栏不显示通知
- android 自定义旋转转盘(类似抽奖转盘)
- Android 自定义LineLayout实现满屏任意拖动
- ASM的基础使用 Android 自动化埋点方案原理剖析
- 【错误记录】Android Studio 编译时 lint 检查报错 ( WARNING: DSL element ‘android.dataBinding.enabled‘ is obsolet )
- 【Android Gradle 插件】build.gradle 中的 android 配置 ( 配置项 | compileSdkVersion 配置 | buildToolsVersion 配置 )
- Android的Bitmap和BitmapDrawable类解析-android学习之旅(六十)
- 可删除超炫&多种特效的Card视图(改造自cardsui-for-android开源项目),提供DEMO下载
- Android之实现ViewPager+Fragment左右滑动
- Android&&kernel源码在线查看(一百三十)
- Android Studio调用系统的代码中Build.VERSION.SDK_INT >= Build.VERSION_CODES.xxx