阅读前提:本文通信所用的模块是STM32中的EPS8266模块与三星Note3-N9500进行通信。STM32作为客户端,三星Note3-N9500作为服务端,在两者通信的过程中并无借助路由器作为中介者。但需要获取Note3-N9500中所在的IP地址,将IP地址应用到STM32所编写的程序当中
1.在AndroidManifest中添加权限
/**允许程序改变网络状态*/
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
/**允许程序改变Wi-Fi的状态*/
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
/**允许程序获取网络状态信息*/
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
/**允许程序访问Wi-Fi网络状态信息*/
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
/**允许程序唤醒锁定*/
<uses-permission android:name="android.permission.WAKE_LOCK"/>
/**允许程序访问网络*/
<uses-permission android:name="android.permission.INTERNET"/>
2.创建WiFiUtil工具类
import android.content.Context;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.util.Log;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.ServerSocket;
import java.util.List;
public class WiFiUtil {
private String TAG = "WiFiUtil";
private static WiFiUtil INSTANCE;
private WifiManager wifiManager;
private WifiManager.WifiLock wifiLock;
private ServerSocket serverSocket;
private WiFiUtil(Context context){
wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
}
public static WiFiUtil getInstance(Context context){
if (INSTANCE == null){
INSTANCE = new WiFiUtil(context);
}
return INSTANCE;
}
/**打开Wi-Fi*/
public void openWiFi(){
if (!wifiManager.isWifiEnabled()){
wifiManager.setWifiEnabled(true);
}
}
/**关闭Wi-Fi*/
public void closeWiFi(){
if (wifiManager.isWifiEnabled()){
wifiManager.setWifiEnabled(false);
}
}
/**检查当前Wi-Fi网卡状态*/
private void checkWiFiState(){
int state = wifiManager.get