下载  >  移动开发  >  Android  > Android蓝牙串口开发指南

Android蓝牙串口开发指南 评分

Android蓝牙串口开发指南
我们调用时除了需要考虑 API Level至少为5外,还需注意添加相应的权阪,比如仅用通讯需要在 androidmanifest.ml加入(ues- permission android:nane=“ android. permission. BLUETOOTE”/,而开 关蓝牙需要 android. perini ssion., BLUETOOTH ADMIN权限。 三、建立通讯 establishing 对于建立一个蓝牙通讯,必须经过以下四个步骤:获取本地蓝牙设备、查找远程设备、配对(已配对设 备将会忽略这步的细节)、连接设备和传输数据 在 Android平台中首先我们需要查找本地活动的蓝牙适配器,通过 Bluetoothadaoter类的 getDcfaultAdapter(方法获得一个系统默认可用的蓝牙设备,示例代码如 BluetoothAdapter cwjBluetoothAdapter= BluetoothAdapter getlefaultAdapter O if (cw jBluetoothAdapter= null /№ droid开发网提示大家本机没有授到蓝牙硬件或驱动存在问题 当然有了这步仍然不能建立连接,因为抆忙还不知道于机中的蓝习功能是被开后,可以通过 c冒 jBluetoothAdapter的. diSenabled方法来對断,如果没有开启,我们可以通过下面的代码提醒目户后用 if(cw jBluetoothAdapter isInabledO) Intent TurnOnBtIntent- new Intent (BluetoothAdapter ACTION REQUEST ENAB_E) startActivityForResult[TurnOnBtIntent, REQUEST E\ABLE BT) 这时用户会收到类似下面的窗口 Bluetooth permission request An application on your phone is requesting permission to turn on Bluetooth. Do you want to do this? Yei ainArodizs.com.cn 我们通过 startActivityforResul t0方法发起的 Intert将会在 onactivityResulto回调方法中获取用 户的选择,比如用户单击了Yes开启,那么将会收到 RESULT K的结果,如果RUL(AN别E则代表 用户不熈意开启蓝牙,当然 android2提醒大冢还可以通过其他方式来开启,比如用 Blue -oothDevice 取蓝牙服务接口对象,是用 enable(方法来开启,无需询问用户,这时魷需要用到 android, permissIon. BLUETOC0 TH ADMIN权狠。 如何判断系统蓋牙的状态呢?建立 BrcadcastReceiver对象,接收ACT0 N STATE CHANGED动作,在 EXTRA STATE和 EXTRA PREVIOUS STATE包含了现在状态和过去的状念,最终的结果定义是 STATE TURN ING ON正在开启, STATE则N已经开启, STATE TURNING OFF正在关闭和 STATE OFI已经关 闭,如果有么不明白的可以左我们的论坛中交流。 Android蓝牙中的RCOM RICOMY通道 HCM协议 一个基于欧洲电信标准协会ETs107.10规程的串行线性仿真协议。此协议提倛RS232控制和状态信号, 如基带上的殒坏,CIs以及数信号等,为上层业务(如传统的丰行线缆应用)提供了传送能力。 RFCOMI是一个简直传输协议,其目的是针对如何在两个不同设备上的应用之间保证一条完整的通信路 径,并在它们之间保持一通信段。 RFCOMM协议概述 RFCOMM通信段 Rr(灬N是为了兼容传统的串口应用,同时取代有线的通信方式,蓝牙协议栈需要提供与有线串口一致 的通信接口而开发出的协议。 RFCOMM协议是供对基丁L2CAP协议的串口仿真,基于ETSI07.10。可支持在 两个BT设备之间同时保持高达60路的通信连接。 目的: 在两个不同设备(通信设备的两)上的应用之间保证条完整的通信路径,并在他们之闫保持通管 度。下图是一条完整的通信路径。 RFCOMM只针对直接互连设备之间的连接,者是设备与网络接入设备之间的互连。通信两端设备必须 誹容于 RFCOMA协议,有两类设各:DTE( Data Terinal endpoint,通信终,如P, PRINTER)和 DCE (DH C- rui t endpoint,通信段的一部分,如 Modem。此两类设备不作区分。 RFCOMM服务 RFCM彷真RS232串口,彷寘过程包括非薮据通路状态的传输,RCOM內置空 Modem仿真标准桓架。 RFCOMM中的仿真RS-232通路 多串口方真 两个柔用 RFCOMM通信的BT设备有可能同时打开多个串口, RFCOMM支持同时打开60个端口。 认识二:MAC硬仁地址 MAC( Mediun/ MediaAccess Control,介质访问控制)MAC地上是烧录在 Network interfaceCard({网 ,NC)里的MC地,也叫硬什地址,是由48比特长6字节),16进制的数字组成.器位叫做组织唯一 标志符( organizational ly unique,是识别LAN(局域网)节点的标识.24-47位是由,家自己分配。其中第 40位是组播地址标志位。网卡的物理地址通常是由网卡生产厂家烧入网卡的ERM(一种闪存芯片,道常 可以通过程房控写),它存催的是传输数据吋真正赖以标识发出数据的电脑和接收数据的主机的地址 也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一般也是全球唯一的 比如,著多的以太网卡,其物珥地址是48bit(比特位)的整数,如:1-46-53-54-00-00,以机器可读的方 式存入主机接口中。以太网地址管理机构(除了管这个外还管别的) (EFE)(IEE:电气和电工程师协会)将以太网地且,也就是48比特的不同组合,分为若干独立的连续 地址组,生产以太网网卡的厂家就购买其中一组,具体生产时,逐个将唯一地址賦予以太网卡。 形黎的说,MAC地址就如叵我们身份证上的身份证号码,具有全球唯一性 步骤一: Setting Up bluetooth 通过 BluetoothAdapter得到蓝牙的 activitv 发送蓝连接意图 通过 e onAetivityResult()得到蓝牙连接意图 步骤: Tinding Devices 通过得到开启蓝牙用户名和MAC地址 配对蓝z 步骤三:连接藍牙 就像java的聊天系统一样用一个蓝歹于机当服务器,一个当客户端,在用一个类当做连接的管理 就了 Android蓝牙API介绍: BluetoothAdapter类 使用 Blnetoothedaμter类,你能够在 Android设备上查找周边釣藍牙设备然后酉对(绑定),藍牙通讥 是基于唯一地址MAC来相互传输的,耋虐到安全问题 Bluetooth通讯时需要先配对。然后开始相互连接, 连接后设备将会共享同一个 RFCOMD道道以便相互传输数据,目前这些实现在 Android2.0或更高版本SD 上实现。 查授发现 findding/ discovering devices 对于 Android查找发现整z设备使用 Bl:JetoothAdapter类的 gtartDiscovery()方法就可以执行一个 异步方式获取周边的蓝牙设备,因为是一个异步的方法所以我们不需要考虑线程被阻塞问题,整个过程 大约需要12秒时间,这时我们紧接着注册一个 Broadcastreceiver对象接收查找到的蓝牙设备信息, 我们过滤ACII0NFN这个 Intent动作来获取每个远程设备的详细信息,通过附加参数在 Intent字段 ATRA DEVICE和 EXTRA CLA8S.中包合了每个 Bluetooth;ice对象和象的该设备类型 巳 uetoothclass,示例代码 private final BroadcastRccciver cw-nc BroadcastRccciveroi puhl ic void onkeceive(Context context, Intent intent)i String action- intent. getAction( if (BluetoothDevice ACTION FOUND equals(action)) BluetoothDlevice device= intent. FetParcelableExtra(Bl:etocthDevice EXTRA DEVICE my ArravAdapter.add( device. getrlame()+“ android23“+ device. ge aDdre30);//取设各 名称和ma地址 /注朋这个 Broadcast reveiver IntentFilter filter- new IntentFilter(BluetoothDev ice ACTION FOUND) registerReceiver(ewiReceiver, filter) 最后 android123提醒大家需要注意的是,记住在 Service或Ac- ivity中重写 onDes torv(方法,使 用 unregis lerReceiver方法反注册这↑ Broadcas tReceiver对象保证资源被正确叵收 些其他的状态变化有 ACTION SCAN MODE CHANGED额外参数 EXTRA SCAN MODE和 EXTRA PREV IOUS SCAN MODE以故 SCAN MODE CONNECTABLE DISCOVERABLE、 SCAN MODE CONNECTABLE和 SCAN MODE NONE 二、配对绑定 bided/paired device 在 Android中型对一个藺设备可以调用 BluetoothAdapter类的 getBondeddevices方法可以获取 匚经配对的设备,该方法将会返回一个 Bluetoothdevice数组来区分每个已经配对的设备,示例代码如下 Set pairedDevices- cw jBluetoothAdapter getBondedDevices o if( paired Devices,size>0)〃如果获取的结果大于0,则开始逐个解析 for(Rlnet oothlevice device: pairedDevices)i my ArravAdapter,add( device, getName()+" android123°+ device. netAddress();//获取每 设备的名称和MAC地址添加到数组适配器 myArray Adapter中。 很多网友不明白如何让自己的手机被其他蓝牙备发现如何设置,下面我们就一起来说说 、允许发现 enabling discoverability 如果需用户确认操作,不需贾获取底层蓝牙服务实例,可以通过一个 Intent来传递 ACTION REQUEST DISC0 NERABLE参薮,这里通过 star tAet ivity ForResult来蠍制取个结果,重写 startActivityForResultO方法获取执行结果,返回结果有 RESULT OK和 RESULT CANCELLED分别代表开 启和取消(失败),当然最简单的方法是直接执行,示例代码如下 Intent cw Intent new Intent ( BlLetoothAdapter ACTION REQLEST DISCOVERABLE cwjIntent. putExtra(BluetoothAdapter EXTRA DISCOVERABLE DURATION, 300); startActivity (cwjIntent) 接下米系统会提示用户是香允许,对话框如下 Bluetooth permission request An application on your phone is requesting permission to curn on Bluetooth and to make your phone discoverable by other devices for 300 seconds. Do you want android 123. com. cn ,Cor 从 Android2.0开始提供最全面的藍牙开发樒口, API Level为5的系才能调用,目前 Android LieluoLh api包含了主要以下几类: Blue LuoLhAdapLer BluetoothDev ice、 BluetoathSocket、 Blue toothServerSoc et和 Bluetoothcless它们均在 android. bluetooth这个包中H现 我们调用时除了需要考虑 API Level至少为5外,还需注意添加相应的杈限,比如使用通讯需要在 androidmanifest.xml加入,而开关蓝牙需要 android. permission. BLLEICOTH ADMIN权限。 、建立通讯 establishing 对丁建立一个蓝牙通讯,必须经过以下四个步骤:获取本地蓝牙设备、查找远程设备、配对(己配对 设备将会忽咯这步的细节)、连接设备和传输数据 在 Android平台中首先我们需要合找本地活动的蓝牙适配器,通过 BluetoothAdapter类的 get DefaultAdapter(方法得一个系统默认可用的蓝牙设备,示例代码如 Bluetooth dapter cw jBluetoothAdapter= BluetoothAdapter getDefaultAdapter o if (cw iBluetoothAdapter=null( // Android川发测提示大家本机没有找到蓝牙使件或业动存在间题 当然有了这步仍然不能建立连接,因为我们还不知道手机中的蓝牙功能是否被开启,可以通过 rwjRInetoot aDapter的. i sEnabl er方法来断,如果没有开启,我们可以通过下面的代码提醒月户启用 if(!cw jBluetoothAdapter isEnabled() Intent TurnOnBtIntent new Intent( BluetoothAdapter ACTION REQUEST ENABE) startActivityForResult(TurnOnBtIntent, REQUEST ESABLE BT) 这时用户会收到类似下面的窗口: Bluetooth permission request An application on your phone is requesting permission to turn on Bluetooth. Do you want to do this? Yes anaroidizp.com.cn 我们通过 startactivityfor配eslt0方法发起的 Intent将会在 onActivityResulto回调方法中获取 用户的选择,比如用户单击了Yes开启,那么将会收到 RESULT OK的结果,如果 RESULT CANCELEI则代表 用户不愿意开启蓝牙,当然 odroid2提醒大家还可以通过其他方式来开肩,比如总用 BlueoothDeyice 获取蓝牙服务接口对象,是用 enable(方法来开启,无需询问用户,这时就需要用到 android. permission. BLUETOOTH ADMIN权狠。 如何判断系统蓝牙的状态?建立 Broadcast Receiver对象,援收 ACTION STATE CHANGED动作,在 EATRA STATE和 EXTRA PREVIOUS STATE包含了现在状态和过去的状态,最终的结果定义是 STATE TURN ING ON正在开启, STATE ON已经开启, STATE TURN ING OFF正在关闭和 STATE OFI已经关 闭,如果有十么不明白的可以左我们的论坛中交流。 Android蓝牙技术 对于—一般的软件开发人员来说,监牙是很少用到的,尤只是 Android的监牙开发,国内 的例子很少 Android对于睦牙开发从2.0版本s才开始支持,而且模拟器不支持, 测试至少需要两部于机,所以制约了很多技术人员的开发,刚巧这段时间公司有蓝牙开发 的需求,我看了很多国内、国外的资料,又研究了一下J2M的蓝牙开发(为了找找思路), 虽然我想要的功能还没实现(我曾经在很多论坛里问了很多遍,苦于没有高人答.), 我要实现的功能是连接个硬件设备,凡是跟硬件沾上边的,都让软件人员丌发头疼. 奷了,废话不说了,鉴于很多开发人员现在也有蓝牙开发的需求,也为了大家少走些弯路, 先将我积攒的一点点在 Android蓝牙开发经验与大家分享一下! 首先,要操作蓝牙,先要在 Androicmanifest.xm1里加入权限 Kuses-permissionandroid: name="android. permission. BLUETOOTH ADMIN /> Cuses-permissionandroid: name="android. permission. BLUETOOTH/> 然后,看下api: Android所有关于蓝才开发的类都在 andro d. bluetooth包下,如下图, 只有8个类 们我们需要用到了就只有几个血已 1. BluetoothAdapter顾名思义,蓝牙适配器,直到我们建立 bluetooth socket连接之前,都要不断操作它 Bluctooth Adapter旦的方法很多,常用的有以下几个: cancelDiscovery(根据宇面意思,是取消发现,也就是说当我们正在搜索设备的时候调用这个方法将 不再继续搜索 disable关闭监牙 enable(打开蓝牙,这个方法打开蓝牙不会弹出提示,更多的时候我们需要问下用户是否打开,一下这 两行代码同样是打开蓝牙,不过会提示用户 Inlentenabler-newInLenL(BlueLoothAdapler ACTION_REQUEST_ENABLE); startActivity For Result(enabler, re Code): //Fl startActivity(enabler: gel Address(取本地蓝牙地址 gei DetaultAdapter(获取默认 Bluetooth Adapter,实际上,也只有这一种方法获取 Bluetooth Adapter ethane(获取本坦蓝牙名称 gel De vice(String address)板据蓝牙地址获取远程蓝牙设备 gestate获取本地蓝牙适配器当前状态(感觉可能调试的时候更需要) diScovering判所当前是台正在查找设备,是返回 eNabled判断蓝牙是打开,己开返回true,否则,返回 False listen UsingRfcomm WithServiceRecord String name, JUID uuid根据名称,UUI创建并返回 Bluetooth server Socket,这是刽建 Bluetooth socket服务器挲的第一步 startDiscovery(开始搜索,这是搜索的第一步 2 BluetoothDevice看名宇就知道,这个类苗述了一个蓝牙设备 crcatcRfcommsockctloScrviccRccord(UUlDuuid根据UU创建扩返回一个 Bluctoothsockct 这个方法也是我们获取 Bluetooth Device的日的—创建 Bluetooth Socket 这个类其他的方法,如 get Address() getName(同 Bluetooth Adapter 3 Bluetooth server Soket如果去除了 Bluetooth相信大家定再熟悉不过了,既然是 Socket.方法就应该 都差不多, 这个类一种兵有三个方法 两个重载的cepu(,acep( lHltuumewul,者的区影在丁后由的方法指定了过时时间,需要注意的是,扶行这 两个方法的候,直到接收到了客户端的请求(或是过 Attach3at期之后),都会阻寒线程,应该放在新线 程里运行! 运有一点需要注意的是,这两个方法鄱返回一个 Bluetooth sock,最后旳连接也是服务器端与客户端的两 个 Bluetooth socket的连接 close(这个就不用说了吧,翻详一下—关闭! 4 Bluetooth Socket,跟 Bluetooth Server Socket对,是客户端 共5个方法,不出意外,都会用到 closel,关闭 connecto连 gelInpluStre alt)取输入流 get OutputStreamo获取输出流 get Remote Device(O)取远程设备,这里指的是取 bluetooth Socket指定连接的那个远鼎牙设备 Android建立蓝牙 RFCOMM通信 前面两篇文章中我们提到了有关 Android平台牙的配对、发、启用等操作,本文开始通过 巳 uetoothSoc ket类建立有关蓝牙通讯的套接字。从№ droid2,0开始支持这一特性,蓝牙和LAN一样通 过MAC地址来以别远程设备,建立完讯连接CM通道后以输入、输出沇方式通讯 连接设备 蓝牙通讯分为 server报务器端和 client客户端·它们之间使用 BluetoothSocke:类的不同方法来获取 数据 1.作为服务器 如果一个设各需要和两个现多个设备连接时,就需要作为一个serr来传输,在 android中提供了 巳 uetooth ServerSocket类来处理用户发来的信息,服务器漏套接字在接受( accepted)一个客户发的 E- uetoothSorket时作出相应的响应。示例代码如下 private class Accept Thread extends Thread private final Bluetoothserversocket cwiServersocket: public Accept Thread

...展开详情
所需积分/C币:11 上传时间:2018-11-27 资源大小:3.12MB
举报 举报 收藏 收藏
分享 分享
基于Android的蓝牙串口通讯助手

实现与蓝牙串口HC_05模块之间的通讯,解析接收到的数据并显示出来。主要功能:1、通过蓝牙串口实现控制小车 2、接收DHT11温湿度传感器、PM2.5传感器、MQ2烟雾传感器等数据,并且显示出来。

立即下载
Android 蓝牙串口调试助手源码(保证正确)

买别人的代码,这里分享。已经编译生成apk。可以改源码供自己需要。

立即下载
Arduino 蓝牙串口模块与Android蓝牙通信程序源码

1,提供了Arduino(Mega2560)与Android基于蓝牙串口的通信源代码。 2,其中Arduino在收到蓝牙信息后复制应答发回给android端。 3、Android端利用接收缓冲分析,处理返回数据包随机分割的问题; 4、Android采用异步任务发送数据; 5、Android端采用线程监听蓝牙信息接收;

立即下载
蓝牙串口助手(Android Studio源码)

软件下载链接http://a.app.qq.com/o/simple.jsp?pkgname=com.example.bluetoothassist 本软件为蓝牙串口通信工具,支持蓝牙从模式和主模式,可进行蓝牙串口通信测试。能连接单片机及PC的蓝牙串口。 可用于硬件的串口蓝牙模块(TTL)通信。 软件功能: 1、搜索蓝牙设备 2、接收显示数据与发送数据 3、可设置ASCII与HEX的输入输出模式 4、自定义接收对齐字节数 本工具含三种发送方式: 1、定时发送方式:设定发送周期进行定时发送 2、按键发送方式:可自定义5个按钮的输出值 3、编辑发送方式:可编辑发送文本,支持发送回车键。

立即下载
安卓蓝牙通信APP源码

适用于通过安卓app连接蓝牙串口,控制嵌入式设备。具备下面功能: 连接蓝牙设备:获取已配对蓝牙设备列表,显示蓝牙设备名称和MAC地址,点击进行连接; 蓝牙通信:通过点击开关可以对蓝牙串口类设备控制,如:开灯、关灯,开门、关门等;还可以像聊天窗口发送消息。

立即下载
蓝牙串口程序

蓝牙串口程序,可以做蓝牙回传,验证蓝牙通信稳定性。

立即下载