Android-приложение, которое прослушивает изменения Wi-Fi

Я разрабатываю приложение, которое должно прослушивать изменения Wi-Fi. Когда пользовательское устройство обнаруживает определенный Wi-Fi ssid, мне нужно, чтобы на устройстве появилось уведомление. Уведомление позволит пользователям выполнить действие, если это необходимо.

Я нашел эту информацию, которая похожа на Android WIFI Как определить, когда конкретное соединение WIFI доступно

Что я действительно хочу знать, так это то, где в приложении я могу прослушивать изменения Wi-Fi? Куда идет код для прослушивания и как я могу позволить приложению эффективно прослушивать это в фоновом режиме.

Я был бы очень признателен за любую помощь, спасибо


person Eoghan Mc    schedule 29.04.2016    source источник
comment
ссылка, которую вы нашли, кажется, имеет то, что вам нужно.   -  person muratgu    schedule 30.04.2016
comment
Просто посмотрите на код в этом посте. Везде, где у вас есть контекст (например, действие), вы можете заменить context на getApplicationContext().registerReceiver   -  person OneCricketeer    schedule 30.04.2016
comment
Я думаю, что в сообщении, на которое я ссылаюсь, есть много того, что я ищу, но запутанная часть заключается в том, где разместить код прослушивателя, чтобы он работал в фоновом режиме. Неревар, кажется, дал хороший ответ ниже, что я проверю завтра. Спасибо   -  person Eoghan Mc    schedule 30.04.2016


Ответы (1)


Если вы хотите запустить подобную задачу в фоновом режиме, даже когда ваше приложение активно не работает, вам следует использовать службу (https://developer.android.com/reference/android/app/Service.html).

Если предполагается, что это будет работать все время, после того как пользователь установит приложение, вы можете прослушать загрузочную трансляцию и запустить службу. Я не уверен, будет ли эта трансляция уведомлена, если вы зарегистрируетесь после загрузки устройства. Вы можете решить эту проблему, запустив службу после запуска Activity.

Чтобы служба продолжала работать в фоновом режиме, вам нужно вернуть START_STICKY в onStartCommand. (см. фрагмент ниже). Но обратите внимание, что служба будет работать до тех пор, пока вы ее не остановите или пока ваше приложение не будет удалено.

Вот фрагмент, который должен помочь вам начать работу в сочетании с уже найденной ссылкой.

public class WifiListener extends Service {

@Override
public void onCreate() {
    super.onCreate();

     // Register broadcast receiver here
}

@Override
public void onDestroy() {
    super.onDestroy();

    // Stop listening to broadcast receiver here
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return START_STICKY;
}

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

}

person Henrik Gyllensvärd    schedule 29.04.2016
comment
Похоже, это именно то, что я искал, завтра попробую реализовать. Спасибо - person Eoghan Mc; 30.04.2016
comment
Также не забывайте, что для запуска службы вам нужно зарегистрировать ее в манифесте, иначе Android проигнорирует вызов запуска. :) - person Henrik Gyllensvärd; 30.04.2016