当前位置:首页 > 智能硬件 > 智能硬件
[导读] 随着科技的不断的发展,以及人们对于高科技产品的依赖,智能可穿戴设备逐步的发展起来,走进了人们的日常生活。智能手表、智能眼镜的问世为智能可穿戴设备的发展带来了新的方向,Android系统广泛的应用于智能可穿戴

 随着科技的不断的发展,以及人们对于高科技产品的依赖,智能可穿戴设备逐步的发展起来,走进了人们的日常生活。智能手表、智能眼镜的问世为智能可穿戴设备的发展带来了新的方向,Android系统广泛的应用于智能可穿戴设备、智能手机中。为了使智能可穿戴设备更好的与手机相互配合,满足于人们的需求,本文研究了蓝牙远程控制功能,实现了具有远程控制功能的应用程序。由于通过蓝牙传送的数据能够被追踪窃取到,发送数据的安全性也尤为重要,通过比较本文采用RC4和RSA混合加密方式对发送的数据进行加密。为了适应不同品牌的智能手表,首先实现了在手机之间的远程控制功能。程序应用在手表上时,只需对显示界面的长宽比例根据手表的分辨率进行修改,即可满足功能性的需求。

1 蓝牙模块设计

1.1 Android设备间建立蓝牙连接

实现通过蓝牙的远程控制,最基本的操作是要先建立设备之间的蓝牙连接,Android SDK提供了功能完善的API,通过调用系统的API能够实现对附近蓝牙设备搜索、返回远程设备的硬件地址、建立连接、断开连接等工作。蓝牙连接的建立主要分为以下两个步骤:

(1)搜索附近蓝牙设备

BluetoothAdapter 类中提供了本地蓝牙适配器的接口,所有的蓝牙交互都是从此API开始的,主要功能有开关蓝牙设备、扫描蓝牙设备、设置或获取蓝牙状态值、获取蓝牙名称、获取蓝牙Mac地址等。调用enable() 方法打开本地的蓝牙,然后调用startDiscovery()搜索附近设备,将所有搜索到的蓝牙地址存储在列表中。通过获得的远程蓝牙设备的地址,实例化一个蓝牙设备的语句如下:

BluetoothDevice device =BluetoothAdapter .getRemoteDevice(address)

(2)建立蓝牙连接

建立蓝牙连接的过程中的两个设备,分别充当了Server和Client。对于Server端通过UUID来创建一个BluetoothServerSocket来收听来自其他设备的连接请求,当有远端设备发来建立连接的请求,对请求进行响应实现蓝牙的连接。在程序中使用如下语句:

BluetoothServerSocket mmServerSocket = mAdapter.listenUsingRfcommWithServiceRecord(NAME_SECURE, Y_UUID_SECURE);

对于Client端, 使用第1步中实例化的蓝牙设备BluetoothDevice,通过 UUID创建一个BluetoothSocket, 发送连接请求,与Server端建立连接, 来实现数据的接收和发送,在程序中使用如下语句:

BluetoothSocket mmSocket = device.createRfcommSocketToServiceRecord(MY_UUID_SECURE);

Server端BluetoothServerSocket代表一个打开服务器套接字侦听传入的请求,类似于一个TCP SeverSocket,当连接建立成功后,调用BluetoothServerSocket接口的 accept()方法,返回一个BluetoothSocket对象。BluetoothSocket用来代表一个蓝牙套接字,这个套接字类似于 TCP套接字。这是应用程序的连接点,通过此接口可以实现蓝牙数据的接收和发送。调用BluetoothSocket接口中的方法,得到输入输出流,在应用程序中向输出流中写数据实现蓝牙数据的发送,从输入流读数据,实现蓝牙数据的接收。

1.2 自定义蓝牙远程控制协议

Android系统上蓝牙的连接过程通过以上的两步即可建立完成,在应用中对于蓝牙使用仅仅限于数据的传送,对于数据的内容并不关心。然而这并不能满足用户的需求,用户更期望通过蓝牙实现远程控制的功能。当前蓝牙发送的数据并没有对内容进行考虑,仅仅是简单的数据传送,如果想实现蓝牙的远程控制,那么就需要自定义发送的数据结构。控制信息和普通数据信息均通过蓝牙在设备之间进行传送,若想对控制信息和数据信息进行区分,就要在已有的发送数据的首部,添加头结点,设置头结点占用1字节的存储空间,作为控制位标识,用来标识传递信息的类型。1 字节的头结点最多可以标识出256种不同的信息类型,在现阶段的使用过程中能够满足需求,当然如果控制类型增加,只需增加控制位的位数。定义的数据结构如下所示:

 

 

