毕业设计(论文)-基于Si4432的追踪定位系统_CQD_SI4432.doc_第1页
毕业设计(论文)-基于Si4432的追踪定位系统_CQD_SI4432.doc_第2页
毕业设计(论文)-基于Si4432的追踪定位系统_CQD_SI4432.doc_第3页
毕业设计(论文)-基于Si4432的追踪定位系统_CQD_SI4432.doc_第4页
毕业设计(论文)-基于Si4432的追踪定位系统_CQD_SI4432.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本本 科科 生生 毕毕 业业 论论 文(设计)文(设计) 题 目: 基于基于 Si4432 的追踪定位系统的追踪定位系统 CQD_SI4432 _ 专 业: 计算机网络 考生姓名: 准考证号: 030711200635 指导教师: (职 称) 二一四年 十月 - i -i 学术诚信声明学术诚信声明 本人所呈交的毕业论文,是在导师的指导下,独立进行研究工作所 取得的成果,所有数据、图片资料均真实可靠。除文中已经注明引用的 内容外,本论文不包含任何其他人或集体已经发表或撰写过的作品或成 果。对本论文的研究作出重要贡献的个人和集体,均已在文中以明确的 方式标明。本毕业论文的知识产权归属于培养单位。本人完全意识到本 声明的法律结果由本人承担。 本人签名: 日期:2014-10-14 - ii -ii 摘摘 要要 CQD_SI4432 追踪定位系统,通过蓝牙连接带 GPS 的 Android 智能机,并使用配套的 APP,即可实现在成员间免费收发短信,也可以进行短距离内即时通讯,具备短信自动重发 及提醒功能。具备紧急情况聊天这个报警功能。具备人与群组短信这个广播功能。可在离 线地图上共享详细位置信息,方便管理队员。 基于个人能力和投入等诸多方面的原因,CQD_SI4432 还处于试用阶段。现阶段,我主 要是在户外运动的时候,通过配合对讲机的试用,来测试 CQD_SI4432 的实用性,以及对 RF 模块进行选型。现阶段的目标用户集中在背包客、爬山爱好者、远足爱好者等户外运动人 群,今后会将 CQD_SI4432 投入到的更多专业领域一显身手。 关键词:关键词:GPS;android;APP;短信 - iii -iii Abstract CQD_SI4432 tracking and positioning system, connected Android Mobile Phone by BT. If you use the APP, you can receive the SMS of the group for free! You can also receive IM message at a short distance. If you send the message failure, the APP have automatic retransmission and reminding function. If you have a emergency, you can start chat function. You can send message to everyone of the group by the broadcast function. You can share your location at the offline map, So I can manage my group easily! Because of my ability and the money an so on, CQD_SI4432 is still at the trial stage! Now, I use it at outdoor sports. With the walkie talkie, I test it for its usage! If the RF module cant reach my requirement, I will change another one! But more expensive! Now, our target user focused on Backpackers, mountain climbing enthusiasts, hiking enthusiasts, all is outdoor sports people! I will use CQD_SI4432 at more professional field at the future! Keywords: GPS; android; APP; SMS - iv -iv 目目 录录 第一章第一章 前言前言.1 第二章第二章 项目概述项目概述.3 2.1 GPS 对讲机.3 2.2 APRS 方案.5 2.3 GOTENNA方式(CQD_SI4432).7 第三章第三章 MCU 部分部分.9 3.1 MCU.9 3.1.1 单片机发展概述.9 3.1.2 STC89C52.11 3.1.3 备选的单片机.12 3.2 RF 部分.12 3.2.1 无线数传模块的选型.12 3.2.2 SI4432.13 3.3 蓝牙串口.13 3.3.1 蓝牙的版本.13 3.3.2 HC-02 蓝牙串口通信模块.13 第四章第四章 ANDROID 部分(智能机)部分(智能机).14 4.1 ANDROID.14 4.2 ANDROID手机通过 BT 连接蓝牙串口模块.14 4.2.1 Android 手机通过 BT 连接蓝牙的实现过程.14 4.2.2 Android 手机通过 BT 连接蓝牙的代码.14 4.3 ANDROID手机获取本机的 GPS 坐标 .19 4.3.1 在 Andorid 手机上打开 GPS 的过程.20 4.3.2 在 Andorid 手机上打开 GPS 的代码.20 4.4 ANDROID手机绘制相对位置图.23 4.4.1 绘图的原理.23 4.4.2 绘图的示例代码.23 4.5 联调.24 4.5.1 联调步骤.24 4.5.2 排错方法.24 第五章第五章 结结 论论.26 参考文献参考文献.27 - v -v 致谢致谢.29 - 1 - 第一章第一章前言前言 在带队行山的时候,特别是走稍微有点难度的山的时候,10 多个队员,肯定存 在队员之间因为体能等等的原因,肯定会有前后队,这样我就需要知道队员到底在 哪里了!在加上驴友大都是临时召集的松散性组织,知道队员的位置(GPS 坐标) , 会给管理队伍带来很大的方便。再就是登山的很多地方都没有手机信号,必须要考 虑没有手机信号的时候设备也必须能够正常使用。当然户外的这些装备也可以用于 急救中。不过我的出发点确实从户外用途开始的,下文同。 最早知道的是 GPS 对讲机,当时高明的小犀牛对讲机 GPS,单只售价 5000¥左 右,必须配对使用(至少装备 2 只) ,基本上不可能在户外的队伍装备了。现在最新 的型号是 Rino650(大犀牛) ,淘宝上的售价也还接近 4000¥。 后来在高交会上也看到了 GPS 对讲机。使用的方案是 MTK 的山寨机(功能机) 方案,内置 GPS 模块和 409M 的免执照对讲机(发射功率小于 0.5W) 。由于那家公司 针对的是企业级市场,组网必须插 SIM 卡,后来他们的销售告诉我说 GPS 坐标是通 过 GPRS 传送的,需要付月租费。这种成熟的方案就不用考虑了。 之后看到的就是 APRS 方案了。手机直连对讲机,美军今年已经从供应商 General Dynamics 那里下了 2000 多套的订单,就是这么个东西。着眼点主要在于 利用智能机强大的 GPS,通讯和输入输出界面同时完成所有可能的功能,使用的是 APRS AX.25 协议。这种方案在网上见到有人在研究,看他上图是有点进度了。实用 性到底如何就不得而知了。 最后在订阅邮件中看到了 GoTenna。在自然灾害发生或者没有信号覆盖的特殊 地区,总是会遇到通信中断的问题。若是想与团队成员保持联系只能借助对讲机或 者笨重昂贵的卫星通信设备。应对这种不便,名为 GoTenna 初创企业在两年的研发 - 2 - 后推出了一款借助蓝牙 LE 与智能手机连接的便携式天线设备 GoTenna。非常适合户 外活动的团队活动以及应对自然灾害的紧急通信设备。可以通过其配套应用与配对 的成员进行短距离通信。目前该设备已经送交 FCC,等待批准认证。goTenna 依靠 USB 充电,共有四种配色可选,将在今年秋季正式发售,目前预购还可以享受五折 优惠。goTenna 原价为一对 299 美元,目前价格为 149 美元,你可以考虑买一只 与朋友分享。这个售价还是不适合装备队伍,每人一只。但是我知道我就是要做一 款类似的东西了。 最后提一下卫星电话,电话机手机 3000¥以上,打中国大陆的电路每分钟大都 在 1 美元左右。市面上也没有见到可以管理队伍的卫星电话,卫星电话看来只是都 是在特殊用途的时候使用了。比如在走比较危险的山的时候,穿越无人区等等情况 下,带着做最后应急的手段。平常行山,大部分时间都会有手机信号。集合等等非 行山的时候的通讯联络还是手机最靠谱了,行山的时候,出于方便,对讲机最合适 了。按键就说话,不用拨号,没有电话费。 另,提到智能手机,本文暂时只考虑 Android。因为中国人的消费水平,苹果 手机不太适合批量装备,虽然越来越多的中国人购置了苹果手机,将来会考虑 iOS 系统。Windows Phone 的市场占有率只有个位数了,完全可以忽略它的存在了。虽 然 Nokia 的手机很优秀了!其它操作系统的手机,比如黑莓,就更加不会考虑它的 存在了。 - 3 - 第二章第二章项目概述项目概述 2.1GPS 对讲机对讲机 图 2-1 RINO650 寻找伙伴,即时通讯 如图 2-1,Rino650 其独特的位置报告功能可以将您的精确位置发送给组中 的其他伙伴,使每个人都能在地图页面上看到您的位置。它可以与周围的设备 进行无线对传航点、航线和航迹等资料,支持 ANT+、FRS 和 GMRS 多种传输方式。 除此以外,还可以与周围其它传统的 FRS/GMRS 无线对讲机通信。高超的通话品 质,最远通讯距离可达 32 公里(实际通话距离会因使用环境而有差异,使用 - 4 - GMRS 最远 30 公里,FRS 最远 3 公里) ,具有多种功率等级,支持最大 5W 对讲功 率,配合可充电式锂电池保障通讯,可支持耳机及麦克风通话,还可以互传文 本消息给伙伴。 优点:Garmin 是国际大厂,品质保证。给每个队员配发一个,当然是最好 的选择了。官方网站号称的传输距离远。 (由于售价高昂,无法拿到真机实际验 证。 ) 缺点:售价高昂,以 10 个人的队伍计算,每个人配发一个,4000¥一只, 4 万元就没了。根据中国的无线电相关规定,5W 的对讲机和数传需要申领相关 的业余无线电执照。在中国,绝大多数人事没有这个执照的。对讲机和数传部 分共用主电源,电池需要准备足。 - 5 - 2.2APRS 方案方案 图 2-2 手机连接对讲机 - 6 - 图 2-3 使用 APRSDroid 的 AFSK 模式从手台收发 APRS 信息 - 7 - 图 2-2 为手机和对讲机通过音频接口相连。图 2-3 为工兵 pro 通过 Kenwood APRS 台和 BG4HSI 通联的场景,使用 APRSDroid 的 AFSK 模式从手台收发 APRS 信息。 优点:由于没有亲眼见过,无法评价。 缺点:手机和对讲机通过线缆有线连接两者的耳机孔,长期拖拽可能引起耳机 孔接触不良。没有大规模普及,某些方面也可以说这种模式可能存在问题。智能机 解码音频数据需要消耗它不够充裕的电量。 2.3goTenna 方式(方式(CQD_SI4432) 图 2-4 CQD_SI4432 的示意图 - 8 - 图 2-4 显示了 CQD_SI4432 的工作示意图。机器本应该是双工的,也就是 2 边既 能够收,也能够发的。为了画图的时候简化,规定了左边的是发信机,右边的是收 信机。 发信流程:运行于 android 智能机上的 APP,获取本机的 GPS 坐标之后,通过 BT 发送给蓝牙窗口模块,和智能机配对的蓝牙串口模块,接收到 GPS 坐标之后,通 过串口发送给 MCU,MCU 通过 SPI 接口将按照约定格式编码的数据通过 RF 模块 (SI4432)发送出来。 为了省电,APP 获取 GPS 坐标的频率大概是每分钟一次,最长一般不应该高于 5 分钟,除非有特殊需要,最短应该大于 10 秒。RF 模块发射的时候所消耗的功率是 接受的时候数倍,所以在满足要求的情况下,发射间隔应尽可能延长,以节省 CQD_SI4432 的电量。 收信流程:RF 模块收到数据之后,告诉 MCU 来读取数据。MCU 按照格式解码出 有效数据之后,通过 UART 接口通过蓝牙串口传输给配对的 android 智能机。APP 经 过演算相对位置,即可在屏幕上标示出来。也就是发信过程的逆过程。 - 9 - 第三章第三章MCU 部分部分 3.1MCU MCU(Micro Control Unit)中文名称为微控制单元,又称单片微型计算机 (Single Chip Microcomputer)或者单片机,是指随着大规模集成电路的出现及其发 展,将计算机的 CPU、RAM、ROM、定时计数器和多种 I/O 接口集成在一片芯片上, 形成芯片级的计算机,为不同的应用场合做不同组合控制。 3.1.1 单片机发展概述单片机发展概述 单片机出现的历史并不长,但发展十分迅猛。 它的产生与发展和微处理器的产 生与发展大体同步,自 1971 年美国 Intel 公司首先推出 4 位微处理器以来,它的发 展到目前为止大致可分为 5 个阶段。下面以 Intel 公司的单片机发展为代表加以介 绍。 第 1 阶段(19711976): 单片机发展的初级阶段。 1971 年 11 月 Intel 公 司首先设计出集成度为 2000 只晶体管/片的 4 位微处理器 Intel 4004, 并配有 RAM、 ROM 和移位寄存器, 构成了第一台 MCS4 微处理器, 而后又推出了 8 位微 处理器 Intel 8008, 以及其它各公司相继推出的 8 位微处理器。 第 2 阶段(19761980):低性能单片机阶段。 以 1976 年 Intel 公司推出的 MCS48 系列为代表, 采用将 8 位 CPU、 8 位并行 I/O 接口、8 位定时/计数器、 RAM 和 ROM 等集成于一块半导体芯片上的单片结构, 虽然其寻址范围有限(不大于 4 KB) , 也没有串行 I/O, RAM、 ROM 容量小, 中断系统也较简单, 但功能可满 足一般工业控制和智能化仪器、仪表等的需要。 第 3 阶段(19801983):高性能单片机阶段。 这一阶段推出的高性能 8 位单 片机普遍带有串行口, 有多级中断处理系统, 多个 16 位定时器/计数器。片内 RAM、 ROM 的容量加大,且寻址范围可达 64 KB,个别片内还带有 A/D 转换接口。 第 4 阶段(198380 年代末): 16 位单片机阶段。 1983 年 Intel 公司又推 - 10 - 出了高性能的 16 位单片机 MCS96 系列, 由于其采用了最新的制造工艺, 使芯片 集成度高达 12 万只晶体管/片。 第 5 阶段(1990 年代):单片机在集成度、功能、速度、可靠性、应用领域等 全方位向更高水平发展。 按照单片机的特点,单片机的应用分为单机应用与多机应用。在一个应用系统 中,只使用一片单片机称为单机应用。单片机的单机应用的范围包括: (1) 测控系统。 用单片机可以构成各种不太复杂的工业控制系统、自适应控制 系统、数据采集系统等, 达到测量与控制的目的。 (2) 智能仪表。 用单片机改造原有的测量、控制仪表, 促进仪表向数字化、 智能化、多功能化、综合化、柔性化方向发展。 (3) 机电一体化产品。单片机与传统的机械产品相结合, 使传统机械产品结构 简化, 控制智能化。 (4) 智能接口。 在计算机控制系统, 特别是在较大型的工业测、控系统中, 用单片机进行接口的控制与管理, 加之单片机与主机的并行工作, 大大提高了系 统的运行速度。 (5) 智能民用产品。 如在家用电器、玩具、游戏机、声像设备、电子秤、收银 机、办公设备、厨房设备等许多产品中, 单片机控制器的引入, 不仅使产品的功 能大大增强, 性能得到提高, 而且获得了良好的使用效果。 单片机的多机应用系统可分为功能集散系统、并行多机处理及局部网络系统。 (1) 功能集散系统。 多功能集散系统是为了满足工程系统多种外围功能的要求 而设置的多机系统。 (2) 并行多机控制系统。 并行多机控制系统主要解决工程应用系统的快速性问 题, 以便构成大型实时工程应用系统。 (3) 局部网络系统。 - 11 - 单片机按应用范围又可分成通用型和专用型。专用型是针对某种特定产品而设 计的,例如用于体温计的单片机、用于洗衣机的单片机等等。在通用型的单片机中, 又可按字长分为 4 位、8 位、16/32 位,虽然计算机的微处理器在几乎是 32/64 位的 天下,8 位、16 位的微处理器已趋于萎缩,但单片机情况却不同,8 位单片机成本 低,价格廉,便于开发,其性能能满足大部分的需要,只有在航天、汽车、机器人 等高技术领域,需要高速处理大量数据时,才需要选用 16/32 位,而在一般工业领 域,8 位通用型单片机,仍然是目前应用最广的单片机。 到目前为止,中国的单片机应用和嵌入式系统开发走过了二十余年的历程,随 着嵌入式系统逐渐深入社会生活各个方面,单片机课程的教学也有从传统的 8 位处 理器平台向 32 位高级 RISC 处理器平台转变的趋势,但 8 位机依然难以被取代。国 民经济建设、军事及家用电器等各个领域,尤其是手机、汽车自动导航设备、PDA、 智能玩具、智能家电、医疗设备等行业都是国内目前急需单片机人才的行业。行业 高端目前有超过 10 余万名从事单片机开发应用的工程师,但面对嵌入式系统工业化 的潮流和我国大力推动建设“嵌入式软件工厂”的机遇,我国的嵌入式产品要溶入 国际市场,形成产业,则必将急需大批单片机应用型人才,这为高职类学生从事这 类高技术行业提供了巨大机会。1 3.1.2 STC89C52 现在 STC 已经成长为 8051 单片机全球第一品牌,全球最大的 8051 单片机设计 公司。全部中国大陆本土独立自主知识产权,品质保证,TSMC 上海制造。因为其它 家已经不做 8051 了,或者其它家的单片机需要单独的烧录器,不方便调试。STC 的 单片机通过串口即可烧录,价格也很平易近人,太方便使用了。更加重要的是, STC89C52 与以前常用的 AT89C52 直接兼容的。2 优点:以前大学里基本上都会用 8051 单片机作为入门可能,掌握者众多。 缺点:功耗大,可以达到接近 100mW。不大适合电池供电的系统,尤其不适合 需要长时间连续工作的系统。 - 12 - 3.1.3 备选的单片机备选的单片机 限于时间的关系,DEMO 版选用自己熟悉的 8051 系列的兼容单片机,今后可以 考虑 ARM 的 M0 系列的单片机,比如 SiLabs 的小壁虎系列。功耗小于 10mW。3 3.2RF 部分部分 由于户外肯定存在手机没信号或者信号很微弱的情况,因此不能使用手机网络。 将来可以用作备份,直接在 android 手机端实现即可。因此 RF 部分只能使用无线数 传模块。为了节省时间和成本,直接选用模块了。自己打板,时间和成本绝对高于 买模块,第一版肯定不如量产的模块的性能好!这里先选择 SI4432 来测试性能了。 3.2.1 无线数传模块的选型无线数传模块的选型 电磁波通过障碍是根据衍射原理。就是说障碍物小于波长时,电磁波容易通过。 频率高得电磁波方向性好,波长小,不容易通过障碍。传播距离小。一般定向传播 用。低频得电磁波波长大,容易通过山啊,建筑物啊,所以传播距离远。4 常用的合法无线数传的频点有 2.4GHz、915MHz、868MHz、433MHz。 2.4GHz:这个频点过于拥挤,Wifi/BT、Zigbee、2.4G 私有协议等各种应用拥 塞在这个频点,搞得现在 Wifi 都要使用 5GHz 这个频点了!小功率极其有可能被无 线路由器之类的干扰,非法家大功率很容易被无线电管理委员会的人查到!因为大 家都在用这个,你太容易干扰别人了。再加上 2.4GHz 波长太短,仅有 0.0125 米, 即 1.25 厘米,只适合视距传播,不适合户外远距离使用了! 915MHz、868MHz:专用于无线通信的频点。但是波长还是太短,915MHz 的波长 只有不到 0.33 米。一块稍微大点的石头,或者一颗小树即可挡住它了,不合适。 433MHz:波长大约为 0.7 米,虽然还是有点短。但是每家无线数传芯片公司都 有产品都覆盖这个频点,模块、天线易买,适合于 CQD_SI4432 的 DEMO 测试。 甚高频(VHF):中国业余无线电可以使用 144-148MHz(业余无线电一级执照) ,将 来可以在这个频点测试。现阶段找到的适合这个频点的芯片的有 SEMTECH 的 SX1278 和 SiLabs 的 Si4463。经过 SEMTECH 的工程师理论计算,SX1278 在 150MHz 下和 433MHz 下的传送距离差不多远,将来可以进行实地测试。实际的传送距离跟天线、 - 13 - 模块布线有很大的关系的! 高频(HF):中国业余无线电可以使用 28000kHz29700kHz,波段 10 米,绕 射容易,天线长度需要特别考量。由于这个频点属于共用频率,渔台也是用本频率, 可能会造成干扰!以前 Motorola 出过相关芯片,停产已经超过 10 年了。 3.2.2 SI4432 Si4432 是 Silabs 出品的工作于低于 1GHz 频段的无线数传芯片。Si4432 是一款 低于 1GHz 高性能射频收发器。其主要针对工业、科研和医疗(ISM)以及短距离无线 通信设备(SRD)。SI4432 输出功率可达+20dBm,接收灵敏度达到-121dBm,可提供对 数据包处理、数据缓冲 FIFO、接收信号强度指示(RSSI)、空闲信道评估(CCA)、唤 醒定时器、低电压检测、温度传感器、8 位 AD 转换器和通用输入/输出口等功能的 硬件支持。覆盖频率范围:240.0MHz930.0MHz 工作频段。发射功率: 100mW(20dbm) 。 3.3蓝牙串口蓝牙串口 蓝牙,是一种支持设备短距离通信(一般 10m 内)的无线电技术。能在包括移 动电话、PDA、无线耳机、笔记本电脑、相关外设等之间进行无线信息交换。利用 “蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够简化设备与 因特网 Internet 之间的通信,从而数据传输变得更加迅速高效。蓝牙采用分散式网 络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的 2.4GHz ISM(即工业、科学、医学)频段。其数据速率为 1Mbps。采用时分双工传 输方案实现全双工传输。5 3.3.1 蓝牙的版本蓝牙的版本 现阶段主流的蓝牙是 3.0 版本,高端手机(android4.4 以上)使用的 4.0 版本 的。蓝牙 4.0 的功耗更低,特别适合于物联网。 - 14 - 3.3.2 HC-02 蓝牙串口通信模块蓝牙串口通信模块 HC-02 蓝牙串口通信模块是基于 Bluetooth V2.0 蓝牙协议的数传模块。 - 15 - 第四章第四章Android 部分(智能机)部分(智能机) 4.1Android android(Google 公司开发的操作系统)是一种基于 Linux 的自由及开放源代 码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开 放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓” 或“安致” 。Android 操作系统最初由 Andy Rubin 开发,主要支持手机。2005 年 8 月由 Google 收购注资。2007 年 11 月,Google 与 84 家硬件制造商、软件开发商及 电信营运商组建开放手机联盟共同研发改良 Android 系统。随后 Google 以 Apache 开源许可证的授权方式,发布了 Android 的源代码。第一部 Android 智能手机发布 于 2008 年 10 月。Android 逐渐扩展到平板电脑及其他领域上,如电视、数码相机、 游戏机等。2011 年第一季度,Android 在全球的市场份额首次超过塞班系统,跃居 全球第一。 2013 年的第四季度,Android 平台手机的全球市场份额已经达到 78.1%。2013 年 09 月 24 日谷歌开发的操作系统 Android 在迎来了 5 岁生日,全世 界采用这款系统的设备数量已经达到 10 亿台。 2014 第一季度 Android 平台已占所有移动广告流量来源的 42.8%,首度超越 iOS。但运营收入不及 iOS。6 4.2Android 手机通过手机通过 BT 连接蓝牙串口模块连接蓝牙串口模块 4.2.1 Android 手机通过手机通过 BT 连接蓝牙的实现过程连接蓝牙的实现过程 Android 手机通过 BT 连接蓝牙的实现过程:APP 启动后,点击连接 BT 的时候, 就会弹出搜索框,提示找到的已经打开的 BT 的 MAC 地址信息(或者是自定义用户名) ,选择你所需要连接的那个蓝牙连接即可。 4.2.2 Android 手机通过手机通过 BT 连接蓝牙的代码连接蓝牙的代码 package com.ThinBTClient.www; import java.util.ArrayList; import java.util.List; - 16 - import android.app.ListActivity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnDismissListener; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.View; import android.view.WindowManager; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class DiscoveryActivity extends ListActivity private Handler _handler = new Handler(); /* 取得默认的蓝牙适配器 */ private BluetoothAdapter _bluetooth = BluetoothAdapter.getDefaultAdapter(); /* 用来存储搜索到的蓝牙设备 */ private List _devices = new ArrayList(); /* 是否完成搜索 */ private volatile boolean _discoveryFinished; private Runnable _discoveryWorkder = new Runnable() public void run() /* 开始搜索 */ - 17 - _bluetooth.startDiscovery(); for (;) if (_discoveryFinished) break; try Thread.sleep(100); catch (InterruptedException e) ; /* * 接收器 * 当搜索蓝牙设备完成时调用 */ private BroadcastReceiver _foundReceiver = new BroadcastReceiver() public void onReceive(Context context, Intent intent) /* 从 intent 中取得搜索结果数据 */ BluetoothDevice device = intent .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); /* 将结果添加到列表中 */ _devices.add(device); /* 显示列表 */ showDevices(); ; private BroadcastReceiver _discoveryReceiver = new BroadcastReceiver() - 18 - Override public void onReceive(Context context, Intent intent) /* 卸载注册的接收器 */ unregisterReceiver(_foundReceiver); unregisterReceiver(this); _discoveryFinished = true; ; protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND); setContentView(R.layout.discovery); /* 如果蓝牙适配器没有打开,则结果 */ if (!_bluetooth.isEnabled() finish(); return; /* 注册接收器 */ IntentFilter discoveryFilter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); registerReceiver(_discoveryReceiver, discoveryFilter); IntentFilter foundFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND); registerReceiver(_foundReceiver, foundFilter); Log.d(Season, 开始搜索蓝牙! ); /* 显示一个对话框,正在搜索蓝牙设备 */ SamplesUtils.indeterminate(DiscoveryActivity.this, _handler, Scanning., _discoveryWorkder, new OnDismissListener() - 19 - public void onDismiss(DialogInterface dialog) for (; _bluetooth.isDiscovering();) _bluetooth.cancelDiscovery(); _discoveryFinished = true; , true); /* 显示列表 */ protected void showDevices() List list = new ArrayList(); Log.d(Season, 蓝牙设备数量: + _devices.size(); for (int i = 0, size = _devices.size(); i size; +i) StringBuilder b = new StringBuilder(); BluetoothDevice d = _devices.get(i); b.append(d.getAddress(); b.append(n); b.append(d.getName(); String s = b.toString(); list.add(s); - 20 - Toast.makeText(this, 蓝牙搜索完毕!, Toast.LENGTH_LONG).show(); final ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list); _handler.post(new Runnable() public void run() setListAdapter(adapter); ); protected void onListItemClick(ListView l, View v, int position, long id) Intent result = new Intent(); result.putExtra(BluetoothMAC, + _devices.get(position); result.setClass(DiscoveryActivity.this, Activity01.class); DiscoveryActivity.this.startActivity(result); /setResult(RESULT_OK, result); Log.d(Season, 你选择的蓝牙 MAC 地址为:+_devices.get(position) ); finish(); 4.3Android 手机获取本机的手机获取本机的 GPS 坐标坐标 GPS 是英文 Global Positioning System(全球定位系统)的简称。GPS 起始于 1958 年美国军方的一个项目,1964 年投入使用。20 世纪 70 年代,美国陆海空三军 联合研制了新一代卫星定位系统 GPS 。主要目

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论