android蓝牙开发————实现服务端客户端通信
来源:互联网 发布:java语言的四个特点 编辑:程序博客网 时间:2024/06/05 20:17
蓝牙开发——客户端服务端通信
(本文demo下载地址:http://download.csdn.net/detail/gywuhengy/9816902)
一.新建一个工程作为服务端,里面大致要实现的功能有这几个:
(1)权限 android.permission.BLUETOOTH
(2)蓝牙适配器 BluetoothAdapter
(3)输入输出流
(4)客户端,服务端Socket
// 蓝牙服务端socketprivate BluetoothServerSocket mServerSocket;// 蓝牙客户端socketprivate BluetoothSocket mSocket;
(5)两个线程类
// 线程类private ServerThread mServerThread;private ReadThread mReadThread;
(6)服务端线程代码
// 开启服务器private class ServerThread extends Thread { public void run() { try { // 创建一个蓝牙服务器 参数分别:服务器名称、UUID mServerSocket = mBluetoothAdapter.listenUsingRfcommWithServiceRecord(PROTOCOL_SCHEME_RFCOMM, UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")); Message msg = new Message(); msg.obj = "请稍候,正在等待客户端的连接..."; msg.what = STATUS_CONNECTING; mHandler.sendMessage(msg); //服务端接受 mSocket = mServerSocket.accept(); msg = new Message(); msg.obj = "客户端已经连接上!可以发送指令。"; msg.what = STATUS_CONNECT; mHandler.sendMessage(msg); // 启动接受数据 mReadThread = new ReadThread(); mReadThread.start(); } catch (IOException e) { e.printStackTrace(); } }}
(7)读写线程主要代码
/** * 读取数据 */private class ReadThread extends Thread { public void run() { byte[] buffer = new byte[1024]; int bytes; InputStream is = null; try { is = mSocket.getInputStream(); while (true) { if ((bytes = is.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); Message msg = new Message(); msg.obj = s; msg.what = STATUS_ACCEPT; mHandler.sendMessage(msg); //同样 子线程不能刷新UI //tv_accept.setText(s); } } } catch (IOException e1) { e1.printStackTrace(); } finally { try { is.close(); } catch (IOException e1) { e1.printStackTrace(); } } }}
(8)Handler消息处理
/** * 信息处理 */private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { String info = (String) msg.obj; switch (msg.what) { case STATUS_CONNECT: //吐司出 连接状态 showToast(info); break; case STATUS_CONNECTING: //吐司出 连接状态 showToast(info); break; case STATUS_ACCEPT: //吐司出 连接状态 tv_accept.setText(info); break; } }
二.创建客户端需要的大致内容:
(1)权限
android.permission.BLUETOOTH
android.permission.BLUETOOTH_ADMIN
(2)Spinner来加载配对设备
(3)
private BluetoothAdapter mBluetoothAdapter;private BluetoothDevice mDevice;//Spinner适配器private MySpinnerAdapter mySpinnerAdapter;//线程类private ClientThread mClientThread;private ReadThread mReadThread;// 蓝牙客户端socketprivate BluetoothSocket mSocket;
(4)客户端线程
/** * 客户端线程 */private class ClientThread extends Thread { public void run() { try { mSocket = mDevice.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")); Message msg = new Message(); msg.obj = "请稍候,正在连接服务器:" + serverAdress; msg.what = STATUS_CONNECTING; mHandler.sendMessage(msg); mSocket.connect(); msg = new Message(); msg.obj = "已经连接上服务端!可以发送信息。"; msg.what = STATUS_CONNECT; mHandler.sendMessage(msg); //TODO 启动接受数据 服务端返回数据(暂时用途不大) mReadThread = new ReadThread(); mReadThread.start(); //注意子线程不能刷新 //UIViewRootImpl$CalledFromWrongThreadException: //ll_bluetooth.setVisibility(View.VISIBLE); } catch (IOException e) { Message msg = new Message(); msg.obj = "连接服务端异常!"; msg.what = STATUS_ERROR; mHandler.sendMessage(msg); showToast("失去连接"); } }}
(5)读写线程与服务端一样这里就不再赘述。。
三、注意当运行demo时需要先开启服务端。
0 0
- android蓝牙开发————实现服务端客户端通信
- android蓝牙开发入门到精通3---服务端客户端通信
- android 蓝牙客户端与服务端通信
- Socket跨平台通信——服务端Android、客户端iOS
- Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信
- Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信
- Android——蓝牙通信
- java通信——单客户端与服务端通信
- android蓝牙控制继电器——手机客户端的实现
- 使用AIDL实现IPC通信之——实现服务端主动发送数据给客户端
- Android 实现蓝牙客户端与服务器端通信
- Android开发之蓝牙(一)——基于SPP协议蓝牙模块通信
- Android开发之蓝牙(二)——基于BLE协议蓝牙模块通信
- Java IO——Socket:通过多线程实现多客户端与一个服务端通信
- Java IO——Socket:通过多线程实现多客户端与一个服务端通信
- python——使用socket模块实现客户端与服务端通信
- 【android 蓝牙开发——传统蓝牙】
- android客户端与javaweb服务端通信——登录小demo的启示
- 把Java程序打包成jar文件包并执行
- LeetCode8-StringtoInteger
- 初学java的小笔记
- [八]RabbitMQ-客户端源码之ChannelN
- [转]centos7中yum安装ntfs-3g
- android蓝牙开发————实现服务端客户端通信
- Java中反射机制(Reflection)学习
- 动态规划总结
- 等价二叉树
- J
- C++ 内存对齐
- JAVA手册——线程简介之Runnable与Thread
- 总结:递归递推
- Win10下Python的安装及相关库的安装