本应用程序实现了手机通过蓝牙远程控制另一部手机进行图片预览以及拍照功能。因此发送信息分为两类,一类发送的是图像的数据信息,在Android程序中定义控制位为:

private static final byte DATA =(byte) 0;

另一类是拍照指令,在Android程序中定义控制位为:

private static final byte TAKE_PHOTO = (byte)1;

如果欲实现更多的控制功能,可以自定义更多的控制位类别,在程序进行相应的响应,即可实现更多的控制功能。

当Sever端收到数据以后,对于数据的头结点进行判断。通过判断控制位的类型来区分出是数据信息还是控制信息,返回给主函数对其响应。如果接收到的数据包为数据信息,则调用图像显示功能,将接收的图片显示出来。如果收到的数据的是拍照指令,即可调用拍照功能模块,将拍摄的照片进行存储。

2 加密模块设计

虽然自定义的蓝牙数据结构满足了人们通过蓝牙远程控制的需求,然而却也存在着一定的安全性问题。在实际生活中,环境比较复杂,无线传输的信号能够被他人通过一些工具监测并且窃取到。如果当用户传送的图片信息被他人截取,用户的隐私就会被轻松的获取到。然而这并不算最危险的,如果在程序中添加了很多控制信息,控制信息被他人截取并且掌握后,那么可能就会导致手机被他人控制,这将给用户带来更大的损失。

为了保证信息的安全性,需要对蓝牙发送的数据进行加密操作。数据的加密一般要经过复杂加密算法来实现,然而对于手机而言,运算效率不是很高,而且若要实时的预览远程设备采集到的数据,也就意味着要在极短的时间内,加密和解密大量的数据,那么加密算法的加密效率更加关键。

文献4通过使用一种基于AES和RSA的混合加密算法来保证蓝牙通信过程中的数据安全。AES算法以其在块加密高效的特点应用与蓝牙通信的数据信息加密上,RSA算法在秘钥管理上比较有优势,能够有很高的安全性,因此用来加密AES的秘钥信息。

文献5比较了RC4 和AES对于设备CPU时间占用、内存消耗以及电池电量的消耗进行了分析对比,得出了RC4更适合于大数据包的加密,而AES更适合于小数据包的加密。

经过多方面的综合比较,本文采用RC4和RSA混合加密的方式对数据进行加密。利用RC4在大数据包加密速度快的优势,首先对数据使用RC4进行加密。由于RC4加密算法相对简单,其安全性上也存在着一定的风险,为了把这种风险降低,采用混合加密的处理方式对数据进行操作。RC4加密算法加密完数据信息后,进行第二次加密,加密RC4的秘钥信息。由于RC4秘钥的长度比较短,可以采用运算过程相对复杂但是安全性非常高的RSA加密算法。整个的加密过程如图1所示。

 

 

图 1数据加密过程

加密的过程主要分为两步:

第一步,对于原始数据 Original Message用RC4秘钥来进行加密。

第二步,对于RC4秘钥使用RSA进行加密,保证了此秘钥在数据传输安全性。防止了信息被截取后,容易分析出RC4秘钥内容的风险。

解密过程如图2所示。

 

 

图2数据解密过程

解密过程同样分为两个步骤,当应用程序收到发送来的数据后,第一步读取RC4秘钥部分,通过RSA的私有秘钥进行解密,还原RC4秘钥。第二步,使用RC4秘钥对数据部分进行解密,还原出图像信息。

掌握了RC4加密算法和RSA加密算法后,即可实现混合加密算法。对发送的数据进行混合加密,保证用户数据的安全性。

最终写入蓝牙输出流中的数据主要包含3部分,如下所示:

 

 

第一部分,数据的长度,在Android程序中,为了将连续发送的图片的信息,每一帧识别出来,还需要在头部添加一个数据信息长度。以便在数据被接收到后,能够确定所要读取的字节数。

第二部分是RC4秘钥,这部分中RC4的秘钥是被RSA所加密后的结果,能够保证RC4的秘钥再被窃取到后也不能够直接使用,在当今计算机的运算效率下,还不能够实现对RSA加密算法的破解。

