android线程做服务端接受数据传给UI线程

来源:互联网 发布:淘宝网雪纺上衣 编辑:程序博客网 时间:2024/06/06 03:35
//读写线程
    private class ReadThread extends Thread {
        @Override
        public void run() {
            byte[] buffer = new byte[1024];
            int bytes;
            InputStream mmInStream = null;   //建立输入流读取数据
            try {
                mmInStream = testBlueTooth.btSocket.getInputStream();  
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            while (true) {  //无限循环读取数据
                try {
                    // Read from the InputStream
                    if ((bytes = mmInStream.read(buffer)) > 0) {
                        byte[] buf_data = new byte[bytes];
                        for (int i = 0; i < bytes; i++) {
                            buf_data[i] = buffer[i];
                        }
                        String s = new String(buf_data);
                        //String b="sdfjksdj";
                        BluetoothConvert convert=new BluetoothConvert();
                        String angle= convert.convert(s);
                        Log.e("Read","more success!");
                        Log.e("result",angle);
                       // Log.e("result",b4.getText().toString());
                        //b4.setText(String.valueOf(angle));
                        //BlueToothNum=angle;
                        Message msg = new Message();  
                        // 发送一个String的数据,让他向上转型为obj类型  
                        msg.obj = angle;
                        // 发送数据  
                        handler.sendMessage(msg);  
                      //  b5.setText(angle);
                        
                        
             
                    }
                } catch (IOException e) {
//                    handler.sendEmptyMessage(3);
                    try {
                        mmInStream.close();
                    } catch (IOException e1) {


                    }
                    break;  //异常的时候break跳出无限循环
                }
            }
        }
    }
    // 创建handler,因为我们接收是采用线程来接收的,在线程中无法操作UI,所以需要handler  
    Handler handler = new Handler() {  
        @Override  
        public void handleMessage(Message msg) {  
            // TODO Auto-generated method stub  
            super.handleMessage(msg);  
            // 通过msg传递过来的信息,吐司一下收到的信息  
            Toast.makeText(Common.this, (String) msg.obj, 0).show();  
            String aa=(String) msg.obj;
            //这里讲读出来的角度数据填写到界面中
            if((b4.getText().toString().equals(""))&& (b4.getText()==null))
            {
            b4.setText(aa);
            }
            else
            {
            b5.setText(aa);
            }
        }  

    };  



阅读全文
0 0
原创粉丝点击