你好!欢迎来到深圳市品慧电子有限公司!
全国统一服务电话:(+86)-755-2950 0800
品慧电子 > 与Android相关的内容
联系品慧电子
  • 电话:+86-0755-2950 0800
  • 传真:+86-0755-2973 8675
  • 微信:联系客服
  • QQ:800009589
MIPS联手矽统科技推动Android进入数字家庭应用

新闻事件: MIPS联手矽统科技推动Android进入数字家庭应用

事件影响: 让更多消费者能在数字时代中享受云端娱乐体验

美普思科技公司(MIPS Technologies, Inc)携手台湾矽统科技公司共同宣布,双方将共同推动 Android平台进入数字家庭应用——两家公司合作推出的以矽统科技新款 MIPS-Based集成网络电视平台为基础的优化Android解决方案,现已面市。同时,矽统科技还宣布获得了全新超标量多处理 MIPS32 1074Kf 同步多处理系统(CPS)授权,用于开发下一代芯片产品。

矽统科技全新高集成度的网络电视平台采用双内核高性能 MIPS 处理器,可提供定制化 widget,并支持 YouTube、Facebook、eBay、Flickr、天气和财经以及在线电影租赁等广受欢迎的服务。该平台可支持高端图像和增强的视频处理,以及Adobe Flash Player 10.1 与电视视频流功能。该产品同时支持视频点播和 Skype等网络通信。并能与其他 Android 平板电脑和智能手机等设备进行无缝互操作和互联;提供遥控和视频共享等功能。全新互联网电视平台现已能够通过矽统科技获得。

在获得 MIPS32 1074K™ CPS 授权之后,矽统科技表示,将使其先进的性能水平充分发挥到下一代产品中去。1074K CPS 可将多内核性能添加到下一代连网多媒体产品中,其中包括数字电视、蓝光播放器和机顶盒以及家庭/无线网络产品和采用 Android 操作系统的平板电脑等。

MIPS 科技营销和业务开发副总裁 Art Swift 表示:“Android 已完全改变了嵌入式世界,推动业界从采用各种不同内核的分散、专属操作系统转变为单一应用程序开发架构。矽统和 MIPS 对于 Android 将如何改变数字家庭的消费娱乐体验拥有共同的愿景。我们非常高兴能与矽统科技及其它的 Android on MIPS 生态系统成员合作,将这种愿景变为现实。”

矽统科技总裁陈灿辉表示:“我们将长期保持与 MIPS 密切合作,并希望能通过在我们的 MIPS-Based 网络电视解决方案支持 Android,为用户带来最佳体验。凭借这款极具竞争力的产品,我们正在努力扩大网络电视市场,覆盖从高端到主流产品。下一代以 1074K CPS 为基础的产品,其频率将达到 1GHz以上,我们的目标是要让更多消费者能在数字时代中享受云端娱乐体验。”

Android蓝牙开发教程:中央BluetoothGatt和周边BluetoothGattServer的实现

Android4.3 规范了BLE的API,但是直到目前的4.4,还有些功能不完善。

在BLE协议中,有两个角色,周边(Periphery)和中央(Central);周边是数据提供者,中央是数据使用/处理者;在iOS SDK里面,可以把一个iOS设备作为一个周边,也可以作为一个中央;但是在Android SDK里面,直到目前最新的Android4.4.2,Android手机只能作为中央来使用和处理数据;那数据从哪儿来?从BLE设备来,现在的很多可穿戴设备都是用BLE来提供数据的。

一个中央可以同时连接多个周边,但是一个周边某一时刻只能连接一个中央。

大概了解了概念后,看看Android BLE SDK的四个关键类(class):

a) BluetoothGattServer作为周边来提供数据;BluetoothGattServerCallback返回周边的状态。

b) BluetoothGatt作为中央来使用和处理数据;BluetoothGattCallback返回中央的状态和周边提供的数据。

因为我们讨论的是Android的BLE SDK,下面所有的BluetoothGattServer代表周边,BluetoothGatt代表中央。

一、创建一个周边(虽然目前周边API在Android手机上不工作,但还是看看)

a)先看看周边用到的class,蓝色椭圆

b)说明:

每一个周边BluetoothGattServer,包含多个服务Service,每一个Service包含多个特征Characteristic。

1.new一个特征:character = new BluetoothGattCharacteristic(

UUID.fromString(characteristicUUID),

BluetoothGattCharacteristic.PROPERTY_NOTIFY,

BluetoothGattCharacteristic.PERMISSION_READ);

2.new一个服务:service = new BluetoothGattService(UUID.fromString(serviceUUID),

BluetoothGattService.SERVICE_TYPE_PRIMARY);

3.把特征添加到服务:service.addCharacteristic(character);

4.获取BluetoothManager:manager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);

5.获取/打开周边:BluetoothGattServer server = manager.openGattServer(this,new BluetoothGattServerCallback(){...}); 

6.把service添加到周边:server.addService(service);

7.开始广播service:Google还没有广播Service的API,等吧!!!!!所以目前我们还不能让一个Android手机作为周边来提供数据。

二、创建一个中央(这次不会让你失望,可以成功创建并且连接到周边的)

a)先看看中央用到的class,蓝色椭圆

b)说明:

