目前平板市场迅速发展,智能手机快速普及,3G网络更加流畅,各种移动终端及通信设备迅速普及开来。许多新的设备如雨后春笋般层出不穷,但总体来看,他们都有一些共同的特性,那就是具备高清晰的显示能力,屏幕比较大、有良好的视觉效果,支持友好的触摸交互方式,带有很多新式的传感器模块,如GPS,温度感应器、距离感应器、光线感应器等,支持多种通信方式,如蓝牙、NFC、WiFi,2G/3G网络,支持有线数据传输和有线网络链接,高性能的处理和显示性能,可以支持3D游戏。所有这些都让人产生无限遐想,本文就此做一些设想。
关于屏幕的显示区域
智能手机和平板电脑的屏幕除了拥有显示功能外,同时也是实现交互的触摸区域。用户在屏幕上的触摸行为包括在屏幕上任意方向、任意速度的滑动,当然所有的这一切都仅限于屏幕范围之内。设想如果用户的手指划出了屏幕,那么这意味着什么呢?很明显,用户可能是想把当前正在查看的图片、网页或者文件等抛给身边的朋友。当然,不小心划出去了也是一种情况,这种情况就不是这里要讨论的问题了。
现在假设用户可以通过用手指按住一个图片、图标或者网页(姑且称为按住摸个东西吧,这样描述起来更简单一点)并把这东西向外抛出去,抛给他身边的其他终端持有者,那么这里面需要哪些接口呢?
想了下,我把这个过程设想为一个广播和听广播的过程,当然这里面并没有特定的广播和听广播的角色限制,作为抽象的终端设备,谁都可以向外广播,谁也都可以听广播。为此,我需要用某个名字来描述我设想的这个通信接口,想了很多名字,比如Send-Receive,Put-Get、Shout-Listen等,很多很多,最后想了下,因为我这里更多的是想表达一个概念,而不是具体的知识,因此我决定拿一个我个人觉得比较形象的名字——Shoot-OnShoot。之所以说这个名字比较形象,是因为我把这个数据传输过程想象成向外发射一个东西,如同射击一样,我们可以打出去,也可能被打,Shoot-OnShoot想表达的正是这样一个概念。
Shoot-OnShoot接口定义
Shoot(Shooter sender,ShootEventArg e);
Shoot接口用于向外抛出信息,比如用户可以按住当前正在浏览的图片并且抛向另一个终端,当用户的手指划出屏幕边界后,就应该把这个图片当做一个数据包,通过Shoot接口向外发射出去。
OnShoot(Shooter sender,ShootEventArg e);
移动终端间通过某种通信渠道建立了通信链路后,就应该开始侦听外界的Shoot信息,如同听广播一样,一旦接收到外界的广播信息,终端就应该立即执行相应的操作,比如接收数据或者给对方一个反馈信息等。以图片(或者文件)为例,数据接收完毕后,应该通过OnShoot通知操作系统,打开该文件。
总之Shoot接口用于向外发出信息,OnShoot则用于接收信息,这里面需要建立一些硬件之间的通信协议和标准等,对于这方面,我不是搞通信的,因此我也不懂,就略过不提了。此外,我还想到的是多传感器之间的协同。比如抛出动作,实际上包含了很多信息。如抛出什么?是文件、名片还是其他什么数据包;抛给谁,我们可能需要通过方向来确定抛给谁,这个时候可能需要GPS模块提供坐标信息;还有就是我们抛出的数据包的私密性,一些信息,比如游戏中,可能建立游戏并不需要知道对方是谁,只要想玩就都可以加入进来,这个时候数据包可能就是完全开放的,接收到的人都可以解析并响应,而如果我们传输一些文件,则可能需要附加一些访问限制信息或者类似密码之类的文件保护机制。当然这里罗列的并不全面,还有很多方面,鉴于这里仅仅是想表达这样一个意思,就不再深入探讨了。
Shoot-OnShoot接口一个是发出者、一个是接收者,代表的是发送方和接受方,通信过程中所有可能需要的信息,都需要通过接口参数来传递,比如数据发出者的信息、抛出方向、接受者的信息、数据类型、数据响应程序的信息等。
用户交互方式
上面设想了一种新的通信机制,如果这些可以在硬件上实现,比如如果通过蓝牙可以实现快速、流畅的文件传输,那么以浏览图片为例,用户的手指如果在屏幕内部滑动,那么手持设备的响应应该是移动图片或者切换图片,如果用户的手指划出了屏幕,那么这个时候就应该理解为向外抛出该文件,此时手持设备应该发出一个Shoot信号,而与其通过蓝牙建立了通信链路的终端都应该通过侦听OnShoot事件来完成数据传输并提示用户。当然对于图片,可以不提示就直接显示。这里,软件工程师们可以为这个过程添加一些优美的动画特效,让用户感觉图片是扔出去的一样。
对于对战类游戏,我们可以为游戏设置一些道具,当用户拥有这个道具时,就可以按住这个道具的图标,通过抛出动作,把这个道具施加给其它用户。这里假设有多部手机正在进行一个多人之间的赛车游戏,类似于电脑上的跑跑卡丁车一样,游戏者之间可以相互施加不同的道具。假设我们的道具里有可以加速的道具,也有可以减速的道具,这些道具都可以通过抛出动作抛出去并施加给别人。这种情况下,当一个用户拥有了一个加速道具时,他可以自己用,也可以把他抛给自己的队友,这里就应该有一个方向问题,也就是说多部终端之间通过空间位置关系以及你抛出道具的方向来判断你把道具施加给谁。如果向你的队友抛去那么你的队友就会收到那个道具并被加速,当然如果你恰好没有把握好方向,这个道具可能会让你的对手加速。
如果这种终端间的交互方式可以实现,那么你可以想象一下移动终端间的对战类游戏将会变得多么有趣。我们可以编写拳击游戏,通过Shoot-OnShoot模式进行拳击对战,划出的速度代表了你出拳的力度,划出的方向决定了你的拳有没有打中对方;我们也可以让愤怒的小鸟砸向你身边的其他手机用户;可以让你正在浏览的优美图画在挥指间传递给你身边的人...
所有的这一切,都只为一个目的,那就是打破终端之间的界限,让信息在终端间自由、顺畅的流动起来。