根据此处的Android开发人员文档和Wikipedia链接,我给出了注释并定义了网络类型。请检查注释中的链接。

您可以使用getNetworkType获取网络类型。

public class CommonUtils {

/**

* To get device consuming netowkr type is 2g,3g,4g

*

* @param context

* @return "2g","3g","4g" as a String based on the network type

*/

public static String getNetworkType(Context context) {

TelephonyManager mTelephonyManager = (TelephonyManager)

context.getSystemService(Context.TELEPHONY_SERVICE);

int networkType = mTelephonyManager.getNetworkType();

switch (networkType) {

case TelephonyManager.NETWORK_TYPE_GPRS:

case TelephonyManager.NETWORK_TYPE_EDGE:

case TelephonyManager.NETWORK_TYPE_CDMA:

case TelephonyManager.NETWORK_TYPE_1xRTT:

case TelephonyManager.NETWORK_TYPE_IDEN:

return "2g";

case TelephonyManager.NETWORK_TYPE_UMTS:

case TelephonyManager.NETWORK_TYPE_EVDO_0:

case TelephonyManager.NETWORK_TYPE_EVDO_A:

/**

From this link https://en.wikipedia.org/wiki/Evolution-Data_Optimized ..NETWORK_TYPE_EVDO_0 & NETWORK_TYPE_EVDO_A

EV-DO is an evolution of the CDMA2000 (IS-2000) standard that supports high data rates.

Where CDMA2000 https://en.wikipedia.org/wiki/CDMA2000 .CDMA2000 is a family of 3G[1] mobile technology standards for sending voice,

data, and signaling data between mobile phones and cell sites.

*/

case TelephonyManager.NETWORK_TYPE_HSDPA:

case TelephonyManager.NETWORK_TYPE_HSUPA:

case TelephonyManager.NETWORK_TYPE_HSPA:

case TelephonyManager.NETWORK_TYPE_EVDO_B:

case TelephonyManager.NETWORK_TYPE_EHRPD:

case TelephonyManager.NETWORK_TYPE_HSPAP:

//Log.d("Type", "3g");

//For 3g HSDPA , HSPAP(HSPA+) are main  networktype which are under 3g Network

//But from other constants also it will 3g like HSPA,HSDPA etc which are in 3g case.

//Some cases are added after  testing(real) in device with 3g enable data

//and speed also matters to decide 3g network type

//https://en.wikipedia.org/wiki/4G#Data_rate_comparison

return "3g";

case TelephonyManager.NETWORK_TYPE_LTE:

//No specification for the 4g but from wiki

//I found(LTE (Long-Term Evolution, commonly marketed as 4G LTE))

//https://en.wikipedia.org/wiki/LTE_(telecommunication)

return "4g";

default:

return "Notfound";

}

}

/**

* To check device has internet

*

* @param context

* @return boolean as per status

*/

public static boolean isNetworkConnected(Context context) {

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo netInfo = cm.getActiveNetworkInfo();

return netInfo != null && netInfo.isConnected();

}

}

android 判断2g 3g 4g,如何确定网络类型是2G,3G还是4G相关推荐

  1. 获取iPhone/iPad设备网络类型(2G,3G,4G,5G,WIFI)

    目前我们获取手机网络类型主要还是用的 AFNetwork 但是AFNetwork有个问题就是类型不够充分,只能四种类型 typedef NS_ENUM(NSInteger, AFNetworkReac ...

  2. Android中检测手机制式和移动网络类型

    Android中与电话功能相关的类是 TelephonyManager ,此类中定义了很多常量,以下分类说明 获取以下信息需要在AndroidManifest.xml中指定权限 一. 数据连接状态 获 ...

  3. Android 7.1 双卡双待机器,首选网络类型设置 详细分析

    首次由preferred_network_mode转换成preferred_network_mode1和preferred_network_mode2是在SubscriptionInfoUpdater ...

  4. java 判断网络类型_Android 网络类型判断(2g、3g、wifi)及IP地址获取

    使用NetworkInfo的getType()方法可以判断是WiFi还是手机网络.手机网络的情况下,使用NetworkInfo的 getSubtype()方法再去和TelephonyManager的网 ...

  5. android 充电监听,Android_Android判断和监听底座状态和类型的方法介绍,底座的状态跟充电状态类似, - phpStudy...

    Android判断和监听底座状态和类型的方法介绍 底座的状态跟充电状态类似,很多底座提供充电功能(座充). 底座状态同样使用sticky Intent广播.可以查询设备是否插入底座,哪种底座. 判断当 ...

  6. 安卓网络类型设置的实现

    工作背景:公司出口国外某国的设备,因为该国对4G认证要求较高,流程非常麻烦,客户不想取得4G方面认证,因此订单机器设备需禁用4G,且不能手动恢复4G,默认3G/2G(auto)模式. 实现思路:在安卓 ...

  7. (转)Android 判断用户2G/3G/4G移动数据网络

    在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需(要根据用户当前网络情况来做一些调整的,也可以在 App 的设置模块里,让用户自己选择,在 2G ...

  8. Android 判断用户2G/3G/4G移动数据网络

    2019独角兽企业重金招聘Python工程师标准>>> Android 判断用户2G/3G/4G移动数据网络 在做 Android App 的时候,为了给用户省流量,为了不激起用户的 ...

  9. Android开发之获取网络类型(WIFI、2G、3G、4G)和运营商名称

    在Android开发中,常常使用到网络,可能需要针对不同的网络(WIFI或者流量),需要做不同的处理,那么怎么获取当前网络呢?为此写了个工具类,以后需要使用,直接拿来用就行(就喜欢拿来主义,哈哈). ...

最新文章

  1. Centos7下安装Docker
  2. Ubuntu dns
  3. pyspark 核心概念
  4. 超线程技术——超线程技术让(P4)处理器增加5%的裸晶面积,就可以换来15%~30%的效能提升,本质单核模拟双核!和异步编程的思想无异。...
  5. Taro+react开发(88):taro条件渲染
  6. Jmeter上传文件
  7. Backbox Linux简介与配置内网IP
  8. dw cs 5 安装失败解决方案
  9. 手输Unicode字符的方法
  10. 计件工资系统c语言,计件工资管理系统
  11. 用深度强化学习玩FlappyBird
  12. 飞书的聊天信息服务器,飞书服务端SDK java
  13. 高薪程序员面试题精讲系列28之你熟悉哪些设计模式?
  14. 2022年(上半年)信息系统项目管理师考试-综合知识真题及解析(三)
  15. RT_Thread_进程间通讯——邮箱
  16. OP-TEE基本的从芯片设计到给客户的安全问题浅析
  17. jQuery图片预览插件
  18. CSS Tailwind
  19. win10麦克风说话没声音_电脑录屏,真的没那么麻烦
  20. Python(分治算法)问题 A: 找出伪币_给你一个装有n枚硬币的袋子。n枚硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。你的任务是找出这枚伪造的硬币。

热门文章

  1. 去年双11破10亿的耐克,和我们分享了2018新零售计划 | 新网商营销大会
  2. Springboot校园单车租赁管理系统的设计与实现 计算机毕设源码83654
  3. 【编译原理】LR(0)分析方法(c++实现)
  4. flowlayout java_Java FlowLayout
  5. 水平居中和垂直居中方法
  6. 文档管理是什么?都有哪些?
  7. “error C2712: 无法在要求对象展开的函数中使用__try”解决办法
  8. 前沿综述 | Nature子刊:空间转录组学的临床和转化价值
  9. P2765 魔术球问题(数学||最大流)
  10. 教师考编如何选学段?