android - 如何在 Android 上检测网络类型从 3g 到 H+ 的变化

标签 android networking

使用 connectivitymanager 和广播接收器,我能够按照说明获取连接和断开连接事件 Eric's post here

我想知道的是网络连接时类型的变化。 例如:3G 到 H+,反之亦然。当发生这种变化时,我看到 OnReceive(..) 中没有事件......

为清楚起见,用户案例: step1: 启用 3G 连接,在广播 (BCR) 中接收事件并处理 step2:开始通话,连接从3G变为h+,但BCR没有任何事件。

预期输出:当从 3G 变为 h+ 或 Edge...时,预期 BCR 中的事件

最佳答案

在这里,您可以在 switch 语句上执行某些任务。线程可以调用以下代码并关注网络。

Get Network type

TelephonyManager teleMan =   
            (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
int networkType = teleMan.getNetworkType(); 

switch (networkType) 
{ 
case 7: 
    textV1.setText("1xRTT"); 
    break;       
case 4: 
    textV1.setText("CDMA"); 
    break;       
case 2: 
    textV1.setText("EDGE"); 
    break;   
case 14: 
    textV1.setText("eHRPD"); 
    break;       
case 5: 
    textV1.setText("EVDO rev. 0"); 
    break;   
case 6: 
    textV1.setText("EVDO rev. A"); 
    break;   
case 12: 
    textV1.setText("EVDO rev. B"); 
    break;   
case 1: 
    textV1.setText("GPRS"); 
    break;       
case 8: 
    textV1.setText("HSDPA"); 
    break;       
case 10: 
    textV1.setText("HSPA"); 
    break;           
case 15: 
    textV1.setText("HSPA+"); 
    break;           
case 9: 
    textV1.setText("HSUPA"); 
    break;           
case 11: 
    textV1.setText("iDen"); 
    break; 
case 13: 
    textV1.setText("LTE"); 
    break; 
case 3: 
    textV1.setText("UMTS"); 
    break;           
case 0: 
    textV1.setText("Unknown"); 
    break; 
} 

更新

http://developer.android.com/reference/android/content/BroadcastReceiver.html

Intent action for network events in android sdk

关于android - 如何在 Android 上检测网络类型从 3g 到 H+ 的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9703338/

相关文章:

postgresql - 如何在 Windows 中以访客身份访问托管在 Vagrant 中的 Postgresql?

java - SubnetUtils isInRange 方法返回 True - 误报问题

networking - 在Icecast中将自定义标题添加到注销

java - 在 Android 中获取应用程序的 SharedPreferences?

java - 如何从 Cordova Android 插件返回文件 URL

Android:如何将动画图像放置在我们可以显示和隐藏的 EditText 中

java - 在 Android 移动设备中从 JSON 获取数据会出现 fatalException main

Android 运行时错误与发布版本但不是调试版本

sql-server-2008 - 如何确定通信链路故障 TCP 提供程序 : The specified network name is no longer available? 的根本原因

azure - Terraform:正在使用 azurerm 子网