为了拿到中央BluetoothGatt,可要爬山涉水十八弯:

1.先拿到BluetoothManager:bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);

2.再拿到BluetoothAdapt:btAdapter = bluetoothManager.getAdapter();

3.开始扫描:btAdapter.startLeScan( BluetoothAdapter.LeScanCallback);

4.从LeScanCallback中得到BluetoothDevice:public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {.....}

5.用BluetoothDevice得到BluetoothGatt:gatt = device.connectGatt(this, true, gattCallback);

终于拿到中央BluetoothGatt了,它有一堆方法(查API吧),调用这些方法,你就可以通过BluetoothGattCallback和周边BluetoothGattServer交互了。

三、吐槽:

BluetoothAdapter.LeScanCallback是接口,但是BluetoothGattServerCallback和BluetoothGattCallback是抽象类,这两个抽象类让人很不爽,不知道google为什么要把他们搞成抽象类,完全可以搞成接口的嘛,或者又有抽象类又有接口也行啊,就像Runable和Thread一样多好。这两个抽象类对于有代码洁癖的人简直就是一种折磨,在方法参数里面new,还要实现父类方法,是在受不了。

Demo工程下载地址:http://download.csdn.net/detail/jimoduwu/7072515

谷歌Android 4.5加入Nearby功能:将与iBeacon对抗

据可靠信息,谷歌可能会在本月的I/O2014开发大会上,发布Nearby功能,以对抗苹果iBeacon技术。下面我们来解密谷歌Nearby都有哪些特点。

AndroidPolice上周六公布的一张截屏就显示Google正在开发一项名为Nearby的功能,而且从截图描述Nearby的文字中,我们可以看出这项功能和iBeacon非常相似。

Android 4.5新功能曝光:谷歌死磕苹果

从Google对Nearby的描述中我们可以看出,Nearby能在附近的用户、地点和事物之间建立连接,并且还提供了分享等功能。当这项功能被激活后,Android设备会定期的打开麦克风、WiFi、蓝牙来收集信息。接着,Google+以及其他Google服务就可以使用这些信息来帮助用户之间建立连接并分享信息了。

谷歌Android系统将加入Nearby功能

Nearby能捕获的位置信息极为精确,而且还具备自动交互能力。这不禁让人想起了苹果的iBeacon技术,这项技术一样可以精准的定位物品的位置信息,并且被认为将对线下的经济活动产生巨大的影响。看上去,Google也要在这个领域和苹果一争高下。

不过和苹果在设备之间建立iBeacon连接不同的是,Google是将收集到的信息传到Google服务器上,然后再做信息匹配。这也符合Google一贯的思维——以“云”为中心。出于保护隐私的考虑,用户也可以选择对哪些设备或者物品开放自己的信息。

Bluetooth Smart技术助力Android L系统实现连接

在2014年的Google I/O大会上,Google展示了点即付、详细指南、手机与智能手表的连接、以及新的通知桥接功能。这些情境都有哪些共同点呢?那就是蓝牙技术。

为手机、平板等设备而设计的下一代的安卓操作系统Android L提供对智能蓝牙(Bluetooth Smart)和传统蓝牙的原生支持。这种双重支持意味着搭载Android L的设备几乎可以与世界上任何支持蓝牙的可穿戴、Beacons、健康与健身传感器、手机、平板、汽车、个人电脑、以及未来将会出现的各种设备相连接。Android L也是第一个基于Bluetooth 4.1版本的操作系统,它添加了IPv6连接的构建模块,为智能家庭的重要组成部分——常开集线器和网关的应用带开启更多可能性。

蓝牙技术联盟首席营销官卓文泰(Suke Jawanda)表示:“Android L为开发者提供了一个强有力的Bluetooth Smart创新平台。有了Android L和蓝牙,谷歌为自身和开发者在智能家庭、健康与健身设备、以及其他更广泛的领域里的创新开启了更多可能性。

Android L操作系统的原生支持,以Bluetooth Smart作为通用的无线连接方式,将有助于开发者们在可穿戴设备、传感器、以及市场上成千上万支持蓝牙的设备之间实现桥接。作为Android L 发布的一部分,谷歌也提供对蓝牙的中控及外设模式的支持,为开发者当前以及未来在Beacon和智能家居等产品的设计带来最大限度的灵活性。

基于Android的蓝牙传输软件

在物联网技术的推动下,计算机、无线通信、消费类电子市场呈现快速发展。体现物联网应用的热点健康监护领域,各种传感器及无线的应用,更能体现出物联网技术的优势。作为当今市场支持范围最广泛、功能最丰富且安全的蓝牙技术与物联网技术。首先,蓝牙技术包含了传感器技术、识别技术、移动通信技术等,这些技术与物联网密切相关。其次,蓝牙的低功耗被看作消费电子产品、体育、健康护理、汽车、自动化等领域一大技术突破,也是物联网技术的重要组成部分。尤其是蓝牙4.0标准拥有着低耗能、传输范围更大、支持拓扑结构等特性。蓝牙技术的不断进步将为物联网的发展提供动力。而Android操作系统在两年多的时间里,飞速发展,成功超越了塞班、IOS、微软等操作系统,足以证明其发展潜力及OS未来的发展趋势。尤其是Android的开放性,大大降低了产品的成本,3.0版本及4.0版本对于平板电脑的支持,这足以使得Android在OS市场占有不败之地。本文结合两者的优势,详细分析了蓝牙技术和Android操作系统,并研究了在Android下如何对蓝牙进行应用,最后设计出一款基于Android健康服务终端的蓝牙传输软件。

