是否有意图检测网络使用情况,无论是3G还是Wifi?

时间:2011-07-15 21:43:55

标签: java android networking connection android-intent

我一直在研究这个问题,但一直找不到具体的解决方案。

我正在尝试检测用户何时开始使用他们的互联网(3G,Wifi)。 (或即将开始会更好)。

有没有人知道是否有可以检测到某个人开始使用网络的Intent?我试图做的是在用户开始使用他们的互联网时运行一些代码,无论是3G还是Wifi。

我一直在研究ConnectivityManager和Trafficstats()但到目前为止还无法提出解决方案。我不只是想查看连接是否可用。

我一直在考虑的一个解决方案是创建我自己的意图,但我一直无法找到有关如何创建自己的意图过滤器的任何好文档。 (我见过的大多数教程都说要使用/指定你自己的Intent,但是忽略了如何创建意图)因此,我认为它是一种简单的东西,人们觉得不值得一提。

使用意图背后的想法是,我可以触发代码在用户使用互联网的事件上执行,而不仅仅是连接到它。这将优于具有连续执行的循环,该循环查找发送出的rx / tx字节。

如果有人有任何想法和示例代码,将非常感激。

干杯

2 个答案:

答案 0 :(得分:1)

我不知道这是否有帮助,但是这个代码我试图找到什么时候设备进入无网络。我相信你可以修改它来检测它的3G或WiFi。

no network

答案 1 :(得分:0)

从我的一个项目http://code.google.com/p/android-menu-navigator/

复制

你可以将它与bandaa25提到的连接状态改变结合起来,我想你已经完成了。

  public boolean isOnWifi() {
        Log.d(TAG, "Checking if we are on wifi");
        final ConnectivityManager mgrConn = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
        Log.d(TAG, "Retrieved connectivity manager");
        final NetworkInfo network = mgrConn.getActiveNetworkInfo();
        Log.d(TAG, "Retrieved network info: " + network);
        final boolean result = network != null && network.getType() == ConnectivityManager.TYPE_WIFI;
        Log.d(TAG, "Result : " + result);
        return result;
    }