Android 蓝牙开发

1、实现效果

Android 蓝牙开发_第1张图片          Android 蓝牙开发_第2张图片

 

 

 2、主要实现方法

 

(1)创建服务端:

//先用本地蓝牙适配器创建一个serversocket
serSocket= bluetoothAdapter.listenUsingRfcommWithServiceRecord(bluetoothAdapter.getName(), UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
Utils.sonUiStateMsg("正在等待连接");
if(socket!=null){Utils.sonUiStateMsg("连接成功");}
//等待连接,该方法阻塞
socket=serSocket.accept();

(2)创建客户端

//创建一个socket尝试连接,UUID用正确格式的String来转换而成
socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
Utils.sonUiStateMsg("正在连接,请稍后......");
//该方法阻塞,一直尝试连接
socket.connect();

 

(3)接收消息线程:

class ReadMsg extends Thread{
    @Override
    public void run(){
        byte[] buffer = new byte[1024];//定义字节数组装载信息
        int bytes;//定义长度变量
        InputStream in=null;
        try {
            //使用socket获得输入流
            in = socket.getInputStream();
            //一直循环接收处理消息
            while(true){
                if((bytes=in.read(buffer))!=0){
                    byte[] buf_data = new byte[bytes];
                    for (int i = 0; i < bytes; i++){
                        buf_data[i]=buffer[i];
                    }
                    String msg=new String(buf_data);//最后得到String类型消息
                    Utils.sonUiInfoMsg(msg);
                    TestObServernotice.getInstance().notifyObserver(0,2,msg);
                }

            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Utils.sonUiStateMsg("连接已断开");
        }finally{
            try {
                in.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

(4)发送消息方法

OutputStream out=socket.getOutputStream();
out.write(msg.getBytes());//将消息字节发出

3、实现demo

 

demo:https://download.csdn.net/download/meixi_android/11834985

 

demo云盘:https://pan.baidu.com/s/1UPJinlBKoN6jLvTLKZ51Bg

在线bug交流:QQ1085220040

你可能感兴趣的:(移动开发)