Android与PC蓝牙交互

本文介绍了如何使用蓝牙实现Android设备与PC之间的通信。通过Java的BlueCove库在PC端建立蓝牙服务器,Android端作为客户端进行连接。详细讲述了PC端的64位库问题、UUID设置以及Android端的蓝牙连接步骤,包括布局设计、广播接收器和线程中的Socket操作。最终实现了Android控制PC的简单应用,为后续复杂开发打下基础。
摘要由CSDN通过智能技术生成

前言

蓝牙( Bluetooth® ):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换

我之所以会来做Android与PC蓝牙通信的了解,是源于公司年会的时候做的抽奖活动,当时是用笔记本来运行的,因为要把屏幕投影到墙上,启动抽奖、停止抽奖都得笔记本控制。我想这个真的太不方便了,为什么不能用手机来操控,于是我想到了PC与手机的通信,最简单的方式就是通过蓝牙来通信。

废话不多说,下面进入正题。


开发环境

PC(笔记本电脑)

笔者的笔记本是Window 10 64位操作系统的,自带蓝牙模块。

PC端开发环境一览:

名称 版本
JDK 1.8.0u91
IDE Intellij Idea

Android端开发环境一览:

名称 版本
Android SDK 23.1
Android Studio 2.1

代码说明

PC端开发(服务器)

之所以选择标准的Java环境来开发PC端,是因为Java简单易学,开发成本低。虽然比起C++来说,运行效率低了很多,但是这样的一个情况下Java足够了,如果用C++来做的话,代价高了很多。

PC端蓝牙开发资料少之又少,原因你懂的。不过PC端选择Java开发蓝牙通信的话,暂且只能用BlueCove开源框架来做。只是从这个封装好的插件的最后发布日期(2008年12月25日)来看,这个项目已经很久没有维护了。

首先要下载BlueCove库,直接从官网上下载的JAR文件在64位系统上运行的话会出现native lib 错误,怎么办呢?笔者从谷歌论坛上某一页找到了国外技术大牛重新编译的64位lib。下载库之后放入项目路径,引用即可。

两个设备之间建立通信连接的首要条件,是要有一个相同的UUID,这里我们选择的UUID是

00001101-0000-1000-8000-00805F9B34FB

PC端代码中填写UUID的时候需要去掉中间的短横线。

Android端与PC端的基本通信手段是使用流连接(StreamConnection),PC端需要建立一个流连接监听器(StreamConnectionNotifier)

streamConnectionNotifier = (StreamConnectionNotifier) Connector.open("btspp://localhost:" + SERVER_UUID.toString());

监听器设置后,建立一个独立线程去监听所有可能的Socket连接并接受:

@Override
public void run() {
    while (isListening) {
        StreamConnection streamConnection;
        try {
            //接受并打开连接
            streamConnection = streamConnectionNotifier.acceptAndOpen();

            byte[] buffer = new byte[200];
            //打开输入输出流
            InputStream inputStream = streamConnection.openInputStream();
            OutputStream outputStream = streamConnection.openOutputStream();

            outputStream.write("message from server".getBytes());

            inputStream.read(buffer);
            String message = new String(buffer);
            System.out.println("Receive message : " + message);

            inputStream.close();
            outputStream.close();
            streamConnection.close();

            if (message.contains("EXIT_APP")) {
   
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值