局域网内Android与PC平台剪贴板同步功能的实现
2016-11-02朱亚林
朱亚林
(南通师范高等专科学校,江苏如皋 226500)
局域网内Android与PC平台剪贴板同步功能的实现
朱亚林
(南通师范高等专科学校,江苏如皋226500)
智能终端的普及使得人们的信息传输与数据交换变得更加方便,同时,也使得智能终端与PC平台之间的关系变得密不可分。在智能终端与PC平台进行数据交换的各项功能中,有一类功能非常实用,但在主流软件中并未普及,那就是两者之间的剪贴板的实时同步功能。本文将借助于Socket的强大功能,设计实现一个局域网内Android系统与PC平台间实时同步剪贴板功能的程序。
局域网;Android;PC;Python;Socket;剪贴板;同步
0 引 言
随着智能手机的普及,智能终端与PC平台之间的信息互通也已成为潮流走向。人们可以通过各种手机管理的软件,在PC平台上连接、管理智能终端设备上的联系人、短信、各类文件(照片、视频、声音)等内容。其实,在日常工作、生活中,智能终端与PC平台间的另一种信息交互功能也处于同等重要位置,那就是系统剪贴板上的信息内容的同步,即:在智能终端上对一段文字或者网址等元素进行复制,此时,剪切板内容会自动同步更新到在局域网中已经实现了配对的PC平台的剪贴板上以备采选使用,反之亦然。具体可体现为将手机上的网址复制到PC平台上打开、将手机短信复制到PC平台上、在PC平台上将短信内容执行编辑后,再复制到智能终端上发送等等。
剪贴板同步功能的实现与应用,将会大大提高智能终端与PC平台间的信息交换效率,使得两者之间的连接更为方便、更为高效。本文将选择时下流行的Android智能终端及全平台支持的Python语言作为实验环境,论述此项功能的研究设计与实现。
1 功能实现原理及分析
本文所实现的剪贴板同步功能是指,在同一局域网内的智能终端与PC平台通过一定的网络协议建立连接之后,进行剪贴板的数据同步传输。本文选择了Socket来实行网络数据传输,究其原因表现在如下2个方面[1]。首先,Socket是一种性能完善的进程通信机制,应用程序可以通过其向网络发出请求或者应答网络请求,进行网络通信;其次,由于Android软件开发是基于Java语言来展示最终实现效果,而PC平台采用的则是跨平台的Python语言,这2种语言对于Socket在支持上都迹近完美。由此可知,Socket是实现不同设备间剪贴板同步功能的不二之选。
软件实现的功能描述如下:在智能终端及PC端分别安装一个软件,智能终端可简称为M,PC端可简称为P,M与P处于同一个局域网内,两者之间通过Socket进行连接。M和P具有相同的功能,那就是监视自身系统的剪贴板内容,当系统剪贴板上的内容发生变化时,则读取该内容。同时,再将该内容通过已经建立的Socket连接传输到另一端,另一端在接收到新的信息之后,将其写入到本端的系统剪贴板上,以备粘贴之用,从而完成剪贴板信息的同步。
综上,若要实现上述软件要求,重点需要完成以下方面的功能设计:一是局域网内智能终端与PC平台的配对问题;二是在智能终端和PC平台上监听系统剪贴板的问题;三是在Socket连接中的信息传输问题;四是智能终端和PC平台上系统剪贴板的信息写入问题。在此,针对这4项功能的算法思想实现将给出如下的综合论述。
2 主要功能的实现
2.1智能终端与PC平台的Socket连接的建立
下面,首先简述使用Socket建立网络连接的基本过程。建立Socket连接至少需要一对套接字,其中一个运行于客户端,称之为ClientSocket,另外一个运行于服务器端,称之为ServerSocket。套接字之间的连接过程需要经过3个步骤,分别是:服务器监听、客户端请求、连接确认。根据上述这3个步骤进行分析,本文将PC平台端确定为服务器端,Android端确定为客户端,为此提出基于Socket通信的实现思路如下:在PC端使用Python语言,设计一个等待接入的模块,通过Android端设计一个主动接入的模块,两者之间再利用IP地址和端口进行匹配,从而完成连接的建立。具体实现过程如下。
2.1.1PC端的实现[2]
在本段程序中,PC端将向局域网开放了一个8080端口,作为Socket通信端口,而此时,只要Android端主动发送请求至该端口,就可以完成连接了。
具体实现代码如下:
2.1.2Android端的实现
在Android端的程序设计中,需要制作一个连接界面,利于使用者输入PC端IP地址及连接端口。当用户点击连接时,Android端就会向PC端发回连接请求,PC端应答后,连接成功。
Android端连接的主要代码如下:
连接成功后,Android端界面及PC端界面分别如图1、2所示。
2.2剪贴板监听功能的实现
2.2.1Android端剪贴板监听功能的实现
软件需要实现的效果是,当Android端发生了复制、剪贴的任何操作行为时,程序都能捕获到剪贴板的变化,并且获取操作的内容,以备发送到PC端满足需求使用。在Android端,研究使用Android开发环境中所提供的ClipboardManager类。通过使用该类中的OnPrimaryClipChangedListener接口可以轻松实现对Android系统剪贴板的监听。
具体实现监听功能的代码如下:
final ClipboardManager clipboard=(ClipboardManager)this.getSystemService(Context.CLIPBOARD_SERVICE);
图1 Android端程序界面Fig.1 Android end program interface
图2 PC端程序界面Fig.2 PC end program interface
2.2.2PC端剪贴板监听功能的实现
PC端的剪贴板监听实现方式与Android端有所不同,由于PC端存在多操作系统平台的可能,而每种平台的剪贴板管理方式又不一样,所以很难使用统一的方式直接对剪贴板进行直接监听。为此,软件所使用的是一种折衷的方式,即使用Python语言构建一个ClipboardListener类,实际使用时,将由此类创造一个对象,该对象会使用pyperclip模块[3]以指定的时间间隔,反复地对系统剪贴板的内容进行读取和比较,当内容发生变化时,则表明发生了复制或剪切的动作,此时便将更新后的内容通过CopyContentSending函数发送到Android端,以便剪贴板内容的同步。特别说明:pyperclip模块是跨平台的,所以符合PC端多平台的需要。
具体实现代码如下:
2.3Socket连接中信息的双向传输
2.3.1Android端数据的发送与接收
Android端数据发送与接收功能的实现,主要依赖于socket.getOutputStream和socket.getInputStream这2个方法。
具体实现代码如下:1)接收PC平台信息
2)向PC平台发送信息
2.3.2PC端数据的发送与接收
PC端使用Python来实现数据传输的过程也非常简单,基本原理与Android端相同,只要使用data=tcpCliSock.recv(BUFSIZ)来接收数据,而将信息保存在变量data中;另外,使用tcpCliSock.send(data)来发送数据,其中变量data保存的即是待发送的信息。
2.4剪贴板信息的写入
当同步数据传输到了对应的设备上,如何将该数据写入到剪贴板以备使用,将是整个程序步骤的终极一步,也是至为关键的一步。这里,还是将从Android端和PC端2个角度而分别给出解决办法。
2.4.1Android端剪切板数据的写入
设计中,主要还是使用前面提及的ClipboardManager类[4]来实现此项功能。ClipboardManager类中有一个setPrimaryClip方法。该方法可用来将指定内容设置到剪贴板上,因此高度贴切符合该功能的实现需要。
具体实现代码如下:
2.4.2PC端剪切板数据的写入
PC端尝试使用Python中Tkinter[5]模块来操作系统的剪切板。Tkinter和上文提到的pyperclip一样,也是在全平台下兼容,因此,可无需再考虑平台因素。Tkinter模块中对于系统剪贴板的操作主要包括如下方面:一是clipboard_get,用于获得剪贴板内容;二是clipboard_append,用于设置系统剪贴板内容;三是clipboard_clear(),用于清空系统剪贴板,此处设计中用到的是clipboard_append。
具体实现代码如下:
3 结束语
综合上述分析、设计可见,本文实现、并完成了基于Android系统的智能终端与PC平台的系统剪贴板的同步功能。当安装有该研发软件的Android设备与PC设备在同一局域网内运行,通过建立Socket连接后,就可以获取相互之间剪贴板数据的实时同步效果了。
当然,也需看到,文中研发程序的功能还未臻完善,在后续功能拓延中,可以将Android端的手工输入IP地址以及连接端口的过程优化为自动扫描服务器端,即当服务器开放服务端口,智能终端在扫描到端口后,就可以自动提示,并进行配对连接。另外,Socket功能非常强大,在实际使用中,不仅可以将其用来进行简单文本的传输,也可以进行各类文件的传输,如此即会使得智能终端与PC平台端的数据交换趋于更为灵活和丰富。
[1]李现凡,高建荣.基于Socket编程接口的局域网即时通信系统的开发实现[J].常州轻工职业技术学院学报,2006(4):14-18.
[2]宋瑾.基于ProtocolBuffer协议的服务端-客户端通信[J].电脑编程技巧与维护,2014(12):100-101.
[3]Magnus Lie Hetland.Beginning Python From Novice to Professional[M].2th ed.New York:APress,2009.
[4]Android.ClipboardManager|Android Developers[DB/OL].[2016-03-29].http://developer.android.com/reference/android/ content/ClipboardManager.html.
[5]Python Wiki.TkInter-Python Wiki[DB/OL].[2016-03-29]. https://wiki.python.org/moin/TkInter.
Implementation of Android and PC platform clipboard synchronization in LAN
ZHU Yalin
(Nantong Normal College,Rugao Jiangsu 226500,China)
The popularity of intelligent terminals makes people's information transmission and data exchange become more convenient,meanwhile makes the relationship between the smart terminal and PC platform become inseparable.In the various functions of data exchange between the smart terminal and PC platform,a kind of function is very useful,but in the mainstream software is not universal,that is the real time synchronization between the two clipboard.With the help of the powerful function about Socket,the paper designs and implements real-time synchronization clipboard functions between the LAN Android system and PC platform program.
LAN;Android;PC;Python;Socket;clipboard;synchronous
TP393.0
A
2095-2163(2016)03-0046-03
2016-04-11
全国教育信息技术研究2015年度青年专项课题(156242691)。
朱亚林(1982-),男,硕士,讲师,主要研究方向:计算机应用技术、信息技术。