Как программно дождаться соединения Wi-Fi (точка доступа) в android (java) в задаче asynch?

Я делаю приложение для Android с Android Studio. Идея состоит в том, чтобы подключиться к моему устройству (точке доступа) с помощью Wi-Fi, мне не нужно сканировать, возможно, в будущем, я просто хотел подключиться к нему программно. И оно делает!!! Работа!! Но я хотел выполнить некоторый код, когда точка доступа не доступна, а также важной частью этого является то, что я хотел выполнить некоторый код, когда мой телефон Android ЯВЛЯЕТСЯ подключался к точке доступа.

Вопрос: Как проверить, изменилось ли состояние вайфая в асинхронной задаче?

Это код, который я использовал:


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_settings,
                container, false);

        button = (Button) view.findViewById(R.id.add_device_button);

        WifiTask wifiTask = new WifiTask();
        wifiTask.execute();

        return view;
    }

    public class WifiTask extends AsyncTask<Boolean,Void,Boolean> {

        @Override
        protected void onPostExecute(Boolean wifi_enabled) {
            super.onPostExecute(wifi_enabled);


            if (wifi_enabled != true){
                button.setEnabled(false);
                Toast.makeText(getContext(),"Enabling Wifi", Toast.LENGTH_SHORT).show();
            }
            if ( wifi_enabled == true) {
                button.setEnabled(true);
            }
        }

        @Override
        protected Boolean doInBackground(Boolean... booleans) {
            WifiManager wifiManager = (WifiManager)getActivity().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
            Boolean is_wifi_enabled = wifiManager.isWifiEnabled();
            Log.i("debug", is_wifi_enabled.toString() + " wifi is enabled");

            if (is_wifi_enabled == false)
            {
                wifiManager.setWifiEnabled(true);
                is_wifi_enabled = wifiManager.isWifiEnabled();
            }

            return is_wifi_enabled;
        }
    }

Хорошо спасибо большое

Edris 20.02.2019 21:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
161
2

Ответы 2

  1. Проверьте подключение к Интернету
  2. если ваше интернет-соединение подключено, сделайте что-нибудь, не подключено сделайте задержку на несколько минут, если задержка закончилась, проверьте еще раз

для проверки интернета >>>>

    private boolean isNetworkConnected() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    //enter code here
    return cm.getActiveNetworkInfo() != null;
}

за опоздание>>>

handler = new Handler();

final Runnable r = new Runnable() {
    public void run() {
        tv.append("Hello World");
        handler.postDelayed(this, 1000);
    }
};

handler.postDelayed(r, 1000);

Спасибо за ответ. Проблема в том, что точка доступа не подключена к интернету. Это плата nodemcu esp8266, работающая в режиме точки доступа. Будет ли это работать?

Edris 20.02.2019 08:02

Я понимаю обработчик, но я не могу проверить интернет, верно? Потому что я это точка доступа без подключения к интернету. Или это все еще работает?

Edris 20.02.2019 08:13

просто, используя instance, чтобы сохранить ваше действие в Connected. проверьте oncreate или onresume, когда ваш экземпляр не является нулевым, если ваш экземпляр не является нулевым, запуская ваш runnable на подключенный Wi-Fi

mories deo 20.02.2019 08:22

Вы можете зарегистрировать BroadcastReceiver, чтобы получать уведомления при изменении соединения WiFi. если вы хотите, я могу дать вам образец кода?

Brodvastreceiver автоматически звонит при установлении или отключении Wi-Fi соединения

Mayur Dabhi 20.02.2019 08:14

Другие вопросы по теме