如何获得在Android的LTE信号强度dbm的强度

||||||||||||||||||
查看: 1867|回复: 7
在线时间1168 小时经验值973 最后登录注册时间帖子阅读权限70UID862757
学士, 积分 973, 距离下一级还需 127 积分
该用户从未签到
G币172 最后登录注册时间
新入手HD,机子自带系统好像是组长的1.1,可在关于手机-状态信息里面怎么没有信号强度这一项呢?看不到信号强度啊?
在线时间1168 小时经验值973 最后登录注册时间帖子阅读权限70UID862757
学士, 积分 973, 距离下一级还需 127 积分
该用户从未签到
G币172 最后登录注册时间
没人答复啊,自己顶一下!
在线时间1028 小时经验值5357 最后登录注册时间帖子阅读权限120UID1997642
导师, 积分 5357, 距离下一级还需 743 积分
TA的每日心情无聊 23:40签到天数: 7 天[LV.3]偶尔看看II
G币1855 最后登录注册时间
拔号面板拔入:
*#*#4636#*#*
进“手机信息”
其中有一项&&信号强度:XXXXXXXXXXdBm&&XXXXXXXXXXXXasu
两个不同单位表示的信号强度,且为最弱,不随外界信号变化而变化,所以看了也没意思,估计组长因此问题不好处理在手机“状态信息”里干脆就简化掉了。
哦?强大的文明用语
在线时间132 小时经验值259 最后登录注册时间帖子阅读权限50UID8087769
大学专科, 积分 259, 距离下一级还需 141 积分
该用户从未签到
G币39 最后登录注册时间
路过观贴,顶帖拿分
在线时间78 小时经验值241 最后登录注册时间帖子阅读权限50UID
大学专科, 积分 241, 距离下一级还需 159 积分
该用户从未签到
G币416 最后登录注册时间
& & 原来是这样,受教了
在线时间23 小时经验值50 最后登录注册时间帖子阅读权限30UID
初中生, 积分 50, 距离下一级还需 50 积分
该用户从未签到
G币18 最后登录注册时间
*#*#4636#*#*
拨号里面输入没有反应的吗~~~~
在线时间30 小时经验值119 最后登录注册时间帖子阅读权限40UID
高中生, 积分 119, 距离下一级还需 81 积分
该用户从未签到
G币118 最后登录注册时间
绝世好文!
买了个翻新的
在线时间111 小时经验值868 最后登录注册时间帖子阅读权限70UID
学士, 积分 868, 距离下一级还需 232 积分
该用户从未签到
G币93 最后登录注册时间
机锋有你更精彩!
浏览过的版块
Powered by经验14214 米
在线时间503 小时
版本7.8.17
积分 16503, 距离下一级还需 3497 积分
积分 16503, 距离下一级还需 3497 积分
机型小米Note 顶配版
签到次数65
MIUI版本7.8.17
本帖最后由 陈真0000 于
13:41 编辑
如何修改Android手机显示的4G信号强度的格子数?在修改显示的信号强度之前,先了解一下什么是dB,什么是dBm?
dB是一个表征相对值的值,纯粹的比值,只表示两个量的相对大小关系,没有单位,当考虑甲的功率相比于乙功率大或小多少个dB时,
按下面的计算公式:10log(甲功率/乙功率),如果采用两者的电压比计算,要用20log(甲电压/乙电压)。)
[例]甲功率比乙功率大一倍,那么10lg(甲功率/乙功率)=10lg2=3dB。也就是说,甲的功率比乙的功率大3 dB。
反之,如果甲的功率是乙的功率的一半,则甲的功率比乙的功率小3 dB。
dBm是一个表示功率绝对值的值(也可以认为是以1mW功率为基准的一个比值),计算公式为:10log(功率值/1mw)。
[例]如果功率P为1mw,折算为dBm后为0dBm。
[例]对于40W的功率,按dBm单位进行折算后的值应为:
10log(40W/1mw)=10log(40000)=10log4+10log10000=46dBm。
总之,dB是两个量之间的比值,表示两个量间的相对大小,而dBm则是表示功率绝对大小的值。在dB,dBm计算中,要注意基本概念,
用一个dBm减另外一个dBm时,得到的结果是dB,如:30dBm - 0dBm = 30dB。
3.手机信号强度表示
好了,那么手机上显示的数字的单位是那个呢,是dBm。当你仔细看的时候会发现这个值是负的,也就是说手机会显示比如-67(dBm),那就说明信号很强了.
这里还说一个小知识:
中国移动的规范规定,手机接收电平&=(城市取-90dB乡村取-94dBm )时,则满足覆盖要求,也就是说此处无线信号强度满足覆盖要求。
-67dBm要比-90dBm信号要强20多个dB ,那么它在打电话接通成功率和通话过程中的话音质量都会好的多(当然也包括EDGE/GPRS上网的速度那些)
所以,那个值越大信号就越好,因为那是个负值,而且在你手里的时候它永远是负值,如果你感兴趣且附近有无线基站的天线的话,你也可以把你的手机尽量接近天线面板,那么值就越来越大,如果手机跟天线面板挨到一起,那么它可能十分接近于0了(0是达不到的,这里的0的意思也不是说手机没信号了。)
在信号强度计选择工程模式,显示了很多参数,你只要看BCCHLev(控制信道电平值)它就是手机的信号强度值,单位dBm,多大的信号你的手机可以正常接听呢,BCCHLev-C1,C1也有显示数值,如:BCCHLev(-63),C1(34),表示你的手机在信号大于-97dBm的状况下是不会掉话的。
再来看手机发射功率要多大才合适呢,按GSM协议规定,手机发射功率是可以被基站控制的。基站通过下行SACCH信道,发出命令控制手机的发射功率级别,每个功率级别差2dB;
GSM900手机最大发射功率级别是5(2W=2000mw,33dBm),最小发射功率级别是19(3mw,5dBm),
DCS1800手机最大发射功率级别是0(1W,30dBm),最小发射功率级别是15(1mW,0dBm)。
当手机远离基站,或者处于无线阴影区时,基站可以命令手机发出较大功率,直至33dBm(GSM900),以克服远距离传输或建筑物遮挡所造成的信号损耗。
强度计里的TXPower就是手机发射功率,你在拨打电话的状态下可以看出你的手机发射功率,也就是数值越大越省电,辐射越小,数值在5,你的电话耗电大电池用不了一天,通话时别人经常听不到你的声音,你的手机经常会突然没信号,会掉话,这样你可以打投诉电话让运营商来做信号覆盖,让你的手机信号好起来,减少辐射。
以上那么多字,只有一个核心意思。不要被你手机信号还有多少格欺骗!!!那都是手机厂商自己定义的。咱要玩专业点的,直接看信号强度dBm。
Android系统查信号强度在设置—关于手机—网络里。
室内和室外的信号强度是有差距的。一般室外信号比室内好。
现在来看这个所谓的dBm,数值范围在-XX~0之间。这个数越大,信号强度越高。
-50dBm~0dBm范围内,恭喜你,你的信号已经好得很了。话说你就站在基站旁边是吧,哈
-90dBm~-60dBm,同样恭喜你,你基本不会面临打不了电话的问题。如果打不了的,找运营商吧,那是他们的问题。
G室内,DS放桌上信号强度-67dBm,23asu。作打电话状握手里,-75dBm,19asu。调整各种姿势,看到的最低是-83dBm,15asu。
这属于什么等级呢?简单说就是,信号很不错。室外没看,但肯定比这个高,至于其他手机,可以自己上网去看,和DS的dBm值大多在一个档次。个别帖子炫耀自己大于-50dBm的,都是因为他就在基站边上。正常的范围是-90dBm~-60dBm。
=============================
下面我们来看看手机没有修改时候的显示效果,关于手机--&状态信息--&SIM卡状态--&信号强度,就能看到手机的信号强度了。如下图所示:
1、当信号大于等于-85dBm时候,信号显示满格
200_793.jpg (82.28 KB, 下载次数: 0)
2、当信号大于等于-95dBm时候,而小于-85dBm时,信号显示3格
201_330.jpg (88.24 KB, 下载次数: 0)
3、当信号大于等于-105dBm时候,而小于-95dBm时,信号显示2格,不好捕捉到。
4、当信号大于等于-115dBm时候,而小于-105dBm时,信号显示1格,不好捕捉到。
5、当信号大于等于-140dBm时候,而小于-115dBm时,信号显示0格,不好捕捉到。
上面几个等级的相应划分的源代码在:rameworks/base/telephony/Java/android/telephony/SignalStrength.java中的getLteLevel()方法中,代码1如下:
可以看到未修改前,划分的几个等级是:
1.大于-85时候,等级为SIGNAL_STRENGTH_GREAT,即为4
2.大于-95时候,等级为SIGNAL_STRENGTH_GOOD,即为3
3.大于-105时候,等级为SIGNAL_STRENGTH_MODERATE,即为2
4.大于-115时候,等级为SIGNAL_STRENGTH_POOR,即为1
5.大于-140时候,等级为SIGNAL_STRENGTH_NONE_OR_UNKNOWN,即为0
6.大于-44时候,等级为-1
修改后,将上面的几个等级划分改为:
1.大于-97时候,等级为SIGNAL_STRENGTH_GREAT,即为4
2.大于-105时候,等级为SIGNAL_STRENGTH_GOOD,即为3
3.大于-110时候,等级为SIGNAL_STRENGTH_MODERATE,即为2
4.大于-120时候,等级为SIGNAL_STRENGTH_POOR,即为1
5.大于-140时候,等级为SIGNAL_STRENGTH_NONE_OR_UNKNOWN,即为0
6.大于-44时候,等级为-1
由于上面的,加入了MTK的修复patch,代码2如下:
201_852.jpg (53.84 KB, 下载次数: 0)
上面代码的意思是,先把这等级划分的值从加入的插件中去获取,如果获取不到再执行我上面修改的,所以要去修改IServiceStateExt的mapLteSignalLevel(mLteRsrp, mLteRssnr, mLteSignalStrength)方法。当然如果没有这个插件的话,可以直接把我上面的这段代码2从代码1中注释即可。
由于IServiceStateExt是个接口,所以去修改它的具体实现类。通过查找源代码,找到了实现类DefaultServiceStateExt。
该类目录位于:vendor/mediatek/proprietary/frameworks/base/packages/FwkPlugin/src/com/mediatek/op/telephony/DefaultServiceStateExt.java
修改后代码如下:
修改完代码后,make systemimage后烧录到MTK平台手机即可。
=========================
修改后的效果图如下所示:
1、当信号大于等于-97dBm时候,信号显示满格,而修改之前需要大于-85dBm。
202_394.jpg (82.59 KB, 下载次数: 0)
2、当信号大于等于-105dBm时候,而小于-97dBm时,信号显示少一个,而修改之前需要大于-95dBm。
3、当信号大于等于-110dBm时候,而小于-105dBm时,信号显示2格,不好捕捉到。
4、当信号大于等于-120dBm时候,而小于-110dBm时,信号显示1格,不好捕捉到。
5、当信号大于等于-140dBm时候,而小于-120dBm时,信号显示0格,不好捕捉到。
=========================
当然,要修改电信、移动、联通的3G、2G信号也可以在这个类中去修改。
本文转载自
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
本人言论仅代表本人观点,如有不足请指正-----解答是为了延续曾经被帮助的感动
MIUI七夕鹊桥勋章
MIUI七周年
MIUI 9纪念勋章
小米7周年勋章
2017米粉节晒单赢专属勋章
“澎湃S1 ”芯片纪念勋章
参与活动回帖可得
小火箭勋章
神舟11号 话题活动
MIUI 300周
MIUI 300周更新纪念勋章
为奥运加油勋章
为奥运加油勋章
MIUI 8纪念勋章
MIUI 8纪念勋章
MIUI 7纪念勋章
参加流量购买活动
MIUI五周年
MIUI五周年纪念勋章
已关注微信
已关注极客秀微信
关注腾讯微博
已关注腾讯微博
关注新浪微博
已关注新浪微博
MIUI六周年
MIUI六周年纪念勋章
Copyright (C) 2017 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号android&获取手机网络状态
与网络相关的,就经常要做网络状态判断及信息获取。
用到的类ConnectivityManager
和NetworkInfo&
//获取网络连接管理者
& & ConnectivityManager
connectionManager = (ConnectivityManager)&
&context.getSystemService(Context.CONNECTIVITY_SERVICE);&
//获取网络的状态信息,有下面三种方式
& & NetworkInfo networkInfo =
connectionManager.getActiveNetworkInfo();
getDetailedState():获取详细状态。
getExtraInfo():获取附加信息。
getReason():获取连接失败的原因。
getType():获取网络类型(一般为移动或Wi-Fi)。
getTypeName():获取网络类型名称(一般取值“WIFI”或“MOBILE”)。
isAvailable():判断该网络是否可用。
isConnected():判断是否已经连接。
isConnectedOrConnecting():判断是否已经连接或正在连接。
isFailover():判断是否连接失败。
isRoaming():判断是否漫游
& & 当用wifi上的时候
& & getType
getExtraInfo是空的
& & 当用手机上的时候
& & getType
& & 用移动CMNET方式
& & getExtraInfo
的值是cmnet
& & 用移动CMWAP方式
& & getExtraInfo
的值是cmwap&
&但是不在代理的情况下访问普通的网站访问不了
& & 用联通3gwap方式
& & getExtraInfo
的值是3gwap
& & 用联通3gnet方式
& & getExtraInfo
的值是3gnet
& & 用联通uniwap方式
& & getExtraInfo
的值是uniwap
& & 用联通uninet方式
& & getExtraInfo
的值是uninet
尝试以下方法获取networktype
TelephonyManager
telephonyManager =&&
(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
& int networkType =
telephonyManager.getNetworkType();
& Log.e("network Type", networkType +
& Log.e("network CountryIso",
telephonyManager.getNetworkCountryIso());
& Log.e("network Operator",
telephonyManager.getNetworkOperator());
& Log.e("network OperatorName",
telephonyManager.getNetworkOperatorName());
&&&//public
static final int NETWORK_TYPE_UNKNOWN = 0;
& //public static final int NETWORK_TYPE_GPRS =
& //public static final int NETWORK_TYPE_EDGE =
& //public static final int NETWORK_TYPE_UMTS =
& //public static final int NETWORK_TYPE_CDMA =
& //public static final int NETWORK_TYPE_EVDO_0 =
& //public static final int NETWORK_TYPE_EVDO_A =
& //public static final int NETWORK_TYPE_1xRTT =
& //public static final int NETWORK_TYPE_HSDPA =
& //public static final int NETWORK_TYPE_HSUPA =
& //public static final int NETWORK_TYPE_HSPA =
& //public static final int NETWORK_TYPE_IDEN =
下面总结一些常用方法:
com.ltc.demo.
java.net.InetA
java.net.NetworkI
java.net.SocketE
java.util.E
android.content.C
android.net.ConnectivityM
android.net.NetworkI
android.net.wifi.WifiI
android.net.wifi.WifiM
android.telephony.TelephonyM
android.util.L
public class NetworkUtil
& & & private
static final String TAG = "NetworkUtil";
& & & public
static boolean haveInternet(Context context) {
& NetworkInfo info = (NetworkInfo)
((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE))
.getActiveNetworkInfo();
& if (info == null || !info.isConnected())
& if (info.isRoaming()) {
& & // here is the roaming option
you can change it if you want to
& & // disable internet while
roaming, just return false
是否在漫游,可根据程序需求更改返回值
& & & public
static boolean isnetWorkAvilable(Context context) {
& ConnectivityManager connectivityManager =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
& if(connectivityManager == null) {
& & Log.e(TAG, "couldn't get
connectivity manager");
& } else {
& & NetworkInfo [] networkInfos =
connectivityManager.getAllNetworkInfo();
& & if(networkInfos !=
& & & for (int i
= 0, count = networkInfos. i & i++) {
& if(networkInfos[i].getState() ==
NetworkInfo.State.CONNECTED){
& & & public
static String getLocalIpAddress() {
& & for (Enumeration en =
NetworkInterface
& .getNetworkInterfaces(); en.hasMoreElements();)
NetworkInterface intf = en.nextElement();
(Enumeration enumIpAddr = intf
& & .getInetAddresses();
enumIpAddr.hasMoreElements();) {
& InetAddress inetAddress =
enumIpAddr.nextElement();
& if (!inetAddress.isLoopbackAddress())
& & return
inetAddress.getHostAddress().toString();
& } catch (SocketException ex) {
& & Log.e("getLocalIpAddress",
ex.toString());
& & & public
static String getLocalMacAddress(Context context) {
& WifiManager wifi = (WifiManager)
context.getSystemService(Context.WIFI_SERVICE);
& WifiInfo info =
wifi.getConnectionInfo();
& return info.getMacAddress();
& & & public
static boolean isWiFiActive(Context context) {
& ConnectivityManager connectivity =
(ConnectivityManager)
.getSystemService(Context.CONNECTIVITY_SERVICE);&&
(connectivity != null)
&NetworkInfo[] info =
connectivity.getAllNetworkInfo();&&
&& &if (info !=
&& & for (int i
= 0; i & info. i++)
(info[i].getTypeName().equals("WIFI") &&
info[i].isConnected())
&& &return
& & & public
static boolean hasMoreThanOneConnection(Context
& ConnectivityManager manager =
(ConnectivityManager)context
.getSystemService(Context.CONNECTIVITY_SERVICE);
& if(manager==null){
& & NetworkInfo [] info =
manager.getAllNetworkInfo();
& & int counter = 0;
& & for(int i = 0 ;i
if(info[i].isConnected()){
& counter++;
& & if(counter&1){
& & & return
& public static final int NETWORK_TYPE_EHRPD=14;
// Level 11
& public static final int NETWORK_TYPE_EVDO_B=12;
// Level 9
& public static final int NETWORK_TYPE_HSPAP=15;
// Level 13
& public static final int NETWORK_TYPE_IDEN=11; //
& public static final int NETWORK_TYPE_LTE=13; //
& public static boolean isConnected(Context
&&&ConnectivityManager
cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
&&&NetworkInfo
info = cm.getActiveNetworkInfo();
&&&return (info
!= null && info.isConnected());
& public static boolean isConnectedFast(Context
&&&ConnectivityManager
cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
&&&NetworkInfo
info = cm.getActiveNetworkInfo();
&&&return (info
!= null && info.isConnected() &&
isConnectionFast(info.getType(),info.getSubtype()));
& public static boolean isConnectionFast(int type,
int subType){
&&&if(type==ConnectivityManager.TYPE_WIFI){
&System.out.println("CONNECTED VIA
&& &return
if(type==ConnectivityManager.TYPE_MOBILE){
&switch(subType){
TelephonyManager.NETWORK_TYPE_1xRTT:
&& & return
// ~ 50-100 kbps
TelephonyManager.NETWORK_TYPE_CDMA:
&& & return
// ~ 14-64 kbps
TelephonyManager.NETWORK_TYPE_EDGE:
&& & return
// ~ 50-100 kbps
TelephonyManager.NETWORK_TYPE_EVDO_0:
&& & return
// ~ 400-1000 kbps
TelephonyManager.NETWORK_TYPE_EVDO_A:
&& & return
// ~ 600-1400 kbps
TelephonyManager.NETWORK_TYPE_GPRS:
&& & return
// ~ 100 kbps
TelephonyManager.NETWORK_TYPE_HSDPA:
&& & return
// ~ 2-14 Mbps
TelephonyManager.NETWORK_TYPE_HSPA:
&& & return
// ~ 700-1700 kbps
TelephonyManager.NETWORK_TYPE_HSUPA:
&& & return
// ~ 1-23 Mbps
TelephonyManager.NETWORK_TYPE_UMTS:
&& & return
// ~ 400-7000 kbps
&& &// NOT
AVAILABLE YET IN API LEVEL 7
NETWORK_TYPE_EHRPD:
&& & return
// ~ 1-2 Mbps
NETWORK_TYPE_EVDO_B:
&& & return
// ~ 5 Mbps
NETWORK_TYPE_HSPAP:
&& & return
// ~ 10-20 Mbps
NETWORK_TYPE_IDEN:
&& & return
// ~25 kbps&
NETWORK_TYPE_LTE:
&& & return
// ~ 10+ Mbps
TelephonyManager.NETWORK_TYPE_UNKNOWN:
&& & return
&& & return
&& &return
& & & public
static long ip2int(String ip) {
&&&String[]
items = ip.split("\\.");
Long.valueOf(items[0]) && 24
Long.valueOf(items[1]) && 16
Long.valueOf(items[2]) && 8 |
Long.valueOf(items[3]);
& & & public
static String int2ip(long ipInt) {
&&&StringBuilder
sb = new StringBuilder();
&&&sb.append(ipInt
& 0xFF).append(".");
&&&sb.append((ipInt
&& 8) & 0xFF).append(".");
&&&sb.append((ipInt
&& 16) & 0xFF).append(".");
&&&sb.append((ipInt
&& 24) & 0xFF);
sb.toString();
----------------------------------------
1、获取运营商名字
&private void getOperatorName() {
&&String operator =
telephonyManager.getSimOperator();
&&if (operator != null) {
(operator.equals("46000") || operator.equals("46002")) {
operatorName="中国移动";
&&&&signalTextView.setText("中国移动");
Toast.makeText(this, "此卡属于(中国移动)",
Toast.LENGTH_SHORT).show();
&&&} else if
(operator.equals("46001")) {
operatorName="中国联通";
&&&&signalTextView.setText("中国联通");
Toast.makeText(this, "此卡属于(中国联通)",
Toast.LENGTH_SHORT).show();
&&&} else if
(operator.equals("46003")) {
operatorName="中国电信";
&&&&signalTextView.setText("中国电信");
Toast.makeText(this, "此卡属于(中国电信)",
Toast.LENGTH_SHORT).show();
2 获取网络类型
&private void getNetType() {
&&int networkType =
telephonyManager.getNetworkType();
&&if (networkType ==
TelephonyManager.NETWORK_TYPE_UMTS
networkType == TelephonyManager.NETWORK_TYPE_HSDPA
networkType == TelephonyManager.NETWORK_TYPE_EVDO_0
networkType == TelephonyManager.NETWORK_TYPE_EVDO_A) {
&&&/ 联通3G
&&&netTypeTextView.setText("3G");、&&}
else if (networkType == TelephonyManager.NETWORK_TYPE_GPRS
networkType == TelephonyManager.NETWORK_TYPE_EDGE
networkType == TelephonyManager.NETWORK_TYPE_CDMA) {
&&&netTypeTextView.setText("2G");
&&} else {
&&&netTypeTextView.setText("");
----------------------------------------------------
判断网络类型是wifi,还是3G,还是2G网络,对不同
的网络进行不同的处理,现将判断方法整理给大家,以供参考
说明:下面用到的数据移动2G,联通2G,联通3G,wifi我都已经测试过,暂时手上
没有电信的卡,所以没有验证,有电信手机的同事,可以验证一下,验证后将结果
发送给大家。
&ConnectivityManager&connectMgr&=&(ConnectivityManager)&this
&&&&&&&&.getSystemService(Context.CONNECTIVITY_SERVICE);
&NetworkInfo&info&=&connectMgr.getActiveNetworkInfo();
一、判断网络是否是wifi,在判断之前一定要进行的非空判断,如果没有任何网络
连接info&==null
info.getType()&==&ConnectivityManager.TYPE_WIFI
二、判断是否是手机网络
info&!=null&&&&info.getType()&==&&ConnectivityManager.TYPE_MOBILE
手机网络进行详细区分:
info.getSubtype()&这里使用&getSubtype(),不是&getType(),getType()返回的
是0,或者1,是区分是手机网络还是wifi
info.getSubtype()取值列表如下:
&&&&&&&&&*&NETWORK_TYPE_CDMA&网络类型为CDMA
&&&&&&&&&*&NETWORK_TYPE_EDGE&网络类型为EDGE
&&&&&&&&&*&NETWORK_TYPE_EVDO_0&网络类型为EVDO0
&&&&&&&&&*&NETWORK_TYPE_EVDO_A&网络类型为EVDOA
&&&&&&&&&*&NETWORK_TYPE_GPRS&网络类型为GPRS
&&&&&&&&&*&NETWORK_TYPE_HSDPA&网络类型为HSDPA
&&&&&&&&&*&NETWORK_TYPE_HSPA&网络类型为HSPA
&&&&&&&&&*&NETWORK_TYPE_HSUPA&网络类型为HSUPA
&&&&&&&&&*&NETWORK_TYPE_UMTS&网络类型为UMTS
联通的3G为UMTS或HSDPA,移动和联通的2G为GPRS或EGDE,电信的2G为CDMA,电信
的3G为EVDO
----------------------------------------------------------------
Android中与电话功能相关的类是 TelephonyManager ,此类中定义了很多常量,以下分类说明
获取以下信息需要在AndroidManifest.xml中指定权限
一、 数据连接状态
获取数据连接状态:int getDataState()
获取数据活动状态:int getDataActivity()
常用的有这几个:
int DATA_ACTIVITY_IN 数据连接状态:活动,正在接受数据
int DATA_ACTIVITY_OUT 数据连接状态:活动,正在发送数据
int DATA_ACTIVITY_INOUT 数据连接状态:活动,正在接受和发送数据
int DATA_ACTIVITY_NONE 数据连接状态:活动,但无数据发送和接受
int DATA_CONNECTED 数据连接状态:已连接
int DATA_CONNECTING 数据连接状态:正在连接
int DATA_DISCONNECTED 数据连接状态:断开
int DATA_SUSPENDED 数据连接状态:暂停
二、 移动网络类型
获取网络类型:int getNetworkType()
常用的有这几个:
int NETWORK_TYPE_CDMA 网络类型为CDMA
int NETWORK_TYPE_EDGE 网络类型为EDGE
int NETWORK_TYPE_EVDO_0 网络类型为EVDO0
int NETWORK_TYPE_EVDO_A 网络类型为EVDOA
int NETWORK_TYPE_GPRS 网络类型为GPRS
int NETWORK_TYPE_HSDPA 网络类型为HSDPA
int NETWORK_TYPE_HSPA 网络类型为HSPA
int NETWORK_TYPE_HSUPA 网络类型为HSUPA
int NETWORK_TYPE_UMTS 网络类型为UMTS
在中国,联通的3G为UMTS或HSDPA,移动和联通的2G为GPRS或EGDE,电信的2G为CDMA,电信的3G为EVDO
三、 手机制式类型
获取手机制式:int getPhoneType()
int PHONE_TYPE_CDMA 手机制式为CDMA,电信
int PHONE_TYPE_GSM 手机制式为GSM,移动和联通
int PHONE_TYPE_NONE 手机制式未知
四、 SIM卡状态
获取SIM卡状态:int getSimState()
int SIM_STATE_ABSENT SIM卡未找到
int SIM_STATE_NETWORK_LOCKED SIM卡网络被锁定,需要Network PIN解锁
int SIM_STATE_PIN_REQUIRED SIM卡PIN被锁定,需要User PIN解锁
int SIM_STATE_PUK_REQUIRED SIM卡PUK被锁定,需要User PUK解锁
int SIM_STATE_READY SIM卡可用
int SIM_STATE_UNKNOWN SIM卡未知
五、其它信息
String getSimCountryIso()
返回SIM卡提供商的国家代码
String getNetworkCountryIso()
返回ISO标准的国家码,即国际长途区号
String getSimOperator()
String getNetworkOperator()
返回MCC+MNC代码 (SIM卡运营商国家代码和运营商网络代码)(IMSI)
String getSimOperatorName()
String getNetworkOperatorName()
返回移动网络运营商的名字(SPN)
String getSubscriberId()
返回IMSI,即国际移动用户识别码
String getDeviceId()
如果是GSM网络,返回IMEI;如果是CDMA网络,返回MEID
String getSimSerialNumber()
返回SIM卡的序列号(IMEI)
String getLine1Number()
返回手机号码,对于GSM网络来说即MSISDN
boolean isNetworkRoaming()
返回手机是否处于漫游状态
IMSI是国际移动用户识别码的简称(International Mobile Subscriber
IMSI共有15位,其结构如下:
MCC+MNC+MIN
MCC:Mobile Country Code,移动国家码,共3位,中国为460;
MNC:Mobile NetworkCode,移动网络码,共2位
在中国,移动的代码为电00和02,联通的代码为01,电信的代码为03
合起来就是(也是Android手机中APN配置文件中的代码):
中国移动:
中国联通:46001
中国电信:46003
举例,一个典型的IMSI号码为001
IMEI是International Mobile Equipment Identity
(国际移动设备标识)的简称
IMEI由15位数字组成的”电子串号”,它与每台手机一一对应,而且该码是全世界唯一的
其组成为:
1. 前6位数(TAC)是”型号核准号码”,一般代表机型
2. 接着的2位数(FAC)是”最后装配号”,一般代表产地
3. 之后的6位数(SNR)是”串号”,一般代表生产顺序号
4. 最后1位数(SP)通常是”0&P,为检验码,目前暂备用
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 手机信号强度 的文章

 

随机推荐