2016-11-01 42 views
0

我正在尝试查找当前的频段。Android - 需要帮助才能获得频段

过去几天我在这个问题上看了很多,但是我没有找到任何东西。 我需要它的解决方案(代码不是应用程序)。

如果我可以通过获取root访问来访问这些数据,那也是可以的。

+2

请说明你的意思是什么“频段”?这是GSM频段吗? –

+0

我需要知道我是否在2g 850/900/1800/1900或3g 2100/1900/1700/850/800或FDD-LTE 2100/1900/1700/850/2600/900/800/700或TDD -LTE 2600/2300/2500/3500/700 –

回答

0

对于网络类型,你可以用这个方法(从here):

public static String getNetworkClass(Context context) { 
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);  
    NetworkInfo info = cm.getActiveNetworkInfo(); 
    if(info==null || !info.isConnected()) 
     return "-"; //not connected 
    if(info.getType() == ConnectivityManager.TYPE_WIFI) 
     return "WIFI"; 
    if(info.getType() == ConnectivityManager.TYPE_MOBILE){ 
     int networkType = info.getSubtype(); 
     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: //api<8 : replace by 11 
       return "2G"; 
      case TelephonyManager.NETWORK_TYPE_UMTS: 
      case TelephonyManager.NETWORK_TYPE_EVDO_0: 
      case TelephonyManager.NETWORK_TYPE_EVDO_A: 
      case TelephonyManager.NETWORK_TYPE_HSDPA: 
      case TelephonyManager.NETWORK_TYPE_HSUPA: 
      case TelephonyManager.NETWORK_TYPE_HSPA: 
      case TelephonyManager.NETWORK_TYPE_EVDO_B: //api<9 : replace by 14 
      case TelephonyManager.NETWORK_TYPE_EHRPD: //api<11 : replace by 12 
      case TelephonyManager.NETWORK_TYPE_HSPAP: //api<13 : replace by 15 
       return "3G"; 
      case TelephonyManager.NETWORK_TYPE_LTE: //api<11 : replace by 13 
       return "4G"; 
      default: 
       return "?"; 
     } 
    } 
    return "?"; 
} 

但得到的频率,你应该通过AT与手机的GSM模块直接使用的命令一样AT!BAND?Sierra模块或AT+CBAND?other。这也是可能的,但是像this这样的难题。或者可能像that这样的东西,但它几乎没有。