APP网络编程笔记

代码地址: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的结构非常简单,关键点说明了。

posted @ 2020-06-05 10:59  创世哥  阅读(213)  评论(0编辑  收藏  举报