Android蓝牙
Android蓝牙(精选7篇)
Android蓝牙 第1篇
D-Bus是用于进程间通信或者进程与内核的通信。有些时候D-Bus是一对一的通信协议, 但在很多情况下, 通信一方是消息总线, 同时与多个应用通信。协议的设计短小并且高效, 低成本地传送消息。协议是二进制的, 不需要进行序列化的过程产生开销。字节次序在每个消息中声明, 当一个D-Bus消息通过网络传输到远程主机时, 它仍可以被正确识别。
D-Bus由几个总线构成, 它在引导时就会启动, 这个总线由操作系统和后台进程使用, 具有可靠的安全性。同时有一部分回话总线 (Session Buses) , 这些总线属于用户私有。D-Bus每条消息都有且仅有一个源和一个目的地, 这些地址被指定为对象路径, 使用D-Bus的应用程序都包括一组对象, 消息发送或者发送到特定对象。
在D-Bus中有4种类型的消息:Method Calls、Method Return、Signals、Errors。要执行D-Bus对象的方法, 您需要向对象发送一个方法来调用消息, 它将处理一些工作并返回消息或者错误信息。信号的不同之处在于, 它既没有消息返回, 也没有任何类型的错误消息返回。
消息可以有任意参数, 参数类型有布尔型、字节、整型、字符串、数组等。
服务是D-Bus的高层次抽象, 应用程序可以通过一个总线来注册一个服务, 如果成功, 应用程序就获得那个服务, 其它程序可以检查总线上是否已经存在一个特定的服务, 如果没有, 可以要求总线启动它。
1.1 Android 上的蓝牙模块
Android 平台支持BlueZ蓝牙协议栈, 允许一台设备与另外的蓝牙设备交换数据, Android 提供了API来支持蓝牙方面的应用开发。
使用蓝牙进行通信主要有4个步骤: 设置蓝牙、搜索蓝牙服务、连接设备、传输数据。由于以下类提供服务:BlueTooth Adapter是蓝牙的适配器, 它是所有蓝牙操作的入口点, 可以用来搜索蓝牙设备、查询已配对的设备、用已知的MAC地址来实例化一个蓝牙设备 (BlueTooth Device) , 建立一个蓝牙设备。用它来向服务器建立连接请求 (通过 BlueTooth Socket) , 或者用来查询设备的名称、地址、配对状态等。
Bluetooth Servers类用来开启Server Socket 来监听连接请求, 为了连接两台蓝牙设备, 其中一台设备必须用这个类来创建Server Socket, 当远端设备向这个设备发出连接请求, BlueTooth Server Socket接收请求后会返回一个已连接的BlueTooth Socket。BlueTooth Socket表示蓝牙套接字, 它是应用程序与其他蓝牙设备通过输入输出流交换数据的连接点。如果需要在Android应用程序中使用蓝牙特征, 首先必须声明两个蓝牙权限:
= "android.permission.BLUETOOTH_ADMIN"/>
1.2 蓝牙通讯系统设计
蓝牙通讯类似于TCP方式, 都需要服务器端和客户端, 在本系统中一部Android手机作为蓝牙服务器端, 另外几部Android手机作为蓝牙客户端, 客户端分别连接到服务器, 并给服务器发送并接收文本消息, 服务器也能给客户端发送并接收消息。本系统用到的Android系统组件为Activity和Service。在Android中, 每个Activity都是一个独立的进程, 每个Service也是一个独立的进程。Activity需要与Service 通信, 就是跨进程的通信, 需要使用Binder机制, Android对Binder机制进行了抽象, 并定义了IBinder接口。在上层是由AIDL (Android Interface Definition Language) 来完成的。
本文在蓝牙通信服务器端和客户端使用了MVC分层模式结构, 将其分为表示层、控制层、业务和数据交换层。
表示层向用户展示模型的状态, 本系统中主要用来输入显示文本, 打开蓝牙, 以及开启蓝牙被查找功能和搜索蓝牙设备等。
控制层负责表示层和业务层的流程控制, 一方面将表示层的调用发到业务层去请求处理;另一方面将业务层的处理结果反应到表示层进行界面上的显示。
业务和数据交互层, 封装了蓝牙传输的核心操作, 比如说如何创建Socket通道、传输数据、处理输入输出流等等。它可以通过控制层被调用, 也可以在收到连接请求或者文本消息时把结果返回给控制层, 进而返回到表示层。
1.3 蓝牙设备的发现与匹配
蓝牙设备匹配主要流程为, 开启蓝牙控制器搜索周边蓝牙设备搜索列表中选择需要的设备进行匹配密钥匹配匹配成功建立ACL连接;配对模式允许两个设备之间建立一条共享的链路钥匙, 蓝牙设备会存储这个链路密码, 并在下一次连接的时候用到它。也就是说两端通信的时候会鉴别是否已经配对, 而不需要再次配对。在Android系统中, 蓝牙设备匹配, 会在BlueTooth Device模块中记录耳机状态, 并通过SDP服务查询设备所能提供的服务, 并记录下来。当蓝牙设备被注册后, 如果手机应用程序需要建立SCO链路时, 即可通过BlueTooth Device模块中的记录得到正确的状态。BlueTooth Device随蓝牙控制器启动而创建, 创建之后会开启BlueTooth Event Loop线程来监听D-Bus上有关耳机端发送过来的事件。BlueTooth Device主要有两个方面的作用, 一是监听远端蓝牙设备的消息, 另一个作用是通过远程过程调用HCID中函数。
1.4 服务器端的实现
Server端中, 有两个listView用来显示从不同客户端接收到的文本消息, 两个输入框, 用来输入文本消息发给客户端。
启动程序以后, 可以设置本蓝牙设备“允许被发现”, 该选项表示在其他蓝牙设备处于搜索状态下, 能获得服务器端的存在, 及其相关信息。为了隐私保护及安全, 蓝牙设备默认是处于关闭状态, 在用户同意的情况下, 设置为“允许被发现”。
服务器进行一系列初始化操作, 包括构造On Message Received Listener用以监听消息到来事件, 启动Connection Service, 由它来处理发送和接收文本消息。
在Connection Service里, 创建Connection Waiter线程, 在Connection Waiter线程里创建BlueTooth Server Socket监听连接请求。
在有连接请求的时候, Connection Service里面Connection Waiter线程接收请求, 创建Bluetooth Socket, 并把远端请求的地址和这个BlueTooth Socket放到Has Map里, 用来管理Socket, 接着启动BtStream Watcher线程, 用来监听这个Socket里的输入输出流, 把此线程也放到另外一个Hash Map里, 接着创建新的Connection Waiter线程, 继续监听新的连接请求。这样, 创建多个通信线程, 放到Hash Map里面进行管理, 以完成蓝牙的一对多通信。
BtStream Watcher用来处理输入输出流, 在BT Server界面上输入的时候, 根据目的地址不同, 从Hash Map里取出对应的Socket, 由它来向此地址发送消息, 接收到文本消息时, 就回调On Message Receivd Listerner来通知上层, 并显示出来。
1.5 客户端
在客户端 (BT Client) 界面上, 有一个List View和一个输入框, 分别用来显示接收到的服务器端发送的消息和输入文本消息向服务器端发送, 这是程序界面的构成。
启动程序后, 客户端的一系列初始化操作包括:构造On Message Received Listener、On Connection Service Ready Listener, 启动Connection Service。
然后回调On Connection Service Ready Listener, 启动Server List Activity界面, 搜索到的蓝牙设备, 点击服务器端所在设备地址, 通过Connection调用Connection Service的Connect () 函数, 来向服务器发起连接请求。
等服务器接受连接请求后, 返回BlueTooth Socket, 把服务器端地址Address和这个Bluetooth Socket放到HashMap里, 用来管理Socket。接着启动BtStream Watcher线程, 用来监听这个Socket里的输入输出流, 把此线程也放到另外一个Hash Map里。
BT Stream Watcher用来处理输入输出流, 在BT Client界面上进行输入时, 根据服务地址, 从Hash Map里取出对应的Socket, 由它来向此服务发送消息。接收到文本消息时, 回调On Message Received Listener来通知上层, 在界面上显示。
2 结语
本文首先讨论Android开发蓝牙应用程序的组成, 然后介绍了蓝牙相关协议栈知识及Android平台上蓝牙开发的实现方法, 接着以一个一对多蓝牙通信系统设计与实现为例, 进行了软件开发的详细说明, 设计了蓝牙通信的客户端和服务器端结构, 并对各个层次进行了简明的介绍, 实现了其功能模块, 程序运行稳定良好。
由于设备的限制, 本文只实现了一对二的通信方式, 但也可以扩展为一对三、一对多的方式, 在此基础上通过服务器可以把消息转发给其它客户端, 能够实现组群通信。本系统也只实现了文本消息的传输, 后续计划准备实现一对多的图片、语音、视频的蓝牙传输。
摘要:Android是Google宣布的基于Linux平台开源的手机操作系统。蓝牙技术作为移动通信手段也被应用到Android平台上。介绍了蓝牙相关知识, BlueZ开源协议栈体系, 并说明BlueZ如何通过D-Bus消息机制与Android应用程序联系起来, 及Android平台上蓝牙的实现。
关键词:Android,Bluetooth,Bluez
参考文献
[1]米勒.蓝牙技术起跳[M].北京:电子工业出版社, 2002.
Android蓝牙 第2篇
故障诊断功能已经成为新车出厂前测试和修理厂故障检测不可或缺的重要手段[1]。现如今手机几乎人手一部,智能手机也向着移动终端的方向发展。据统计2014年在全球智能手机操作系统中,Android系统以其显著的开放性、丰富的硬件选择等绝对优势占据市场的最大份额。为实现汽车故障在线监测和诊断, 本文将手机蓝牙(Blue tooth)、CAN(Controller Area Network)总线、Android智能手机三者结合在一起,实现了基于蓝牙技术的无线汽车故障诊断系统。
1无线汽车故障诊断系统的组成
无线汽车故障诊断系统主要由下位机和上位机两部分组成,如图1所示。上位机是客户端,基于手机Android系统;下位机即CAN转蓝牙控制器模块(以下简称Bluetooth-CAN模块),通过OBD接口(CAN总线)和汽车ECU(电子控制 单元)通信,读取来自ECU的报文信息[2],并转换成蓝牙串行数据格式,发送给上位机。手机客户端有两个线程,一个线程是子线程,负责接收和存储数据,并在接收完一组数据,判断数据格式正确后,给上位机回码,请求发送下一组数据;另一个是主线程,提取子线程存储的数据,与数据库对比,对数据进行处理。
2无线汽车故障诊断系统的协议转换
无线汽车故障诊断系统的基本流程是由Android手机自带的蓝牙API接口,通过APP(Application第三方应 用程序 )客户端,实现手机 蓝牙设备 与Bluetooth-CAN模块的无线连接。设备连接正常后, 遵循一定的数据格式即协议,采用串行数据通信实现数据的输入、输出。无线汽车故障诊断系统结构框架如图2所示。其中,主要涉及 的是ECU、BluetoothCAN模块、手机端蓝牙三者之间数据的传输和协议转换(J1939协议和蓝牙协议)。
2.1J1939协议
J1939协议是由 美国汽车 工程协会 发布的,以CAN总线为基础,支持闭环控制的在多个ECU之间高速通信的网络协议。本系统通信基于J1939协议, 采用CAN规范中的CAN2.0B扩展帧格式,波特率为250kBd/s。基于CAN通信的J1939协议的ECU能提供发动机性能监测参数和整车网络通讯,实现整车网络中多个ECU的数据共享;同时J1939协议还支持故障诊断,可以读取或者清除诊断故障码。
本系统ECU主要采用的通信方式为单帧通信和多帧通信。在监测和整车网络通信时主要采用单帧通信的方式,但由于故障码个数的多变性,在故障诊断时,单帧通信和多帧通信结合使用。
ECU发送的故障诊断数据帧主要包含:故障类型、故障码(DTC)和参数组编号(PGN)等。故障类型主要分为当前故障和先前故障。诊断当前故障和先前故障所包含的故障码有3种可能:无故障、单个故障和多个故障。无故障和单个故障可使用单个CAN数据帧发送全部信息,而汽车大多情况下存在多个故障,那么就需要多个数据帧才可以把信息发送完毕,这时就需要用J1939协议的拆装和重组消息的传输协议功能。
2.2蓝牙协议的实现
任何蓝牙设备必须遵循蓝牙规范才能实现各厂商的产品互连互通,蓝牙协议包括核心协议层、替代电缆协议层、电话控制协议层和选用协议层[3]。除了以上协议层外,蓝牙协议 栈中还包 括2个接口:一个是HCI(主机控制接口),用来为基带控制器、链路控制器以及访问硬件状态和控制寄存器等提供命令接口;另一个是与基带处理部分直接相连的音频接口,用以传递音频数据。本系统用到的是HCI、逻辑链路控制和适配协议(L2CAP)、串行仿真RFCOMM、链路管理协议(LMP)、电话替代协议和选用协议。其中的链路管理协议(LMP)负责蓝牙组件连接的建立,逻辑链路控制和适配协议(L2CAP)负责高层传输,应用层协议屏蔽基带协议的适配协议即为适配层。
2.3自定义协议
实现蓝牙协议与J1939协议的连接,两者之间必须有统一的协议规范来实现,称为自定义协议。手机端自定义协议格式如图3所示,发送固定为12字节。 Bluetooth-CAN端自定义协议格式如图4所示,发送固定为16字节。其中,ID数据帧标识符、PGN参数组编号和DT故障码这些标号根据各个企业自己设定的不同而定。
3无线汽车故障诊断系统的实现
3.1Bluetooth-CAN控制器模块设计
Bluetooth-CAN控制器模块通过OBD接口与发动机控制ECU通信,读取来自发动机控制ECU的信息,并转换成 蓝牙数据 发送给具 有蓝牙功 能的Android手机。
3.1.1Bluetooth-CAN控制器模块的硬件设计
Bluetooth-CAN控制器模块的硬件主要包括:微控制器模块、CAN通信接口模块和蓝牙模块。
(1)微控制器模块:Bluetooth-CAN模块采用的控制器芯片 是XC2238N-40F,是Infineon公司的16位XC2200系列微控制器,它提供了192kB~832kB的闪存、可选的EEPROM仿真、最大可达82kB的SRAM、 最大CPU时钟频率为100MHz。为了达到AUTOSAR标准程序模型中关于独立于硬件进行软件开发的要求, 控制器中集成了内存保护单元(MPU)。此外,Infineon还提供了单独的FlexRay通信控制器,可方便地添加到系统中。微控制器外围电路图如图5所示。
(2)CAN通信接口模块:CAN通信接口模块是将汽车OBDII接口中CAN总线上的数据读取到微控制器中,同时将微控制器的数据发送到汽车的CAN总线上,本系统采用的芯片型号为TLE6250。
(3)蓝牙模块:本系统采用的蓝牙模块芯片型号为EMX-02A,是Modiatek公司专为智能无线数据传输而打造的FBT06系列,模块采用Bluetooth2.1,具有成本低、体积小、收发灵敏度高等优点。
3.1.2Bluetooth-CAN控制器模块的软件设计
CAN转蓝牙控制器模块的软件部分是框架性的单片机编程,编译环境为Tasking。CAN转蓝牙控制器模块程序如图6所示。
3.2手机端APP设计
Android手机端标配之一的蓝牙适配器连接的是Bluetooth-CAN中的蓝牙模 块。当Android的content中的设备连接正常后,通过BluetoothSocket采用串行数据通信实现与CAN转蓝牙控制器模块的交互[4]。 手机端界面设定如图7~图10所示。
主界面主要实现蓝牙的搜索、连接和断开,这个功能的Android程序已经有很多资料可供参考,在此不再赘述。蓝牙连接后跳入到连接界面,供客户去选择相应的需求,即故障码和数据流,后续也会有MAP表的标定模式。
APP客户端的框架构建如图11所示。其分两个线程在运行,子线程是手机端蓝牙模块与BluetoothCAN中的蓝牙模块之间的数据交互,当前Activity中发出请求命令,Bluetooth-CAN模块将相应指令需求的数据从ECU中提取出来,进行数据转换处理,结果通过蓝牙的BluetoothSocket发送到手机端蓝牙,手机端接收数据并判断数据是否完整,对数据进行存储并发送回码(请求命令),请求下一组数据;主线程完成对界面的初始化,并提取手机端存储的数据与数据库进行对比,完成对数据的最终处理,并将结果直观地显示在相应的故障码或数据流界面。
4结束语
基于Android手机蓝牙技术的汽车故障诊断系统的研究与设计能紧跟信息时代发展的最新潮流,是在已有传统手持式汽车故障诊断设备和Android系统研究的基础上研发的新型设备。系统具有价格便宜、体积小、使用方便的特点,目前已经投入市场,反响不错, 极具大规模推广的市场前景。
摘要:为了实现在线监测和诊断汽车故障,针对传统手持式汽车故障诊断设备的不足,将手机蓝牙(Blue tooth)、CAN(Controller Area Network)总线、Android智能手机三者结合在一起,实现了基于蓝牙技术的无线汽车故障诊断系统。基于蓝牙技术的无线汽车故障诊断系统不仅能使汽车检修时方便快捷,而且能使普通大众人群直观地查看爱车的性能。
Android蓝牙 第3篇
1 蓝牙技术
蓝牙技术联盟(Bluetooth SIG)成立于1998年,是由爱立信、英特尔、联想、微软、摩托罗拉、诺基亚及东芝等公司发起成立。总部设在美国柯克兰州,从建立之初到现在共有13 528个全球成员,这些成员之间进行广泛的合作,为蓝牙技术的发展提供指导意见,推动蓝牙的发展。同时在香港、北京、台北和日本东京、韩国首尔和瑞典的马尔摩都有办事机构。
蓝牙无线通信技术工作在工业、科学以及医学上公用的2.4 GHz ISM公用频段,这一频段全球通用且无需授权。蓝牙系统[2]采用全双工分时传输信息技术,信息以分组结构的方式进行数据交换。在传输过程中,各信息分组用不同的跳频算法实现信息传输。“跳频”技术是把频带分成若干个跳频信道,在一次连接中,无线电收发器按一定的码序列不断地从一个信道“跳”到另一个信道,只有收发双方按这个规律进行通信,而其他的干扰不可能按同样的规律进行干扰;跳频的瞬时带宽很窄,这就使得来自同样工作在2.4 GHz ISM频段的家用电器,如微波炉等带来干扰的可能性变得很小。与其他工作在相同频段的无线系统相比,蓝牙跳频每秒可以达到1 600次,速度更快,而且数据包更短,从而使蓝牙比其他系统更稳定。此外,蓝牙通
信还具有以下优点:(1)消耗功率极低。(2)辐射小,对人体安全影响不大。(3)成本低廉,容易实现。
目前,蓝牙技术已经得到普遍的应用,全球大约80%以上的手机使用了蓝牙技术。蓝牙技术的普及为物联网的发展提供了一种技术选择,具有极大的发展空间。
2 Android操作系统
Android是专为移动终端打造的开放、完整的移动平台,它是一款基于Linux内核的开源操作系统,由操作系统、中间件、用户界面和应用程序组成。由Google及其开放手机联盟共同研发,并在2008年9月份推出了Android第一版。
Android操作系统架构[3]从下到上有5部分组成:Linux内核、Android Runtime、库、应用程序框架、应用程序。Android系统架构如图1所示。
Linux内核(Linux Kernel)。Android基于Linux2.6提供核心系统服务,这是Android平台开放的基础,它提供了例如安全机制、内存管理、进程管理、网络堆栈、驱动模型等内容。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务,使得应用开发人员无需关心硬件细节。
Android Runtime。Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik被设计成在一个设备可以高效地运行多个虚拟机。Dalvik VM虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。
Libraries。Android包含一个C/C++库的集合,这些库供Android系统的不同组件使用。这些功能通过Android的应用程序框架(Application Framework)暴露给开发者
Application Framework。通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。
应用层(Applications)。Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。
Android作为第一款完整的、开放的、免费的平台,在仅仅两年多的时间,从最初的1.0版本到现在主流的2.3版本,以至刚刚发布的4.0版本,每个版本的发布对于Google来说都是一个质的飞跃,根据市研机构Gartner在2011年第二季度的OS份额调查数据显示,Android市场占有率达43.4%,成为最大的智能手机系统,随着Android手机的普及,Android应用的需求必定会越来越大,这将是一个有着巨大潜力的市场。
3 Android操作系统下蓝牙的研究
Android平台支持蓝牙协议栈[4],因此支持在两个蓝牙设备之间进行数据的传输。Android应用框架层提供了允许蓝牙进行连接的API,通过这些API可以实现通过蓝牙的应用程序是无线连接,建立端到端的连接模式。使用蓝牙API,可以实现应用的如下功能:
(1)寻找其他蓝牙设备。
(2)查询与本地蓝牙适配器配对的设备。
(3)建立RFCOMM信道。
(4)在两个不同的蓝牙设备之间传输数据。
(5)管理多个蓝牙连接。
下面详细介绍几个重要的API:
Bluetooth Adapter:代表本地的蓝牙适配器,是所有蓝牙交互的的入口点。利用它可以发现其他蓝牙设备,查询已经绑定的设备,使用已知的MAC地址实例化一个蓝牙设备和建立一个Bluetooth Server Socket来监听来自其他设备的连接。
Bluetooth Device类:代表远端的蓝牙设备,使用它请求远端蓝牙设备连接或获取远端蓝牙设备的名称、地址、种类和绑定状态。
Bluetoothsocket类:代表蓝牙套接字的接口,它是应用程序通过输入、输出流与其他蓝牙设备通信的连接点。
Blueboothserversocket类:代表打开服务连接来监听可能到来的连接请求,为连接两个蓝牙设备必须有一个设备作为服务器打开一个服务套接字。当远端设备发起连接请求,并且已经连接到了的时候,Blueboothserversocket类将会返回一个bluetoothsocket。
Bluetoothclass类:描述了蓝牙设备的一般特点和能力。它的只读属性集定义了设备的主、从设备类和一些相关服务。
4 蓝牙传输软件的实现
4.1 软件功能描述
蓝牙传输软件主要实现对各个模块的管理,模块数据的接收、分析、存储、发送及复杂的人机交互等任务。为能够合理分配硬件资源、提供更人性化的界面以及使用通用的硬件设备,在软件设计时,健康服务终端采用Android操作系统为用户界面。
4.2 图形用户界面设计
程序界面主要包括3个与用户进行交互的Activity:(1)模块显示。(2)血氧历史记录。(3)血压历史记录。
为减少应用所需的内存量,项目没有添加任何图片及声效。界面简单直观,便于操作。首先将各模块列表作为应用程序的主界面。程序运行的最开始加载此项。
当应用程序启动后,第一个显示出各个模块的列表和当前测试数据。界面设计通过XML的资源文件进行定义。
历史记录模块采用了专为Android系统设计的图形库AChart Engine[5],可以用于绘制多种图表。
历史记录的显示主要通过不同的线条颜色,点的形状来区分显示的不同内容。
4.3 软件功能设计
软件功能设计包括蓝牙管理,连接建立,数据传输及数据处理。
蓝牙部分设计
在Android操作系统下,提供了对蓝牙管理的API,蓝牙开发流程如图2所示。首先要判断设备是否支持蓝牙,并且保证蓝牙可用。
m Bluetooth Adapter=Bluetooth Adapter.get DefaultAdapter();
如果蓝牙可用,则m Bluetooth Adapter不为空,然后判断蓝牙是否打开,若未打开,则提示用户打开蓝牙。
到此,蓝牙设备已经打开。
在Android应用程序开发中,若要建立两个蓝牙设备的连接,必须实现客户端和服务器端代码。一个用来开启服务监听,一个发送连接请求。当它们都拥有一个蓝牙套接字在同一RFECOMM信道上时,说明它们之间已经建立好连接。服务器端采用accept()方法来建立连接。由于accept()方法是一种阻塞调用,因此不应该放在主Acitvity里,要新建一个线程来管理。
而客户端则采用connect()方法来建立连接。同样也是一种阻塞调用,同样需要新建一个线程来管理。
当设备连接上以后,每个设备都拥有各自的Bluetoothsocket。现在就可以实现设备之间数据共享了。同样读取和写操作都是阻塞调用,需要建立一个专用的线程来管理。
在两个Activity之间,可以用Handler传递信息,使用get Input Stream()获得由传感器传来的数据并显示在主界面中。
4.4 蓝牙传输软件的运行与测试
由于蓝牙不能在虚拟机中测试,所以将程序打包后,安装到支持蓝牙的Android手机中,然后点击血压按钮,将与血压模块建立连接,同时实时显示当前血压值。点击历史记录按钮,则会显示一周内测试结果,并以图片形式显示出来。程序运行结果如图3和图4所示。
5 结束语
Android在OS市场份额的不断增加,足以体现出Android的优势,而蓝牙4.0版本低功耗技术更适合于远程控制、医疗保健及运动感应器等新兴市场。文中结合两者的优势,设计出一款基于android的蓝牙传输软件,主要应用于健康服务领域,在实际生活中具有很强的应用性。论文介绍了软件的初步设计,还有很多功能需要完善,比如界面的美化,更方便快捷地管理蓝牙设计,数据传输的稳定性及准确性等,这些将是以后研究的重点。
参考文献
[1]谢昕.基于物联网的远程家庭健康监护传感器网络研究[D].北京:北京邮电大学,2011.
[2]浦东兵,赵东来,张雪,等.基于蓝牙的智能家居网管设计[J].信息技术,2010(2):11-12.
[3]E2EColud工作室.深入浅出Google Android[M].北京:人民邮电出版社,2009.
[4]黄伟敏.Android平台的即时通信系统客户端设计方案[J].现代电子技术,2011,35(16):148-150.
[5]鲍立,庄奕琪.基于蓝牙的MPEG4无线视频传输研究[J].电子科技,2003,16(12):37-39,41.
Android蓝牙 第4篇
1 概述
蓝牙的工作频率:ISM频段2.400~2.483MHz、扩频方式:FHSS、控制开关最大电流10A/16A/20A等。模块参数供电电压:5V。输出端口:1个I/O口。I/O口电平为高电平5V。端口状态:分为高电平、低电平、自锁、电机控制、0.3-3s(0.3s为等级)点动。状态查询在Android平台手机中安装APP并进行如图1所示的点动设置。
蓝牙模块与触摸电路的联接方式如图2所示。
2 工作原理与电路说明
(1)第一部分如图3所示。触摸与控制开关灯亮与灭部分。
功能说明:首先CS第1脚接地使之ARD201上电OUT1输出为低电平。也就是在开机后灯是不亮的。其次VCC经C3滤掉脉动电后加到U1的1脚,经内部稳压后由U1的3脚输出恒定的电压供电到ARD201上4脚。Q1为双向可控硅。每一次触摸TOU1或TOU2,对应OUT1或OUT2的输出状态翻转一次,如此循环。
电路说明:当人体表皮触摸TH在芯片ARD201上的5脚感应到人体的高频杂时,触摸5脚的TOU1,对应5脚的OUT1的输出状态翻转一次,也就是由低电平翻转成高电平这样使之Q2导通接地,R2上的电位为零所以Q1也导通,Q1导通后电流通过灯使之亮。反之当人体表皮触摸TH在芯片ARD201上的5脚感应到人体的高频杂时,触摸5脚的TOU1,对应5脚的OUT1的输出状态翻转一次,也就是由高电平翻转成低电平这样使之Q2导通截止,R2上的电位为高电位所以Q1也截止,Q1截止后电流不能通过灯使之灯不亮。
(2)第二部分如图4所示。无线手机发出蓝牙指令无线蓝牙模块接收部分。
功能说明:U5为交流电转换成直流电部分,向所有的VCC供电。当按手机上APP(图2中的界面一点动按扭时)那么每一次触摸界面一点动按扭,蓝牙模块无线天线接收信号后对应P1.0的输出状态翻转一次,如此循环。
电路说明:当按手机上APP(图2中的界面一点动按扭时)蓝牙模块无线天线接收信号后对应P1.0的输出状态为高电平。这样使之Q3导通,Q3导通后C7两端瞬间发生突变,这个瞬时突变的脉冲实际相当于人体的杂波电,经D1后加至D10也加到图3的D10,这样这个脉冲电实际上就是加到图3的TH后再加到芯片ARD201上的5脚感应到这个脉冲时,触摸5脚的TOU1,对应5脚的OUT1的输出状态翻转一次。这样就实现了对灯“亮和不亮”的控制。
3 客户对产品的要求
触摸开关作为开关的一种,由于其价格低廉、触点强固、使用简便、高可靠、动作迅速等优点已经得到非常广泛的使用。但目前市场上的触摸开关大多缺乏自我调配的功能,也就是只能完成单一的功能,所以在很多场合无用武之地。为满足现代电子技术飞跃的发展开和使用,本课题着重开拓了市场没有的触摸开关与蓝牙开关同时控制开关的这一难题,同时为保留触摸开关蓝牙开关存在于市场的最大优势--价格低廉,电路简单而且好懂的给出一种电容感应式手机APP蓝牙开关结合的设计方法。该产品可在多种复杂场合都能通过调式,使得自身的开关动作更加可靠而迅速,同时具有驱动需求小、结构紧凑、新颖、耐环境性能高等特点。
摘要:着重介绍了Android平台手机利用无线蓝牙进行灯的开关控制和触摸开关进行灯的开关控制,描述了工作原理和发展前景,是无线蓝牙开关与触摸开关技术的完美的结合,更是无线与手机与触摸的一个很好的应用。叙述了Android平台手机中的APP设置、无线蓝牙芯片与触摸开关芯片之间的互相通信和电路分析,以及现在在市场上客户对产品的要求。
关键词:Android系统,无线蓝牙,触摸开关
参考文献
[1]彭佩烘.三种节能的电子触摸开关[J].无线电,2007,(12):18-19.
[2]李兵兵.电容式多点触摸技术的研究与实现[D].电子科技大学,2011.
[3]刘冰冰.基于零电压电子触摸延时开关的研究[J].企业科技与发展月刊,2013,3:22-24.
Android蓝牙 第5篇
2007年6月, 苹果公司在美国推出iphone, 由此拉开了智能手机的时代。随后, Google公司推出基于Linux平台的开源智能手机操作系统Android, 其市场份额很快直追iOS和RIM。除了智能手机, 平板电脑厂商也相继推出Android平台的产品。
Android从最初的1.0发展到现在的2.3, 以及专门面向平板电脑的3.0版本, 功能越来越丰富, 系统也越来越稳定。随着无线技术的广泛应用, 蓝牙技术在手机上应用也非常广泛, 如蓝牙耳机听音乐、打电话;手机间通过蓝牙传输文件或联系人;笔记本电脑通过蓝牙利用手机拨号上网。该文则重点介绍怎样在Android平台上实现将手机模拟成蓝牙键盘, 通过蓝牙连接支持蓝牙HID的电脑, 便可以通过手机操作电脑或向电脑输入数据。
2 蓝牙键盘的通信原理
2.1 协议栈
蓝牙键盘是基于蓝牙HID profile来实现。其协议栈如图1所示。
HCI:主机控制接口, 与蓝牙适配器间传递数据
L2CAP:逻辑链路层
HID:人机接口设备服务。
2.2 通信原理
HID设备 (如蓝牙键盘或鼠标等) 与HID主机 (如电脑) 间需要建立2个L2CAP通道:控制通道和中断通道。
控制通道:用于传输一些控制信息, 如断开虚拟缆线。
中断通道:传输HID设备的报告数据, 如按键等。
连接过程可以由HID主机或HID设备发起, 先建立控制通道, 然后中断通道。两个通道都建立好后, HID设备即可开始传输事件 (如键盘按键等) 。
3 蓝牙键盘模拟应用的功能场景
3.1 配对/解除配对
配对是两个蓝牙设备间建立信任关系的过程;
一般由HID host发起这个配对过程。
HID host搜索周边HID设备;
HID host发起配对
HID host端输入pin码验证
键盘端输入pin验证
如果host和键盘的pin码一致, 验证通过, 双方建立好信任关系 (生成linkkey) ;
解除配对的过程可以由host或者蓝牙键盘任何一方发起, 解除配对的一方会将自己保存的对方的linkkey删除, 信任关系解除。
3.2 可被发现模式
蓝牙键盘需要置为可被发现模式, 才能被没有配对蓝牙键盘的设备搜索发现;
3.3 连接/断开连接
由Host发起连接:Host发起连接请求, 键盘接受请求, 即可完成连接;
由蓝牙键盘发起连接:蓝牙键盘虽然无法搜索或显示周围的host, 但如果上次连接的Host的信任关系还保存着, 只要有按键操作, 键盘也会主动尝试连接最后一次连接的Host。
Host和键盘都可以发起断开连接操作。
3.4 键盘输入
键盘与Host建立好连接后, 在键盘按键输入就可以反映到Host端, 操作就同通过usb连接到电脑的键盘对电脑进行输入一样。
4 蓝牙键盘模拟应用的实现
4.1 Android平台蓝牙协议栈实现现状
在标准的Android平台2.0及其之后, 已提供了基于Bluez的开源蓝牙协议栈, 并实现了A2DP、HFP、OPP等服务。
Bluez支持主机连接HID设备, 但将手机模拟成键盘, 就需要实现手机作为HID设备, 不过不要紧, HID所依赖的L2CAP层协议都已经实现好了, 只需要基于L2CAP便可以实现HID层。
4.2 软件架构及功能模块
带星号标注的模块是实现此功能需要新增或改造的模块:深蓝色为新增功能, 天蓝色带星号模块为需要改造的模块。由于Android是基于Linux平台的, 其平台总体架构可分为:
Linux Kernel/Driver
Linux Native层 (用户空间)
Java Framework
Java application
其中在Native部分有Java虚拟机, Java应用都在虚拟机上运行。
实现此功能所牵涉到的模块:
Native层Bluez协议栈
Bluez是一个开源的Linux蓝牙协议栈, 其中既实现了底层HCI、L2CAP、Rfcomm等底层协议, 在Native也实现了a2dp、hfp、hsp、hid等服务。其中的hid服务实现在bluez的插件input.so中, 主要是支持Host去连接蓝牙HID设备, 如键盘、鼠标等。
这回我们实现的是HID设备端的角色, 需要在bluez中实现相应协议。
Bluez主要通过D-Bus接口向外提供接口 (D-Bus是一种轻量级的进程间通信技术) 。新增的HID设备端实现也需要对外提供相应的D-Bus接口。
Java Framework/JNI层HIDDeviceService服务
JNI是用于java和Native c之间相互调用的技术。
Service是Android中用于后台控制的服务。在该功能实现中我们需要增加一个HIDDeviceService通过JNI去调用Bluez提供的新增的HID设备角色的D-Bus接口。
Java应用层键盘模拟应用 (Keyboard simulation app)
提供用户操作的界面。通过该应用, 用户可以控制与主机的连接;连接状态可以通过界面进行键盘输入。
4.3 模块实现细节
4.3.1 Bluez
在Bluez中主要需要实现以下内容:
SDP记录注册
SDP, 全称Service Discover protocol, 用于宣称设备所支持的服务及搜索周边设备所支持的服务。将手机模拟成蓝牙键盘, 就需要将蓝牙键盘在手机上注册相应SDP记录, 使得主机可以识别手机为蓝牙键盘设备, 并了解键盘所支持的功能特性。
HID设备端通信协议实现
主要处理蓝牙键盘与Host的连接、键盘事件的封装和发送等;
对外D-Bus接口实现
提供给上层JNI调用的接口
4.3.1.1 Bluez中SDP记录注册
将手机模拟成蓝牙键盘, 需要注册一条服务记录, 包含蓝牙键盘所具备的特性。
HID设备相关的SDP属性如下:
HIDParserVersion:属性ID 0x0201, 16位无符号整型, 表示所使用的USB HID规范的版本
HIDDeviceSubclass:属性ID 0x0202, 8位整型数。子HID类, 如键盘、鼠标等
HIDCountryCode:属性ID 0x0203, 8位整型, 国家编号, 表示设备面向哪个国家。
HIDVirtualCable:属性ID 0x0204, 8位布尔型, 表示是否支持虚拟连接。
HIDReconnectInitiate:属性ID 0x0205, 8位布尔型, 表示当与主机的连接断开的时候, HID设备是否支持发起自动重连。
HIDDescriptorList:属性ID 0x0206, 数据序列, HID描述符。详细参考HID规范6.2节。这个属性非常重要, 主机能否识别该设备为蓝牙键盘主要靠这个属性的设置。
HIDLANGIDBaseList:属性ID 0x0207, 为支持多国语言提供关联字符串。
HIDProfileVersion:属性ID 0x020B, 16位无符号整型, 表示蓝牙HID协议版本。
HIDBootDevice:属性ID 0x020E, 8位布尔型, 表示是否支持
这些属性在Bluez的服务启动时应该注册到SDP数据库中, 便可以被主机识别。
4.3.1.2 HID设备角色的协议实现
HID设备角色的实现主要包括两方面:
连接管理
连接过程可以由HID主机发起, 也可以由HID设备发起 (连接最后一次连接过的HID主机) 。过程分别如下:
HID主机发起连接的情况
为了能接收来自HID主机发出的连接请求, 手机端作为HID设备, 需要监听主机来的连接请求, 对控制通道和中断通道进行监听, 如果有主机对这两个端口发起请求, 就接受其请求, 直到中断通道连接完毕, 连接过程成功。
HID设备发起连接的情况
手机端依次主动对最后一次连接过的HID主机的控制通道和中断通道发起连接, 中断通道连接成功, 则整个连接过程成功。
连接成功后, 手机即可开始向HID主机发送按键事件。
2) 按键事件发送到Host。4.3.1.3提供给应用层的DBus接口
命令接口:
管理连接
GetConnectionState () , 获取HID设备与主机的连接状态。
True:与某HID主机已连接上。
False:没有与任何HID主机连接。
Disconnect () , 断开与主机的连接。
SendKey (Keys[]) , 为应用层提供发送按键事件的接口。
如果在无任何连接的状态下接收到应用层的发送按键的请求, Bluez中会主动连接最后一次连接过的主机。
2) 事件接口:
ConnectionStateChanged
0:Disconnected
1:Connected
4.3.2 HIDDeviceService
通过JNI调用Bluez的HID设备的D-Bus接口。
提供给Java应用调用接口。
蓝牙键盘模拟应用通过AIDL接口与Service通信, 调用HIDDeviceService提供的接口。
主要接口:
getConnectionState () , 获取HID设备的连接状态。
disconnect () , 断开与HID主机的连接。
sendKeys (keys[]) , 发送按键;
广播事件:
HidDeviceStateChangedIntent
当与主机的连接状态发生变化时, Bluez会发出ConnectionStateChanged的事件HIDDeviceService监听到该事件后会发出HidDeviceStateChangedIntent广播。
Intent参数:
状态值:整型。
:没有任何连
1:连接上某主机
4.3.3 Keyboard模拟应用
键盘模拟程序主要提供用户操作的界面, 主要功能:
显示模拟键盘与HID主机的连接状态
绿色:以连接到某HID主机, 在连接状态按下Connected按钮, 可以断开与主机的连接;
灰色:没有与任何HID主机连接
显示Caps Lock的状态
绿色:Caps Lock状态;在非Caps Lock状态按下Caps键, 将进入该状态;
灰色:非Caps Lock状态;在Caps Lock状态按下Caps键, 将进入该状态;
提供各按键的操作按钮
4.3.4 其他
将手机置为可被其他设备搜索到的模式的功能已经在标准Android的BluetoothSetting中实现, 利用既有功能即可。
5 结束语
本文重点介绍了智能手机模拟蓝牙键盘的实现方法, 进而可以通过蓝牙键盘远程控制电脑。随着智能手机的推广, 人们对移动性的充分利用的需求将会越来越多, 可以进行近距离通信的蓝牙方式必将成为开发的热点。该文所实现的功能将为移动学习和办公带来极大地便利。
摘要:该文主要分析如何在现今非常红火的Android平台上, 利用Android现有架构实现智能手机模拟蓝牙键盘的功能。侧重点在于其原理及实现方案要点, 不深入探讨实现的代码细节。
关键词:智能手机,模拟,蓝牙键盘,Android平台
参考文献
[1]Bluetooth HUMAN INTERFACE DEVICE (HID) PROFILE V1.0, Bluetooth Special Interest Group (SIG) [Z].
Android蓝牙 第6篇
蓝牙技术是一种全球范围内被广泛采用的简单而又广泛的无线短距离通信技术, 不仅避免了用户在使用阶段需要安装驱动程序的麻烦, 同时具有开发成本低的优势[1]。在众多蓝牙技术优越性的推动下, 现在主流的日常设备都配备有蓝牙模块, 为蓝牙技术下一阶段的“无线连接, 简易生活”的设备集成组合概念带来了更多的发展可能[2]。因此, 蓝牙技术这个平台在今后的生产研究中将会有更多的创造可能性。
Android平台在Android 1.1发展到Android 4.4, 一直保持着开放性的特点, 允许开发者丰富完善系统和系统应用, 创造出更多的应用软件。同时, Android平台还具备丰富的硬件, 符合众多的硬件厂商要求, 更方便开发者进行软件开发研究。近几年, Android平台在市场中的份额一直呈现稳步攀升的状态, 基于Android平台的应用研究和应用领域的进一步拓展成为现今的主流。
MCS-51单片机具有实时控制能力强的特点, 其CPU可以对I/O端口直接进行操作。由于CPU、存储器及I/O接口集成在同一芯片内, 各部件间连接紧凑, 数据在传送时受干扰的影响较小, 且不易受环境条件的影响, 所以单片机的可靠性非常高。单片机还具有体积小、价格低、易于产品化的优势, 在家用电器应用领域前景十分广阔[3]。
综合上述分析, 基于蓝牙通信技术、单片机控制技术和Android应用编程技术构建灯具开关和色彩控制系统, 具备成本低、品质高的优点, 具有强大的市场竞争力和较大的实际应用价值。
2 灯具控制系统工作机制
2.1 系统方案
通过对蓝牙灯具的功能性需求分析和非功能性需求分析, 确定系统方案如图1所示。用户可以借助基于Windows系统的台式PC机和笔记本电脑, 或者基于Android系统的手机和平板电脑, 通过蓝牙功能与灯具中的单片机系统进行通信, 与灯具中的传感器共同实现对灯具的控制。
2.2 系统工作流程
系统的工作流程如图2所示。用户通过访问Windows客户端或Android客户端设置灯具控制需求。客户端软件根据用户需求生成灯具状态字。构建灯具状态字的目的是减少蓝牙发送的数据量, 提高发送速度, 同时使单片机能够快速识别用户需求。
3.2灯具控制硬件设计
3 灯具系统设计
3.1 系统组织结构
手机/平板 (Android) 客户端控制系统组织结构如图3所示。为减小Android客户端系统的大小, 降低软件复杂度, 提高软件运行速度, Android客户端系统的组织结构只包含硬件管理、灯具控制和辅助功能3个子模块。
系统单片采用STC89S52RC单片机。图4所示为单片机最小系统电路, 该电路中只具有晶振电路和复位电路。
目前, 系统采用1W全彩LED和3W全彩LED作为光源。LED采用6200芯片恒流驱动, 具备PWM调波控制功能。蓝牙通信基于HC-06系列蓝牙芯片实现。基于LED恒流控制电路、蓝牙控制电路和单片机最小系统电路, 设计系统硬件电路, 如图5所示。
全彩LED中, R、G、B三原色的PWM波分别由STC89S52RC的P0.0、P0.1、P0.2引脚控制。在KeilμVision4开发环境下, 开发了基于PWM的全彩LED调光调色程序。程序不仅支持按键调整亮度、R、G、B的PWM占空比, 同时支持根据串口读取的蓝牙模块接收的灯具控制状态字实时改变灯具状态。
4 系统实现
系统实现的主要功能包括开关控制、亮度调节和温馨、夜起、影院、正常4种常用模式控制以及红光、蓝光、绿光3种灯光组合控制功能。经过多次测试, 控制系统基本能够满足预期的性能指标, 稳定性高。通过实际测试, 基于蓝牙和Android平台的灯具控制系统具备以下特点。
4.1 实时控制能力强。
系统在硬件上使用单片机进行系统控制, 通过无线蓝牙技术高速传输数据, 依赖于单片机高速的位操作能力, 能够获得最快的实时控制能力。
4.2 稳定性高。
系统所涉及的无线蓝牙传输、Android平台、单片机结构都属于较为成熟而稳定的技术。同时由于Android平台的开放性使得连接控制极其顺畅, 控制过程稳定性高。
4.3 简易方便。
系统在连接上采用蓝牙连接, 省去了繁琐的线路, 实现了灯具控制的一定距离的遥控功能。在控制灯具上采用友好的UI界面, 具有开关、亮度调节、多种常用模式和各种各样组合效果的控制, 并且这一系列的操作都集合在我们日常生活的移动设备中, 使得操作控制简易方便。
Android客户端程序基于My Eclipse开发环境。图6所示为项目开发的Android客户端程序界面, 图7所示为Android收集客户端与灯具控制电路通信的实现效果图。
5 结语
基于蓝牙技术的Android平台的灯具控制系统可以根据用户需求对灯具开关、亮度、4种颜色组合灯光效果、灯光4种实用模式———温馨、夜起、影院、正常进行控制, 对于实现智能灯具控制, 为人们日常生活提供方便有一定的实用意义。在低成本、稳定性高、实时控制强的前提下, 该灯具控制系统基本满足了当下人们对灯具控制的需求, 其在产品化领域具备一定的关键优势, 同时也体现了蓝牙技术为人们服务的商业价值。随着Android平台嵌入式开发深入人心, 以及智能灯具不断普及发展, 该控制系统能够与生活中的各类灯具连接, 实现蓝牙数据传输, 从而进一步实时控制各式各样的灯具, 使人们的日常生活更加简便。
摘要:针对现有灯具控制手段存在的智能化程度低、控制不方便的问题, 基于蓝牙通信技术、单片机控制技术和Android平台编程技术, 设计并开发了基于蓝牙技术和Android平台的灯具控制系统, 实现了对灯具开关和灯光色彩效果的控制。
关键词:蓝牙,安卓,单片机,灯具,控制
参考文献
[1]金纯, 许光辰, 孙睿.蓝牙技术[M].北京:电子工业出版社, 2002.
[2]马建仓, 罗亚军, 赵雨亭.蓝牙核心技术及应用[M].北京:科学出版社, 2003.
Android蓝牙 第7篇
1 温度采集硬件系统设计
1.1 单片机最小系统模块
温度检测下位机由单片机进行控制。首先设计的是单片机的最小系统驱动。如图1所示。
1.2 DS18B20传感器模块
温度采集使用DS18B20温度传感器, 如图2所示。
1.3 HC-06蓝牙通信模块
HC-06蓝牙模块用来与安卓设备通信。蓝牙2.0通信协议, 目前大多的Android设备用的是蓝牙3.0, 向下兼容2.0协议, 采用HC-06是因为它的价格比较低廉, 而且温度的传输并不需要太高的速率, 所以选用这个蓝牙模块的性价比较高[6,7,8,9]。图3为HC-06蓝牙模块电路。
要使蓝牙电路正常工作, 必须先设置蓝牙的参数, 蓝牙模块通电后, 与电脑usb接口相连接, 通过电脑可以修改蓝牙模块的各种参数。图4为HC-06蓝牙模块工作状态流程图。
2 下位机电路系统设计与调试
总体的设计思路就是温度传感器测量周围的温度, 然后将电信号转变成为数字信号, 通过引脚传输到单片机内部进行处理, 编译出温度信息, 然后一方面经过74LS138即38译码器输出到2位LED上显示温度信息, 电路中的74LS573是锁存器, 它的主要作用是缓存温度信息, 在安卓设备不发出请求时, LED也会实时的显示当前的温度信息[10,11]。图5为HC-06下位机整体电路图。
3 Android应用程序设计及系统调试
在Eclipse下编写Android程序的插件是Android development tools, 称为ADT。插件提供许多和编写Android软件非常完备的开发环境。ADT可以协助快速创建Android系统下的应用项目。建立好需要设计的新项目之后, 在程序界面的左边会出现很多子目录。Src目录下是源代码文件, 在Android程序设计中是Java代码。Bin目录下是编译产生的文件, 在Androidmainfest.xml中是UI布局。文件里边是文本信息, 可以修改这些文本信息, 修改界面信息主要解决的问题是与蓝牙模块的通信协议。
4 结语
系统用于室内外温度的监控, 大型工业环境和大棚之类需要监控温度传输的距离较近的场所。可以把蓝牙模块换成Wi Fi模块, 它的传输距离更远, 传输速度更快, 也是目前几乎所有手机和平板上都有的功能。
参考文献
[1]李宁.Android开发权威指南[M].北京:人民邮电出版社, 2013.
[2]明日科技.Android从入门到精通[M].北京:清华大学出版社, 2012.
[3]胡文, 宁世勇, 李明俊, 金雪松.Android嵌入式系统程序开发[M].北京:机械工业出版社, 2013.
[4]沈红卫.基于单片机的智能系统设计与实现[M].北京:电子工业出版社, 2005.
[5]丁向荣.STC系列增强型8051单片机原理与应用[M].北京:电子工业出版社, 2011.
[6]李钢.1-Wire总线数字温度传感器DS18B20原理及应用.现代电子技术[J], 2005.
[7]林志琦.《基于Proteus的单片机可视化软硬化仿真》[M].北京航空航天大学出版社, 2006.
[8]李宏沐.关于继电器[J].中国高新技术企业, 2011年18期.
[9]赵静.嵌入式智能家居控制系统的研究与设计[D].武汉理工大学硕士论文, 2008.
[10]Min Sang Lyul.Software Technologies for Embedded and Ubiquitous Systems[M].IFIP International Federation for Information Processing.2011.22-31.
Android蓝牙
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


