Android获取信号强度

1.获得TelephoneManager:
  1. TelephonyManager telephoneManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);


2.获得PhoneStateListener:

  1. final int type = telephoneManager.getNetworkType();
  1. PhoneStateListener phoneStateListener = new PhoneStateListener() {
  2. @Override
  3. public void onSignalStrengthsChanged(SignalStrength signalStrength) {
  4. // TODO Auto-generated method stub
  5. super.onSignalStrengthsChanged(signalStrength);
  6. StringBuffer sb = new StringBuffer();
  7. String strength = String.valueOf(signalStrength
  8. .getGsmSignalStrength());
  9. if (type == TelephonyManager.NETWORK_TYPE_UMTS
  10. || type == TelephonyManager.NETWORK_TYPE_HSDPA) {
  11. sb.append("联通3g").append("信号强度:").append(strength);
  12. } else if (type == TelephonyManager.NETWORK_TYPE_GPRS
  13. || type == TelephonyManager.NETWORK_TYPE_EDGE) {
  14. sb.append("移动或者联通2g").append("信号强度:").append(strength);
  15. }else if(type==TelephonyManager.NETWORK_TYPE_CDMA){
  16. sb.append("电信2g").append("信号强度:").append(strength);
  17. }else if(type==TelephonyManager.NETWORK_TYPE_EVDO_0
  18. ||type==TelephonyManager.NETWORK_TYPE_EVDO_A){
  19. sb.append("电信3g").append("信号强度:").append(strength);
  20. }else{
  21. sb.append("非以上信号").append("信号强度:").append(strength);
  22. }
  23. toast.setText(sb.toString());
  24. toast.show();
  25. }
  26. };

对于上面代码的解释:

通过telePhoneManager获得网络类型,源码中给出的网络类型有以下:

  1. /** Network type is unknown */
  2. public staticfinalint NETWORK_TYPE_UNKNOWN =0;
  3. /** Current network is GPRS */
  4. public staticfinalint NETWORK_TYPE_GPRS =1;
  5. /** Current network is EDGE */
  6. public staticfinalint NETWORK_TYPE_EDGE =2;
  7. /** Current network is UMTS */
  8. public staticfinalint NETWORK_TYPE_UMTS =3;
  9. /** Current network is CDMA: Either IS95A or IS95B*/
  10. public staticfinalint NETWORK_TYPE_CDMA =4;
  11. /** Current network is EVDO revision 0*/
  12. public staticfinalint NETWORK_TYPE_EVDO_0 =5;
  13. /** Current network is EVDO revision A*/
  14. public staticfinalint NETWORK_TYPE_EVDO_A =6;
  15. /** Current network is 1xRTT*/
  16. public staticfinalint NETWORK_TYPE_1xRTT =7;
  17. /** Current network is HSDPA */
  18. public staticfinalint NETWORK_TYPE_HSDPA =8;
  19. /** Current network is HSUPA */
  20. public staticfinalint NETWORK_TYPE_HSUPA =9;
  21. /** Current network is HSPA */
  22. public staticfinalint NETWORK_TYPE_HSPA =10;
  23. /** Current network is iDen */
  24. public staticfinalint NETWORK_TYPE_IDEN =11;
  25. /** Current network is EVDO revision B*/
  26. public staticfinalint NETWORK_TYPE_EVDO_B =12;

在中国,联通3g为UMTS或者HSDPA,电信的3g为EVDO,移动和联通的2g为GPRS或者EGDE,电信的2G为CMDA

onSignalStrengthsChanged()方法,当信号改变时回调

3.注册监听到telephoneManager:

  1. telephoneManager.listen(phoneStateListener,
  2. PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);

4.在manifest中获得权限

      <uses-permissionandroid:name="android.permission.CHANGE_NEWWORK_STATE"/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值