android 判断2g 3g 4g,如何确定网络类型是2G,3G还是4G
根据此处的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相关推荐
- 获取iPhone/iPad设备网络类型(2G,3G,4G,5G,WIFI)
目前我们获取手机网络类型主要还是用的 AFNetwork 但是AFNetwork有个问题就是类型不够充分,只能四种类型 typedef NS_ENUM(NSInteger, AFNetworkReac ...
- Android中检测手机制式和移动网络类型
Android中与电话功能相关的类是 TelephonyManager ,此类中定义了很多常量,以下分类说明 获取以下信息需要在AndroidManifest.xml中指定权限 一. 数据连接状态 获 ...
- Android 7.1 双卡双待机器,首选网络类型设置 详细分析
首次由preferred_network_mode转换成preferred_network_mode1和preferred_network_mode2是在SubscriptionInfoUpdater ...
- java 判断网络类型_Android 网络类型判断(2g、3g、wifi)及IP地址获取
使用NetworkInfo的getType()方法可以判断是WiFi还是手机网络.手机网络的情况下,使用NetworkInfo的 getSubtype()方法再去和TelephonyManager的网 ...
- android 充电监听,Android_Android判断和监听底座状态和类型的方法介绍,底座的状态跟充电状态类似, - phpStudy...
Android判断和监听底座状态和类型的方法介绍 底座的状态跟充电状态类似,很多底座提供充电功能(座充). 底座状态同样使用sticky Intent广播.可以查询设备是否插入底座,哪种底座. 判断当 ...
- 安卓网络类型设置的实现
工作背景:公司出口国外某国的设备,因为该国对4G认证要求较高,流程非常麻烦,客户不想取得4G方面认证,因此订单机器设备需禁用4G,且不能手动恢复4G,默认3G/2G(auto)模式. 实现思路:在安卓 ...
- (转)Android 判断用户2G/3G/4G移动数据网络
在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需(要根据用户当前网络情况来做一些调整的,也可以在 App 的设置模块里,让用户自己选择,在 2G ...
- Android 判断用户2G/3G/4G移动数据网络
2019独角兽企业重金招聘Python工程师标准>>> Android 判断用户2G/3G/4G移动数据网络 在做 Android App 的时候,为了给用户省流量,为了不激起用户的 ...
- Android开发之获取网络类型(WIFI、2G、3G、4G)和运营商名称
在Android开发中,常常使用到网络,可能需要针对不同的网络(WIFI或者流量),需要做不同的处理,那么怎么获取当前网络呢?为此写了个工具类,以后需要使用,直接拿来用就行(就喜欢拿来主义,哈哈). ...
最新文章
- Centos7下安装Docker
- Ubuntu dns
- pyspark 核心概念
- 超线程技术——超线程技术让(P4)处理器增加5%的裸晶面积,就可以换来15%~30%的效能提升,本质单核模拟双核!和异步编程的思想无异。...
- Taro+react开发(88):taro条件渲染
- Jmeter上传文件
- Backbox Linux简介与配置内网IP
- dw cs 5 安装失败解决方案
- 手输Unicode字符的方法
- 计件工资系统c语言,计件工资管理系统
- 用深度强化学习玩FlappyBird
- 飞书的聊天信息服务器,飞书服务端SDK java
- 高薪程序员面试题精讲系列28之你熟悉哪些设计模式?
- 2022年(上半年)信息系统项目管理师考试-综合知识真题及解析(三)
- RT_Thread_进程间通讯——邮箱
- OP-TEE基本的从芯片设计到给客户的安全问题浅析
- jQuery图片预览插件
- CSS Tailwind
- win10麦克风说话没声音_电脑录屏,真的没那么麻烦
- Python(分治算法)问题 A: 找出伪币_给你一个装有n枚硬币的袋子。n枚硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。你的任务是找出这枚伪造的硬币。
热门文章
- 去年双11破10亿的耐克,和我们分享了2018新零售计划 | 新网商营销大会
- Springboot校园单车租赁管理系统的设计与实现 计算机毕设源码83654
- 【编译原理】LR(0)分析方法(c++实现)
- flowlayout java_Java FlowLayout
- 水平居中和垂直居中方法
- 文档管理是什么?都有哪些?
- “error C2712: 无法在要求对象展开的函数中使用__try”解决办法
- 前沿综述 | Nature子刊:空间转录组学的临床和转化价值
- P2765 魔术球问题(数学||最大流)
- 教师考编如何选学段?