1 蓝牙技术
蓝牙技术联盟(Bluetooth SIG)成立于1998年,是由爱立信、英特尔、联想、微软、摩托罗拉、诺基亚及东芝等公司发起成立。总部设在美国柯克兰州,从建立之初到现在共有13 528个全球成员,这些成员之间进行广泛的合作,为蓝牙技术的发展提供指导意见,推动蓝牙的发展。同时在香港、北京、台北和日本东京、韩国首尔和瑞典的马尔摩都有办事机构。
蓝牙无线通信技术工作在工业、科学以及医学上公用的2.4 GHz ISM公用频段,这一频段全球通用且无需授权。蓝牙系统采用全双工分时传输信息技术,信息以分组结构的方式进行数据交换。在传输过程中,各信息分组用不同的跳频算法实现信息传输。“跳频”技术是把频带分成若干个跳频信道,在一次连接中,无线电收发器按一定的码序列不断地从一个信道“跳”到另一个信道,只有收发双方按这个规律进行通信,而其他的干扰不可能按同样的规律进行干扰;跳频的瞬时带宽很窄,这就使得来自同样工作在2.4 GHzISM频段的家用电器,如微波炉等带来干扰的可能性变得很小。与其他工作在相同频段的无线系统相比,蓝牙跳频每秒可以达到1 600次,速度更快,而且数据包更短,从而使蓝牙比其他系统更稳定。此外,蓝牙通信还具有以下优点:(1)消耗功率极低。(2)辐射小,对人体安全影响不大。(3)成本低廉,容易实现。
目前,蓝牙技术已经得到普遍的应用,全球大约80%以上的手机使用了蓝牙技术。蓝牙技术的普及为物联网的发展提供了一种技术选择,具有极大的发展空间。

2 Android操作系统
Android是专为移动终端打造的开放、完整的移动平台,它是一款基于Linux内核的开源操作系统,由操作系统、中间件、用户界面和应用程序组成。由Google及其开放手机联盟共同研发,并在2008年9月份推出了Android第一版。
Android操作系统架构从下到上有5部分组成:Linux内核、Android Runtime、库、应用程序框架、应用程序。Android系统架构如图1所示。

01


Linux内核(Linux Kernel)。Android基于Linux2.6提供核心系统服务,这是Android平台开放的基础,它提供了例如安全机制、内存管理、进程管理、网络堆栈、驱动模型等内容。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务,使得应用开发人员无需关心硬件细节。

Android Runtime。Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalv ik虚拟机中的实例,运行在他们自己的进程中。Dalvik被设计成在一个设备可以高效地运行多个虚拟机。Dalvik VM虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。
Libraries。Android包含一个C/C++库的集合,这些库供Android系统的不同组件使用。这些功能通过Android的应用程序框架(ApplICa tion 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平台支持蓝牙协议栈,因此支持在两个蓝牙设备之间进行数据的传输。Android应用框架层提供了允许蓝牙进行连接的API,通过这些API可以实现通过蓝牙的应用程序是无线连接,建立端到端的连接模式。使用蓝牙API,可以实现应用的如下功能:
(1)寻找其他蓝牙设备。
(2)查询与本地蓝牙适配器配对的设备。
(3)建立RFCOMM信道。
(4)在两个不同的蓝牙设备之间传输数据。
(5)管理多个蓝牙连接。
下面详细介绍几个重要的API:
BluetoothAdapter:代表本地的蓝牙适配器,是所有蓝牙交互的的人口点。利用它可以发现其他蓝牙设备,查询已经绑定的设备,使用已知的MAC地址实例化一个蓝牙设备和建立一个BluetoothServerSocket来监听来自其他设备的连接。
BluetoothDevice类:代表远端的蓝牙设备,使用它请求远端蓝牙设备连接或获取远端蓝牙设备的名称、地址、种类和绑定状态。
Bluetoothsocket类:代表蓝牙套接字的接口,它是应用程序通过输入、输出流与其他蓝牙设备通信的连接点。
Blueboothserversocket类:代表打开服务连接来监听可能到来的连接请求,为连接两个蓝牙设备必须有一个设备作为服务器打开一个服务套接字。当远端设备发起连接请求,并且已经连接到了的时候,Blueboothserversoeket类将会返回一个bluetoothsocket。
Bluetoothclass类:描述了蓝牙设备的一般特点和能力。它的只读属性集定义了设备的主、从设备类和一些相关服务。

4 蓝牙传输软件的实现
4.1 软件功能描述
蓝牙传输软件主要实现对各个模块的管理,模块数据的接收、分析、存储、发送及复杂的人机交互等任务。为能够合理分配硬件资源、提供更人性化的界面以及使用通用的硬件设备,在软件设计时,健康服务终端采用Android操作系统为用户界面。
4.2 图形用户界面设计
程序界面主要包括3个与用户进行交互的Activity:(1)模块显示。(2)血氧历史记录。(3)血压历史记录。
为减少应用所需的内存量,项目没有添加任何图片及声效。界面简单直观,便于操作。首先将各模块列表作为应用程序的主界面。程序运行的最开始加载此项。
当应用程序启动后,第一个显示出各个模块的列表和当前测试数据。界面设计通过XML的资源文件进行定义。
历史记录模块采用了专为Android系统设计的图形库ACHARTEngine,可以用于绘制多种图表。
历史记录的显示主要通过不同的线条颜色,点的形状来区分显示的不同内容。
4.3 软件功能设计
软件功能设计包括蓝牙管理,连接建立,数据传输及数据处理。
蓝牙部分设计
在Android操作系统下,提供了对蓝牙管理的API,蓝牙开发流程如图2所示。首先要判断设备是否支持蓝牙,并且保证蓝牙可用。

02

]0603
mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
如果蓝牙可用,则mBluetoothAdapter不为空,然后判断蓝牙是否打开,若未打开,则提示用户打开蓝牙。
04
到此,蓝牙设备已经打开。
在Android应用程序开发中,若要建立两个蓝牙设备的连接,必须实现客户端和服务器端代码。一个用来开启服务监听,一个发送连接请求。当它们都拥有一个蓝牙套接字在同一RFECOMM信道上时,说明它们之间已经建立好连接。服务器端采用aCCept()方法来建立连接。由于accept()方法是一种阻塞调用,因此不应该放在主Acitvity里,要新建一个线程来管理。
05
而客户端则采用connect()方法来建立连接。同样也是一种阻塞调用,同样需要新建一个线程来管理。
07
当设备连接上以后,每个设备都拥有各自的Bluetoothsocket。现在就可以实现设备之间数据共享了。同样读取和写操作都是阻塞调用,需要建立一个专用的线程来管理。
08

