Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android(java)中以编程方式在异步任务中等待wifi连接(接入点)?_Java_Android - Fatal编程技术网

如何在android(java)中以编程方式在异步任务中等待wifi连接(接入点)?

如何在android(java)中以编程方式在异步任务中等待wifi连接(接入点)?,java,android,Java,Android,我正在用android studio制作一个android应用程序。 我的想法是用wifi连接到我的设备(接入点),我以后可能不需要扫描,我只想通过编程连接它。 而且确实如此!!!工作 但是我想在接入点不可用时执行一些代码,而且重要的是我想在我的android手机连接到接入点时执行一些代码 问题:如何检查异步任务中wifi的状态是否已更改 这是我使用的代码: @Override public View onCreateView(LayoutInflater inflater,

我正在用android studio制作一个android应用程序。 我的想法是用wifi连接到我的设备(接入点),我以后可能不需要扫描,我只想通过编程连接它。 而且确实如此!!!工作 但是我想在接入点不可用时执行一些代码,而且重要的是我想在我的android手机连接到接入点时执行一些代码

问题:如何检查异步任务中wifi的状态是否已更改

这是我使用的代码:


    @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;
        }
    }

@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment\U设置,
货柜(虚假);;
button=(button)view.findViewById(R.id.add\u device\u按钮);
WifiTask WifiTask=新WifiTask();
wifiTask.execute();
返回视图;
}
公共类WifiTask扩展异步任务{
@凌驾
受保护的void onPostExecute(启用布尔wifi_){
super.onPostExecute(启用wifi_);
如果(wifi_已启用!=真){
按钮。设置启用(错误);
Toast.makeText(getContext(),“启用Wifi”,Toast.LENGTH_SHORT.show();
}
如果(wifi_已启用==真){
按钮。setEnabled(真);
}
}
@凌驾
受保护的布尔doInBackground(布尔…布尔){
WifiManager WifiManager=(WifiManager)getActivity().getApplicationContext().getSystemService(Context.WIFI_服务);
布尔值is_wifi_enabled=wifiManager.isWifiEnabled();
Log.i(“调试”,是否已启用wifi。toString()+“已启用wifi”);
如果(是否启用无线网络==错误)
{
wifiManager.setWifiEnabled(true);
是否已启用wifi=wifiManager.isWifiEnabled();
}
返回已启用wifi;
}
}
  • 检查你的互联网连接
  • 如果您的internet连接已连接,请执行某些操作;如果未连接,请延迟几分钟;如果延迟已完成,请重新检查
  • 查看互联网>>>

        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);
    

    您可以注册BroadcastReceiver,以便在WiFi连接更改时收到通知。如果您需要,我可以给您代码示例?

    谢谢您的回复。问题是接入点没有互联网连接。这是一个esp8266节点MCU板,在接入点模式下运行。它还能用吗?我理解处理程序,但我不能检查互联网,对吗?因为我知道这是一个没有互联网连接的接入点。或者这仍然有效?简单地说,使用实例将您的操作保存到已连接的。当您的实例不为null时,请签入oncreate或onresume,如果您的实例不为null,请在建立wifi连接或正确断开连接时自动运行runnable to connected wifiBrodvastreceiver呼叫,非常感谢