Android - How to turn off Wifi-direct

2019-09-12 04:36发布

问题:

I'm kind of new to Java, Android and even Stackoverflow, sorry if my question is not well written.

I followed many guides online that showed me how to connect two devices using Wifi-direct. I managed to do this and now I just need to close the connection.

I have a C++ "server" peer and an Android "client" peer and for the client side I am using the Wifi-Direct Demo (linked below)

  • I create a Wifi-Direct group C++ side
  • From Android I search for servers
  • The user chooses the server
  • Socket connection
  • Transmission

Now I don't need the connection anymore, so I want to close it and immediately reconnect both devices to the normal Wifi.

If I try to launch the disconnect() function of the demo, it enter OnSuccess(), but the Wifi-Direct icon simply won't go away; Strangely, I can't find any guide at all on how to do this.

There is also another problem with my app... If I am connected, and I close the app, the Wifi-direct icon is still on and I can't connect to Internet using Wifi... I think the socket may still be in the TIME_WAIT status, but I'm not sure on how to check this...

Thank you in advance!

EDIT: some answer that I found useful, but do not show how to turn off Wifi-Direct: http://processors.wiki.ti.com/index.php/OMAP_Wireless_Connectivity_NLCP_WiFi_Direct_Configuration_Scripts#p2p_group_add

https://android.googlesource.com/platform/development/+/master/samples/WiFiDirectDemo/

Wi-Fi Direct Android

https://stackoverflow.com/questions/7632135/how-to-create-the-server-client-connection-between-android-mobile-and-pc

回答1:

Use WifiP2pManager.removeGroup(Channel channel, ActionListener listener) to leave the group, it will stop the Wifi Direct on your device.

http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html



回答2:

try this

Add the permissions in your Manifest file

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

Then you can use the following code in your class (For turning off Wifi)

WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); 

wifiManager.setWifiEnabled(false);