Android 获取手机型号、信号强度、厂商等信息
2026/9/17 8:19:39 网站建设 项目流程

大家好,我是陈志宝,一名天津全栈软件开发工程师。本篇记录开发时遇到的问题以及解决方案。

1. 获取手机型号

String model= android.os.Build.MODEL;

2. 获取手机厂商:

String carrier= android.os.Build.MANUFACTURER;

3、获取手机信号强度

public void getCurrentNetDBM(Context context) { final TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); PhoneStateListener mylistener = new PhoneStateListener(){ @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { super.onSignalStrengthsChanged(signalStrength); String signalInfo = signalStrength.toString(); String[] params = signalInfo.split(" "); if(tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_LTE){ //4G网络 最佳范围 >-90dBm 越大越好 int Itedbm = Integer.parseInt(params[9]); setDBM(Itedbm+""); }else if(tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_HSDPA || tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_HSPA || tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_HSUPA || tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS){ //3G网络最佳范围 >-90dBm 越大越好 ps:中国移动3G获取不到 返回的无效dbm值是正数(85dbm) //在这个范围的已经确定是3G,但不同运营商的3G有不同的获取方法,故在此需做判断 判断运营商与网络类型的工具类在最下方 String yys = IntenetUtil.getYYS(getApplication());//获取当前运营商 if (yys=="中国移动") { setDBM(0+"");//中国移动3G不可获取,故在此返回0 }else if (yys=="中国联通") { int cdmaDbm = signalStrength.getCdmaDbm(); setDBM(cdmaDbm+""); }else if (yys=="中国电信") { int evdoDbm = signalStrength.getEvdoDbm(); setDBM(evdoDbm+""); } }else{ //2G网络最佳范围>-90dBm 越大越好 int asu = signalStrength.getGsmSignalStrength(); int dbm = -113 + 2*asu; setDBM(dbm+""); } } }; //开始监听 tm.listen(mylistener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); }

作者:陈志宝 | 志尊宝

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询