欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    Android手机软件控制系统毕业设计.doc

    • 资源ID:2364012       资源大小:2.34MB        全文页数:45页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Android手机软件控制系统毕业设计.doc

    1. 前言12. Android相关技术介绍22.1Android简介22.1.1Android是什么22.1.2Android的发展历史22.2Android架构分析32.2.1 最底层-Linux Kernel层32.2.2 Android Runtime32.2.3Libraries42.2.4 Application Framework 应用框架42.2.5 Applications52.3Android应用的构成和工作机制53. Android开发环境的搭建63.1JDK的安装和JAVA环境变量的设置63.1.1 JDK下载地址63.1.2配置JAVA_HOME环境变量63.1.3配置PATH环境变量63.1.4配置CLASSPATH环境变量73.1.5验证JDK是否安装成功83.2安装Eclipse83.2.1 Eclipse下载地址83.3安装Android SDK93.3.1Android SDK下载地址93.3.2配置环境变量93.3.3导入SDK94. 应用程序结构分析104.1Android的API介绍104.1.1AndroidManifest.XML104.1.2活动104.1.3视图104.1.4意图104.1.5服务104.1.6通知114.1.7内容提供者114.2Android活动的生命周期114.2.1生命周期简介114.2.2 活动的生命状态114.2.3活动的运作流程125. 应用程序设计145.1设计目标145.2需求分析145.3详细设计145.3.1角色和责任145.3.2 BLE权限145.3.3检查BLE是否支持在设备上155.3.4设置BLE155.3.5发现BLE设备155.3.6连接到GATT服务端175.3.7读取BLE变量215.3.8接受GATT通知235.3.9关闭客户端APP236. CC2541与手机通信247.总结与体会298.谢辞309. 参考文献3110.附件1相关设计软件32附件2外文资料翻译33 1. 前言近年,物联网技术得到了飞速的发展,而物联网里一个非常重要的角色就是已然发展成熟的BLE技术,我们只需使用TI的软件和硬件资源,便可以轻松的搭建自己无限网络,通过这个网络,我们便可以实现和支持BLE的设备进行通讯,从而进行短距离通信。API版本为18的Android 4.3 为低功耗蓝牙的主要功能提供平台支持BLE功能的实现和API调用,Android上的软件可以用它来发现设备、查询服务和执行读写操作。BLE更显著的特点就是功耗特别的低,和传统的蓝牙比较起来,BLE的功耗要低50倍,甚至更多。由于BLE具有这样的优点,安卓APP就可以用它来与BLE设备进行交流,比如照明系统、传感器、以及心胀速率检测器。传统蓝牙蓝牙的传输速率不仅慢,而且传输距离只有短短的210米,Wife虽然传输速率相较传统蓝牙快了不少,传输距离也增强了,能达到50米左右,但许多场合下依然不能满足我们的需要。和传统蓝牙和WIFE比较之后我们发现,BLE有一个相当大的优势。新的4.0版本的蓝牙集合了蓝牙技术在三方面(即传统的蓝牙,高速蓝牙,蓝牙低功耗)的优点。它集成了蓝牙技术在无线连接方面的固有优势,并且加入了低速蓝牙,高速蓝牙的特性,不仅可以结合使用这三种规格,也可以单独使用。低功耗蓝牙-蓝牙4.0规范的核心,这一技术的最重要的特征是超低操作功耗和待机功耗,这样蓝低功耗牙设备可以大幅度节能,使用一个按钮电池可连续工作好几年了,对应用的成本和电力需求严格的无线方案都能很好的满足了,并遵循智能机器的发展将有一个更广泛的领域。如今,支持BLE的智能设备主要是iPhone(IOS系统)和Android,从4.3系统开始,Android将提供官方的API接口,在不久的将来,BLE将会出现在生活中的各个领域。总的来说,低功耗蓝牙技术具有以下优点:(1)高可靠性:无线通信,由于电磁波在传输过程中容易受到许多因素的干扰,例如,障碍物,天气条件,等。因此,无线数据传输通信系统具有固有的不可靠性。因此在制定蓝牙4.0的规范时我们就已经在考略怎样解决数据在传输的过程中存在的内在不确定性这样的缺陷,我们在协议中一些可靠性措施,比如:数据解码,差错矫正和检测,数据加噪等方法,采用这些方法可以极大的增强数据的可靠性。(2)低成本、低功耗:蓝牙4.0版本强化了蓝牙在数据传输上的低功耗性能,功耗较传统蓝牙降低了90%。(3)立即链接,高效启动:旧版蓝牙启动速度非常缓慢,链接上需要6 s的时间,而Android上的蓝牙只需要3秒即可完成链接,几乎立即连接(4)传输距离大大加大:传统蓝牙传输距离通常是5米左右,但是安卓4.3上的蓝牙的有效传输距离可以达到100米,传输距离增加10倍,大大扩大了蓝牙技术的应用前景。(5)高安全性:为保证数据传输的安全使用AES - 128 CCM加密算法加密数据包认证。2. Android相关技术介绍2.1Android简介2.1.1Android是什么安卓是一个完整的手机操作系统,包含Linux操作系统、中间元件以及一些常用的应用程序。Android还提供了一个SDK,这个SDK包含了必要的工具和API。Android和IOS系统一样,都是应用在移动端,比如手机和iPad上的操作系统,二者的主要区别在于Android是开放源代码的操作系统。2.1.2Android的发展历史安迪鲁宾(Andy Rubin)最早开发Android操作系统,谷歌公司非常看好Android系统以后的发现趋势,所以在2005年8月收购完成了收购。2007年11月,谷歌和硬件制造商、软件开发商和电信运营商形成了开放手机联盟,联合研究和改进安卓系统。后来谷歌以授权的方式发放开源许可证,并发布Android的源代码。第一个Android智能手机在2008年10月发布。2011年第四季度Android手机市场份额是52%,2011年Android智能手机出货量将超过4.5部。2008年,谷歌/ O会议上,谷歌发布安卓架构图,同年8月18号,Android通过了美国联邦通信委员会(FCC)的批准。谷歌在08年9月份发布的Android 1.0系统是最早的版本的Android系统。2009年4月,谷歌正式推出了Android 1.5电话,从Android 1.5版本的谷歌Android版本始于甜点,Android 1.5以蛋糕(蛋糕)命名。该系统功能与安卓1.0的系统相比已大大提高。 2009年9月,谷歌推出了了Android 1.6的官方版本,和携带Android 1.6正式版的手机HTC Hero(G3),由于出色的设计和新Android 1.6操作系统,HTC Hero(G3)成为了世界上最受欢迎的移动电话。Android 1.6还有一个有趣的甜点的名字,叫做甜甜圈(甜甜圈)。 2010年2月,Android正式和Linux主流开发断绝关系,主要原因是Android将Linux内核里面的状态树给移除掉了,并且,在当年的五月份,Google公司发布了Android2.0操作系统,并且将他改名为Froyo。 2010年10月份,在谷歌公司的历史上是非常辉煌的一年,应为在这一年,安卓应用的数量草果了10万个,Android操作系统正在以高度发展的姿态为世人所熟知。同样是在这一年,Android 2.3版本的操作系统被谷歌公司发布了,在第二年,谷歌公司宣布,在今年1月,ANdroid设备每天的激活量大约在30万部左右,到7月,这个数子再次被刷新了,达到了令人惊叹的每天55万部。安卓以全球用户总量超1.35亿,成为了占有量最高的操作系统。 2011年8月2日,谷歌公司已经在全球市场占有绝对的手机系统霸主地位,就连以前一直统治手机领域的塞班操作系统也只能望其项背,最终免不了被终结的命运,在这一年,市场上48%的手机的操作系统使用的安卓操作系统,在这一年的9月份,Android 4.0问世了,一直到今天,这个系统也同样有许多人在使用。 2.2Android架构分析 图2.2.1 从图2.2.1我们可以看出,Android架构主要分为5个部分。即Applications、Application Framework、Linux Kernel、Android RunTime2.2.1 最底层-Linux Kernel层 Linnux2.6为安卓系统提供最重要的系统服务,包括安内核全、内存管理、进程管理、网络堆栈、驱动模型等。Linux隐藏着具体的硬件细节而为上层应用和代码提供符务,去掉底层及以下层的差异,这样即使下面的框架发生了变化,也不会对我们开发应用残生很大的影响,其实Linux内核层就是一个抽象层,链接着硬件和软件,它在中间起着桥梁的作用。为了各经所能,我们将框架分为一层一层的,各层提供各层单独的服务,这样做的目的是为了让我们写出来的代码做到高内聚,低耦合。其实就是,做开发就专心做开发,不用关心底层到底是怎样实现的。2.2.2 Android Runtime Android包括一套核心库,它们提供了Java编程语言中的大多数库函数的核心。在她自己的进程中运行每一个Android的应用时,过程也属于一个Dalvik虚拟机实例。 使用Dalvik的目的是使设备有效地运行多个虚拟机。被执行的Dalvik虚拟机的可执行文件格式为.DEX格式,该格式被进行了优化,为最小的内存使用情况。虚拟机是基于寄存器,编译和运行Java编程语言类,这些类被转换为内置的DX工具。依靠Linux内核提供Dalvik虚拟机在函数的底部,如线程和低级别的存储器管理。 Android包括一套核心库提供大部分在Java编程语言用到的核心类库。在Dalvik虚拟机的每一个Android应用的程序实例,在自己的进程中运行。 Dalvik虚拟机设计的一个设备可以高效地运行多个虚拟机。 Dalvik虚拟机可执行文件格式。地塞米松,地塞米松格式是压缩格式,设计用于的Dalvik是适合于系统存储器和处理器速度有限。大多数虚拟机包括JVM的,是基于在栈上,在Dalvik虚拟机是基于寄存器。两种体系结构都具有各自的优点和缺点,在一般情况下,基于所述堆栈机需要更多的指令,并基于对机器指令的寄存器。 DX是一套工具,以Java类成。一个DEX文件往往有多个。类。由于DEX有时一定要优化,会增加文件大小的1-4倍,在结束ODEX。 Dalvik虚拟机依赖于Linux内核提供的基本功能,如线程和底层内存管理。2.2.3Libraries在android底层框架中,有这样一个框架,这个框架不是用JAVA语言写的,而是用C/C+语言写的一个库的集合,安卓中许多组件在创建对象时就是由这一层通过反射构建对象,由于有这样一个层额存在,给你安卓开发人员提供了很大的便利。期中的一些核心库主要是:(1)系统C库:面向Linux的嵌入式设备的一个BSD的标准C系统实现。(2)媒体库:这个库支持大量主流的视频和应聘的录制和播放,同样也支持大量的静态图片的管理,支持各种格式,如MP3,AAC,PNG,等等。(3)表面管理者:管理显示子系统,并且能够组合许多2D和3D图像的图像层。(4)LibWebCore:网页浏览器引擎,他不仅支持安卓的浏览器,哈支持WEB视图。(5)3Dlibrary:改库是使用硬件的3D加速或使用内资的高度优化的3D软件光涮。2.2.4 Application Framework 应用框架 安卓提供给用户一个开放的平台,这个平台提供了大量的极其丰富的应用开发能力,开发者借助本地的硬件资源优势,便能很好的访问本地信息,运行后台服务并设置警告,或者想菜单栏添加通知以及与开发者访问与核心应用嘻嘻相关的同一框架的API。我们能够简化应用组件的从用通过设计应用框架,使我们能够发布应用的功能,别的客户端,比如手机,平板上的应用就能够使用这些应用。相同的机制可以让用户替换这些组件,在我们的应用中有许多的后台服务和系统,比如可扩展视图对象Views,用它来建立我们需要的应用,例如:button,fragment,listview,imageview和一个嵌入式的Web浏览器。Context借助此对象我们可以访问系统底层资源(比如我们的蓝牙),还可以实现分享数据。Resourse:提供访问非代码资源的能力,如本地化字符串。Notificatoin:通知管理者,用它来接收和发送通知消息。Activity:管理应用的生命周期,显示View对象。2.2.5 Applications 安卓内部嵌入了一个应用程序集合,这个集合中包含了我们手机中常用的应用,如时钟,日历,谷歌地图.,这些应用都是使用JAVA代码编写的。在以后的时间里,还有跟多的优秀的应用等着我们去开发。通过前面的介绍,我们知道安卓的结构有一个非常清晰的分层,各层之间是分工的,目的明确,这样很好的的提高工作效率,为了方便,我们使用了如啊你按迭层架构,把它分为三层风别是:操作系统,中间件,和APP应用。由于安卓是开源的,有众多的开发者,每一个开发人员都会贡献出自己的一份力量。2.3Android应用的构成和工作机制我们知道安卓程序组要分为四大部分,分别是Activity,Service,Content Provider和Intend Receiver,但这也不是绝对的,一个应用程序不一定都要包含这四个部分,我们使用时,要根据具体情况而定,使用他们时,需要在清单配置文件AndroidManiFest.xml中进行配置,这个配置文件是每个程序都必须的,在程序启动时我们是需要加载这个文案的。Android应用的构成和工作流程如图2-3: 图2-3 3. Android开发环境的搭建3.1JDK的安装和JAVA环境变量的设置3.1.1 JDK下载地址JDK下载地址:http:/www.oracle.com/technetwork/java/javase/downloads/index.htmlJDK(Java Development Kit)是Java的核心部分,包括一系列Java开发所需要的工具和API,我们在装好JDK之后需要配置一下环境变量。3.1.2配置JAVA_HOME环境变量这是JDK的安装路径,这个环境变量需要我们自己在我的电脑里面创建,创建完之后可以使用我们的JDK路径作为应用路径,它的值为:JDK在我的电脑上的安装路径。如图3.1.2是我们正在为JAVA的JDK配置JAVA_HOME环境变量。 图3.1.23.1.3配置PATH环境变量PATH变量不需要创建,因为他已经在我们的电脑中存在,我们可以直接进行编辑。它的作用是用于引入配置文件的路径,使我们的命令可以更加的简单,他的值为:SDK目录下bin文件的目录。下图3.1.3是正在为JDK配置PATH环境变量。 图3.1.3 3.1.4配置CLASSPATH环境变量用于编译时JAVA类的路径,注意这里设置的是两个值,(.;)表示的是JVM先搜索当前目录。其值为:.;%JAVA_HOME%libtools.jar。如图3.1.4是正在配置CLASS_PATH环境变量。 图3.1.43.1.5验证JDK是否安装成功当我们配置完毕后,我们就可以通过CMD运行以下命令:java -version,JAVAC 如果出现下面的返回信息,则说明设置成功。如图3.1.5所示:3.2安装Eclipse3.2.1 Eclipse下载地址Eclipse下载地址:http:/www.eclipse.org/downloads/? (选择Eclipse Standard版本即可)。Eclipse为Java及Android开发的IDE。Eclipse不需要安装,把解压包解压后,剪切eclipse文件夹到你想安装的地方,打开时设置你的工作目录即可。3.3安装Android SDK3.3.1Android SDK下载地址Android SDK下载地址:http:/developer.android.com/sdk/index.html。Andorid SDK为Android管理开发包工具,提供了Android各级平台的开发包和工具。注意,因为我们是独立安装,不是一体化(集成系列工具)所以需要单独下载SDK。3.3.2配置环境变量用于编译时JAVA类的路径,注意这里设置的是两个值,(.;)表示的是JVM先搜索当前目录。其值为:.;%JAVA_HOME%libtools.jar。3.3.3导入SDK打开eclipse软件,在windows窗口下,选择android,将下载好的SDK路径导入。具体如图3.3.3: 图3.3.34. 应用程序结构分析4.1Android的API介绍API(Application Programming Interface,也就是我们常说的应用程序编程接口,是一些别人早句写好的类,换句话说,只要是调用的类都可以说是API,你调用的别人的类也可以说是调用了API,开发者在使用时就不用再去写实现这些类的代码了,可以直接使用,非常方便,大大节约了我们的时间和精力。4.1.1AndroidManifest.XML这是系统清单配置文件,在我们启动一个应用时需要先加载这个文件,在文件里注册者各个Activity的信息,以及声明的各种权限,这个文件是每个应用程序锁必须的,没有这个文件我们的应用时不能正常工作的。4.1.2活动Activity首先它是一个对象,与他有自己的生命周期。一个Activity是需要完成某些工作的代码块,这部分工作还可能包括对用户UI界面的显示。不过这不是必须的,有些活动从不显示UI界面。4.1.3视图View是用来显示到我们的手机屏幕上的。安卓的User界面是由一系列的View Tree构成的,然后接口出现在视图中以树的形式,程序员就可以通过构建一个新的视图来自定义我们自己的图像处理技术(比如开发应用,制作游戏等)4.1.4意图意图是一个用来传递消息的对象,我们用它来表示应用程序的想达成的“目的”,携带消息,比如我们想切换一个Activity我们就可以创建一个Intent对象,用它来传递给系统,告知我们的“意图”,系统就能定位到我们的Intent代码,并且运行它,这样我们就能切换到我们想要切换的那个界面了。通常我们还将意图用于广播系统的有效时件(不如通知事件)。4.1.5服务Service是一段代码,这段代码不同于其他的代码之处在于他是运行在后台的,他可以有他自己的进程,也可以运行在其他应用的进程之中,具体怎样,还得根据我们我们自己的业务需求而定。我们可以通过调用(RPC)来调用这个方法。比如视屏播放的服务,当我们启用后台操作时,我们希望这个应用依然可以继续运行,这个时候我们就需要使用服务来保证我们的程序在后台依然能够运行着。4.1.6通知通知通畅以小图标的形式出现在状态栏里,用户通过点击图标来接收传过来的消息。我们最常见的通知包括短信、通话记录和邮件,但是我们在写应用时也可以创建属于我们自己的通知事件。4.1.7内容提供者Context具有强大的资源访问能力,我们用它来对设备上的数据进行访问。我们见得最多的就是用它来访问我们的联系人列表。应用程序也可以使用其它程序通过内容提供者提供的数据,同时也可以定义自己的内容提供者来向其它应用提供数据访问服务。4.2Android活动的生命周期4.2.1生命周期简介Android平台是一个手机操作系统。不谈其他功能,就手机的特性而论,应该能够在未完成动作的时候,暂停一些正在使用功能,切换到接电话,接收短信模式,并返回到应用程序中调用,也希望能看到相同的内容。现在大多数用户使用智能手机,使用多路复用操作系统(windowsMobile),可以在同一时间听音乐,用手机来执行其他多个程序。同时执行多个程序有其明显的优势,但也有它的劣势。每实现一个应用程序,它将花费更多的系统内存,但手机内存是非常有限的。当执行程序太多的同时,我们没有正确的释放内存,或关闭没用的进程,系统运行时将会感到越来越慢,甚至不稳定。为了解决这个问题,安卓系统引入了一个新的机制,生命周期。Android应用程序的生命周期是由Android框架调用的,而不是直接由应用程序控制。通常情况下,每个应用程序(入口通常是一个活动onCreate方法),会占据一个线程。当系统内存不足时,将自动按照优先级恢复的过程。用户或开发人员,也无法确定当应用程序被回收。一个活动类别除了OnCreate方法,还预定义了onPause(暂停)和OnResume(继续)等的基本方法,当开关从一个活动到另一个活动,最初的活动将通过一系列的状态改变。开发人员可以添加一些地位相对应的程序流,每个活动状态改变时,将执行相应的过程。允许用户有很好的经验,活动需要在每个周期负责仓储和恢复状态,转移等。4.2.2 活动的生命状态Android的虚拟机是使用堆栈管理。主要有四种状态:(l)活动状态活动状态是指用户启动应用程序或活动后,活动运行中的状态。在Android平台上,同一个时刻只会有一个活动处于活动或运行状态。其他的活动都处于未启动、停止或是暂停的状态。(2)暂停状态暂停状态是指当活动暂时暗下来,退到背景画面的状态。当警告对话框或电话来了时,都会让原来运行的活动退到背景画面。新出现的警告对话框等界面元件盖住了原来的活动画面。活动处在暂停状态时,用户无法与原活动互动。(3)停止状态停止状态是指有其他活动正在执行,而这个活动己经离开屏幕,不再动作的状态。通过按返回键,可以调出所有处于停止状态的应用程序列表。处于停止状态的活动,还可以通过通知来唤醒。(4)已回收或未启动状态已回收或未启动状态是指活动尚未被启动、已经被手动终止或己经被系统回收的状态。要手动终止活动,可以在程序中调用finish方法。如果是被系统回收,可能是因为内存不足了,所以系统根据内存不足时的回收规则,将处于停止状态的活动所占用的内存回收。 图4.2.1 activity的生命周期4.2.3活动的运作流程由实际运行来看,我们可以归纳出所有Android应用程序都遵循的运作流程:(l)一般启动启动一个活动的基本流程为onCreat一>onstart一>onResume。该流程首先分配资源给这个活动(创建状态),然后将活动的内容显示到屏幕上(启动状态);在一切就绪后,取得屏幕的控制权(恢复状态),用户可以开始使用这个程序。(2)调用另一个活动 调用另一个活动的基本流程为onpause(l)一>onCreate(2)一>onstart(2)一>0nResume(2)一>onStop(l)。该流程首先冻结原来的活动,再交出屏幕控制权;直到活动2完成一般启动流程后,活动1才会被停止。(3)回到原来活动回到原来活动的基本流程为onPause(2)一>onRestart(1)一>onstart(l)一>onResume(1)一>onstop(2)一>onDestroy(2)。另外按返回键也可以回到原来的活动。(4)退出结束退出结束的基本流程为onPause一>onStop一>onDestroy。如果程序中有直接调用finish方法来关闭活动的话,系统会跳过先冻结的阶段,直接暂停,停止,然后销毁。(5)回收后再启动回收后再启动的基本流程为oncreate一>onstart一>onresume。如果被回收掉的活动一旦又重新被调用时,会像一般启动一样再次调用活动的onCreate方法。当在模拟器上已经执行过多个应用程序,只要按下返回键,就会开启最近一次开启过的活动。所以如果要让再次被创建的活动跟原来开启过的一样,那么在活动之间切换时,就要保存资料:即在每次活动运行到暂停或停止状态时先保存资料,然后在创建时将资料读出来。5. 应用程序设计5.1设计目标(1) 了解Android应用程序的设计和开发过程;(2) 在Android平台上设计BLE软件,和CC2541低功耗蓝牙模块实现通信。(3) 本软件是基于Eclipse的开发环境,在Android平台上实现的。5.2需求分析本软件是在Android平台上完成的,主要是和CC2541建立通信。设计一个应用软件,能够开启蓝牙功能,便于和蓝牙模块通信。了解清楚蓝牙模块的技术指标和各种参数,将数据发送到我们的手机软件上。5.3详细设计5.3.1角色和责任中央设备:扫描并且寻找广播。外围设备:负责发出广播GATT 服务端 VS GATT 客户端:决定了两个设备在建立连接后如何互相交流。为了方便理解,想象一下你有一个Android手机和BLE事件跟踪设备,手机作为中央设备,支持外围活动追踪(为了建立一个适合于连接两件事你需要注意,双方只支持外部设备或只支持中央设备双方不能相互通信)。当手机和运动跟踪建立连接后,和他们开始向对方发送Gatt数据。哪一方作为服务器取决于物种他们传输数据的种类。例如,如果运动追踪移动传感器数据报告,运动跟踪服务器。如果运动追踪器更新手机的数据,手机为一个服务器。在文档中,android应用程序在GATT协定android设备端(运行)。应用程序从GATT协议服务端获得数据。5.3.2 BLE权限我们都知道如果一个应用想要使用蓝牙功能就必须要声明蓝牙权限,否则是不能够执行蓝牙通信的,要有了这个权限我们才能够对蓝牙进行请求链接,接受链接,和数据传输等功能。在这里,还有一点就是如果你要启动设备或陈总蓝牙设置,必须要声明Blutooth_ADMIN权限。在你的app manifest文件中声明蓝牙权限。1<uses-permission android:name="android.permission.BLUETOOTH"/>2<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>如果想声明你的app只为具有BLE的设备提供,在manifest文件中包括:<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>5.3.3检查BLE是否支持在设备上if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE) Toast.makeText(this,R.string.ble_not_supported,Toast.LENGTH_SHORT).show();finish(); 5.3.4设置BLE1获取 BluetoothAdapter说有的蓝牙活动都需要Adapter进行数据的封装,本次设计在系统中只使用了一个蓝牙Adapter,用来与手机上的软件进行交互。在下面的代码中解释了怎样设置蓝牙适配器。主要是使用getSystem()方法获得BlutoothManger,然后将其用于获取是噢诶其的一个实例。2引入BluetoothManager。3 初始化蓝牙适配器final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);mBluetoothAdapter = bluetoothManager.getAdapter();4开启蓝牙 接下来,你需要确认蓝牙是否开启。调用isEnabled()去检测蓝牙当前是否开启。如果该方法返回false,蓝牙被禁用。下面的代码检查蓝牙是否开启,如果没有开启,将显示错误提示用户去设置开启蓝牙。确保蓝牙在设备上可以开启if (mBluetoothAdapter = null | !mBluetoothAdapter.isEnabled() Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);5.3.5发现BLE设备为了发现BLE设备,使用startLeScan()方法。这个方法需要一个参数BluetoothAdapter.LeScanCallback。你必须实现它的回调函数,那就是返回的扫描结果。因为扫描非常消耗电量,你应当遵守以下准则:只要找到所需的设备,停止扫描。不要在循环里扫描,并且对扫描设置时间限制。以前可用的设备可能已经移出范围,继续扫描消耗电池电量。下面代码显示了如何开始和停止一个扫描:public class DeviceScanActivity extends ListActivity private BluetoothAdapter mBluetoothAdapter; private boolean mScanning; private Handler mHandler; 10秒后停止寻找. private static final long SCAN_PERIOD = 10000; . private void scanLeDevice(final boolean enable) if (enable) 经过预定扫描期后停止扫描 mHandler.postDelayed(new Runnable() Override public void run() mScanning = false; mBluetoothAdapter.stopLeScan(mLeScanCallback); , SCAN_PERIOD); mScanning = true; mBluetoothAdapter.startLeScan(mLeScanCallback); else mScanning = false; mBluetoothAdapter.stopLeScan(mLeScanCallback); 如果你只想扫描指定类型的外围设备,可以改为调用startLeScan(UUID, BluetoothAdapter.LeScanCallback),需要提供你的app支持的GATT services的UUID对象数组。作为BLE扫描结果的接口,下面是BluetoothAdapter.LeScanCallback的实现。private LeDeviceListAdapter mLeDeviceListAdapter;Device scan callback.private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() Override public void onLeScan(final BluetoothDevice device, int rssi, byte scanRecord) runOnUiThread(new Runnable() Override public void run() mLeDeviceListAdapter.addDevice(device); mLeDeviceListAdapter.notifyDataSetChanged(); );注意:只能扫描BLE设备或者扫描传统蓝牙设备,不能同时扫描BLE和传统蓝牙设备。5.3.6连接到GATT服务端与一个BLE设备交互的第一步就是连接它更具体的,连接到BLE设备上的GATT服务端。为了连接到BLE设备上的GATT服务端,需要使用connectGatt( )方法。这个方法需要三个参数:一个Context对象,自动连接(boolean值,表示只要BLE设备可用是否自动连接到它),和BluetoothGattCallback调用。mBluetoothGatt = device.connectGatt(this, false, mGattCallback);连接到GATT服务端时,由BLE设备做主机,并返回一个BluetoothGatt实例,然后你可以使用这个实例来进行GATT客户端操作。请求方(Android app)是GATT客户端。BluetoothGattCallback用于传递结果给用户,例如连接状态,以及任何进一步GATT客户端操作。在这个例子中,这个BLE APP提供了一个activity(DeviceControlActivity)来连接,显示数据,显示该设备支持的GATT services和characteristics。根据用户的输入,这个activity与BluetoothLeService通信,

    注意事项

    本文(Android手机软件控制系统毕业设计.doc)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开