android蓝牙开发————实现服务端客户端通信
2017-04-17 19:10
776 查看
蓝牙开发——客户端服务端通信
(本文demo下载地址:http://download.csdn.net/detail/gywuhengy/9816902)
一.新建一个工程作为服务端,里面大致要实现的功能有这几个:
(1)权限 android.permission.BLUETOOTH
(2)蓝牙适配器 BluetoothAdapter
(3)输入输出流
(4)客户端,服务端Socket
(5)两个线程类
(6)服务端线程代码
(7)读写线程主要代码
(8)Handler消息处理
二.创建客户端需要的大致内容:
(1)权限
android.permission.BLUETOOTH
android.permission.BLUETOOTH_ADMIN
(2)Spinner来加载配对设备
(3)
(4)客户端线程
(5)读写线程与服务端一样这里就不再赘述。。
三、注意当运行demo时需要先开启服务端。
(本文demo下载地址:http://download.csdn.net/detail/gywuhengy/9816902)
一.新建一个工程作为服务端,里面大致要实现的功能有这几个:
(1)权限 android.permission.BLUETOOTH
(2)蓝牙适配器 BluetoothAdapter
(3)输入输出流
(4)客户端,服务端Socket
// 蓝牙服务端socket private BluetoothServerSocket mServerSocket; // 蓝牙客户端socket private 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; // 蓝牙客户端socket private 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时需要先开启服务端。
相关文章推荐
- android蓝牙开发入门到精通3---服务端客户端通信
- Android Socket 聊天工具(一个服务端实现多个客户端间通信)
- 使用Mina框架开发 QQ Android 客户端(2) 客户端与服务端的通信
- Android作为客户端,PC作为服务端:实现网络通信
- Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信
- RSA客户端(android/ios)与服务端的通信实现
- Android作为客户端,PC作为服务端:实现网络通信
- 智能点餐系统开发纪实1-----java服务器搭建,android客户端实现通信
- Android作为客户端,PC作为服务端:实现网络通信
- Android BLE与终端通信(三)——客户端与服务端通信过程以及实现
- Android作为客户端,PC作为服务端:实现网络通信
- Android 2.0上使用蓝牙通信代码片断(服务端、客户端、数据传输)
- Android手机客户端通过JSP实现与Tomcat服务器端通信(Msql数据库,Json作为载体)--服务端代码
- Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信
- Android作为客户端,PC作为服务端:实现网络通信
- Android Socket 聊天工具(一个服务端实现多个客户端间通信)
- android 蓝牙客户端与服务端通信 4000
- Android作为客户端,PC作为服务端:实现网络通信!
- Android Socket 聊天工具(一个服务端实现多个客户端间通信)
- Android实现蓝牙客户端与服务器端通信示例