在两个Activity之间,可以用Handler传递信息,使用getInputStream()获得由传感器传来的数据并显示在主界面中。
01
4.4 蓝牙传输软件的运行与测试
由于蓝牙不能在虚拟机中测试,所以将程序打包后,安装到支持蓝牙的Android手机中,然后点击血压按钮,将与血压模块建立连接,同时实时显示当前血压值。点击历史记录按钮,则会显示一周内测试结果,并以图片形式显示出来。程序运行结果如图3和图4所示。

0203



5 结束语
Android在OS市场份额的不断增加,足以体现出Android的优势,而蓝牙4.0版本低功耗技术更适合于远程控制、医疗保健及运动感应器等新兴市场。文中结合两者的优势,设计出一款基于android的蓝牙传输软件,主要应用于健康服务领域,在实际生活中具有很强的应用性。论文介绍了软件的初步设计,还有很多功能需要完善,比如界面的美化,更方便快捷地管理蓝牙设计,数据传输的稳定性及准确性等,这些将是以后研究的重点。

基于蓝牙与Android设备的控制系统

  Android 操作系统是Google 基于开源的Linux 操作系统开发的移动操作平台,由操作系统、中间件、用户界面和应用软件组成,是专门为移动终端打造的开放和完整的移动操作系统。Android 软件平台包含Java ApplICation、Application Framework、Libraries、Runtime 与LinuxOS 等层。用户可根据产品的不同需求对系统进行裁剪,从而适应多样的产品需求,Android 系统就如同积木一样通过组合不同的软硬件实现不同的应用产品。蓝牙的出现为移动设备的互联提供了一个方便快捷的选择,Android 设备和以单片机为处理器的控制器联接使两者的功能得到了互补。

  1 系统架构

  基于蓝牙与Android 设备的控制系统由Android 设备和下位机组成。Android设备(Android 智能手机或Android 平板)安装有专门编制的软件。下位机采用ATMEL 公司高效的RISC 内核的ATMEGA 8 为核心,并集成蓝牙串行模块为通信信道。Android 设备通过蓝牙将数据发送至下位机,下位机根据接收到数据,完成相应的控制功能,并将处理结果上传,实现实时监测、实时控制功能。下位机只负责数据的采集和实现控制功能,数据的存储和处理在Android 设备上实现。

  2 下位机设计

  2.1 控制模块的设计

  下位机由ATMEAG8、数字温度传感器、电机驱动电路等组成,其中CPU 部分电路如图1 所示。下位机处理器串口连接蓝牙模块。数字温度传感器将当前温度直接转换成数字信号。蓝牙模块设置为从工作模式。

  

图1 CPU 电路原理图

  图1 CPU 电路原理图

  系统上电后蓝牙模块处于等待连接状态, 当Android 设备第一次发出连接请求时需要输入蓝牙模块的内置密码,以后再连接时则不需要输入密码,只有密码匹配成功才能后成功建立蓝牙连接。蓝牙模块为Android 设备和ATMEAG8 的通信信道,实现Android 设备和下位机的双向数据连接。用户通过Android 设备向下位机发送命令,下位机接收到命令后,控制相应的执行模块,实现设定的控制功能。K1 和K2 为低电平,电机两端电压为0V,电机停止;K1 为高电平,K2为低电平电机两端为5V,电机正向转动;K1 为低电平,K2 为高电平电机两端为-5V,电机反向转动;K1 和K2 不能同时为高电平,电机驱动电路如图2 所示

  