第三部分是经RC4加密的数据信息。来自上层的应用程序欲发送的未加密的数据到了此模块,要进行RC4加密。信息中保存着所有的用户操作的信息。这部分的数据长度是根据情况来分配。如果是控制信息,那么信息长度会非常短。如果是图片数据,那么信息长度会比较长。这个长度信息由第一部分的数据长度进行记录。

3.蓝牙远程控制拍照程序设计

本程序是在基于Android操作系统的智能手机上构建的一个远程控制程序。程序中包括着蓝牙连接的建立、蓝牙数据的编码与传送、数据加密3部分。实现了通过手机实时显示另一部手机端摄像头采集到的数据,通过点击程序中的拍照键即可控制手机进行照片的拍摄。程序的流程图如图3所示。

 

 

图3蓝牙远程控制程序流程图

3.1 建立蓝牙连接

创建DeviceListActivity类用于蓝牙设备的搜索,返回选择的蓝牙设备的名称和地址。

其功能流程如图4所示。

 

 

图4蓝牙连接建立流程图

通过搜索设备功能可获得周围可见的蓝牙设备信息,以列表的形式显示所有搜索到的设备。用户根据需要,选择所要连接的设备,DeviceListActivity类返回设备的名称以及MAC地址。

3.2 蓝牙数据的编码

根据 DeviceListActivity返回的远端蓝牙设备的名称和地址,调用Bluetooth API建立蓝牙设备的连接,当连接建立完成后,便进入到了主功能模块。

首先在onCreat()函数中,完成了参数的初始化工作,初始化发送标志位SendFlag = 0,在此状态下,应用程序处于接收数据的状态。摄像头停止采集图像信息,不进行发送数据。接着再初始化Button监听事件,应用程序中定义了两个Button,一个Button用来控制此Activity处于发送还是接收的状态;另一个Button用来控制是否对拍照功能予以响应;

Activity处于发送状态时,将Camera采集到的每一帧数据进行处理,由于图片比较大,蓝牙发送的数据速率是有限的,为了保证接收端接收到的视频图像的连贯性,要对采集到的图片进行压缩处理。调用Android API中 Matrix的postScale()方法,设置缩放比例,实现图片的缩放。

接下来数据部分要添加信息头,如果是拍照的控制信息,添加第1节中设定的TAKE_PHOTO 其值为数值 1;如果是照片信息,添加 DATA其值为数值 0。通过添加信息头,便实现了对于数据信息和控制信息的区分。最后进入到下一步骤,对数据进行加密。

3.3 数据加密

数据加密采用RC4与RSA混合加密方式,再上一节中详细的予以阐述。数据加密的流程如图5所示。

 

 

图5 数据加密流程图

在接收端,线程一直等待蓝牙发送的数据,当读取到数据,便根据解密的方法,依次去除加密信息。解密的顺序与加密构成逆过程。解密流程如图6所示。

 

 

图6 数据解密流程图

对于解密出来的数据,要对其分析判断数据的类型,根据自定义的蓝牙数据结构可知,数据的第一位即为数据类型位。进行数据类型判断的主要程序如下所示:

switch(decr[0]) {

case TAKE_PHOTO:

mHandler.obtainMessage(MainActivity.MESSAGE_READ, -1,TAKE_PHOTO , buffer).sendToTarget();

break;

case DATA:

mHandler.obtainMessage(MainActivity.MESSAGE_READ, decr.length,DATA, decr).sendToTarget();

break;

}

通过以上3个步骤,便实现了远程控制的功能。在实际应用中,其中一部手机作为被控制端,实时的将照相机采集到的数据发送到另一部手机。控制端实时显示接收到的图像,当需要拍摄照片时候,点击拍照按钮,即可实现远程控制的功能,完成照片的拍摄,并将照片存储起来。

结语

本文实现了基于Android系统的蓝牙远程控制功能。极大的丰富用户对于智能设备功能的需求。在数据传送的过程中,使用了混合加密算法对数据加密,保证了用户数据的安全以及保证了设备不被他人控制。在方便人们生活的同时也保护了用户的隐私。随着智能可穿戴设备的发展,智能设备通过蓝牙相互连接和相互控制的应用也会比较广泛,智能可穿戴设备的主要以搭载Android系统为主。本文中实现的远程控制拍摄照片的功能,移植到手表端,核心的程序部分均不需要改动,在程序显示界面部分根据不同种类设备的分辨率进行相应的调整,便能实现通过蓝牙进行远程控制的功能。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