【问题标题】:Is there an Intent to detect network usage regardless of it being 3G or Wifi?无论是 3G 还是 Wifi,是否有检测网络使用情况的意图?
【发布时间】:2011-07-15 21:43:55
【问题描述】:

我已经研究了一段时间,但无法找到具体的解决方案。

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

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

我一直在研究 ConnectivityManager 和 Trafficstats(),但迄今为止无法提出解决方案。我不只是想看看是否有可用的连接。

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

使用 Intent 背后的想法是,我可以触发代码在用户使用互联网的事件上执行,而不仅仅是连接到互联网。这比有一个不断执行的循环来查找发送的 rx/tx 字节更好。

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

干杯

【问题讨论】:

  • 看看this问题是否有帮助。

标签: java android networking connection android-intent


【解决方案1】:

我不知道这是否有帮助,但是通过这段代码,我试图找出设备何时进入无网络状态。我相信你可以修改它来检测它是 3G 还是 WiFi。

no network

【讨论】:

  • 感谢 bandaa25,我可以假设用户始终连接到 3G 或 Wifi,我需要能够检测用户何时开始使用 3G 或 Wifi 上的大量带宽。
  • 是的,我遇到了你的问题,我想告诉你的是,有一种方法可以在 onDataConnectionStateChanged 方法中检测到这一点。如果您只是添加此代码并放置日志,您会注意到您获得了一些不同的参数。
【解决方案2】:

复制自我的一个项目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;
    }

【讨论】:

  • 嗨 Jarek,感谢您的快速回复。我要做的是在用户开始使用他们的互联网时运行一些代码,无论它是 3G 还是 Wifi。使用意图背后的想法是,我可以触发代码以在事件上执行,而不是让一个不断执行的循环来查找发送的 rx/tx 字节。除非我弄错了,否则我相信您的代码(没有网络部分)会简单地告诉我我是否在 wifi 上,或者是否没有网络连接。我可以假设用户使用 3G 或 Wifi。我将更新我的问题以使其更清楚。干杯
猜你喜欢
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
  • 2012-11-17
相关资源
最近更新 更多