ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

Android 获取手机型号、信号强度、厂商等信息

Android 获取手机型号、信号强度、厂商等信息 大家好我是陈志宝一名天津全栈软件开发工程师。本篇记录开发时遇到的问题以及解决方案。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); }作者陈志宝 | 志尊宝
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表