图2 电机驱动电路原理图

  图2 电机驱动电路原理图

  2.2 蓝牙模块

  蓝牙模块型号为IDS-BM4A, 模块有主/ 从两种工作模式,通过PIO2 电平来选择模块的工作,PIO2 为高电平,模块工作在从模式。模块可以有两种应用方式,方式1 :从模块上电即开始工作,用户可以通过Android 设备查找模块,模块设备名称为”SPP”, 查到设备后选择连接,电脑端将提示输入密码,此时输入“0000”,电脑将与模块建立透明连接。方式2 :需要两个蓝牙模块,一个设置为主模式,一个设置为从模式,分别与两个MCU 连接,上电后主从模块会自动配对连接,连接成功后主从模块将建立透明数据传输,两个设备之间可以直接互发数据。

  工作状态指示:模块PIO0 用来连接LED,指示当前工作方式。

  主模式:未连接,LED 间隔1 秒钟快速闪烁2次;已连接,LED 常亮。

  从模式:未连接,LED 快速闪烁;已连接,LED 常亮。

  连接状态指示:模块PIO1 为连接状态指示,连接成功PIO1 为高电平,连接断开PIO1 为低电平。

  波特率设定表:

  

  3 Android 设备软件设计

  Android2.2 版本以上才能很好的支持蓝牙功能,Android 上的应用程序一般采用Java 语言开发,编程环境一般采用Eclipse。

  Android 应用程序需要使用蓝牙功能, 必须在AndroiDMAnifest.xml 中要申请两个权限:BLUETOOTH_ADMIN 和BLUETOOTH。具体格式如下:  

  me="android.permission.BLUETOOTH"/>

  BLUETOOTH_ADMIN 权限允许Android 应用程序启动发现设备或者进行蓝牙功能的设置;BLUETOOTH 权限是Android 应用程序执行蓝牙通信必须具有的权限,例如接受连接和传送数据。大多数应用程序都需要这个权限,才能查找当地的蓝牙设备。

  由于需要和下位机的蓝牙模块连接,在应用程序中需要实现主设备功能。具体的连接流程是:

  (1)在应用程序中检查设备的蓝牙功能是否开启,如果未开启,则打开蓝牙功能;

  (2)查找设备附近等待连接的蓝牙设备,显示查找到的蓝牙设备的物理地址(以前没有连接过的设备)或蓝牙设备的名称;

  (3)选择想要连接的蓝牙设备,如果是第一次连接这个目标设备系统会自动发起一个配对过程,弹出输入连接密码的对话框,输入“0000”,等待对方校验密码,完成配对,然后进行连接。

  (4)应用程序接收到连接成功,就可以通过生成的BluetoothServerSocke 和下位机进行数据传输。需要连接的蓝牙模块是蓝牙串口,因此应用程序中定义的UUID 必须符合蓝牙串口的UUID,这样连接才会被接受。因为aCCept() 调用是一个阻塞的调用,应用程序所有响应在调用返回之前会被阻塞,因此一定不能在主线程中进行调用, 通常是在一个新的线程中做所有的工作从而避免应用程序主线程的阻塞。主要代码如下;

  (5)关闭server socket,释放serversocket 和它占用的资源,结束应用程序。

  4 结束语

  本文提出了基于蓝牙与Android 设备的无线控制系统模型,分析了蓝牙网络的一般结构, 采用通用的蓝牙模块实现了无线终端设计,给出了Android 设备的蓝牙串行通讯软件框架。凭借蓝牙的传输高效并且快速等特点,该系统具有很好的灵活性,能广泛应用于工业现场控制等多个领域,尤其是一些需要数据传输又不能很方便的布设通讯电缆的场合,具有广阔的发展空间。

  主要代码

  

  

So easy !简单几步即可将音乐添加到智能手表里

颖特新教学,有没有想过把喜欢听的音乐存放在智能手表里?目前,大多数智能手表均采用Android Wear系统,那么,今天就来教各位如何将音乐存储在智能手表里,随时享受听音乐的乐趣。


其实早在今年九月,谷歌就已经为Android Wear智能手表添加了存储音乐的功能,只是当时并没有太在意,在上周,谷歌修复了其中的漏洞已经GPS定位等功能。

首先,确保你的智能手表系统已经更新了Android Wear OS的最新版本——目前最新版本是4.4W.2。检查你当前使用的操作系统版本,否则请先更新系统。

如果你的手表系统已经是最新版本,启动安卓设备上的Play Store,检查My App版面,确保Google Play Music应用也是最新版的。


在确定智能手表系统和应用都为最新版本之后,打开安卓设备上的Play Music 应用,然后导航到设置界面。

一直向下拖动,直到找到名为“Download to Android Wear”的选项。

勾一下“Download to Android Wear”的选项旁边的小框框,然后退出设置。

如果安卓设备上本来就储存有音乐,这些音乐就会自动传到你的手表上。如果安卓设备上没有音乐,你可以从音乐库或者Play Music Store上下载。你可以通过浏览播放列表、歌曲或者专辑,找到你喜欢的音乐,然后点击有三个点的菜单图标,在下拉菜单中选择“Download”就可以下载音乐了。

把音乐下载到你的安卓设备后,只要你之前有在那个小框框上打勾,下载的音乐就会自动地传到你的手表上。

