栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

通过LY-WIFI-1智能WiFi模块实现手机APP控制LED灯————Android端

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过LY-WIFI-1智能WiFi模块实现手机APP控制LED灯————Android端

Android端 1.Socket通信原理

Socket套接字概述:
网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。
通信的两端都有Socket。
网络通信其实就是Socket间的通信。
数据在两个Socket间通过IO流传输。
Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port。

简单来说,其实就是向单片机发送套接字作为指令

2.Android界面布局

开发工具选择的是android studio,下图是布局

3.需要的申请的权限



4.Activity代码
public class MainActivity extends AppCompatActivity {

    private Handler handler=null;

    EditText mIp,mPort;
    String mStrIp;
    int miPort;
    private Button mBtnConnect;
    private Button mledoff;
    private Button mledon;//  按钮LED灯开
    private TextView display;
    private Socket mSocket;     //  套接字
    private PrintStream out;    //  打印输出流
    private ConnectThread mConnectThread;   //  TCP连接线程

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mBtnConnect=(Button) findViewById(R.id.button3);
        mledon=(Button) findViewById(R.id.button);
        mledoff=(Button)findViewById(R.id.button2);


        mIp= (EditText) findViewById(R.id.editText);
        mPort= (EditText) findViewById(R.id.editText2);
        display= (TextView) findViewById(R.id.textView3);

        //增加程序网络服务兼容性
        if(Build.VERSION.SDK_INT>9){
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }

        mBtnConnect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //  连接
                if(mSocket == null || !mSocket.isConnected()){
                    mStrIp=mIp.getText().toString();
                    miPort=Integer.valueOf(mPort.getText().toString());
                    mConnectThread = new ConnectThread(mStrIp,miPort);
                    mConnectThread.start();
                }
                if(mSocket != null && mSocket.isConnected()){
                    try{
                        mSocket.close();
                        mSocket=null;   //  清空mSocket
                        mBtnConnect.setText("连接");
                        Toast.makeText(MainActivity.this,"连接已关闭",Toast.LENGTH_LONG).show();
                    }catch (IOException e){
                        e.printStackTrace();
                    }
                }
            }
        });
        mledon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(out!=null){
                    out.print("8");
                    out.flush();
                }
            }
        });
        mledoff.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (out!=null){
                    out.print("9");
                    out.flush();
                }
            }
        });
    }

    private class ConnectThread extends Thread{
        private String ip;
        private int port;
        public ConnectThread(String ip,int port){
            this.ip=ip;
            this.port=port;
        }
        @Override
        public void run(){
            try {

                mSocket= new Socket(ip,port);
                out = new PrintStream(mSocket.getOutputStream());
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        mBtnConnect.setText("断开");
                        Toast.makeText(MainActivity.this,"连接成功",Toast.LENGTH_LONG).show();
                    }
                });
            }catch (IOException e){
                display.setText(e.getMessage());
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(MainActivity.this,"连接失败",Toast.LENGTH_LONG).show();
                    }
                });
            }
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/606540.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号