1、android 3G 手机信号 信息获取 android 3G 手机信号 信息获取分类: android2012-09-21 10:59 1431人阅读 评论(0) 收藏 举报android手机servicelayout电信menu在androi中手机信号信息的获取可以通过系统提供的TELEPHONY_SERVICE获取java view plaincopy1 TelephonyManager tel = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); TelephonyManager 可以监听 PhoneState
2、Listener, PhoneStateListener 提供了java view plaincopy2 onSignalStrengthsChanged 手机信号变动 3 onServiceStateChanged 手机服务状态变动 其中onSignalStrengthsChanged可以获取到的有用信息如下:java view plaincopy4 /* 5 signalStrength.isGsm() 是否GSM信号 2G or 3G 6 signalStrength.getCdmaDbm(); 联通3G 信号强度 7 signalStrength.getCdmaEcio(); 联通3G
3、 载干比 8 signalStrength.getEvdoDbm(); 电信3G 信号强度 9 signalStrength.getEvdoEcio(); 电信3G 载干比 10 signalStrength.getEvdoSnr(); 电信3G 信噪比 11 signalStrength.getGsmSignalStrength(); 2G 信号强度 12 signalStrength.getGsmBitErrorRate(); 2G 误码率 13 14 载干比 ,它是指空中模拟电波中的信号与噪声的比值 15 */ 奇怪的是移动的3G信号TD-SCDMA 信息没办法获取到而onService
4、StateChanged 提供的状态变动如下:java view plaincopy16 /* 17 ServiceState.STATE_EMERGENCY_ONLY 仅限紧急呼叫 18 ServiceState.STATE_IN_SERVICE 信号正常 19 ServiceState.STATE_OUT_OF_SERVICE 不在服务区 20 ServiceState.STATE_POWER_OFF 断电 21 */ 以下给出具体的实例:1.在布局文件中增加一个3G图标,和显示具体信息的文本 (activity_g3_example.xml)html view plaincopy22 2
5、8 29 34 35 40 41 2. 为3G图标添加一组可选的图标,在drawable-hdpi目录下增加ic_3g.xml文件,内容如下:html view plaincopy42 43 44 level-list xmlns:android= 45 46 47 48 49 注意需要导入用到的图片3.在代码中监听手机信号和状态的变动 (G3Example.java)java view plaincopy50 package com.example.g3example; 51 52 import android.os.Bundle; 53 import android.app.Activit
6、y; 54 import android.content.Context; 55 import android.telephony.PhoneStateListener; 56 import android.telephony.ServiceState; 57 import android.telephony.SignalStrength; 58 import android.telephony.TelephonyManager; 59 import android.util.Log; 60 import android.view.Menu; 61 import android.widget.
7、ImageButton; 62 import android.widget.TextView; 63 64 public class G3Example extends Activity 65 66 private final String TAG = G3Example; 67 68 private ImageButton mIcon3G; 69 private TextView mLabel3G; 70 71 Override 72 public void onCreate(Bundle savedInstanceState) 73 super.onCreate(savedInstance
8、State); 74 setContentView(R.layout.activity_g3_example); 75 76 mIcon3G = (ImageButton)findViewById(R.id.Icon_3GStatus); 77 mLabel3G = (TextView)findViewById(R.id.Label_3GDetail); 78 79 TelephonyManager tel = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 80 tel.listen(new PhoneStateM
9、onitor(), PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | PhoneStateListener.LISTEN_SERVICE_STATE); 81 82 83 Override 84 public boolean onCreateOptionsMenu(Menu menu) 85 getMenuInflater().inflate(R.menu.activity_g3_example, menu); 86 return true; 87 88 89 public class PhoneStateMonitor extends PhoneSta
10、teListener 90 public void onSignalStrengthsChanged(SignalStrength signalStrength) 91 super.onSignalStrengthsChanged(signalStrength); 92 /* 93 signalStrength.isGsm() 是否GSM信号 2G or 3G 94 signalStrength.getCdmaDbm(); 联通3G 信号强度 95 signalStrength.getCdmaEcio(); 联通3G 载干比 96 signalStrength.getEvdoDbm(); 电信
11、3G 信号强度 97 signalStrength.getEvdoEcio(); 电信3G 载干比 98 signalStrength.getEvdoSnr(); 电信3G 信噪比 99 signalStrength.getGsmSignalStrength(); 2G 信号强度 100 signalStrength.getGsmBitErrorRate(); 2G 误码率 101 102 载干比 ,它是指空中模拟电波中的信号与噪声的比值 103 */ 104 mLabel3G.setText(IsGsm : + signalStrength.isGsm() + 105 nCDMA Dbm :
12、 + signalStrength.getCdmaDbm() + Dbm + 106 nCDMA Ecio : + signalStrength.getCdmaEcio() + dB*10 + 107 nEvdo Dbm : + signalStrength.getEvdoDbm() + Dbm + 108 nEvdo Ecio : + signalStrength.getEvdoEcio() + dB*10 + 109 nGsm SignalStrength : + signalStrength.getGsmSignalStrength() + 110 nGsm BitErrorRate :
13、 + signalStrength.getGsmBitErrorRate(); 111 112 mIcon3G.setImageLevel(Math.abs(signalStrength.getGsmSignalStrength(); 113 114 115 public void onServiceStateChanged(ServiceState serviceState) 116 super.onServiceStateChanged(serviceState); 117 118 /* 119 ServiceState.STATE_EMERGENCY_ONLY 仅限紧急呼叫 120 Se
14、rviceState.STATE_IN_SERVICE 信号正常 121 ServiceState.STATE_OUT_OF_SERVICE 不在服务区 122 ServiceState.STATE_POWER_OFF 断电 123 */ 124 switch(serviceState.getState() 125 126 case ServiceState.STATE_EMERGENCY_ONLY: 127 Log.d(TAG, 3G STATUS : STATE_EMERGENCY_ONLY); 128 break; 129 case ServiceState.STATE_IN_SERVI
15、CE: 130 Log.d(TAG, 3G STATUS : STATE_IN_SERVICE); 131 break; 132 case ServiceState.STATE_OUT_OF_SERVICE: 133 Log.d(TAG, 3G STATUS : STATE_OUT_OF_SERVICE); 134 break; 135 case ServiceState.STATE_POWER_OFF: 136 Log.d(TAG, 3G STATUS : STATE_POWER_OFF); 137 break; 138 default: 139 break; 140 141 142 143
16、 4. 最后在AndroidManifest.xml增加获取手机信号权限的支持html view plaincopy144 android 3G 手机信号 信息获取分类: android2012-09-21 10:59 1431人阅读 评论(0) 收藏 举报android手机servicelayout电信menu在androi中手机信号信息的获取可以通过系统提供的TELEPHONY_SERVICE获取java view plaincopy145 TelephonyManager tel = (TelephonyManager)getSystemService(Context.TELEPHONY
17、_SERVICE); TelephonyManager 可以监听 PhoneStateListener, PhoneStateListener 提供了java view plaincopy146 onSignalStrengthsChanged 手机信号变动 147 onServiceStateChanged 手机服务状态变动 其中onSignalStrengthsChanged可以获取到的有用信息如下:java view plaincopy148 /* 149 signalStrength.isGsm() 是否GSM信号 2G or 3G 150 signalStrength.getCdma
18、Dbm(); 联通3G 信号强度 151 signalStrength.getCdmaEcio(); 联通3G 载干比 152 signalStrength.getEvdoDbm(); 电信3G 信号强度 153 signalStrength.getEvdoEcio(); 电信3G 载干比 154 signalStrength.getEvdoSnr(); 电信3G 信噪比 155 signalStrength.getGsmSignalStrength(); 2G 信号强度 156 signalStrength.getGsmBitErrorRate(); 2G 误码率 157 158 载干比 ,
19、它是指空中模拟电波中的信号与噪声的比值 159 */ 奇怪的是移动的3G信号TD-SCDMA 信息没办法获取到而onServiceStateChanged 提供的状态变动如下:java view plaincopy160 /* 161 ServiceState.STATE_EMERGENCY_ONLY 仅限紧急呼叫 162 ServiceState.STATE_IN_SERVICE 信号正常 163 ServiceState.STATE_OUT_OF_SERVICE 不在服务区 164 ServiceState.STATE_POWER_OFF 断电 165 */ 以下给出具体的实例:1.在布局
20、文件中增加一个3G图标,和显示具体信息的文本 (activity_g3_example.xml)html view plaincopy166 172 173 178 179 184 185 2. 为3G图标添加一组可选的图标,在drawable-hdpi目录下增加ic_3g.xml文件,内容如下:html view plaincopy186 187 188 level-list xmlns:android= 189 190 191 192 193 注意需要导入用到的图片3.在代码中监听手机信号和状态的变动 (G3Example.java)java view plaincopy194 packa
21、ge com.example.g3example; 195 196 import android.os.Bundle; 197 import android.app.Activity; 198 import android.content.Context; 199 import android.telephony.PhoneStateListener; 200 import android.telephony.ServiceState; 201 import android.telephony.SignalStrength; 202 import android.telephony.Telep
22、honyManager; 203 import android.util.Log; 204 import android.view.Menu; 205 import android.widget.ImageButton; 206 import android.widget.TextView; 207 208 public class G3Example extends Activity 209 210 private final String TAG = G3Example; 211 212 private ImageButton mIcon3G; 213 private TextView m
23、Label3G; 214 215 Override 216 public void onCreate(Bundle savedInstanceState) 217 super.onCreate(savedInstanceState); 218 setContentView(R.layout.activity_g3_example); 219 220 mIcon3G = (ImageButton)findViewById(R.id.Icon_3GStatus); 221 mLabel3G = (TextView)findViewById(R.id.Label_3GDetail); 222 223 TelephonyManager tel = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 224 tel.listen(new PhoneStateMonitor(), PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | PhoneStateListener.LISTEN_SERVICE_STATE); 225
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1