很显然,这个功能还存在一些缺陷,你不能在下载音乐中挑选一首或者几首传到你手表上。要么一首都不传,要么就全部都上传,所以还是有点缺陷所以只能提前把想传的歌整理下,但还要注意的是,你的智能手表内存也是有限的。

谷歌智能手表的Android 5.0系统曝光

颖特新消息,在近段时间,谷歌对Android Wear操作系统进行了多次升级,增加了不少系统功能,但目前来看,Android Wear系统似乎还有很多问题需要解决,比如调整屏幕亮度的步骤就太复杂了,只能从应用商店下载App才可改善待机界面,而各厂商不断爆出Android 5.0 Lollipop系统升级消息,关于Android Wear系统 Android 5.0新版本也备受期待。

国外科技网站Phandroid最近曝光了一组所谓基于Android 5.0系统的Android Wear截图,同时表示该系统会在12月份开始升级,不过目前还没有得到谷歌方面的确认。

在截图中首先我们看到,升级后的Android Wear系统对于App开放了更大的权限,用户可以直接Android Wear应用查看设备的电量统计和空间占用情况。这些页面对于Android用户来说似曾相识,之前在Android智能手机的设置菜单中都及其常见。这是一个非常可喜的变化,未来用户可以直接在智能手表中保存音乐文件,无需通过蓝牙连接智能手机才能播放音乐。另外,新系统还可以直接通过应用程序更改时钟待机界面,这也是一个用户都非常乐意看到的变化。

另外,对于狂热的深度定制爱好者来说也有好消息。谷歌终于开放了时钟界面的API,用户可以通过设置菜单更加个性化的定制显示的内容。另外,新系统还可以直接在待机界面上显示天气,而不再需要麻烦的激活天气卡片才能查看天气。上面截图就是来自新系统显示天气时使用的图标。

接下来,谷歌最终在Android 5.0中解决了显示屏亮度调节的问题,引进了两种模式:Theater和Sunlight,前者会降低显示屏的亮度,这样便不会打扰到其他观影者,后者则是调整显示屏亮度增强阳光下的适读性。

之前Android Wear存在的问题就是由于手表没有内置环境光传感器,因此手表无法分辨用户是在户外还是房间内。因此用户必须向左滑动进入设置菜单,然后调整到最适合的亮度,这个过程很麻烦。现在用户直接用户向下滑动便可访问这些功能和选项,因此可以迅速作出改变,同时还可以看到剩余电量的百分比。

最后,谷歌还改进了Android Wear的视觉效果,适合那些存在视力缺陷的用户使用。用户可以使用新功能调整文本大小、色彩反转以及放大的手势操控等。

相信未来Android 5.0会为Android Wear系统带来更好的用户体验,不过目前谷歌还没有对外公布Android Wear升级Lollipop的具体时间。如果你对新的Android Wear系统还有什么期待,不妨也可以在留言中和大家交流。

智能手表大战:哪个平台理念最正确?

颖特新整理,现在不论是谷歌,苹果还是索尼都纷纷涉足智能硬件领域,而显然,智能手表,智能手环成为了这些巨头抢攻的下一个目标。那么,就现在而言,谁的产品在设计、产品方向、使用体验上更出色?我们不妨通过简单的对比来分析一下。

谷歌Android Wear

由于采用了开放式的平台,谷歌的Android Wear拥有最多OEM商,所以其手表款式也是各式各样的。不过,不论是方形还是圆形表身、出自哪个品牌,Android Wear手表的界面和功能都是几乎一直的,是因为谷歌为了避免Android手机的碎片化现象。

Android Wear所推崇的使用理念是快速、简单,所以设计了卡片式的界面、上下文通知功能,仅可能地通过直观、智能化的方式来为用户提供通知信息。另外,Android Wear也是支持应用程序扩展的,虽然目前很多应用的体验还不够完善,但至少提升了设备的可扩展性。

微软腕带

微软腕带虽然更多是一款运动监测设备,但同样可以显示时间和通知,也是一种类智能手表产品。当然,微软的方向与谷歌完全不同,其腕带集成了大量传感器,旨在提升运动、健康监测的全面性和准确性;其通知功能则是完全针对Windows Phone的额外功能。

就实际体验而言,微软腕带的数据搜集能力很强大,但没有为数据提供有效的利用形式。并且,其腕带设计偏大、外观也不够漂亮,恐怕很难让用户一直戴在手腕上。

Apple Watch

苹果的智能手表就像iPhone一样,漂亮、昂贵,并且是iOS生态系统中的一员。另外,苹果似乎也希望通过Apple Watch来尝试一些新的方向,比如时尚配饰、奢侈品领域,其黄金版昂贵的价格就是一个证明。

至于使用体验,由于产品尚未推出,我们还无法真正感受到。但从苹果的演示来看,Apple Watch的一些设计理念是值得肯定的,比如通过表冠进行界面放大、缩小的操作,要比使用多点触摸更方便。当然,iOS也是Apple Watch的强大后盾,我们期待应用程序在Apple Watch上的表现。

Pebble

不要忘了Pebble——这个真正将智能手表概念带到大众面前、并拥有不俗销量的品牌。作为第一代智能手表,Pebble经常出现在各大科技媒体“最佳智能手表”的榜单中,十分难得;后续机型Pebble Steel则通过金属机身、表带获得了更好的质感。

