注意用手机APP与STM32连接时,手机要关闭移动4G网络,否则手机连上WIFI后,4G和WIFI各有1个IP地址,与STM32通信时容易绑定到4G网络,会通信出错。
网络访问权限开通
2.控件属性
3.变量定义
4.连接与接收线程
5.发送线程
6.修改事件函数
7.定时器
8.获取IP地址函数
9.连接服务器按钮事件:开启线程
AndroidManifest.xml中增加
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>
catch (SocketTimeoutException e) { }
catch(IOException e) { }
private PrintWriter out = null;
private BufferedReader in = null;
in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),
true);
Handler handler=new Handler();
handler.postDelayed(runnable, 200);
Runnable runnable=new Runnable() {
@Override
public void run()
{
handler.postDelayed(this, 200);
//200ms执行一次自已.
}
};
public static String getHostIP() {
String hostIp = null;
try {
Enumeration nis = NetworkInterface.getNetworkInterfaces();
InetAddress ia = null;
while (nis.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) nis.nextElement();
Enumeration<InetAddress> ias = ni.getInetAddresses();
while (ias.hasMoreElements()) {
ia = ias.nextElement();
if (ia instanceof Inet6Address) {
continue;// skip ipv6
}
String ip = ia.getHostAddress();
if (!"127.0.0.1".equals(ip)) {
hostIp = ia.getHostAddress();
break;
}
}
}
} catch (SocketException e) {
Log.i("yao", "SocketException");
e.printStackTrace();
}
return hostIp;
}

