代码地址:https://gitee.com/chuangshi96/androidwangluobiancheng
① 打开AndroidStudio
② 新建一个空的工程 File->New->New Project
③ 如图第一行为APP工程名称,第二行不用管,第三行为工程路径 然后点Next
④ 按照如图设置(默认)根据自己的实际要求选择SDK版本(若自己的安卓手机的安卓版本为7.0,则8.0的工程没法安装在自己的手机上),点击Next
⑤ 选择空的工程点击Next
⑥ 最后默认点击Finish,完成工程创建。
⑦ 等待初始化完成
(等待状态)
(完成状态)
⑧ 展开res->layout->activity_main.xml,双击打开如下图界面
⑨ 点击如图位置的Text 将TextView删掉
⑩ 返回Design 在如图位置找到LinearLayout(vertical),点击拖动到如下图的任意位置。(添加布局)
⑪ 用相同的方法添加TextView
⑫ 最总Text中的内容如下图
⑬ 打开如图位置的MainActivity(这里是功能代码),该部分的最终代码放在了MainActivity.txt中了
代码分析:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();//初始化
newThread();//建立socket线程
}
这里相当于主函数,安卓里面叫主线程,这里一般做一些初始化操作和开启子线程。一般不做复杂的操作。
protected void init(){
dataView = (TextView) findViewById(R.id.data);
dataView.setText(" ");
}
初始化控件操作,这里要和activity_main.xml里面的TextView关联起来,关键点在于那个R.id后面的名字
private void newThread(){
new Thread() {
public void run() {
try {
acceptServer();//建立连接
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
开启子线程
private void acceptServer() throws IOException {
//1.创建客户端Socket,指定服务器地址和端口
Socket socket = new Socket("192.168.4.1", 8080);
//2.获取输出流,向服务器端发送信息
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream())), true);
in = socket.getInputStream();
sendData(0x01);
reciveData();
//StringBuilder sb = new StringBuilder();
}
这里就是子线程做的事情,与单片机的WIFI模块连接。这里为什么不用主线程做?
因为主线程不能做,意思大概是说主线程不能做网络操作,具体的要自行百度一下。
private void sendData(int data) throws UnknownHostException {
//获取客户端的IP地址
InetAddress address = InetAddress.getLocalHost();
String ip = address.getHostAddress();
//int data=0x01;
out.write(ip +":"+ data);
out.flush();
//socket.shutdownOutput();//关闭输出流
}
/*接受数据
*
* */
private String reciveData() throws IOException {
byte[] bytes = new byte[1024];
String reData="";
while ((in.read(bytes)) != -1) {
//注意指定编码格式,发送方和接收方一定要统一,建议使用UTF-8
//sb.append(new String(bytes, 0, len,"UTF-8"));
info= new String (bytes);
handler.sendEmptyMessage(0x123);
} //*/
return reData;
}
这里的主要功能就是进行数据的收发。
整个APP的结构非常简单,关键点说明了。