Pebble的设计理念主打极简风格,不仅仅是设计,还包括功能,这既是它成功的原因、也是未来发展的障碍。首先,它没有触摸屏、彩色显示,限制了应用体验;但从另一个角度来说,电子墨水屏的续航力远超Android Wear或是Apple Watch,这又是一个巨大的优点。Pebble也构建了自己的软件应用市场,丰富其功能。但放眼未来,彩色显示、触摸屏依然是大趋势,Pebble如何发展值得关注。

总结

或许现在讨论智能手表大战的胜负还为时尚早,毕竟作为一种新型设备,它们还在不断完善中。而从平台的角度来看,这几个厂商都拥有各自的优势,也拥有巨大的潜在用户,未来的实际产品体验以及平台构建则是关键。

使用位置指纹算法的WiFi定位系统设计

摘要: 随着无线城市的建设和推广,WiFi无线热点的数量在逐渐增加,基于智能手机的定位应用也受到越来越多的关注。然而仅借助于GPS卫星定位系统,无法在高楼林立的市中心或是室内场景定位。因此,本文利用WiFi信号本身的特点, 在Android平台上设计了一种基于位置指纹算法的WiFi定位系统。针对WiFi信号本身的不稳定性以及不同设备之间无线信号接收差异两种影响因素改进了该算法。

引言

近年来,随着城域无线基础网络的发展,热点(AP)的覆盖率大幅度提高,由于定位服务需求的增加以及WiFi应用领域的扩大,WiFi定位成为一种有效的定位方式。GPS卫星定位是最主要的定位方式,它需要在相对空旷、高层建筑不密集的地方获得较准确的定位,当人们处在室内或高楼林立的市区,定位精度明显降低甚至不能定位。此时,利用无处不在的WiFi网络将能够弥补GPS定位的不足[1]。目前大多数的WiFi无线定位算法主要为:基于到达时间、到达角度、到达时间差的模型定位及基于接受信号强度(RSSI)的位置指纹定位算法[2],由于位置指纹算法的无线定位方式不需要已知AP的位置信息及准确的信道模型,该算法在定位性能以及可用性上具有更大的优势。因此,本文首先设计了整体的系统框架,通过研究分析了该算法目前存在的问题,提出了改进方案,并在Android平台上实现完整的定位系统。

1 系统整体设计

本系统的设计目标是在Android智能终端上实现实时WiFi定位系统,该系统包括客户端、数据服务器以及定位服务器。为了使定位过程和服务器通信过程相对独立,分别设置了专门用于定位的AP热点和客户端与服务器之间的通信AP热点,可有效降低系统环境搭建的初期成本。本方案的系统框架如图1所示。其中的通信AP热点需要与局域网相连,保证定位区域内WiFi信号良好,确保数据传输及处理的及时性。客户端和服务器端通过TCP连接实现可靠传输。

图1 系统框架图

图1 系统框架图

2 系统实现

2.1 客户端模块设计

本系统采用客户端/服务器(C/S)的网络架构,客户端的定位过程主要包括WiFi无线信号扫描、数据传输、界面显示等,该过程的流程图如图2所示。

图2 客户端定位模块流程图

图2 客户端定位模块流程图

WiFi信号扫描是利用Android API提供的WiFiManager类实现。首先,判断WiFi是否开启;其次取得WifiManager及WifiInfo对象,通过startScan()、getScanResults()等方法开始扫描并得到扫描结果mScanResult;最后,将数据传递给服务器端进行定位计算。Android平台为用户提供丰富的界面显示控件,本设计使用ListView显示服务器返回的定位位置信息[3]。

2.2 服务器端模块设计

服务器端首先需要不断监听指定端口,当监听到客户端的请求时,创建新进程,该进程负责处理客户端的请求,其处理过程如图3所示。监听数据,如果接收到该数据,则进行CRC校验并结束链接帧,根据请求内容查询数据库并进行定位运算,最后返回定位结果,通过数据传输反馈给客户端界面显示定位信息。

图3 服务器端流程图

图3 服务器端流程图

3 定位算法设计

在室内或室外环境下,由于信号传播途中受地形、障碍物的影响和人体的阻挡,将引起无线信号的折射、衍射等多径传播、多址传播,以不同的时间到达终端,造成传播信号在幅度、频率和相位上的改变。其使得在同一位置,不同时间采集到的RSS值很不确定,即使在同一时间相同位置使用不同的定位设备采集到的RSS大小也会不同,会影响定位的精确性,无线信号传播的衰减模型难以良好地表征距离和信号强度间的映射关系[4]。因此本文采用基于位置指纹的定位算法,同时针对造成定位误差的主要原因,提出了改进的定位算法以提高定位鲁棒性。

3.1 位置指纹定位算法

位置指纹定位是根据不同位置接收到的信号强度向量,建立相应的位置指纹数据库,通过实时采集的信号强度与数据库信号空间中储存的信号向量,根据一定的匹配算法实现定位。该算法能够在一定程度上减少多径效应的影响,增强抗干扰能力。目前,基于位置指纹的定位算法主要分为确定型和概率型,前者的计算效率较高,后者的定位精度较高,但是计算量较大,为了快速定位,采用确定型的位置指纹定位算法。

