查看: 2498|回复: 0

安卓处理网络状态——无网,2g,3g,wifi,ethernet,other

[复制链接]
发表于 2013-8-28 15:31:16 | 显示全部楼层 |阅读模式
关键词: 清源教育 , android , 网络状态
分享给大家一篇技术文章,还有很多不足之处,欢迎吐槽!期待各位android爱好者,加入android学习交流群:278744577,加群请验证:eec,共同探讨!
直接上代码:
  1. public class GetNetWorkStateActor extends FusionActor {
  2. @Override
  3. public boolean processFusionMessage(FusionMessage msg) {
  4. // TODO Auto-generated method stub
  5. msg.setResponseData(checkNet());
  6. return false;
  7. }
  8. private int checkNet() {
  9. // TODO Auto-generated method stub
  10. ConnectivityManager connectivityManager = (ConnectivityManager) context
  11. .getSystemService(Context.CONNECTIVITY_SERVICE);
  12. NetworkInfo mobNetInfoActivity = connectivityManager
  13. .getActiveNetworkInfo();
  14. int netFlag = 0;
  15. if (mobNetInfoActivity != null) {
  16. switch (mobNetInfoActivity.getType()) {
  17. case ConnectivityManager.TYPE_ETHERNET:
  18. // ethernet
  19. netFlag = 1;
  20. break;
  21. case ConnectivityManager.TYPE_WIFI:
  22. // wifi
  23. netFlag = 2;
  24. break;
  25. case ConnectivityManager.TYPE_MOBILE:
  26. // gprs
  27. if(isFastMobileNetwork(context)){
  28. //2g
  29. netFlag = 3;
  30. }else{
  31. //3g
  32. netFlag = 4;
  33. }
  34. break;
  35. default:
  36. break;
  37. }
  38. } else {
  39. //no network
  40. netFlag = 0;
  41. }
  42. return netFlag;
  43. }
  44. private static boolean isFastMobileNetwork(Context context) {
  45. TelephonyManager telephonyManager = (TelephonyManager) context
  46. .getSystemService(Context.TELEPHONY_SERVICE);
  47. switch (telephonyManager.getNetworkType()) {
  48. case TelephonyManager.NETWORK_TYPE_1xRTT:
  49. return false; // ~ 50-100 kbps
  50. case TelephonyManager.NETWORK_TYPE_CDMA:
  51. return false; // ~ 14-64 kbps
  52. case TelephonyManager.NETWORK_TYPE_EDGE:
  53. return false; // ~ 50-100 kbps
  54. case TelephonyManager.NETWORK_TYPE_EVDO_0:
  55. return true; // ~ 400-1000 kbps
  56. case TelephonyManager.NETWORK_TYPE_EVDO_A:
  57. return true; // ~ 600-1400 kbps
  58. case TelephonyManager.NETWORK_TYPE_GPRS:
  59. return false; // ~ 100 kbps
  60. case TelephonyManager.NETWORK_TYPE_HSDPA:
  61. return true; // ~ 2-14 Mbps
  62. case TelephonyManager.NETWORK_TYPE_HSPA:
  63. return true; // ~ 700-1700 kbps
  64. case TelephonyManager.NETWORK_TYPE_HSUPA:
  65. return true; // ~ 1-23 Mbps
  66. case TelephonyManager.NETWORK_TYPE_UMTS:
  67. return true; // ~ 400-7000 kbps
  68. case TelephonyManager.NETWORK_TYPE_EHRPD:
  69. return true; // ~ 1-2 Mbps
  70. case TelephonyManager.NETWORK_TYPE_EVDO_B:
  71. return true; // ~ 5 Mbps
  72. case TelephonyManager.NETWORK_TYPE_HSPAP:
  73. return true; // ~ 10-20 Mbps
  74. case TelephonyManager.NETWORK_TYPE_IDEN:
  75. return false; // ~25 kbps
  76. case TelephonyManager.NETWORK_TYPE_LTE:
  77. return true; // ~ 10+ Mbps
  78. case TelephonyManager.NETWORK_TYPE_UNKNOWN:
  79. return false;
  80. default:
  81. return false;
  82. }
  83. }
  84. }
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表