Есть ли намерение обнаружить использование сети независимо от того, является ли это 3G или Wifi? - PullRequest
1 голос
/ 16 июля 2011

Я некоторое время изучал это и не смог найти конкретного решения.

Я пытаюсь определить, когда пользователь начал использовать свой интернет (3G, Wifi). (Или вот-вот начнется было бы еще лучше).

Кто-нибудь знает, существует ли Намерение, которое может обнаружить, что человек начинает использовать сеть? То, что я пытаюсь сделать, это запустить какой-то код, как только пользователь начнет использовать свой интернет, независимо от того, 3G это или нет.

Я изучал ConnectivityManager и Trafficstats (), но до сих пор не смог найти решение. Я не просто смотрю, доступно ли соединение.

Одним из решений, о котором я думал, было бы создание собственного намерения, но я не смог найти хорошую документацию о том, как создать собственный фильтр намерений. (большинство учебных пособий, которые я видел, говорят, что используют / задают ваше собственное намерение, но пренебрегают, чтобы сказать, как создать намерение). Из-за этого я предполагаю, что это нечто простое, что люди не чувствуют, стоит упомянуть.

Идея использования намерения заключалась в том, чтобы я мог инициировать выполнение кода в случае, если пользователь использует Интернет, а не просто подключен к нему. Это было бы предпочтительнее, чем иметь постоянно выполняющийся цикл, который ищет отправленные байты rx / tx.

Если у кого-то есть идеи и примеры кода, которые будут по достоинству оценены.

Приветствия

Ответы [ 2 ]

1 голос
/ 16 июля 2011

Я не знаю, помогает ли это, но с помощью этого кода я пытаюсь найти, когда устройство не подключено к сети.Я уверен, что вы можете изменить это, чтобы обнаружить его 3G или WiFi.

нет сети

0 голосов
/ 16 июля 2011

Скопировано из одного из моих проектов 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;
    }
...