位置指纹定位过程一般分两个阶段实现:离线采样阶段和在线定位阶段。离线采样阶段主要目的是建立位置指纹数据库,根据定位环境设计较为合理的采样分布图,遍历待定位区域内的所有采样点,将相应的信号强度、MAC地址以及位置信息等记录在指纹数据库中。数据库中数据的准确性决定了定位的精确程度,数据越精确,定位效果越好。在线定位阶段是利用Android手机在待定位点测得AP的信号强度和物理地址,然后通过相应的匹配算法,在数据库中搜索与测量点相匹配的数据,从而估计用户的实际位置。位置指纹的定位过程如图4所示。

图4 定位框图

图4 定位框图

3.2 匹配算法 

通常的匹配算法有K最近邻匹配算法(KNN),该算法能够有效提高定位精度且应用成熟。本文采用了该匹配算法,K最近邻匹配算法的实质是计算待测点采集到的RSS向量和数据库中已记录的RSS向量之间的距离。假设待测区域有n个AP,m个参考点,则距离的表达式如下:

其中,q为正整数,当q=1时称为曼哈顿距离,q=2,称为欧式距离;L代表向量在空间中的距离。本文使用q=2进行计算,当取得n个最小欧式距离的位置点后,求取n个坐标点的质心为待测点位置坐标。

3.3 改进的位置指纹定位算法

理论研究表明:由于室内环境复杂,无线信号会因为时间的变化、人体的随机晃动及环境等因素的影响使信号强度值呈现一定的波动。为了保证信号数据本身的稳定性,在实验室环境下进行如下实验:在同一位置的不同时间分别采集数据,上午和下午两个时间段每隔1 s共采集300次WiFi信号。发现无线信号随时间变化不大,基本存在2 dB左右误差,对定位结果影响较小。

但在多次测试过程中发现,无线信号强度在某位置下会出现如图5所示的波动情况,多数信号强度值保持在一定范围内,但中间会存在抖动的数据,该种现象会对离线数据的准确性及在线定位的准确性产生较大影响。直接求均值的方式并不能表征该位置的信号特征,应该对采集的无线信号强度值进行平滑,选取有效点。

图5 无线信号分布图

图5 无线信号分布图

对无线信号的平滑提出如下改进方案:

①每隔1 s采集一次所有的信号组,假设其中一组的信号强度值是level,再连续间隔采集二次;

②如果连续采集三次的信号强度值均介于[level-1,level+1]时,将该数据插入数据库,否则舍去前面的所有信号值,重新返回步骤①;

③将步骤②获取的多组无线信号强度值再求均值,存入离线数据库。

利用改进的方案将图5平滑处理后,改进前的信号强度值RSS=1.597 1,而改进后的RSS1=-46.147 1,可见本方案能够去除一定的抖动信号,得到较为理想的离线数据库。该方法不仅用于离线数据采样阶段,而且应用于在线定位阶段实时采集当前无线信号强度,可避免单次采集的不确定性。

针对设备差异对无线信号的影响,首先在同一位置用华为两款不同型号手机对WiFi信号采集300次,无线信号分布情况如图6所示。C8812型号手机采集信号强度保持在-65~66 dB,P6型号手机信号强度保持在-45 dB,不同型号手机可能造成的误差达20 dB,若按此进行定位将产生较大定位误差,因此本文将在实时定位之前加上无线信号校正阶段,能有效提高定位精度。

图6 不同手机无线信号分布图

图6 不同手机无线信号分布图

为解决设备差异对WiFi定位造成的影响,Ekahau提出一种自动校正的方法。它是通过分析跟踪设备在一些易于检测的区域时的信号变化,自动学习跟踪建立相应的映射关系,该方法的缺点是设备不易进入易检测区,系统很难获得充足的数据建立映射关系[5]。Haeberlen的研究显示,校正设备与测试设备之间的信号强度之间存在某种线性关系[6]。本文经过大量实验,统计获得数据并通过函数拟合的方法,推导出校正设备及测试设备的关系,可以看作y=ax+b的线性关系,参数a、b将由实际的数据获得。

4 实验结果与分析

实验区域为10 m×16 m,每隔1.5 m设定为一个采样点,AP分布在该区域的四周如图7黑色圆点位置,每个采样点分别采集200次经过平滑处理后存入离线数据库。为比较定位结果的精确性,选定如下5个点为测试点:A位于出口处附近,B位于区域的中心位置,C、D、E点位于区域的边界处。

图7 采样分布图

图7 采样分布图

改进前和改进后分别进行40次测试,实验结果分析如表1所列。应用改进后的算法各测试点的平均误差均有所下降,A点位于出口处,可能会受其他因素影响,定位效果不明显;B、D点,受外界影响较小,定位效果较好,定位精度提高2 m左右。

表1 实验结果

表1 实验结果

结语

本文通过实际的实验环境分析了WiFi无线信号的分布特点,针对无线信号不稳定的特征以及不同设备之间差异改进了基于位置指纹的定位算法,并在Android平台上实现该定位系统。结果表明,应用该算法能够建立更加精确、稳定的离线数据库,并且可以降低不同设备差异造成的定位误差。