如何获得在Android的LTErssi信号强度的强度

智能手机中显示信号强度格数
在4.0的中,手机中显示信号强度格数的代码在
frameworks\base\telephony\java\android\telephony\SignalStrength.java
getLevel( )函数,该函数是主要用来获取信号的强度。
public int getLevel() {&
&&&&&&& if (isGsm) {&
&&&&&&&&&&& level = getLteLevel();&
&&&&&&&&&&& if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {&
&&&&&&&&&&&&&&& level = getGsmLevel();&
&&&&&&&&&&& }&
&&&&&&& } else {&
&&&&&&&&&&& int cdmaLevel = getCdmaLevel();&
&&&&&&&&&&& int evdoLevel = getEvdoLevel();&
&&&&&&&&&&& if (evdoLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {&
&&&&&&&&&&&&&&& /* We don't know evdo, use cdma */&
&&&&&&&&&&&&&&& level = cdmaL&
&&&&&&&&&&& } else if (cdmaLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {&
&&&&&&&&&&&&&&& /* We don't know cdma, use evdo */&
&&&&&&&&&&&&&&& level = evdoL&
&&&&&&&&&&& } else {&
&&&&&&&&&&&&&&& /* We know both, use the lowest level */&
&&&&&&&&&&&&&&& //level = cdmaLevel & evdoLevel ? cdmaLevel : evdoL&&
&&&&&&&&&&&&&&& level = cdmaLevel & evdoLevel ? cdmaLevel : evdoL&
&&&&&&&&&&& }&
&&&&&&& }&
&&&&&&& if (DBG) log(&getLevel=& + level);&
public int getLevel() {
&&&&&&& if (isGsm) {
&&&&&&&&&&& level = getLteLevel();
&&&&&&&&&&& if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
&&&&&&&&&&&&&&& level = getGsmLevel();
&&&&&&&&&&& }
&&&&&&& } else {
&&&&&&&&&&& int cdmaLevel = getCdmaLevel();
&&&&&&&&&&& int evdoLevel = getEvdoLevel();
&&&&&&&&&&& if (evdoLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
&&&&&&&&&&&&&&& /* We don't know evdo, use cdma */
&&&&&&&&&&&&&&& level = cdmaL
&&&&&&&&&&& } else if (cdmaLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
&&&&&&&&&&&&&&& /* We don't know cdma, use evdo */
&&&&&&&&&&&&&&& level = evdoL
&&&&&&&&&&& } else {
&&&&&&&&&&&&&&& /* We know both, use the lowest level */
&&&&&&&&&&&&&&& //level = cdmaLevel & evdoLevel ? cdmaLevel : evdoL
&&&&&&&&&&&&&&& level = cdmaLevel & evdoLevel ? cdmaLevel : evdoL
&&&&&&&&&&& }
&&&&&&& if (DBG) log(&getLevel=& + level);
&&& }getCdmaLevel( )获取CdmaLevel,同样也有getEvdoLevel( )函数,在上一个函数中,通过比较Evdo和Cdma的强度,来最终确定信号的显示强度,也就是我们在通知栏里看到的信号格数。
public int getCdmaLevel() {&
&&&&&&& final int cdmaDbm = getCdmaDbm();&
&&&&&&& final int cdmaEcio = getCdmaEcio();&
&&&&&&& int levelD&
&&&&&&& int levelE&
&&&&&&& if (cdmaDbm &= -75) levelDbm = SIGNAL_STRENGTH_GREAT;&
&&&&&&& else if (cdmaDbm &= -85) levelDbm = SIGNAL_STRENGTH_GOOD;&
&&&&&&& else if (cdmaDbm &= -95) levelDbm = SIGNAL_STRENGTH_MODERATE;&
&&&&&&& else if (cdmaDbm &= -100) levelDbm = SIGNAL_STRENGTH_POOR;&
&&&&&&& else levelDbm = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;&
&&&&&&& // Ec/Io are in dB*10&&
&&&&&&& if (cdmaEcio &= -90) levelEcio = SIGNAL_STRENGTH_GREAT;&
&&&&&&& else if (cdmaEcio &= -110) levelEcio = SIGNAL_STRENGTH_GOOD;&
&&&&&&& else if (cdmaEcio &= -130) levelEcio = SIGNAL_STRENGTH_MODERATE;&
&&&&&&& else if (cdmaEcio &= -150) levelEcio = SIGNAL_STRENGTH_POOR;&
&&&&&&& else levelEcio = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;&
&&&&&&& int level = (levelDbm & levelEcio) ? levelDbm : levelE&
&&&&&&& if (DBG) log(&getCdmaLevel=& + level + &,cdmaDbm=& + cdmaDbm + &,cdmaEcio=& +cdmaEcio);&
public int getCdmaLevel() {
&&&&&&& final int cdmaDbm = getCdmaDbm();
&&&&&&& final int cdmaEcio = getCdmaEcio();
&&&&&&& int levelD
&&&&&&& int levelE
&&&&&&& if (cdmaDbm &= -75) levelDbm = SIGNAL_STRENGTH_GREAT;
&&&&&&& else if (cdmaDbm &= -85) levelDbm = SIGNAL_STRENGTH_GOOD;
&&&&&&& else if (cdmaDbm &= -95) levelDbm = SIGNAL_STRENGTH_MODERATE;
&&&&&&& else if (cdmaDbm &= -100) levelDbm = SIGNAL_STRENGTH_POOR;
&&&&&&& else levelDbm = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
&&&&&&& // Ec/Io are in dB*10
&&&&&&& if (cdmaEcio &= -90) levelEcio = SIGNAL_STRENGTH_GREAT;
&&&&&&& else if (cdmaEcio &= -110) levelEcio = SIGNAL_STRENGTH_GOOD;
&&&&&&& else if (cdmaEcio &= -130) levelEcio = SIGNAL_STRENGTH_MODERATE;
&&&&&&& else if (cdmaEcio &= -150) levelEcio = SIGNAL_STRENGTH_POOR;
&&&&&&& else levelEcio = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
&&&&&&& int level = (levelDbm & levelEcio) ? levelDbm : levelE
&&&&&&& if (DBG) log(&getCdmaLevel=& + level + &,cdmaDbm=& + cdmaDbm + &,cdmaEcio=& +cdmaEcio);您的位置:&&& >
> LTE信号路测手机版v2.0.2
LTE信号路测&手机版v2.0.2LTE信号路测安卓版
类别:系统工具
大小:8.6MB
语言:简体中文
相关推荐:
LTE信号路测是一款用于测试LTE相关信号的手机工具,各地及实时的网络情况,能够有效地测出各个地点,各个时间段的网速,有效地反馈了当地的网络情况。欢迎来到99单机网下载使用。
1. Android 4.2.2以上
2. SignalLTEMap只用于测试LTE相关信号
3. 可测试LTE RSRP、RSRQ、SINR等信息
4. 支持地图模式路测及回放
5. 部分手机不支持信息获取,建议实测,欢迎反馈
1. 定位加速
2. 路测打点可暂停
3. 图层设置优化
全方位的测试软件,有效地反映出网络情况,是一个可靠的手机工具。
LTE信号路测截图
手机工具大全
信号增强软件大全
手机卡?运行慢?电池耗电快?不管是游戏加速、优化,你需要一个下载手机工具,手机工具让你手机运行更加畅快,清理系统,删除垃圾,节约电量,是每一部手机必不可...
系统工具|6.7分
社交聊天|8.3分
游戏辅助|8分
系统工具|6.7分
系统工具|6.7分
系统工具|7.5分
99安卓提供信号增强软件下载,信号增强器通过自动校准无线模块加强wifi信号强度。因为原生系统会限制保留wifi能力的。信号平均可增强30%以上。还新增硬件加速、流量...
通讯增强|6.7分
v3.1.0.540
通讯增强|6.7分
系统工具|6.7分
系统工具|6.7分
系统工具|6.7分
通讯增强|6.7分
也许你还喜欢
系统工具排行
下载了LTE信号路测的网友还下载了
神谋三国苹果官网最新版是一款结合三...
神座手游是一款仙侠类手机游戏,该游...
魔法门重生手游是一款根据经典改编的...
避雷抢红包是一款安全稳定的抢红包工...
传奇无双耀世降临,盛大官方唯一授权...
连环夺宝是一款风靡彩票投注站、即投...
开心麻将是一款经典的麻将游戏,加入...
天天中彩票app下载是一款金融理财类...安卓之网络信号监听(4G,3G,2G) - 简书
安卓之网络信号监听(4G,3G,2G)
有时候我们需要实时监听手机的网络及其它的信号值,但是菜鸟的我在网上百度了很久,没有找到比较合适的例子,后面直接看系统的API,完成了下面的例子,在这做一下笔记:
public static void getPhoneState(Context context) {
final TelephonyManager telephonyManager = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateListener MyPhoneListener = new PhoneStateListener() {
//获取对应网络的ID,这个方法在这个程序中没什么用处
public void onCellLocationChanged(CellLocation location) {
if (location instanceof GsmCellLocation) {
int CID = ((GsmCellLocation) location).getCid();
} else if (location instanceof CdmaCellLocation) {
int ID = ((CdmaCellLocation) location).getBaseStationId();
//系统自带的服务监听器,实时监听网络状态
public void onServiceStateChanged(ServiceState serviceState) {
super.onServiceStateChanged(serviceState);
//这个是我们的主角,就是获取对应网络信号强度
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
//这个ltedbm 是4G信号的值
String signalinfo = signalStrength.toString();
String[] parts = signalinfo.split(" ");
int ltedbm = Integer.parseInt(parts[9]);
//这个dbm 是2G和3G信号的值
int asu = signalStrength.getGsmSignalStrength();
int dbm = -113 + 2 *
if (telephonyManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_LTE) {
Log.i("NetWorkUtil", "网络:LTE 信号强度:" + ltedbm + "======Detail:" + signalinfo);
} else if (telephonyManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_HSDPA ||
telephonyManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_HSPA ||
telephonyManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_HSUPA ||
telephonyManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS)
if (dbm & -75) {
bin = "网络很好";
} else if (dbm & -85) {
bin = "网络不错";
} else if (dbm & -95) {
bin = "网络还行";
} else if (dbm & -100) {
bin = "网络很差";
bin = "网络错误";
Log.i("NetWorkUtil", "网络:WCDMA 信号值:" + dbm + "========强度:" + bin + "======Detail:" + signalinfo);
if (asu & 0 || asu &= 99) bin = "网络错误";
else if (asu &= 16) bin = "网络很好";
else if (asu &= 8) bin = "网络不错";
else if (asu &= 4) bin = "网络还行";
else bin = "网络很差";
Log.i("NetWorkUtil", "网络:GSM 信号值:" + dbm + "========强度:" + bin + "======Detail:" + signalinfo);
super.onSignalStrengthsChanged(signalStrength);
telephonyManager.listen(MyPhoneListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
人有上进心一切都很阳光!3被浏览322分享邀请回答0添加评论分享收藏感谢收起

我要回帖

更多关于 信号强度 的文章

 

随机推荐