确定数据信号强度

时间:2010-11-21 19:49:47

标签: android

我知道可以通过Android确定数据连接类型(WIFI /或蜂窝网络),但是可以确定蜂窝连接类型和强度吗?

我有一个可以下载一些图像的应用程序,我发现在GPRS或3G上信号较弱,这个下载过程会让app无法接受。我想要做的是说,如果您有WIFI或强大而快速的数据连接,那么下载;否则显示默认的占位符图像。

有关如何执行此操作的任何线索?

2 个答案:

答案 0 :(得分:3)

  • 确定无线电技术(网络类型)很简单:

TelephonyManager tm =(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

int nt = tm.getNetworkType();

    switch (nt) {
            case 1: return GPRS;
            case 2: return EDGE;
            case 3: return UMTS;
            case 8: return HSDPA;
            case 9: return HSUPA;
            case 10:return HSPA;
            default:return UNKNOWN;
            }
  • 如果您想估计下载时间,您必须通过打开套接字连接来确定带宽(以Kbps为单位)。但这太复杂了!我建议你尝试下载AsyncTask中的图像并设置一个定时器限制为5秒。如果未获得下载,则停止asynctask并显示默认占位符图像。

答案 1 :(得分:2)

如何不阻止UI线程并在它们所属的后台线程中运行长时间运行的任务?

查看AsyncTask上的参考文献以及名为Painless Threading的线程文章。

更新:好的,然后在ConnectivityManager上查找您想要的参考页面。

Update2 :刚刚意识到您想了解信号强度。在这种情况下,您需要查找SignalStrength类。