CN115657918A - 一种跨设备的对象拖拽方法及设备 - Google Patents
一种跨设备的对象拖拽方法及设备 Download PDFInfo
- Publication number
- CN115657918A CN115657918A CN202211272243.1A CN202211272243A CN115657918A CN 115657918 A CN115657918 A CN 115657918A CN 202211272243 A CN202211272243 A CN 202211272243A CN 115657918 A CN115657918 A CN 115657918A
- Authority
- CN
- China
- Prior art keywords
- terminal
- mouse
- event
- display screen
- drag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 181
- 230000000977 initiatory effect Effects 0.000 claims abstract description 15
- 230000033001 locomotion Effects 0.000 claims description 174
- 238000003825 pressing Methods 0.000 claims description 150
- 230000004044 response Effects 0.000 claims description 40
- 230000008569 process Effects 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 7
- 230000001976 improved effect Effects 0.000 abstract description 10
- 230000003993 interaction Effects 0.000 abstract description 8
- 230000001965 increasing effect Effects 0.000 abstract description 7
- 238000007726 management method Methods 0.000 description 143
- 230000005540 biological transmission Effects 0.000 description 55
- 239000010410 layer Substances 0.000 description 35
- 238000012545 processing Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 30
- 238000004891 communication Methods 0.000 description 27
- 230000006870 function Effects 0.000 description 21
- 238000005516 engineering process Methods 0.000 description 20
- 230000001960 triggered effect Effects 0.000 description 13
- 238000012546 transfer Methods 0.000 description 12
- 238000010295 mobile communication Methods 0.000 description 11
- 238000006073 displacement reaction Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 10
- 230000001413 cellular effect Effects 0.000 description 8
- 238000013507 mapping Methods 0.000 description 6
- 238000004088 simulation Methods 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 5
- 239000000203 mixture Substances 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 229920001621 AMOLED Polymers 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 210000000988 bone and bone Anatomy 0.000 description 2
- 239000012792 core layer Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000010985 leather Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 239000002096 quantum dot Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/0485—Scrolling or panning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04812—Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/0486—Drag-and-drop
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请提供一种跨设备的对象拖拽方法及设备,涉及电子设备领域。提高了多终端协同使用的使用效率,增加了多终端协同使用时终端之间的交互。具体方案为:第二终端在第二终端显示的对象上显示第一光标;第二终端接收用户使用第一终端的输入设备输入的拖拽操作,拖拽操作用于发起针对对象的拖拽;响应于拖拽操作,第二终端在第二终端的显示屏上显示对象随第一光标移动的动画;第二终端在确定该对象被拖出第二终端的显示屏的边缘时,向第一终端发送拖拽数据,用于第一终端接续拖拽。
Description
本申请是分案申请,原申请的申请号是202010747180.5,原申请日是2020年7月29日,原申请的全部内容通过引用结合在本申请中。
技术领域
本申请涉及电子设备领域,尤其涉及一种跨设备的对象拖拽方法及设备。
背景技术
随着电子技术及移动互联网的发展,一个用户可同时拥有更多如手机、平板电脑、个人电脑(personal computer,PC)、智能家居设备(如电视机)等终端。一般情况下,各个终端的使用都是比较独立的。在如协同办公等有多终端协同使用需求的场景下,用户会将多个终端连接起来一起使用。例如,用户拥有一台PC和一部手机,用户可将PC和手机采用无线或有线的方式连接起来一起配合使用,实现PC和手机的协同办公。
发明内容
本申请实施例提供一种跨设备的对象拖拽方法,在多终端(如PC和手机)协同使用的场景下,利用键鼠共享技术,实现了手机中如应用图标,应用界面,文件,文本或文件夹等对象从手机到PC的拖拽,提高了PC和手机协同使用的使用效率,增加了多终端协同使用时终端之间的交互。
为达到上述目的,本申请实施例采用如下技术方案:
本申请的第一方面,提供一种跨设备的对象拖拽方法,该方法可以应用于第二终端,该第二终端与第一终端连接,该方法可以包括:第二终端在第二终端显示的对象上显示第一光标;第二终端接收用户使用第一终端的输入设备输入的拖拽操作,该拖拽操作用于发起针对对象的拖拽;响应于拖拽操作,第二终端在第二终端的显示屏上显示对象随第一光标移动的动画;第二终端在确定该对象被拖出第二终端的显示屏的边缘时,向第一终端发送拖拽数据。
作为一种示例,上述第一终端的输入设备可以是鼠标,触摸板等。第一光标可以为显示在第二终端显示屏上的光标。
采用上述技术方案,在多个终端协同使用的场景中,用户可利用如鼠标等输入设备,通过拖拽的方式将一个终端上的对象跟随光标在参与协同使用的多个终端间穿梭。如,用户可以使用一个终端的输入设备,完成其他终端上的对象从该其他终端到该终端的拖拽,提高了多终端协同使用的使用效率,增加了多终端协同使用时终端之间的交互,提高了用户的使用体验。
在一种可能的实现方式中,上述拖拽数据可以用于第一终端在第一终端的显示屏上显示对象随第二光标移动的动画。其中,第二光标可以为显示在第一终端显示屏上的光标。通过将拖拽数据发送给其他终端,可使得该其他终端可根据用户输入的操作继续在该其他终端上显示对象随光标移动的动画,实现了拖拽的接续。
在另一种可能的实现方式中,上述对象可以为应用的图标;或者,上述对象可以为窗口,窗口中包括应用的界面;当对象为应用的图标时,上述拖拽数据可以包括:应用的图标;当对象为窗口时,上述拖拽数据可以包括:应用的界面。
在另一种可能的实现方式中,在向第一终端发送拖拽数据之后,该方法还可以包括:第二终端接收来自第一终端的指示消息,该指示消息是用户使用第一终端的输入设备输入拖拽释放操作后第一终端发送的,用于指示对对象的拖拽结束;第二终端向第一终端发送数据,该数据用于第一终端在第一终端的显示屏上显示应用的界面。在对该对象的拖拽结束后,通过向第一终端发送对应数据,以便第一终端可在第一终端的显示屏上显示被拖拽对象对应的应用的界面。
在另一种可能的实现方式中,当对象为应用的图标时,在第二终端接收用户使用第一终端的输入设备输入的拖拽操作之后,该方法还可以包括:第二终端根据应用的图标创建拖拽对象,该拖拽对象可以包括:与应用的图标相同的图标;响应于拖拽操作,第二终端在第二终端的显示屏上显示对象随第一光标移动的动画,包括:响应于拖拽操作,第二终端显示拖拽对象随第一光标移动的动画。创建的与被拖拽的应用的图标相同的图标,可用于拖拽。
在另一种可能的实现方式中,当对象为窗口时,在第二终端在第二终端显示的对象上显示第一光标之前,该方法还可以包括:第二终端显示应用的界面;在第一光标显示在第二终端的状态栏上时,第二终端接收用户使用第一终端的输入设备输入的长按操作,用于触发应用的界面窗口化;响应于长按操作,第二终端显示窗口;该窗口具体包括应用的界面截图,上述拖拽数据具体包括应用的界面截图。
在另一种可能的实现方式中,第二终端在第二终端的显示屏上显示对象随第一光标移动的动画,可以包括:第二终端在第二终端的显示屏上显示对象的阴影随第一光标移动的动画。
在另一种可能的实现方式中,上述对象可以为文本,文件或文件夹;拖拽数据包括拖拽事件内容和阴影的位图;其中,对象为文本时,拖拽事件内容包括文本,对象为文件或文件夹时,拖拽事件内容为文件路径。
在另一种可能的实现方式中,在响应于拖拽操作,第二终端在第二终端的显示屏上显示对象随第一光标移动的动画之后,该方法还可以包括:第二终端获取并缓存拖拽数据。
在另一种可能的实现方式中,在向第一终端发送拖拽数据之前,方法还包括:第二终端接收来自第一终端的请求消息,请求消息用于请求拖拽数据;向第一终端发送拖拽数据,可以包括:第二终端向第一终端发送缓存的拖拽数据。
在另一种可能的实现方式中,在第二终端在第二终端显示的对象上显示第一光标之前,该方法还可以包括:第二终端接收来自第一终端的第一穿梭状态信息,第一穿梭状态信息用于指示穿梭开始;响应于第一穿梭状态信息,第二终端在第二终端上显示第一光标。在接收到指示穿梭开始的穿梭状态信息后,用户可使用第一终端的输入设备实现对第二终端的控制。
在另一种可能的实现方式中,在第二终端在第二终端上显示第一光标之后,该方法还可以包括:第二终端接收用户使用第一终端的输入设备输入的移动第一光标的操作;响应于移动第一光标的操作,第二终端在第二终端的显示屏上显示第一光标移动的动画,直到第一光标移动到对象上。在光标穿梭开始后,用户可使用第一终端的输入设备实现对第二终端的控制。
在另一种可能的实现方式中,上述拖拽操作可以包括按下操作和移动操作;第二终端接收用户使用第一终端的输入设备输入的拖拽操作,包括:第二终端接收来自第一终端的第一操作参数,第一操作参数是用户使用第一终端的输入设备执行按下操作后第一终端接收到的按下事件包含的操作参数;第二终端接收来自第一终端的第二操作参数,第二操作参数是用户使用第一终端的输入设备执行移动操作后第一终端接收到的移动事件包含的操作参数;第二终端根据第一操作参数模拟按下事件,根据第二操作参数模拟移动事件,按下事件和移动事件用于指示发起针对对象的拖拽;响应于拖拽操作,第二终端在第二终端的显示屏上显示对象随第一光标移动的动画,包括:响应于按下事件和移动事件,第二终端显示对象随第一光标移动的动画。
在另一种可能的实现方式中,第二终端接收用户使用第一终端的输入设备输入的移动第一光标的操作,可以包括:第二终端接收来自第一终端的第三操作参数,第三操作参数是用户使用第一终端的输入设备执行移动操作后第一终端接收到的移动事件包含的操作参数;第二终端根据第三操作参数模拟移动事件,移动事件用于指示移动第一光标。
在另一种可能的实现方式中,在第二终端在确定对象被拖出第二终端的显示屏的边缘后,该方法还可以包括:第二终端向第一终端发送第二穿梭状态信息,该第二穿梭状态信息用于指示穿梭结束。通过向第一终端发送指示穿梭结束的穿梭状态信息,可使得用户使用第一终端的输入设备实现对第一终端的控制。
在另一种可能的实现方式中,长按操作可以包括按下操作和抬起操作;第二终端接收用户使用第一终端的输入设备输入的长按操作,可以包括:第二终端接收来自第一终端的第四操作参数,第四操作参数是第一光标显示在状态栏上时,用户使用第一终端的输入设备执行按下操作后第一终端接收到的按下事件包含的操作参数;第二终端接收来自第一终端的第五操作参数,第五操作参数是用户执行按下操作一段时间后使用第一终端的输入设备执行抬起操作后第一终端接收到的抬起事件包含的操作参数;第二终端根据第四操作参数模拟按下事件,根据第五操作参数模拟抬起事件,按下事件和抬起事件用于触发应用的界面窗口化;响应于长按操作,第二终端显示窗口,包括:响应于按下事件和抬起事件,第二终端显示窗口。
在另一种可能的实现方式中,该方法还可以包括:第二终端在与第一终端的连接建立成功后,创建虚拟输入设备;或者,第二终端接收来自第一终端的通知消息,通知消息用于指示第一终端的键鼠共享模式已开启,响应于通知消息,第二终端创建虚拟输入设备;其中,虚拟输入设备用于第二终端根据操作参数模拟输入事件。借助键鼠共享技术,实现了使用一个终端的输入设备在多个终端间对象的拖拽。
本申请的第二方面,提供一种跨设备的对象拖拽方法,该方法可以应用于第一终端,该第一终端与第二终端连接,该方法可以包括:第一终端向第二终端发送用户使用第一终端的输入设备输入的拖拽操作的数据,该拖拽操作用于发起针对第二终端显示的对象的拖拽;第一终端接收来自第二终端的拖拽数据,该拖拽数据是对象随第一光标在第二终端的显示屏上移动的过程中,第二终端确定对象被拖出第二终端的显示屏的边缘后向第一终端发送的。
作为一种示例,上述第一终端的输入设备可以是鼠标,触摸板等。第一光标可以为显示在第二终端显示屏上的光标。
采用上述技术方案,在多个终端协同使用的场景中,用户可利用如鼠标等输入设备,通过拖拽的方式将一个终端上的对象跟随光标在参与协同使用的多个终端间穿梭。如,用户可以使用一个终端的输入设备,完成其他终端上的对象从该其他终端到该终端的拖拽,提高了多终端协同使用的使用效率,增加了多终端协同使用时终端之间的交互,提高了用户的使用体验。
在一种可能的实现方式中,在第一终端接收来自第二终端的拖拽数据之后,该方法还可以包括:第一终端根据拖拽数据和拖拽操作,在第一终端的显示屏上显示对象随第二光标移动的动画。其中,第二光标可以为显示在第一终端显示屏上的光标。根据接收到的拖拽数据,及用户输入的操作可继续在该第一终端上显示对象随光标移动的动画,实现了拖拽的接续。
在另一种可能的实现方式中,上述对象可以为应用的图标;或者,上述对象可以为窗口,窗口中包括应用的界面;当对象为应用的图标时,上述拖拽数据可以包括:应用的图标;当对象为窗口时,上述拖拽数据可以包括:应用的界面。
在另一种可能的实现方式中,在第一终端接收来自第二终端的拖拽数据之后,该方法还包括:第一终端接收用户使用第一终端的输入设备输入的拖拽释放操作;响应于拖拽释放操作,第一终端在第一终端的显示屏上显示应用的界面。在对该对象的拖拽结束后,第一终端可在第一终端的显示屏上显示被拖拽对象对应的应用的界面。
在另一种可能的实现方式中,第一终端在第一终端的显示屏上显示应用的界面,可以包括:第一终端向第二终端发送指示消息,该指示消息可以用于指示对对象的拖拽结束;第一终端接收来自第二终端的数据;第一终端根据数据,在第一终端的显示屏上显示应用的界面。
在另一种可能的实现方式中,当对象为窗口时,在第一终端向第二终端发送用户使用第一终端的输入设备输入的拖拽操作的数据之前,该方法还可以包括:第一终端向第二终端发送用户使用第一终端的输入设备输入的长按操作的数据,长按操作是第一光标显示在第二终端的状态栏上时用户输入的,用于触发第二终端显示的应用的界面窗口化;窗口具体包括应用的界面截图,拖拽数据具体包括应用的界面截图。
在另一种可能的实现方式中,上述第一终端根据拖拽数据和拖拽操作,在第一终端的显示屏上显示对象随第二光标移动的动画,可以包括:第一终端根据拖拽数据和拖拽操作,在第一终端的显示屏上显示对象的阴影随第二光标移动的动画。
在另一种可能的实现方式中,上述对象可以为文本,文件或文件夹;拖拽数据包括拖拽事件内容和阴影的位图;其中,对象为文本时,拖拽事件内容包括文本,对象为文件或文件夹时,拖拽事件内容为文件路径。
在另一种可能的实现方式中,在第一终端向第二终端发送用户使用第一终端的输入设备输入的拖拽操作的数据之前,该方法还可以包括:第一终端确定第二光标滑出第一终端的显示屏的边缘。用户通过将第一终端显示屏上的光标滑出第一终端显示屏的边缘,以触发光标穿梭。
在另一种可能的实现方式中,在第一终端确定第二光标滑出第一终端的显示屏的边缘之前,该方法还可以包括:第一终端接收用户使用第一终端的输入设备输入的移动第二光标的操作;响应于移动第二光标的操作,第一终端在第一终端的显示屏上显示第二光标移动的动画。
在另一种可能的实现方式中,在第一终端确定第二光标滑出第一终端的显示屏的边缘之后,该方法还可以包括:第一终端向第二终端发送第一穿梭状态信息,第一穿梭状态信息用于指示穿梭开始。在光标发生穿梭后,通过向其他终端发送用于指示穿梭开始的穿梭状态信息,使得其他终端为接续拖拽做好准备,如显示光标。
在另一种可能的实现方式中,在第一终端确定第二光标滑出第一终端的显示屏的边缘之后,该方法还可以包括:第一终端向第二终端发送用户使用第一终端的输入设备输入的移动第一光标的操作的数据,用于第二终端在第二终端的显示屏上显示第一光标移动的动画。在光标发生穿梭后,第一终端通过将用户使用第一终端的输入的操作发送给其他终端,以实现第一终端的输入设备对其他终端的控制。
在另一种可能的实现方式中,上述拖拽操作可以包括按下操作和移动操作;第一终端向第二终端发送用户使用第一终端的输入设备输入的拖拽操作的数据,包括:在用户使用第一终端的输入设备执行按下操作后,第一终端拦截按下事件;第一终端向第二终端发送按下事件包括的第一操作参数;在用户使用第一终端的输入设备执行移动操作后,第一终端拦截移动事件;第一终端向第二终端发送移动事件包括的第二操作参数;其中,第一操作参数和第二操作参数分别用于第二终端模拟按下事件和移动事件,进而用于指示发起针对对象的拖拽。
在另一种可能的实现方式中,第一终端向第二终端发送用户使用第一终端的输入设备输入的移动第一光标的操作的数据,包括:在用户使用第一终端的输入设备执行移动操作后,第一终端拦截移动事件;第一终端向第二终端发送移动事件包括的第三操作参数,第三操作参数用于第二终端模拟移动事件,进而用于指示移动第一光标。
在另一种可能的实现方式中,在第一终端根据拖拽数据和拖拽操作,在第一终端的显示屏上显示对象随第二光标移动的动画之前,该方法还可以包括:第一终端接收来自第二终端的第二穿梭状态信息,第二穿梭状态信息用于指示穿梭结束。
在另一种可能的实现方式中,在第一终端接收来自第二终端的拖拽数据之前,该方法还可以包括:第一终端向第二终端发送请求消息,请求消息用于请求拖拽数据。
在另一种可能的实现方式中,在第一终端接收来自第二终端的第二穿梭状态信息之后,该方法还可以包括:第一终端取消输入事件的拦截;第一终端根据拖拽操作和拖拽数据,在第一终端的显示屏上显示对象随第二光标移动的动画,包括:在用户使用第一终端的输入设备执行移动操作后,第一终端接收移动事件;第一终端生成按下事件;第一终端根据移动事件,按下事件和拖拽数据,在第一终端的显示屏上显示对象随第二光标移动的动画。
在另一种可能的实现方式中,在第一终端确定第二光标滑出第一终端的显示屏的边缘之后,该方法还可以包括:第一终端显示隐形窗口,该隐形窗口的透明度大于阈值,隐形窗口用于发起拖拽事件。
在另一种可能的实现方式中,长按操作包括按下操作和抬起操作;第一终端向第二终端发送用户使用第一终端的输入设备输入的长按操作的数据,包括:在用户使用第一终端的输入设备执行按下操作后,第一终端拦截按下事件,第一终端向第二终端发送按下事件包括的第四操作参数;在用户执行按下操作一段时间后使用第一终端的输入设备执行抬起操作后,第一终端拦截抬起事件,第一终端向第二终端发送抬起事件包括的第五操作参数;其中,第四操作参数和第五操作参数分别用于第二终端模拟按下事件和抬起事件,进而用于触发应用的界面窗口化。
本申请的第三方面,提供一种跨设备的对象拖拽装置,该装置可以应用于第二终端,第二终端与第一终端连接,该装置可以包括:显示单元,用于在第二终端显示的对象上显示第一光标;接收单元,用于接收用户使用第一终端的输入设备输入的拖拽操作,拖拽操作用于发起针对对象的拖拽;显示单元,还用于响应于拖拽操作,在第二终端的显示屏上显示对象随第一光标移动的动画;发送单元,用于在确定对象被拖出第二终端的显示屏的边缘时,向第一终端发送拖拽数据。
在一种可能的实现方式中,拖拽数据可以用于第一终端在第一终端的显示屏上显示对象随第二光标移动的动画。
在另一种可能的实现方式中,对象可以为应用的图标;或者,对象可以为窗口,窗口中包括应用的界面;对象为应用的图标时,拖拽数据包括:应用的图标;对象为窗口时,拖拽数据包括:应用的界面。
在另一种可能的实现方式中,接收单元,还用于接收来自第一终端的指示消息,指示消息是用户使用第一终端的输入设备输入拖拽释放操作后第一终端发送的,用于指示对对象的拖拽结束;发送单元,还用于向第一终端发送数据,数据用于第一终端在第一终端的显示屏上显示应用的界面。
在另一种可能的实现方式中,当对象为应用的图标时,装置还包括:创建单元;创建单元,用于根据应用的图标创建拖拽对象,拖拽对象包括:与应用的图标相同的图标;显示单元,具体用于响应于拖拽操作,显示拖拽对象随第一光标移动的动画。
在另一种可能的实现方式中,当对象为窗口时,显示单元,还用于显示应用的界面;接收单元,还用于在第一光标显示在第二终端的状态栏上时,接收用户使用第一终端的输入设备输入的长按操作,用于触发应用的界面窗口化;显示单元,还用于响应于长按操作,显示窗口;窗口具体包括应用的界面截图,拖拽数据具体包括应用的界面截图。
在另一种可能的实现方式中,显示单元,具体用于在第二终端的显示屏上显示对象的阴影随第一光标移动的动画。
在另一种可能的实现方式中,对象可以为文本,文件或文件夹;拖拽数据包括拖拽事件内容和阴影的位图;其中,对象为文本时,拖拽事件内容包括文本,对象为文件或文件夹时,拖拽事件内容为文件路径。
在另一种可能的实现方式中,该装置还可以包括:获取单元,用于取并缓存拖拽数据。
在另一种可能的实现方式中,接收单元,还用于接收来自第一终端的请求消息,请求消息用于请求拖拽数据;发送单元,具体用于向第一终端发送缓存的拖拽数据。
在另一种可能的实现方式中,接收单元,还用于接收来自第一终端的第一穿梭状态信息,第一穿梭状态信息用于指示穿梭开始;显示单元,还用于响应于第一穿梭状态信息,在第二终端上显示第一光标。
在另一种可能的实现方式中,接收单元,还用于接收用户使用第一终端的输入设备输入的移动第一光标的操作;显示单元,还用于响应于移动第一光标的操作,在第二终端的显示屏上显示第一光标移动的动画,直到第一光标移动到对象上。
在另一种可能的实现方式中,拖拽操作包括按下操作和移动操作;接收单元,具体用于接收来自第一终端的第一操作参数,第一操作参数是用户使用第一终端的输入设备执行按下操作后第一终端接收到的按下事件包含的操作参数;接收来自第一终端的第二操作参数,第二操作参数是用户使用第一终端的输入设备执行移动操作后第一终端接收到的移动事件包含的操作参数;该装置还可以包括:模拟单元,用于根据第一操作参数模拟按下事件,根据第二操作参数模拟移动事件,按下事件和移动事件用于指示发起针对对象的拖拽;显示单元,具体用于响应于按下事件和移动事件,显示对象随第一光标移动的动画。
在另一种可能的实现方式中,接收单元,具体用于接收来自第一终端的第三操作参数,第三操作参数是用户使用第一终端的输入设备执行移动操作后第一终端接收到的移动事件包含的操作参数;该装置还可以包括:模拟单元,用于根据第三操作参数模拟移动事件,移动事件用于指示移动第一光标。
在另一种可能的实现方式中,发送单元,还用于向第一终端发送第二穿梭状态信息,第二穿梭状态信息用于指示穿梭结束。
在另一种可能的实现方式中,长按操作包括按下操作和抬起操作;接收单元,具体用于接收来自第一终端的第四操作参数,第四操作参数是第一光标显示在状态栏上时,用户使用第一终端的输入设备执行按下操作后第一终端接收到的按下事件包含的操作参数;接收来自第一终端的第五操作参数,第五操作参数是用户执行按下操作一段时间后使用第一终端的输入设备执行抬起操作后第一终端接收到的抬起事件包含的操作参数;该装置还可以包括:模拟单元,用于根据第四操作参数模拟按下事件,根据第五操作参数模拟抬起事件,按下事件和抬起事件用于触发应用的界面窗口化;显示单元,具体用于响应于按下事件和抬起事件,显示窗口。
在另一种可能的实现方式中,创建单元,还用于在与第一终端的连接建立成功后,创建虚拟输入设备;或者,接收单元,还用于接收来自第一终端的通知消息,通知消息用于指示第一终端的键鼠共享模式已开启,创建单元,还用于响应于通知消息,创建虚拟输入设备;其中,虚拟输入设备用于第二终端根据操作参数模拟输入事件。
本申请的第四方面,提供一种跨设备的对象拖拽装置,该装置应用于第一终端,第一终端与第二终端连接,该装置可以包括:发送单元,用于向第二终端发送用户使用第一终端的输入设备输入的拖拽操作的数据,拖拽操作用于发起针对第二终端显示的对象的拖拽;接收单元,用于接收来自第二终端的拖拽数据,拖拽数据是对象随第一光标在第二终端的显示屏上移动的过程中,第二终端确定对象被拖出第二终端的显示屏的边缘后向第一终端发送的。
在一种可能的实现方式中,该装置还可以包括:显示单元,用于根据拖拽数据和拖拽操作,在第一终端的显示屏上显示对象随第二光标移动的动画。
在另一种可能的实现方式中,该对象可以为应用的图标;或者,该对象可以为窗口,窗口中包括应用的界面;对象为应用的图标时,拖拽数据包括:应用的图标;对象为窗口时,拖拽数据包括:应用的界面。
在另一种可能的实现方式中,接收单元,还用于接收用户使用第一终端的输入设备输入的拖拽释放操作;显示单元,还用于响应于拖拽释放操作,在第一终端的显示屏上显示应用的界面。
在另一种可能的实现方式中,发送单元,还用于向第二终端发送指示消息,指示消息用于指示对对象的拖拽结束;接收单元,还用于接收来自第二终端的数据;显示单元,具体用于根据数据,在第一终端的显示屏上显示应用的界面。
在另一种可能的实现方式中,当对象为窗口时,发送单元,还用于向第二终端发送用户使用第一终端的输入设备输入的长按操作的数据,长按操作是第一光标显示在第二终端的状态栏上时用户输入的,用于触发第二终端显示的应用的界面窗口化;窗口具体包括应用的界面截图,拖拽数据具体包括应用的界面截图。
在另一种可能的实现方式中,显示单元,具体用于根据拖拽数据和拖拽操作,在第一终端的显示屏上显示对象的阴影随第二光标移动的动画。
在另一种可能的实现方式中,对象可以为文本,文件或文件夹;拖拽数据包括拖拽事件内容和阴影的位图;其中,对象为文本时,拖拽事件内容包括文本,对象为文件或文件夹时,拖拽事件内容为文件路径。
在另一种可能的实现方式中,该装置还可以包括:确定单元,用于确定第二光标滑出第一终端的显示屏的边缘。
在另一种可能的实现方式中,接收单元,还用于接收用户使用第一终端的输入设备输入的移动第二光标的操作;显示单元,还用于响应于移动第二光标的操作,在第一终端的显示屏上显示第二光标移动的动画。
在另一种可能的实现方式中,发送单元,还用于向第二终端发送第一穿梭状态信息,第一穿梭状态信息用于指示穿梭开始。
在另一种可能的实现方式中,发送单元,还用于向第二终端发送用户使用第一终端的输入设备输入的移动第一光标的操作的数据,用于第二终端在第二终端的显示屏上显示第一光标移动的动画。
在另一种可能的实现方式中,拖拽操作包括按下操作和移动操作;该装置还可以包括:拦截单元;拦截单元,用于在用户使用第一终端的输入设备执行按下操作后,拦截按下事件;发送单元,具体用于向第二终端发送按下事件包括的第一操作参数;拦截单元,还用于在用户使用第一终端的输入设备执行移动操作后,拦截移动事件;发送单元,具体用于向第二终端发送移动事件包括的第二操作参数;其中,第一操作参数和第二操作参数分别用于第二终端模拟按下事件和移动事件,进而用于指示发起针对对象的拖拽。
在另一种可能的实现方式中,拦截单元,用于在用户使用第一终端的输入设备执行移动操作后,拦截移动事件;发送单元,具体用于向第二终端发送移动事件包括的第三操作参数,第三操作参数用于第二终端模拟移动事件,进而用于指示移动第一光标。
在另一种可能的实现方式中,接收单元,还用于接收来自第二终端的第二穿梭状态信息,第二穿梭状态信息用于指示穿梭结束。
在另一种可能的实现方式中,发送单元,还用于向第二终端发送请求消息,请求消息用于请求拖拽数据。
在另一种可能的实现方式中,该装置还可以包括:拦截单元和输入单元;拦截单元,用于取消输入事件的拦截;输入单元,用于在用户使用第一终端的输入设备执行移动操作后,接收移动事件;输入单元,还用于生成按下事件;显示单元,具体用于根据移动事件,按下事件和拖拽数据,在第一终端的显示屏上显示对象随第二光标移动的动画。
在另一种可能的实现方式中,显示单元,还用于显示隐形窗口,隐形窗口的透明度大于阈值,隐形窗口用于发起拖拽事件。
在另一种可能的实现方式中,长按操作包括按下操作和抬起操作;拦截单元,用于在用户使用第一终端的输入设备执行按下操作后,拦截按下事件;发送单元,具体用于向第二终端发送按下事件包括的第四操作参数;拦截单元,还用于在用户执行按下操作一段时间后使用第一终端的输入设备执行抬起操作后,拦截抬起事件;发送单元,还用于向第二终端发送抬起事件包括的第五操作参数;其中,第四操作参数和第五操作参数分别用于第二终端模拟按下事件和抬起事件,进而用于触发应用的界面窗口化。
本申请的第五方面,提供一种跨设备的对象拖拽装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令时实现如第一方面或第一方面的可能的实现方式中任一项所述的方法,或者实现如第二方面或第二方面的可能的实现方式中任一项所述的方法。
本申请的第六方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令被处理器执行时实现如为执行指令时实现如第一方面或第一方面的可能的实现方式中任一项所述的方法,或者实现如第二方面或第二方面的可能的实现方式中任一项所述的方法。
本申请的第七方面,提供一种终端,该终端包括显示屏,一个或多个处理器和存储器;显示屏,处理器和存储器耦合;存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当计算机指令被终端执行时,使得该终端执行如第一方面或第一方面的可能的实现方式中任一项所述的方法,或者,使得该终端执行如第二方面或第二方面的可能的实现方式中任一项所述的方法。
本申请的第八方面,提供一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在终端中运行时,终端中的处理器执行第一方面或第一方面的可能的实现方式中任一项所述的方法,或者执行第二方面或第二方面的可能的实现方式中任一项所述的方法。
本申请的第九方面,提供一种跨设备的对象拖拽系统,该系统可以包括第一终端和第二终端,第一终端与第二终端连接。
第二终端在第二终端显示的对象上显示第一光标;第一终端向所述第二终端发送用户使用所述第一终端的输入设备输入的拖拽操作的数据;第二终端接收用户使用第一终端的输入设备输入的拖拽操作,该拖拽操作用于发起针对对象的拖拽;响应于拖拽操作,第二终端在第二终端的显示屏上显示对象随第一光标移动的动画;第二终端在确定对象被拖出第二终端的显示屏的边缘时,向第一终端发送拖拽数据。第一终端接收来自第二终端的拖拽数据。
在一种可能的实现方式中,第一终端根据拖拽数据和拖拽操作,在第一终端的显示屏上显示对象随第二光标移动的动画。
在另一种可能的实现方式中,第一终在确定第二光标滑出第一终端的显示屏的边缘后,向第二终端发送用户使用第一终端的输入设备输入的拖拽操作的数据。
在另一种可能的实现方式中,第一终端在确定第二光标滑出第一终端的显示屏的边缘后,向第二终端发送第一穿梭状态信息,第一穿梭状态信息用于指示穿梭开始。
在另一种可能的实现方式中,第二终端,还用于在确定对象被拖出第二终端的显示屏的边缘后,向第一终端发送第二穿梭状态信息,第二穿梭状态信息用于指示穿梭结束。
需要说明的是,本实施例中所述的对象被拖出终端(如第二终端)显示屏的边缘可以为该对象的部分区域被拖出(或者说溢出)终端显示屏,也可以为该对象的全部区域被拖出(或者说溢出)终端显示屏,还可以是对象随光标在终端显示屏移动时,光标滑出终端显示屏的边缘,本实施例在此不做具体限制。
可以理解地,上述提供的第三方面及其任一种可能的实现方式所述的跨设备的对象拖拽装置,第四方面及其任一种可能的实现方式所述的跨设备的对象拖拽装置,第五方面所述的跨设备的对象拖拽装置,第六方面所述的计算机可读存储介质,第七方面所述的终端,第八方面所述的计算机程序产品及第九方面所述的跨设备的对象拖拽系统所能达到的有益效果,可参考如第一方面或第二方面及其任一种可能的实现方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种系统架构的简化示意图;
图2A为本申请实施例提供的一种手机的结构示意图;
图2B为本申请实施例提供的一种软件架构的组成示意图;
图3为本申请实施例提供的一种跨设备的对象拖拽方法的流程示意图;
图4为本申请实施例提供的一种显示屏上坐标系的示意图;
图5A为本申请实施例提供的一种跨设备的对象拖拽界面示意图;
图5B为本申请实施例提供的另一种跨设备的对象拖拽界面示意图;
图6为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图7为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图8为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图9为本申请实施例提供的另一种跨设备的对象拖拽方法的流程示意图;
图10为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图11为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图12为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图13为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图14为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图15为本申请实施例提供的又一种跨设备的对象拖拽方法的流程示意图;
图16为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图17为本申请实施例提供的一种windows端的拖拽事件的数据结构示意图;
图18为本申请实施例提供的一种Android端的拖拽事件的数据结构示意图;
图19为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图20为本申请实施例提供的又一种跨设备的对象拖拽方法的流程示意图;
图21为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图22为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图23为本申请实施例提供的一种跨设备的对象拖拽装置的组成示意图;
图24为本申请实施例提供的另一种跨设备的对象拖拽装置的组成示意图;
图25为本申请实施例提供的一种芯片系统的组成示意图。
具体实施方式
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请实施例提供一种跨设备的对象拖拽方法及设备,该方法可以应用于多个终端协同使用的场景中。且在该场景中,借助键鼠共享技术,使用同一个输入设备(如鼠标,触摸板)完成对所有终端的控制。如,可实现如应用图标或应用界面等对象跨设备的拖拽。又如,通过拖拽的方式可将文本或文件等内容(或者说对象)在参与协同使用的多个终端间相互传递,且允许用户使用这些终端对传递的内容进行处理。采用本实施例提供的方法,可增加多终端协同使用时终端之间的交互,提高了用户的使用体验。
下面将结合附图对本申请实施例的实施方式进行详细描述。
请参考图1,为本申请实施例提供的一种可以应用上述方法的系统架构的简化示意图。该系统架构可以是本实施例中的跨设备的对象拖拽系统。如图1所示,该系统架构至少可以包括:第一终端101和第二终端102。
其中,第一终端101与输入设备101-1连接(如图1所示),或包括输入设备101-1(图1中未示出)。作为一种示例,该输入设备101-1可以为鼠标,触摸板,触摸屏等。图1中以输入设备101-1是鼠标为例示出。
在本实施例中,第一终端101和第二终端102可通过有线或无线的方式建立连接。基于建立的连接,第一终端101和第二终端102可配合一起使用。在本实施例中,第一终端101和第二终端102采用无线方式建立连接时采用的无线通信协议可以为无线保真(wireless fidelity,Wi-Fi)协议、蓝牙(Bluetooth)协议、ZigBee协议、近距离无线通信(Near Field Communication,NFC)协议等,还可以是各种蜂窝网协议,在此不做具体限制。
在第一终端101与第二终端102连接后,利用键鼠共享技术,用户可使用一套输入设备,如上述输入设备101-1实现对第一终端101和第二终端102两者的控制。也就是说,用户不仅可以使用第一终端101的输入设备101-1实现对第一终端101的控制,第一终端101还可将其输入设备101-1共享给第二终端102,供用户实现对第二终端102的控制。
例如,第二终端102中安装有一个或多个应用。第二终端102可在第二终端102的显示屏102-1上显示对应应用的图标。在本实施例中,在第一终端101和第二终端102建立连接后,利用键鼠共享技术,用户可使用上述输入设备101-1实现应用的图标从第二终端102的显示屏102-1到第一终端101的显示屏101-2的拖拽。
又例如,第二终端102的显示屏102-1上显示有应用的界面。在本实施例中,在第一终端101和第二终端102建立连接后,利用键鼠共享技术,用户可使用上述输入设备101-1实现该应用的界面从第二终端102的显示屏102-1到第一终端101的显示屏101-2的拖拽。
再例如,以上述输入设备101-1是鼠标为例。第一终端101与第二终端102连接后,在不启动投屏的前提下,利用键鼠共享技术,用户可使用鼠标,将第一终端101的文本或文件等内容,通过拖拽的方式,拖拽到第二终端102。用户还可以使用该鼠标,将第二终端102的文本或文件等内容,通过拖拽的方式,拖拽到第一终端101。
需要说明的是,本申请实施例在不启动投屏的前提下,不仅可以实现两个终端间内容的拖拽,还可以实现三个或三个以上终端间内容的拖拽。示例性的,当第二终端102还与其他设备,如称为第三终端建立了连接时,在本申请实施例中,在不启动投屏的前提下,利用键鼠共享技术,用户在将文本或文件等内容从一个终端拖拽到另一个终端后,还可继续通过拖拽的方式,将该内容拖拽到第三个终端。例如,继续以上述输入设备101-1是鼠标为例,在不启动投屏的前提下,用户使用鼠标,将第一终端101的文本或文件等内容,通过拖拽的方式,拖拽到第二终端102后,可继续通过拖拽的方式,将该内容拖拽到第三终端。在用户释放鼠标后,内容拖拽完成。
需要说明的是,本申请实施例中的终端,如上述第一终端101,又如上述第二终端102,上述第三终端,可以为手机,平板电脑,手持计算机,PC,蜂窝电话,个人数字助理(personal digital assistant,PDA),可穿戴式设备(如智能手表),智能家居设备(如电视机),车载电脑,游戏机,以及增强现实(augmented reality,AR)\虚拟现实(virtualreality,VR)设备等,本实施例对终端的具体形式不做特殊限制。其中,图1中以第一终端101为PC,第二终端102为手机为例示出。
在本实施例中,以终端为手机为例。请参考图2A,为本申请实施例提供的一种手机的结构示意图。
如图2A所示,手机可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。
其中,传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本实施例示意的结构并不构成对手机的具体限定。在另一些实施例中,手机可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以是手机的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,SIM接口,和/或USB接口等。
充电管理模块140用于从充电器接收充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为手机供电。电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141也可接收电池142的输入为手机供电。
手机的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。手机中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在手机上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在手机上的包括无线局域网(wireless localarea networks,WLAN)(如Wi-Fi网络),蓝牙(bluetooth,BT),全球导航卫星系统(globalnavigation satellite system,GNSS),调频(frequency modulation,FM),NFC,红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,手机的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得手机可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division mul tiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(globalnavigation satellite system,GLONASS),北斗卫星导航系统(beidou navigationsatellite system,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
手机通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,手机可以包括1个或N个显示屏194,N为大于1的正整数。
手机可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。在一些实施例中,手机可以包括1个或N个摄像头193,N为大于1的正整数。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行手机的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储手机使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
手机可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。当有触摸操作作用于显示屏194,手机根据压力传感器180A检测所述触摸操作强度。手机也可以根据压力传感器180A的检测信号计算触摸的位置。
陀螺仪传感器180B可以用于确定手机的运动姿态。气压传感器180C用于测量气压。磁传感器180D包括霍尔传感器。手机可以利用磁传感器180D检测翻盖皮套的开合。加速度传感器180E可检测手机在各个方向上(一般为三轴)加速度的大小。距离传感器180F,用于测量距离。手机可以利用接近光传感器180G检测用户手持手机贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。环境光传感器180L用于感知环境光亮度。指纹传感器180H用于采集指纹。手机可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。温度传感器180J用于检测温度。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于手机的表面,与显示屏194所处的位置不同。
骨传导传感器180M可以获取振动信号。按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和手机的接触和分离。手机可以支持1个或N个SIM卡接口,N为大于1的正整数。手机通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,手机采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在手机中,不能和手机分离。以下实施例中的方法可以在具有上述硬件结构的手机中实现。
结合图1,本申请实施例以第一终端101的软件系统是windows系统,第二终端102的软件系统是Android系统为例,示例性说明第一终端101和第二终端102的软件结构。请参考图2B,为本申请实施例提供的一种软件架构的组成示意图。
其中,如图2B所示,第一终端101的软件架构可以包括:应用层和windows系统(windows shell)。在一些实施例中,应用层可以包括安装在第一终端101的各个应用。应用层的应用可直接与windows系统交互。示例性的,应用层还可以包括键鼠模块,拖拽管理模块和传输管理模块。进一步的,应用层还可以包括窗口管理模块。
第二终端102的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。以第二终端102的软件系统是分层架构为例。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,如图2B所示,第二终端102可以包括应用层和框架层(framework,FWK)。应用层可以包括一系列应用程序包。例如,应用程序包可以包括设置,计算器,相机,短信息,音乐播放器等应用。应用层包括的应用可以是第二终端102的系统应用,也可以是第三方应用,本申请实施例在此不做具体限制。应用层还可以包括传输管理模块和拖拽管理模块。应用层还可以包括launcher。应用层还可以包括系统界面(systemUI)。框架层主要负责为应用层的应用提供应用编程接口(application programming interface,API)和编程框架。在本一些实施例中,框架层可以包括窗口管理器(或称为窗口管理服务)。当然,第二终端102还可以包括其他层,如内核层(图2B中未示出)等。该内核层是硬件和软件之间的层。内核层至少可以包含显示驱动,摄像头驱动,音频驱动,传感器驱动等。
在多终端协同使用的场景中,为了提高使用效率,用户可使用同一个输入设备实现对这多个终端的控制。在本实施例中,结合图1,以多个终端包括第一终端101和第二终端102,以第一终端101的输入设备101-1为鼠标为例。在第一终端101和第二终端102建立连接后,基于上述软件架构,并借助键鼠共享技术,用户可使用第一终端101的输入设备101-1实现对第一终端101和第二终端102的控制。例如,在一些实施例中,用户可利用第一终端101的输入设备101-1,实现第二终端102显示的应用的图标或应用的界面从第二终端102到第一终端101的拖拽。又例如,在另外一些实施例中,在不启动投屏的前提下,用户使用第一终端201的输入设备201-1,可将第一终端201的文件或文本等内容,通过拖拽的方式传递到第二终端202。还可将第二终端202的文件或文本等内容,通过拖拽的方式传递到第一终端201。也就是说,在不启动投屏的前提下,用户可利用第一终端201的输入设备201-1,通过拖拽的方式,实现应用中的文件或文本等内容在第一终端201和第二终端202之间的双向拖拽。
其中,键鼠共享技术可以是指用一个终端的输入设备(如鼠标,触摸板),实现对其他终端控制的技术。
需要说明的是,在本实施例中,上述拖拽管理模块也可以称为拖拽服务模块。另外,在上述实施例中,可以看到的是,第一终端101和第二终端102均包括传输管理模块,第一终端101和第二终端102之间的通信可以通过传输管理模块来实现。在其他一些实施例中,拖拽管理模块也可以具有与其他终端通信的功能,也就是说,第一终端101和第二终端102也可以均不包括传输管理模块,其之间的通信可以通过拖拽管理模块来实现,本实施例在此并不做具体限制。为了便于描述,以下实施例中以第一终端101和第二终端102之间的通信通过传输管理模块实现为例进行说明。
在一些实施例中,以下结合图1和图2B,以第一终端101为PC,第二终端102为手机,输入设备101-1为鼠标为例,结合附图对本实施例提供的方法进行详细介绍。
图3为本申请实施例提供的一种跨设备的对象拖拽方法的流程示意图。在本实施例中,对用户利用PC共享的鼠标,将手机显示的应用的图标(应用的图标即为被拖拽的对象)从手机拖拽到PC的实现过程进行介绍。如图3所示,该方法可以包括以下S301-S313。
S301、手机与PC建立连接。
在一些实施例中,手机与PC可以采用有线的方式建立连接。例如,手机与PC可通过数据线建立有线连接。
在其他一些实施例中,手机与PC可以采用无线的方式建立连接。其中,终端之间采用无线方式建立连接有两点要求,一个是终端之间需互相知晓对端的连接信息,另一个是各终端需具有传输能力。连接信息可以是终端的设备标识,如互联网协议(internetprotocol,IP)地址,端口号或终端登录的账号等。终端登录的账号可以是运营商为用户提供的账号,如华为账号等。终端登录的账号还可以为应用账号,如微信账号、优酷账号等。终端具有传输能力可以是近场通信能力,也可以是长距离通信能力。也就是说,终端间,如手机与PC建立连接采用的无线通信协议可以是如Wi-Fi协议或蓝牙协议或NFC协议等近场通信协议,也可以是蜂窝网协议。以手机与PC采用无线的方式建立连接为例。例如,用户可使用手机触碰PC的NFC标签,手机读取该NFC标签中保存的连接信息,如该连接信息中包括PC的IP地址。之后,手机可根据PC的IP地址采用NFC协议与PC建立连接。又例如,手机与PC均打开了蓝牙功能和Wi-Fi功能。PC可广播蓝牙信号,以发现周围的终端,如PC可显示发现的设备列表,该发现设备列表中可包括PC发现的手机的标识。另外,在PC进行设备发现的过程中也可与发现的设备互相交换连接信息,如IP地址。之后,在PC接收到用户在显示的设备列表中选择该手机的标识的操作后,PC根据手机的IP地址,可采用Wi-Fi协议与该手机建立连接。再例如,手机和PC均接入了蜂窝网,手机与PC登录了同一华为账号。手机与PC可根据该华为账号基于蜂窝网建立连接。
在手机与PC成功建立连接后,两者便可协同使用。为了提高协同使用的效率,用户可使用一套输入设备,如PC的鼠标实现对PC和手机两者的控制。
作为一种示例性的实现,在PC的键鼠共享模式开启的情况下,可使用一套输入设备实现对PC和手机两者的控制。
例如,在一些实施例中,在其他终端与PC成功建立连接后,PC可显示弹窗,该弹窗用于询问用户是否开启键鼠共享模式。如果接收到用户选择开启键鼠共享模式的操作,PC可开启键鼠共享模式。
PC在开启键鼠共享模式后,可通知与自身建立了连接的所有终端键鼠共享模式已开启。如PC与手机建立了连接,则PC会向手机通知键鼠共享模式已开启。手机在接收到该通知(如称为通知消息)后,可创建一个虚拟输入设备,该虚拟输入设备与常规的如鼠标,触摸板等输入设备的作用相同,可用于手机模拟对应输入事件。例如,以输入设备为鼠标为例,手机创建的该虚拟输入设备与常规的鼠标作用相同,可以看作是PC共享给手机的鼠标,能够用于在手机端模拟鼠标事件,以实现PC的鼠标对手机的控制。示例性的,以手机的操作系统是Android系统为例。手机可利用linux的uinput能力实现虚拟输入设备的创建。其中,uinput是一个内核层模块,可以模拟输入设备。通过写入/dev/uinput(或/dev/input/uinput)设备,进程可以创建具有特定功能的虚拟输入设备。一旦创建了该虚拟输入设备,其便可模拟对应的事件。类似的,其他与PC建立了连接的终端也会根据接收到通知消息,进行虚拟输入设备的创建。需要说明的是,如果接收到通知消息的终端的操作系统是Android系统,则可以利用linux的uinput能力实现虚拟输入设备的创建,或者可以使用人机交互设备(human interface device,HID)协议来实现虚拟输入设备的创建。如果接收到通知消息的终端的操作系统是IOS系统或windows系统等其他操作系统,则可使用HID协议来实现虚拟输入设备的创建。另外,上述实施例是以与PC连接的终端接收到用于通知PC的键鼠共享模式已开启的通知消息后,便进行虚拟输入设备的创建为例进行说明的。在其他一些实施例中,在与PC连接的终端接收到上述通知消息后,也可以显示弹窗,以询问用户是否想要使用PC的输入设备实现对本设备的控制。如果接收到用户选择使用PC的输入设备实现对本设备的控制的操作,则再进行虚拟输入设备的创建,否则不创建虚拟输入设备。
又例如,在其他一些实施例中,如手机与PC建立连接后,PC自动开启键鼠共享模式,无需用户手动打开。在其他终端,如上述手机与PC建立连接后,也可自动进行虚拟输入设备的创建,无需PC发送通知消息。或者,在其他终端与PC建立连接后,可以先显示弹窗询问用户是否想要使用PC的输入设备实现对本设备的控制。如果接收到用户选择使用PC的输入设备实现对本设备的控制的操作,则再进行虚拟输入设备的自动创建,否则不创建虚拟输入设备。
另外,结合图1,由于鼠标是PC的输入设备,在其他终端,如手机与PC建立连接后,一般情况下,暂时是由PC对鼠标的操作进行响应的,或者说用户使用鼠标暂时可实现对PC的控制。在本实施例中,PC在开启键鼠共享模式后,还可在确定满足鼠标穿梭条件时,触发转由与PC建立了连接的创建了虚拟输入设备的其他终端,如手机对鼠标的操作进行响应。也就是说,在满足鼠标穿梭条件后,用户便可使用鼠标实现对与PC建立了连接的创建了虚拟输入设备的其他终端,如手机的控制。
示例性的,鼠标穿梭条件可以是鼠标对应在PC显示屏上显示的鼠标指针滑过PC显示屏的边缘。也就是说,用户可通过移动鼠标,使得该鼠标对应在PC显示屏上显示的鼠标指针滑过PC显示屏的边缘,以触发转由与PC建立了连接的创建了虚拟输入设备的其他终端对鼠标的操作进行响应。
作为一种示例性的实现,PC可在开启键鼠共享模式后,开启输入(input)监听,并挂载钩子(HOOK)。输入监听可用于监听鼠标指针的相对位移和坐标位置。挂载的HOOK在鼠标穿梭开始后可用于拦截对应输入事件(或者说屏蔽对应输入事件),如以输入设备是鼠标为例,该输入事件可以是鼠标事件(或者说屏蔽鼠标事件),使得鼠标事件在被PC的键鼠模块接收后不会传输到PC的windows系统。挂载的HOOK在鼠标穿梭开始后还可用于捕获拦截到的输入事件,如鼠标事件中的参数。PC可利用输入监听,监听鼠标指针的相对位移和坐标位置,并根据监听到的数据确定是否满足鼠标穿梭条件。在确定满足鼠标穿梭条件后,挂载的HOOK拦截鼠标事件,捕获鼠标事件中的操作参数,并通过将捕获到的操作参数发送给与PC连接的创建了虚拟输入设备的其他终端,以便该终端利用创建的虚拟输入设备模拟对应输入事件,如鼠标事件,进而对其进行响应。即实现转由与PC连接的创建了虚拟输入设备的其他终端对鼠标的操作进行响应。
当然,也可以通过其他方式(如在PC中注册RAWINPUT)来实现输入事件的拦截和其中操作参数的捕获。或者,还可以通过不同的方式来分别实现输入事件的拦截和其中操作参数的捕获。例如,以输入设备是鼠标为例,PC在开启键鼠共享模式后,可挂载HOOK,并注册RAWINPUT,其中,在鼠标穿梭开始后,挂载的HOOK可用于拦截鼠标事件(或者说屏蔽鼠标事件),注册的RAWINPUT可用于捕获拦截到的鼠标事件中的操作参数。本实施例在此对鼠标事件的拦截和其中操作参数的捕获的具体实现不做限制。为了便于描述,以下实施例中以通过挂载HOOK来实现输入事件的拦截和其中操作参数的捕获为例进行介绍。
如,以用户想要将手机显示的应用的图标(icon)从手机拖拽到PC为例。触发转由与PC连接的创建了虚拟输入设备的其他终端,如手机对鼠标的操作进行响应的过程可以包括以下S302-S304。
S302、PC接收鼠标移动事件,根据鼠标移动事件在PC的显示屏上显示鼠标指针移动的动画。
需要说明的是,本实施例中所述的鼠标指针也可以称为光标。光标可以是一个图像,其可以是动态的也可以是静态的,在不同情况下光标的样式也可能有所不同。本实施例中以鼠标指针为例进行说明。其中,PC显示屏上显示的鼠标指针可以为本申请中的第二光标。
S303、PC监测鼠标指针在PC显示屏上的坐标位置。
S304、PC根据鼠标指针在PC显示屏上的坐标位置,在确定鼠标指针滑出PC显示屏边缘时,拦截鼠标移动事件,并将鼠标移动事件包含的鼠标操作参数1发送给手机。
在本实施例中,在键鼠共享模式开启后,在用户想要使用鼠标实现对与PC连接的创建了虚拟输入设备的其他终端,如手机的控制,如想要将手机显示的应用的图标从手机拖拽到PC时,用户可通过持续向同一个方向移动鼠标,使对应显示在PC显示屏上的鼠标指针滑过(或者说滑出)PC显示屏的边缘,即触发鼠标穿梭条件。
示例性的,PC可根据鼠标指针的初始位置和相对位移确定鼠标指针在PC显示屏上的坐标位置,从而确定鼠标指针是否滑出PC显示屏的边缘。
其中,鼠标指针的初始位置可以是鼠标开始移动时,鼠标指针在PC显示屏上的坐标位置,或者说是鼠标开始移动之前鼠标指针在PC显示屏上的坐标位置。该鼠标指针的初始位置具体可以是指在以PC显示屏的左上角为坐标原点,X轴从左上角指向PC显示屏右边缘,Y轴从左上角指向PC显示屏下边缘的坐标系中的坐标位置。例如,PC确定鼠标指针是否滑出PC显示屏的边缘的具体过程可以是:结合图4,PC可建立以该初始坐标位置为坐标原点(如图4中所示的位置o),X轴从坐标原点o指向PC显示屏右边缘,Y轴从坐标原点o指向PC显示屏上边缘的坐标系。PC可确定在该坐标系中,PC显示屏各边缘的坐标值。PC显示屏各边缘在该坐标系中的坐标值可根据PC显示屏的分辨率和鼠标指针的初始位置来确定。如,如图4所示,在该坐标系中,PC显示屏的右边缘在X轴上的坐标值为x1,左边缘在X轴上的坐标值为-x2,上边缘在Y轴上的坐标值为y1,下边缘在Y轴上的坐标值为-y2。在鼠标移动后,鼠标会向PC上报对应鼠标指针的相对位移。PC根据鼠标上报的相对位移可计算出鼠标移动后鼠标指针在PC显示屏上的坐标位置(x,y)。根据该坐标位置(x,y),PC即可确定鼠标指针是否滑出PC显示屏的边缘。如,如果鼠标指针在X轴的坐标值x大于x1,则可确定鼠标指针滑出PC显示屏的右边缘。如果鼠标指针在X轴的坐标值x小于-x2,则可确定鼠标指针滑出PC显示屏的左边缘。如果鼠标指针在Y轴的坐标值y大于y1,则可确定鼠标指针滑出PC显示屏的上边缘。如果鼠标指针在Y轴的坐标值y小于-y2,则可确定鼠标指针滑出PC显示屏的下边缘。
在确定鼠标指针滑出PC显示屏的边缘,即鼠标穿梭条件触发后,如果用户继续操作PC的输入设备,如鼠标,则PC可将用户使用PC的输入设备输入的操作的数据发送给创建了虚拟输入设备的其他终端。如在用户使用PC的输入设备输入操作后,PC可将接收到的对应输入事件,如鼠标移动事件,鼠标按下事件,鼠标抬起事件等拦截,并将拦截到的输入事件包含的操作参数,如鼠标操作参数传输给与PC连接的创建了虚拟输入设备的其他终端,以便转由该终端对PC的输入设备,如鼠标的操作进行响应。其中,以输入事件是鼠标事件为例。输入事件(或者说鼠标事件)包含的操作参数(如鼠标操作参数)可以包括:鼠标按键标志位(用于指示用户对鼠标进行了按下、抬起、移动或滚轮滚动中的何种操作)、坐标信息(在用户移动了鼠标时,用于指示鼠标移动的X坐标和Y坐标)、滚轮信息(在用户操作了鼠标的滚轮时,用于指示滚轮滚动的X轴距离和Y轴距离)、键位信息(用于指示用户对鼠标的左键、中键或右键中的哪个键进行了操作)。
在一些实施例中,如果与PC连接的设备仅有一个,如上述手机,且手机创建了虚拟输入设备,则PC可将对应操作参数传输给手机,以便转由手机对PC的输入设备,如鼠标的操作进行响应。如果与PC连接的设备有多个,这多个设备中存在部分设备或全部设备建立了虚拟输入设备,则PC可在确定鼠标穿梭条件被触发时,在PC的显示屏上显示列表选项,该列表选项中包括与PC连接的设备中创建了虚拟输入设备的设备的标识(如包括上述手机的标识)。PC可根据用户的选择,确定对PC的输入设备的操作进行响应的设备。如用户选择了上述手机的标识,则PC可将对应操作参数发送给手机,以便转由手机对PC的输入设备的操作进行响应。如手机接收到对应操作参数后,可模拟出对应输入设备,如鼠标事件,并做出对应响应,即转由手机对PC的输入设备的操作进行响应。其中,在本实施例中,与PC连接的设备在完成虚拟输入设备的创建后,可向PC发送虚拟输入设备创建成功的指示消息。PC根据接收到的指示消息可获得与PC连接的设备中哪些设备成功创建了虚拟输入设备,并以此为依据显示上述列表选项。
在其他一些实施例中,可以预先配置穿梭关系。如果与PC连接的设备有多个,且这多个设备中存在部分设备或全部设备建立了虚拟输入设备,则可以根据预先配置的穿梭关系确定鼠标穿梭到哪个设备上,即确定转由哪个设备对PC的输入设备的操作进行响应。例如,与PC连接的多个设备中包括上述手机,且手机创建了虚拟输入设备,预先配置的穿梭关系是鼠标指针从PC显示屏的左侧(或者说左边缘)滑出,则鼠标穿梭到手机。那么,当用户移动鼠标,使得鼠标指针滑过PC显示屏的左边缘时,PC不仅可以确定鼠标穿梭开始,还可确定鼠标穿梭到手机,即PC可将对应操作参数发送给手机,以便转由手机对PC的输入设备的操作进行响应。当然,如果与PC连接的设备有一个,且该设备创建了虚拟输入设备时,也可以根据预先配置的穿梭关系确定鼠标是否穿梭到该设备。如,预先配置的穿梭关系是鼠标指针从PC显示屏的左边缘滑出,则鼠标穿梭到手机。但用户移动鼠标后,使得鼠标指针滑过PC显示屏的右边缘,则可确定鼠标不穿梭到手机。在另外一些实施例中,可以通过识别设备位置确定鼠标穿梭到哪个设备上。例如,以输入设备为鼠标为例,用户按下并移动鼠标,使得鼠标指针滑过PC显示屏的左边缘,则可以利用蓝牙、超宽带(Ultra-wideband,UWB)、超声波等定位技术识别位于PC周围的设备位置,如PC识别出PC的左边是手机,则可确定鼠标穿梭到手机。
其中,穿梭关系可以是用户通过配置文件提前配置的,也可以为用户提供配置穿梭关系的配置界面,用户可通过该配置界面提前配置穿梭关系。例如,以用户通过界面配置手机的穿梭关系为例。PC接收用户打开配置界面操作,显示配置界面,该配置界面中包括PC的标识(如PC的图标)和手机的标识(如手机的图标),用户可通过拖动这两个标识来配置穿梭关系。作为一种示例,若用户将手机的标识放置到PC的标识的左侧,则PC可确定当鼠标指针滑过PC显示屏的左边缘时,鼠标穿梭到手机。若用户将手机的标识放置到PC的标识的右侧,则PC可确定当鼠标指针滑过PC显示屏的右边缘时,鼠标穿梭到手机。当存在多个设备时,可通过预先配置的方式配置每个设备的穿梭关系。以下实施例均以确定出的鼠标穿梭到手机为例进行说明。需要说明的是,对于根据预先配置穿梭关系及识别设备位置来确定鼠标穿梭到哪个设备这两种实现来说,上述S301可以在鼠标穿梭触发之前执行,也可以在鼠标穿梭触发之后执行,本实施例在此不做具体限制。
示例性的,在用户使用PC的输入设备输入移动操作,如用户移动鼠标的过程中,PC的键鼠模块可接收到对应的输入事件,如移动事件,该移动事件可以称为鼠标移动事件。由于此时鼠标穿梭条件还未触发,因此HOOK不会拦截该输入事件,即不会拦截该鼠标移动事件,该鼠标移动事件会传输给PC的windows系统。根据接收到的鼠标移动事件,PC的windows系统可绘制鼠标指针移动的动画并在PC的显示屏上显示。例如,如图5A所示,随着鼠标401的移动,PC在PC的显示屏402上对应显示鼠标指针403移动的动画,如图5A中所示鼠标指针403的移动轨迹如轨迹404所示。
如S301中的描述,在键鼠共享模式开启后,PC会开启输入监听,并挂载HOOK。在鼠标指针在PC显示屏上移动的过程中,PC的键鼠模块可利用输入监听,监测鼠标指针在PC显示屏上的实时坐标位置。当PC的键鼠模块根据监测到的鼠标指针在PC显示屏上的实时坐标位置,确定鼠标指针滑过PC显示屏的边缘时,可确定满足上述鼠标穿梭条件,表明用户想要使用鼠标对其他终端进行控制。PC的键鼠模块可确定鼠标穿梭开始。
在PC的键鼠模块确定鼠标穿梭开始后,如果用户对PC的输入设备,如鼠标进行了操作,PC的键鼠模块会利用HOOK,拦截接收到输入设备,如鼠标事件,并利用HOOK捕获拦截到的输入事件中的操作参数,如鼠标操作参数,然后,将操作参数通过PC的传输管理模块,通过建立的连接传输给手机,用于手机做出对应响应。例如,结合图5A所示示例,以输入设备为鼠标为例,在鼠标指针滑过PC显示屏的边缘后,用户继续向同一个方向移动鼠标。PC的键鼠模块可接收移动事件,如鼠标移动事件。由于鼠标穿梭已开始,因此PC的键鼠模块可利用HOOK,将其拦截(或者说屏蔽),以便该鼠标移动事件不会被发送给PC的windows系统,从而使得PC不会对接收到的鼠标移动事件做响应,PC的键鼠模块还可利用HOOK,捕获鼠标移动事件中的操作参数,如鼠标操作参数(如称为鼠标操作参数1,该鼠标操作参数1可以为本申请中的第三操作参数),并通过PC的传输管理模块,将鼠标操作参数1通过建立的连接发送给手机。如,作为一种示例,鼠标移动事件对应的鼠标操作参数1可以是:用于指示用户对鼠标进行了移动的鼠标按键标志位,用于指示鼠标移动的X坐标和Y坐标的坐标信息,滚轮信息(取值为空)和键位信息(取值为空)。
另外,PC的键鼠模块在确定鼠标穿梭开始后,PC的键鼠模块可通过PC的传输管理模块,通过建立的连接向手机发送用于指示鼠标开始穿梭的穿梭状态信息(该穿梭状态信息可以为本申请中的第一穿梭状态信息)。手机接收到该信息后,可模拟出一个鼠标指针,并在手机的显示屏上显示该鼠标指针(其中,手机显示屏上显示的鼠标指针可以为本申请中的第一光标)。例如,手机的传输管理模块接收到该信息后,将该信息传输给手机的拖拽管理模块及launcher,这样手机的拖拽管理模块可创建一个鼠标指针,并交由手机的launcher显示该鼠标指针。PC的键鼠模块也可将PC显示屏上显示的鼠标指针隐藏。给用户鼠标指针从PC穿梭到手机的视觉效果。
S305、手机接收鼠标操作参数1,根据鼠标操作参数1模拟鼠标移动事件,根据鼠标移动事件在手机的显示屏上显示鼠标指针移动的动画。
在手机接收到操作参数,如鼠标操作参数1后,可根据鼠标操作参数1模拟出移动事件,如鼠标移动事件。作为对该鼠标移动事件的响应,手机可绘制鼠标指针移动的动画并在手机的显示屏上显示。
一般的,对于安装在手机中的应用,手机可在手机的桌面(或者称为主屏幕(homescreen))上显示这些应用的图标。另结合S304中的描述,用户触发鼠标指针从PC的显示屏穿梭到手机的显示屏的目的是想要将手机显示屏上显示的应用的图标从手机拖拽到PC。因此,在用户通过移动鼠标,将鼠标指针从PC的显示屏穿梭到手机的显示屏后,用户会继续移动鼠标,即用户会使用PC的鼠标输入移动手机上的鼠标指针的操作,直到鼠标指针移动到手机显示屏上显示的用户想要拖拽的应用的图标的位置。
需要说明的是,本实施例中所述的应用可以是嵌入式应用(即手机的系统应用,如计算器,相机,设置,图库等),也可以是可下载应用(如,浏览器,天气,电子邮件等)。嵌入式应用是作为手机实现的一部分提供的应用程序。可下载应用是一个可以提供自己的因特网协议多媒体子系统(internet protocol multimedia subsystem,IMS)连接的应用程序。该可下载应用可以是预先安装在手机中的应用或可以是由用户下载并安装在手机中的第三方应用。
示例性的,在手机的传输管理模块接收到操作参数,如鼠标操作参数1后,手机的传输管理模块可将该鼠标操作参数1传输给手机的拖拽管理模块。由于PC与手机的操作系统不同,其输入事件,如鼠标事件中鼠标操作参数的键值存在差异。因此,手机的拖拽管理模块可根据预设映射关系,将接收到的鼠标操作参数1的键位码转换成手机能够识别的键位码。之后,手机利用创建的虚拟输入设备根据转换键位码后的鼠标操作参数1可模拟出手机能够识别的输入设备,如对应鼠标事件,即可以模拟出移动事件,如鼠标移动事件。手机的拖拽管理模块根据模拟出的鼠标移动事件,可绘制鼠标指针移动的动画,并交由手机的launcher在手机的显示屏上显示鼠标指针移动的动画。例如,如图5B所示,以用户想要拖拽的应用的图标是手机显示屏上显示的计算器的图标504为例。随着鼠标401的移动,手机在手机的显示屏501上对应显示鼠标指针502移动的动画,如鼠标指针502的移动轨迹如轨迹503所示。即随着鼠标401的移动,鼠标指针502可沿着轨迹503移动到计算器的图标504的位置。
在鼠标指针移动到想要拖拽的对象,如应用的图标的位置后,用户可通过PC的鼠标输入拖拽操作,以便手机可根据该拖拽操作,实现对应用的图标的拖拽。该拖拽操作可以是用于指示发起针对该对象,如应用的图标的拖拽的操作。该拖拽操作可以包括一个操作,也可以包括多个操作。例如,拖拽操作可以包括两个操作,分别为按下操作和移动操作。以输入设备为鼠标为例,按下操作可以是鼠标按下操作,移动操作可以是鼠标移动操作。用户使用PC的鼠标拖拽手机上应用的图标的过程可以包括以下S306-S309。
S306、PC接收鼠标按下事件,拦截该鼠标按下事件,并将鼠标按下事件包含的鼠标操作参数2发送给手机。
其中,鼠标操作参数2可以为本申请中的第一操作参数。
S307、手机接收鼠标操作参数2,根据鼠标操作参数2模拟鼠标按下事件,根据鼠标按下事件获取应用的信息。
其中,按下事件,如鼠标按下事件是在鼠标指针移动到应用的图标的显示位置时,用户对PC的输入设备,如鼠标进行按下操作后PC接收到的事件。需要说明的是,此处以输入设备为鼠标为例,“对鼠标的按下操作,或者说鼠标按下操作”可以是对鼠标左键的按下操作,也可以是对鼠标右键的按下操作,本实施例在此不做具体限制。
结合图5B及S305的描述,用户想要将手机显示屏上显示的应用的图标(如,图5B所示示例中的计算器的图标504)从手机拖拽到PC。以输入设备为鼠标为例,在用户通过移动鼠标,将鼠标指针移动到计算器的图标504的位置时,用户可对鼠标(如鼠标左键)进行按下操作。PC的键鼠模块可接收按下事件,如鼠标按下事件。由于该鼠标按下事件是在鼠标穿梭开始后PC接收到的,因此,PC的键鼠模块会利用HOOK,将其拦截(或者说屏蔽),以便该鼠标按下事件不会被发送给PC的windows系统,从而使得PC不会对接收到的鼠标移动事件做响应。PC的键鼠模块还可利用HOOK捕获鼠标按下事件的操作参数,如鼠标操作参数,如称为鼠标操作参数2,并通过PC的传输管理模块,将捕获到的鼠标操作参数2通过建立的连接发送给手机。其中,该鼠标操作参数2可以包括:用于指示用户对鼠标进行了按下的鼠标按键标志位,坐标信息(取值为空),滚轮信息(取值为空)和用于指示用户对鼠标的左键进行了操作的键位信息。
手机的传输管理模块可接收到对应鼠标操作参数2,并将该鼠标操作参数2发送给手机的拖拽管理模块。手机的拖拽管理模块接收到鼠标操作参数2后,根据预设映射关系,将接收到的鼠标操作参数2的键位码转换成手机能够识别的键位码后,可利用创建的虚拟输入设备根据转换键位码后的鼠标操作参数2模拟出手机能够识别的按下事件,如鼠标按下事件。之后,手机的拖拽管理模块根据鼠标指针当前显示的位置,可以确定用户是想将鼠标指针当前位置的应用的图标(如计算器的图标)进行拖拽。例如,在键鼠穿梭开始(如手机接收到来自PC的用于指示鼠标开始穿梭的穿梭状态信息)后,手机可注册鼠标指针坐标位置的侦听器。通过该侦听器,手机可实时监测鼠标指针在手机显示屏上的坐标位置。也就是说,手机的拖拽管理模块可利用侦听器确定鼠标指针当前的坐标位置。之后,手机可获取该应用的信息。如手机的launcher可获取应用的信息,并将获得的应用的信息发给手机的拖拽管理模块。手机的拖拽管理模块将接收到的应用的信息保存。其中,应用的信息可以包括以下信息中的一种或多种:应用的名称,应用的图标,应用的包名,应用的类名,应用的图标的大小和应用的图标在手机显示屏上的显示位置。
另外,在本实施例中,手机在模拟出按下事件,如鼠标按下事件,即确定出用户针对应用的图标执行按下操作,如鼠标按下操作后,手机的拖拽管理模块还可创建一个与该应用的图标相同的图标(如称为拖拽图标,该拖拽图标可以为本申请中的拖拽对象),用于后续的拖拽。其中,手机的拖拽管理模块可以对该拖拽图标的透明度做适当的调整,也可以不做调整。可选的,对于手机显示屏上显示的应用的图标(如称为原图标),手机的拖拽管理模块可以做隐藏处理,也可以不做隐藏处理,而是由手机的launcher继续显示在手机显示屏上。
S308、PC接收鼠标移动事件,拦截该鼠标移动事件,并将鼠标移动事件包含的鼠标操作参数3发送给手机。
其中,鼠标操作参数3可以为本申请中的第二操作参数。
S309、手机接收鼠标操作参数3,根据鼠标操作参数3模拟出鼠标移动事件,作为对鼠标按下事件和鼠标移动事件的响应,在手机的显示屏上显示应用的图标跟随鼠标指针移动的动画。
当用户想要将应用的图标进行拖拽时,在S307的描述中,用户对鼠标进行按下操作后,可不抬起手指,并在继续对鼠标进行按下操作的同时移动鼠标。此时,PC的键鼠模块可接收移动事件,如鼠标移动事件。类似的,由于该鼠标移动事件是在鼠标穿梭开始后PC接收到的,因此,PC的键鼠模块会利用HOOK,将其拦截(或者说屏蔽),以便该鼠标移动事件不会被发送给PC的windows系统,从而使得PC不会对接收到的鼠标移动事件做响应。PC的键鼠模块还可利用HOOK,捕获鼠标移动事件包含的操作参数,如鼠标操作参数,如称为鼠标操作参数3,并通过PC的传输管理模块,将其通过建立的连接发送给手机。
手机的传输管理模块可接收到鼠标操作参数3,并将该鼠标操作参数3发送给手机的拖拽管理模块。手机的拖拽管理模块接收到鼠标操作参数3后,在对该鼠标操作参数3进行键位码转化后,利用创建的虚拟输入设备可模拟出对应的移动事件,如鼠标移动事件。之后,结合模拟出的按下事件和移动事件(如鼠标按下事件和鼠标移动事件),手机的拖拽管理模块可发起针对应用的图标的拖拽,还可绘制应用的图标跟随鼠标指针移动的动画,并交由手机的launcher在手机的显示屏显示。
例如,结合图5B的示例,用户在鼠标指针在计算器的图标的位置对鼠标进行按下操作后,用户不抬起手指,继续在对鼠标进行按下操作的同时移动鼠标。之后,如图6所示,随着鼠标401的移动,手机在手机的显示屏601显示计算器的图标602跟随鼠标指针603移动的动画,如计算器的图标602跟随鼠标指针603移动的轨迹如轨迹604所示。在一些实施例中,跟随鼠标指针603移动的计算器的图标602可以是S307的描述中所述的拖拽图标,即手机创建的(或者说复制的)与桌面上显示的计算器的图标相同的图标。另可以理解的是,当手机不对计算器的原图标做隐藏处理时,在拖拽图标被拖动后,手机的显示屏上不仅显示有计算器的原图标,还显示有随鼠标指针603移动的拖拽图标。需要说明的是,在一些实施例中,随着鼠标的移动,可以仅应用的图标随之移动,也就是说,仅应用的图标被拖拽。在其他一些实施例中,随着鼠标的移动,应用的图标和应用的名称一同随之拖拽,也就是说,应用的图标和应用的名称一同被拖拽(如图6中所示)。在应用的图标和应用的名称一同被拖拽的实施例中,手机在创建拖拽图标时,还需创建一个与该被拖拽的应用的名称相同的名称,用于拖拽。
在本实施例中,在拖拽图标被拖动的过程中,手机可不进行为该图标寻找新放置位置的处理,也不做桌面的翻页处理,而是执行以下S310-S311,以便可将该拖拽图标拖拽到PC的显示屏上。
S310、手机监测鼠标指针在手机显示屏上的坐标位置。
S311、手机根据鼠标指针在手机显示屏上的坐标位置,在确定鼠标指针滑出手机显示屏边缘时,向PC发送用于指示鼠标穿梭结束的穿梭状态信息,并向PC发送应用的图标。
在应用的图标随鼠标指针在手机的显示屏上移动的过程中,手机可判断被拖拽的应用的图标是否被拖出手机显示屏的边缘。在本实施例中,应用的图标被拖出手机显示屏的边缘可以为该应用的图标的部分区域被拖出(或者说溢出)手机显示屏(即应用图标溢出显示屏区域的比例大于预设阈值),也可以为该应用的图标的全部区域被拖出(或者说溢出)手机显示屏,还可以是该应用的图标随鼠标指针在手机显示屏移动时,鼠标指针滑出手机显示屏的边缘,本实施例在此不做具体限制。以下以判断被拖拽的应用的图标是否被拖出手机显示屏的边缘具体为判断鼠标指针是否滑出手机显示屏的边缘为例进行说明。
在应用的图标随鼠标指针在手机的显示屏上移动的过程中,手机(如手机的传输管理模块)可监测鼠标指针在手机显示屏上的实时坐标位置(如S307的描述,鼠标指针的实时坐标位置可利用注册的侦听器来获取)。示例性的,手机可根据鼠标指针的初始位置和相对位移确定鼠标指针在手机显示屏上的坐标位置,从而确定鼠标指针是否滑出手机显示屏的边缘。其中,鼠标指针的初始位置可以是鼠标开始移动时,鼠标指针在手机显示屏上的坐标位置,或者说是鼠标开始移动之前鼠标指针在手机显示屏上的坐标位置。该鼠标指针的初始位置具体可以是指在以手机显示屏的左上角为坐标原点,X轴从左上角指向手机显示屏右边缘,Y轴从左上角指向手机显示屏下边缘的坐标系中的坐标位置。手机确定鼠标指针滑出手机显示屏边缘的具体实现与PC确定鼠标指针滑出PC显示屏边缘的具体实现类似,此处不再详细赘述。
当手机的传输管理模块根据监测到的鼠标指针在手机显示屏上的实时坐标位置,确定鼠标指针滑过手机显示屏的边缘时,表明用户想要使用鼠标对其他设备进行控制。如S304中的描述,如果手机仅与PC一个设备建立了连接,则表明用户想使用鼠标对PC进行控制,如果手机与多个设备建立了连接,则手机可显示列表选项,该列表选项包括与手机连接的所有设备的标识,供用户选择想用鼠标控制的设备。如用户选择了PC的标识,则表明用户想使用鼠标对PC进行控制。或者也可以在手机中预先配置穿梭关系,用于确定鼠标穿梭到哪个设备,即确定转由哪个设备对鼠标的操作进行响应,对于穿梭关系的配置和应用的具体描述上述实施例中对应内容的描述类似,此处不在详细赘述。
在确定用户想使用鼠标对PC进行控制时,手机的传输管理模块可确定鼠标穿梭结束。此时,手机的传输管理模块可通过建立的连接,向PC发送用于指示鼠标穿梭结束的穿梭状态信息(该穿梭状态信息可以为本申请中的第二穿梭状态信息)。手机的传输管理模块还可向手机的拖拽管理模块指示鼠标穿梭结束,以便手机的拖拽管理模块通过手机的传输管理模块,通过建立的连接向PC发送拖拽数据,如该拖拽数据可以包括应用的图标。其中,应用的图标在发送给PC之前,手机还可对该应用的图标进行序列化处理,也就是说,手机发送给PC的应用的图标可以是进行序列化处理后得到的数据。如果应用的名称和应用的图标一同被拖拽,则手机还需将应用的名称也发送给PC。
另外,在鼠标指针滑过手机显示屏的边缘,即确定鼠标穿梭结束后,应用的图标在手机显示屏上的拖拽便结束了,手机的拖拽管理模块还可向手机的launcher指示鼠标穿梭结束,以便由手机的launcher在手机的显示屏上显示拖拽结束动画,如显示拖拽图标从手机显示屏的边缘按轨迹(如图6中所示的轨迹604,方向与轨迹604的方向相反)返回到原位置的动画。且手机不对手机显示屏上显示的应用的图标进行重新布局处理。
需要说明的是,以上实施例是以在确定鼠标穿梭结束后,手机便向PC发送拖拽数据,如上述应用的图标为例进行说明的。在其他一些实施例中,手机也可以在拖拽开始时,将拖拽数据,如对象的信息(如包括应用的图标)暂时缓存起来。在确定鼠标穿梭结束后,手机向PC发送用于指示鼠标穿梭结束的穿梭状态信息。PC在接收到该穿梭状态信息后,可向手机发送请求拖拽数据的消息,手机在接收到该消息后,再向PC发送该拖拽数据。
S312、PC接收鼠标移动事件,并根据该鼠标移动事件和接收到的应用的图标,在PC的显示屏上显示该应用的图标跟随鼠标指针移动的动画。
在PC的传输管理模块接收到来自手机的用于指示鼠标穿梭结束的穿梭状态信息后,可向PC的拖拽管理模块和PC的键鼠模块指示鼠标穿梭结束。PC可确定用户需要转回由PC对鼠标的操作进行响应。之后,PC可卸载HOOK,也即取消对输入事件,如鼠标事件的拦截。此后当用户对PC的输入设备进行操作时,PC的键鼠模块将不会拦截接收到输入事件,而是会将接收到的输入事件发送给PC的windows系统,以便PC的windows系统对该输入事件进行响应。PC的键鼠模块还可重新在PC显示屏上显示的鼠标指针。
示例性的,以输入设备为鼠标为例。用户继续对鼠标进行按下操作同时移动鼠标。PC可接收移动事件,如鼠标移动事件。由于此时已卸载了HOOK,因此,PC的键鼠模块会将接收到的鼠标移动事件发送给PC的windows系统,以便其进行对应响应。如,PC可根据该鼠标移动事件和接收到的应用的图标,绘制应用的图标,以窗口的形式显示该应用的图标。PC还会绘制该应用的图标随鼠标指针移动的动画,并在PC的显示屏上显示该应用的图标跟随鼠标指针移动的动画。如果应用的名称和应用的图标一同被拖拽,则PC还需绘制应用的名称,并以窗口的形式显示,还会跟随鼠标指针的移动而移动。例如,结合图6,如图7所示,随着鼠标401的移动,PC在PC的显示屏701上显示计算器的图标702跟随鼠标指针703移动的动画,如计算器的图标702跟随鼠标指针703移动的轨迹如轨迹704所示。也就是说,结合图6和图7所示,用户通过长按鼠标并移动鼠标,可从视觉上达到将手机显示屏上显示的应用的图标(如计算器的图标)从手机的显示屏拖拽到PC的显示屏的效果。当然,如果应用的图标在发送给PC之前,手机还进行了序列化处理,则PC接收到对应数据后,进行反序列化处理便可获得该应用的图标。
另外,在S311中,手机还可将S307中获得的应用的图标的大小和应用的图标在手机显示屏上的显示位置发送给PC。PC根据这些数据,利用预设的规则可确定用于显示应用的图标的窗口的大小和初始位置。作为一种示例,预设的规则可以是,窗口的大小与S307中获得的应用的图标的大小相同,窗口的初始位置与S307中获得的应用的图标在手机显示屏上的显示位置相同(如,S307中获得的应用的图标在手机显示屏上的显示位置是手机显示屏的右下角,则窗口的初始位置是PC显示屏的右下角)。或者,窗口的大小是S307中获得的应用的图标的大小的两倍,窗口的初始位置与S307中获得的应用的图标在手机显示屏上的显示位置相同等。本申请实施例在此对该规则不做具体限制。
其中,S312为可选步骤。
S313、PC接收鼠标抬起事件,根据鼠标抬起事件在PC显示屏显示应用的界面。
当用户将想要拖拽的应用的图标(如计算器的图标)拖拽到PC的显示屏后,用户可输入拖拽释放操作,以便结束对该应用的图标的拖拽。如,用户可抬起手指(即拖拽释放操作可以是手指抬起的操作,或者说停止对鼠标的长按操作)。用户还可停止移动鼠标。PC的键鼠模块可接收到该抬起事件,如鼠标抬起事件。类似的,由于此时已卸载了HOOK,因此,PC的键鼠模块会将接收到的抬起事件,如鼠标抬起事件发送给PC的windows系统以便进行响应。如,作为对该鼠标抬起事件的响应,PC可在PC的显示屏上鼠标指针停止移动的位置,显示该拖拽的应用的界面。例如,结合图7的示例,如图8所示,当用户在将计算器的图标拖拽到PC的显示屏后,用户抬起手指,并停止移动鼠标。此时,作为响应,PC可在PC显示屏801上显示计算器的界面802。另外,对于手机而言,在用户抬起手指,并停止移动鼠标后,手机显示的界面可不做改变,如图8中的(a)所示,依然显示桌面803,手机也可以显示该计算器的界面,如图8中的(b)所示,手机显示计算器的界面804。
作为一种示例,PC根据鼠标抬起事件在PC的显示屏显示该应用的界面的具体实现可以是:在PC的键鼠模块接收到抬起事件,如鼠标抬起事件后,PC的键鼠模块可通过PC的传输管理模块,通过与手机建立的连接,向手机发送消息,该消息可以是请求消息用于请求应用的界面,或者该消息可以是指示消息,用于指示对应用的图标的拖拽结束。手机接收到该消息后,可根据S307获得的应用的信息中的应用的包名和类名,打开该应用,并将打开的该应用的界面通过与PC建立的连接发送给PC,以便PC可在PC的显示屏上显示该应用的界面。例如,PC与手机可采用无线投影(Miracast)实现应用的界面在PC显示屏上的显示。即手机接收到上述消息后,可将获得的应用的界面的所有图层整合成视频流(或者说称为录屏数据)并编码后通过实时流传输协议(real time streaming protocol,RTSP)协议发送给PC。PC在接收到视频流后可对其进行解码并播放,以实现应用的界面在PC显示屏上的显示。又例如,手机可采用分布式多媒体协议(distributed multi-media protocol,DMP)技术实现应用的界面在PC显示屏上的显示。如,手机接收到上述消息后,可创建一个虚拟显示(VirtualDisplay)。之后,手机可将获得的应用的界面的绘制移到该VirtualDisplay中。手机可对VirtualDisplay上绘制的应用的界面进行录屏处理。这样,手机可获得该应用的界面的录屏数据。手机将获得的录屏数据可进行编码后发送给PC。PC可接收到对应数据,对该数据进行解码后便可获得录屏数据。PC根据解码后得到的录屏数据便可实现应用的界面在PC显示屏上的显示。
本实施例提供的方法,在多个终端协同使用的场景中,当使用同一个输入设备,如鼠标完成对所有终端的控制时,用户可以通过移动鼠标,完成一个终端上显示的应用的图标从该终端到其他终端的拖拽,增加了多终端协同使用时终端之间的交互,提高了用户的使用体验。
图9为本申请实施例提供的另一种跨设备的对象拖拽方法的流程示意图。在本实施例中,对用户利用PC共享的鼠标,将手机显示的应用的界面(应用的界面即为被拖拽的对象)从手机拖拽到PC的实现过程进行介绍。如图9所示,该方法可以包括以下S901-S913。
S901、手机与PC建立连接。
S902、PC接收鼠标移动事件,根据鼠标移动事件在PC的显示屏上显示鼠标指针移动的动画。
S903、PC监测鼠标指针在PC显示屏上的坐标位置。
S904、PC根据鼠标指针在PC显示屏上的坐标位置,在确定鼠标指针滑出PC显示屏边缘时,拦截鼠标移动事件,并将鼠标移动事件包含的鼠标操作参数1发送给手机。
需要说明的是,对于S901-S904中其他相关内容的描述,可参考图3所示实施例中S301-S304中对应内容的描述,此处不载一一赘述。
S905、手机接收鼠标操作参数1,根据鼠标操作参数1模拟鼠标移动事件,根据鼠标移动事件在手机的显示屏上显示鼠标指针移动的动画。
其中,鼠标操作参数1为本申请中的第三操作参数。
在手机接收到鼠标操作参数1后,可根据鼠标操作参数1模拟出移动事件,如鼠标移动事件。作为对该鼠标移动事件的响应,手机可绘制鼠标指针移动的动画并在手机的显示屏上显示。也就是说,用户通过移动鼠标,可触发鼠标指针从PC的显示屏穿梭到手机的显示屏。
以用户触发鼠标指针从PC显示屏穿梭到手机显示屏的目的是想要将手机显示屏上当前显示的应用的界面从手机拖拽到PC为例。在本实施例中,触发应用界面窗口化的操作可以是预先定义的操作,如该操作可以是对状态栏的长按操作。因此,在用户通过移动鼠标,将鼠标指针从PC的显示屏穿梭到手机的显示屏后,用户会继续移动鼠标,直到鼠标指针移动到手机显示屏上显示的状态栏的位置。
例如,以用户想要将手机显示的计算器的界面拖拽到PC的显示屏为例。如图10所示,手机的显示屏当前显示有计算器的界面1001。在用户通过移动鼠标1002,触发鼠标指针从PC的显示屏穿梭到手机的显示屏后,用户会继续移动鼠标1002。随着鼠标1002的移动,手机在手机的显示屏上对应显示鼠标指针1003移动的动画,如鼠标指针1003的移动轨迹如轨迹1004所示。即随着鼠标1002的移动,鼠标指针1003可沿着轨迹1004移动到手机显示的状态栏1005的位置。
S906、PC接收鼠标按下事件和鼠标抬起事件,拦截该鼠标按下事件和鼠标抬起事件,并将鼠标按下事件的鼠标操作参数2和鼠标抬起事件的鼠标操作参数3发送给手机。
其中,所述鼠标操作参数2为本申请中的第四操作参数,所述鼠标操作参数3为本申请中的第五操作参数。
S907、手机接收鼠标操作参数2和鼠标操作参数3,根据鼠标操作参数2模拟鼠标按下事件,根据鼠标操作参数3模拟鼠标抬起事件,根据鼠标按下事件和鼠标抬起事件在手机显示屏显示窗口,窗口中包括应用的界面截图,并获取窗口信息。
结合图10及S905的描述,用户想要将手机显示屏上显示的应用的界面(如,图10所示示例中的计算器的界面1001)从手机拖拽到PC,且以触发应用界面窗口化的操作是对状态栏的长按操作为例。在用户通过移动鼠标,将鼠标指针移动到状态栏的位置时,用户可对鼠标(如鼠标左键)进行按下操作,并在一定时长后抬起手指。PC的键鼠模块可接收按下事件(如鼠标按下事件)和抬起事件(如鼠标抬起事件),并将其拦截。PC的键鼠模块还可通过PC的传输管理模块,将拦截到的鼠标按下事件和鼠标抬起事件的操作参数(如称为鼠标操作参数2和鼠标操作参数3)捕获后通过建立的连接发送给手机。
手机的传输管理模块可接收到鼠标操作参数2和鼠标操作参数3,并将其发送给手机的拖拽管理模块。手机的拖拽管理模块接收到鼠标操作参数2和鼠标操作参数3后,根据预设映射关系,将接收到的鼠标操作参数2的键位码转换成手机能够识别的键位码,将接收到的鼠标操作参数3的键位码转换成手机能够识别的键位码后,可利用创建的虚拟输入设备根据转换键位码后的鼠标操作参数2模拟出按下事件,如鼠标按下事件,利用创建的虚拟输入设备根据转换键位码后的鼠标操作参数3模拟出抬起事件,如鼠标抬起事件。之后,手机的拖拽管理模块根据鼠标指针当前显示的位置,可以确定用户是想将手机当前显示的应用的界面(如计算器的界面)进行拖拽。作为对该鼠标按下事件和鼠标抬起事件的响应,手机的systemUI向手机的launcher发送状态栏事件。手机的launcher接收到该状态栏事件后,可对当前显示的应用的界面窗口化,即在手机的显示屏上显示窗口,该窗口中包括该应用的界面,如该应用界面的截图(如计算器界面的截图)。其中。窗口的大小可以是预先设置的值。另外,手机(如手机的launcher)还可做背景虚化处理。其中,在本实施例中,该背景可以是该应用的界面,也可以是手机的桌面,本实施例在此不做限制。例如,结合图10,如图11所示,手机在模拟出鼠标按下事件和鼠标抬起事件后,可在手机的显示屏上显示窗口1101,该窗口1101中包括计算器的界面1001的截图。手机还做了背景虚化处理,图11中是以背景是计算机的界面1001为例示出的。
手机(如手机的launcher)还可获取窗口信息(该窗口信息为本申请中的对象的信息)。其中,窗口信息可以包括以下信息中的一种或多种:窗口中的应用的名称,应用的包名,应用的类名,应用的界面截图,窗口的大小和窗口在手机显示屏上的显示位置。
S908、PC接收鼠标移动事件和鼠标按下事件,拦截该鼠标移动事件和鼠标按下事件,并将鼠标移动事件的鼠标操作参数4和鼠标按下事件的鼠标操作参数5发送给手机。
S909、手机接收鼠标操作参数4和鼠标操作参数5,根据鼠标操作参数4模拟鼠标移动事件,根据鼠标操作参数5模拟鼠标按下事件,根据鼠标移动事件和鼠标按下事件在手机的显示屏上显示窗口跟随鼠标指针移动的动画。
其中,鼠标操作参数4可以为本申请中的第一操作参数。鼠标操作参数5可以为本申请中的第二操作参数。
当用户想要将应用的界面进行拖拽时,用户可通过移动鼠标,以触发鼠标指针从手机显示屏的状态栏移动到S907的窗口位置。之后,用户可对鼠标进行长按操作,并同时移动鼠标。此时,PC的键鼠模块可接收按下事件(如鼠标按下事件)和移动事件(如鼠标移动事件)。类似的,PC的键鼠模块会将其拦截,并将对应的操作参数(如称为鼠标操作参数4和鼠标操作参数5)捕获后通过PC的传输管理模块,通过建立的连接发送给手机。
手机的传输管理模块可接收到鼠标操作参数4和鼠标操作参数5,并将其发送给手机的拖拽管理模块。手机的拖拽管理模块接收到鼠标操作参数4和鼠标操作参数5后,根据预设映射关系,将接收到的鼠标操作参数4的键位码转换成手机能够识别的键位码,将接收到的鼠标操作参数5的键位码转换成手机能够识别的键位码后,可利用创建的虚拟输入设备根据转换键位码后的鼠标操作参数4模拟出按下事件,如鼠标按下事件,利用创建的虚拟输入设备根据转换键位码后的鼠标操作参数5模拟出移动事件,如鼠标移动事件。之后,作为响应,手机的拖拽管理模块可发起针对窗口的拖拽,还可绘制窗口跟随鼠标指针移动的动画,并交由手机的launcher在手机的显示屏显示。例如,结合图11,用户通过移动鼠标,以触发鼠标指针从手机显示屏的状态栏移动到图11中窗口的位置。之后,如图12所示,用户可对鼠标1201进行长按操作,并同时移动鼠标1201。随着鼠标1201的移动,手机在手机的显示屏显示窗口1202(窗口1202中包括计算器界面的截图)跟随鼠标指针1203移动的动画,如窗口1202跟随鼠标指针1203移动的轨迹如轨迹1204所示。
在窗口跟随鼠标指针移动的过程中,手机可判断被拖拽的窗口是否被拖出手机显示屏的边缘。在本实施例中,窗口被拖出手机显示屏的边缘可以为该窗口的部分区域被拖出(或者说溢出)手机显示屏(即窗口溢出显示屏区域的比例大于预设阈值),也可以为该窗口的全部区域被拖出(或者说溢出)手机显示屏,还可以是该窗口随鼠标指针在手机显示屏移动时,鼠标指针滑出手机显示屏的边缘,本实施例在此不做具体限制。以下以判断被拖拽的窗口是否被拖出手机显示屏的边缘具体为判断鼠标指针是否滑出手机显示屏的边缘为例进行说明。
S910、手机监测鼠标指针在手机显示屏上的坐标位置。
S911、手机根据鼠标指针在手机显示屏上的坐标位置,在确定鼠标指针滑出手机显示屏边缘时,向PC发送用于指示鼠标穿梭结束的穿梭状态信息,并向PC发送应用的界面截图。
其中,应用的界面截图在发送给PC之前,手机还可对其进行序列化处理,也就是说,手机发送给PC的应用的界面截图可以是进行序列化处理后得到的数据。S911中的穿梭状态信息可以是本申请中的第二穿梭状态信息。
S912、PC接收鼠标移动事件,并根据该鼠标移动事件和接收到的应用的界面截图,在PC的显示屏上显示该应用的界面截图跟随鼠标指针移动的动画。
示例性的,用户继续对鼠标进行按下操作同时移动鼠标。PC可接收移动事件,如鼠标移动事件。PC可根据该鼠标移动事件和接收到的应用的界面截图,绘制应用的界面截图,并以窗口的形式显示该截图。PC还会绘制该应用的界面截图随鼠标指针移动的动画,并在PC的显示屏上显示该应用的界面截图跟随鼠标指针移动的动画。例如,结合图12,如图13所示,随着鼠标1301的移动,PC在PC的显示屏上显示应用的界面截图1302跟随鼠标指针1303移动的动画,如应用的界面截图1302跟随鼠标指针1303移动的轨迹如轨迹1304所示。另外,在鼠标指针滑过手机显示屏的边缘后,应用的界面在手机显示屏上的拖拽便结束了,手机可以在手机的显示屏上显示拖拽结束动画。如,手机显示还原该应用的界面的动画(或显示还原桌面的动画),如图13所示,在手机上的拖拽结束后,手机显示计算器的界面1305。
也就是说,结合图12和图13所示,用户通过长按鼠标并移动鼠标,可从视觉上达到将手机显示屏上显示的应用的界面(如计算器的界面)从手机的显示屏拖拽到PC的显示屏的效果。当然,如果应用的界面截图在发送给PC之前,手机还进行了序列化处理,则PC接收到对应数据后,进行反序列化处理便可获得该应用的界面截图。
另外,在S911中,手机还可将S907中获得的窗口的大小和窗口在手机显示屏上的显示位置发送给PC。PC根据这些数据,利用预设的规则可确定用于显示应用的界面截图的窗口的大小和初始位置。作为一种示例,预设的规则可以是,窗口的大小与S907中获得的窗口的大小相同,窗口的初始位置与S907中获得的窗口在手机显示屏上的显示位置相同。或者,窗口的大小是S907中获得的窗口的大小的两倍,窗口的初始位置与S907中获得的窗口在手机显示屏上的显示位置相同等。本申请实施例在此对该规则不做具体限制。
S913、PC接收鼠标抬起事件,根据鼠标抬起事件在PC的显示屏显示该应用的界面。
当用户将想要拖拽的应用的界面(如计算器的界面)拖拽到PC的显示屏后,用户可抬起手指(即停止对鼠标的长按操作),并停止移动鼠标。PC可接收到抬起事件,如鼠标抬起事件。作为对该鼠标抬起事件的响应,PC可在PC的显示屏上鼠标指针停止移动的位置,显示该应用的界面。例如,结合图13的示例,如图14所示,当用户在将计算器界面的截图拖拽到PC的显示屏后,用户抬起手指,并停止移动鼠标。此时,作为响应,PC可在PC显示屏上显示计算器的界面1401。
作为一种示例,PC根据鼠标抬起事件在PC的显示屏显示应用的界面的具体实现可以是:在PC的键鼠模块接收到鼠标抬起事件后,PC的键鼠模块可通过PC的传输管理模块,通过与手机建立的连接,向手机发送请求消息,该请求消息用于请求应用的界面。手机接收到该请求消息后,可根据S907获得的窗口信息中的应用名称,包名和类名,获取该应用的界面,并通过与PC建立的连接发送给PC,以便PC可在PC的显示屏上显示该应用的界面。例如,PC与手机可采用Miracast实现应用的界面在PC显示屏上的显示。又例如,手机可采用DMP技术实现应用的界面在PC显示屏上的显示。
需要说明的是,本实施例各步骤中对其他内容具体描述与图3所示实施例中对应内容的描述类似,此处不在一一赘述。
本实施例提供的方法,在多个终端协同使用的场景中,当使用同一个输入设备,如鼠标完成对所有终端的控制时,用户可以通过移动鼠标,完成一个终端上显示的应用的界面从该终端到其他终端的拖拽,增加了多终端协同使用时终端之间的交互,提高了用户的使用体验。
可以理解的是,目前利用多屏协同实现多终端,如PC和手机协同办公时,实现内容拖拽的前提是将手机的界面投屏到PC的显示屏上显示,且内容的拖拽以及处理均是利用PC的硬件来完成的。手机通常是灭屏的,其硬件能力(如显示屏,手写笔等)无法参与到协同办公中来。这会导致用户很难综合利用参与协同办公的不同终端的特性,扬长避短,最大化工作效率。且手机投屏到PC上的界面也会挤占PC显示屏的显示空间。影响了多终端协同使用的使用效率。本实施例提供的跨设备的对象拖拽方法及设备,在不启动投屏的前提下,借助键鼠共享技术,使得用户可利用如触摸板,鼠标等输入设备,通过拖拽的方式将文本或文件等内容(或者说对象)在参与协同使用的多个终端间相互传递,且允许用户使用这些终端对传递的内容进行处理。
在其他一些实施例中,以下结合图1和图2B,以第一终端101为PC,第二终端102为平板电脑,输入设备102-1为鼠标为例,结合附图对本申请实施例提供的跨设备的对象拖拽方法进行详细介绍。
图15为本申请实施例提供的一种跨设备的对象拖拽方法的流程示意图。其中,本实施例以用户利用PC的鼠标将PC中的内容(该内容即为被拖拽的对象)通过拖拽的方式传递到平板电脑为例,对本实施例提供的方法进行详细说明。如图15所示,该方法可以包括以下S1501-S1510。
S1501、平板电脑与PC建立连接。
在平板电脑与PC成功建立连接后,两者便可协同使用。为了提高协同使用的效率,用户可使用一套输入设备,如PC的鼠标实现对PC和平板电脑两者的控制。
另外,由于鼠标是PC的输入设备,在其他终端与PC建立连接后,一般情况下,用户使用鼠标暂时可实现对PC的控制。在本实施例中,PC在开启键鼠共享模式后,还可在确定满足鼠标穿梭条件时,触发转由与PC建立了连接的创建了虚拟输入设备的其他终端对鼠标的操作进行响应。示例性的,鼠标穿梭条件可以是鼠标对应在PC显示屏上显示的鼠标指针滑过PC显示屏的边缘。
需要说明的是,本实施例S1501的具体描述,可参考本申请另一实施例S301中对应内容的具体描述,此处不再详细赘述。
如,以用户想要将PC的内容通过拖拽的方式传递到平板电脑,并在平板电脑中继续拖拽为例,触发转由与PC连接的创建了虚拟输入设备的其他终端,如平板电脑对鼠标的操作进行响应的过程可以包括以下S1502-S1506。
S1502、PC接收选中内容的鼠标操作。
其中,上述内容可以是文本(或称为文字,text),也可以是文件,还可以是文件夹。文件可以包括以下一种或多种格式的文件,如word文档,Excel工作簿,PowerPoint演示文稿,位图,图像文件,纯文本文件,声音文件,影片文件,flash动画文件,网页文件,压缩文件等。
另外,在本实施例中,选中的内容可以是一个,也可以是多个。例如,选中两个word文档。又例如,选中一个word文档,一个图像文件。再例如,选中两个文件夹。
S1503、PC接收鼠标按下事件和鼠标移动事件,根据鼠标按下事件和鼠标移动事件发起拖拽事件,并在PC的显示屏上显示内容的阴影随鼠标指针移动的动画。
其中,PC的鼠标指针可以为本申请中的第二光标。
S1504、PC监测鼠标指针在PC显示屏上的坐标位置。
S1505、PC根据鼠标指针在PC显示屏上的坐标位置,在确定鼠标指针滑出PC显示屏边缘时,拦截鼠标移动事件,并将鼠标移动事件包含的鼠标操作参数发送给平板电脑。
S1506、PC获取拖拽事件内容和阴影的位图,并将拖拽事件内容和阴影的位图发送给平板电脑。
其中,拖拽事件内容用于拖拽接续端设备,如平板电脑发起拖拽事件。例如,当S1502中的内容为文本时,拖拽事件内容可以包括该文本(text)。又例如,当S1502中的内容为文件或文件夹时,拖拽事件内容可以包括文件路径(如,统一资源标识符(uniformresource identifier,uri)。本申请中的拖拽数据可以包括该拖拽事件内容和阴影的位图,可用于拖拽接续端设备,如平板电脑在其显示屏上显示对象随鼠标指针移动的动画。
在本实施例中,在键鼠共享模式开启后,在用户想要将PC的内容通过拖拽的方式传递到与PC连接的创建了虚拟输入设备的其他终端,如平板电脑,在平板电脑中继续拖拽时,用户可使用PC的输入设备选中想要拖拽的内容。随后,在PC的鼠标指针显示在该内容上时,用户可输入拖拽操作,以便PC可根据该拖拽操作实现对相应对象,也就是该内容(如S1502中选中内容)的拖拽。
其中,该拖拽操作可以是用于指示发起针对该选中内容的拖拽事件的操作。该拖拽操作可以包括一个操作,也可以包括多个操作。例如,拖拽操作包括两个操作,分别为按下操作和移动操作。以输入设备是鼠标为例,该按下操作可以是鼠标按下操作,该移动操作可以是鼠标移动操作。用户可按下并移动鼠标(即使用PC的鼠标输入鼠标按下操作和鼠标移动操作),以触发PC的windows系统发起对该内容的拖拽事件,以便该内容(如该内容的阴影)可在PC的显示屏上随PC的鼠标指针的移动而移动。其中,阴影也可以称为拖拽阴影。
在内容(如内容的阴影)跟随鼠标指针移动的过程中,PC可判断被拖拽的内容(如内容的阴影)是否被拖出PC显示屏的边缘。在内容(如内容的阴影)被拖出PC显示屏的边缘时,可触发鼠标穿梭条件。在本实施例中,内容被拖出PC显示屏的边缘可以为该内容(如内容的阴影)的部分区域被拖出(或者说溢出)PC显示屏(即窗口溢出显示屏区域的比例大于预设阈值),也可以为该内容(如内容的阴影)的全部区域被拖出(或者说溢出)PC显示屏,还可以是该内容(如内容的阴影)随鼠标指针在PC显示屏移动时,鼠标指针滑出PC显示屏的边缘,本实施例在此不做具体限制。以下以判断被拖拽的内容(如内容的阴影)是否被拖出PC显示屏的边缘具体为判断鼠标指针是否滑出PC显示屏的边缘为例进行说明。
作为一种示例,用户可通过持续向同一个方向移动鼠标使对应显示在PC显示屏上的鼠标指针滑过(或者说滑出)PC显示屏的边缘,即触发鼠标穿梭条件。
示例性的,PC可根据鼠标指针的初始位置和相对位移确定鼠标指针在PC显示屏上的坐标位置,从而确定鼠标指针是否滑出PC显示屏的边缘。
其中,鼠标指针的初始位置可以是鼠标开始移动时,鼠标指针在PC显示屏上的坐标位置,或者说是鼠标开始移动之前鼠标指针在PC显示屏上的坐标位置。该鼠标指针的初始位置具体可以是指在以PC显示屏的左上角为坐标原点,X轴从左上角指向PC显示屏右边缘,Y轴从左上角指向PC显示屏下边缘的坐标系中的坐标位置。例如,PC确定鼠标指针是否滑出PC显示屏的边缘的具体过程可以是:结合图4,PC可建立以该初始坐标位置为坐标原点(如图4中所示的位置o),X轴从坐标原点o指向PC显示屏右边缘,Y轴从坐标原点o指向PC显示屏上边缘的坐标系。PC可确定在该坐标系中,PC显示屏各边缘的坐标值。PC显示屏各边缘在该坐标系中的坐标值可根据PC显示屏的分辨率和鼠标指针的初始位置来确定。如,如图4所示,在该坐标系中,PC显示屏的右边缘在X轴上的坐标值为x1,左边缘在X轴上的坐标值为-x2,上边缘在Y轴上的坐标值为y1,下边缘在Y轴上的坐标值为-y2。在鼠标移动后,鼠标会向PC上报对应鼠标指针的相对位移。PC根据鼠标上报的相对位移可计算出鼠标移动后鼠标指针在PC显示屏上的坐标位置(x,y)。根据该坐标位置(x,y),PC即可确定鼠标指针是否滑出PC显示屏的边缘。如,如果鼠标指针在X轴的坐标值x大于x1,则可确定鼠标指针滑出PC显示屏的右边缘。如果鼠标指针在X轴的坐标值x小于-x2,则可确定鼠标指针滑出PC显示屏的左边缘。如果鼠标指针在Y轴的坐标值y大于y1,则可确定鼠标指针滑出PC显示屏的上边缘。如果鼠标指针在Y轴的坐标值y小于-y2,则可确定鼠标指针滑出PC显示屏的下边缘。
在确定鼠标指针滑出PC显示屏的边缘,即鼠标穿梭条件触发后,用户便可使用PC的输入设备对与PC连接的创建了虚拟输入设备的其他终端进行控制。也就是说,鼠标穿梭条件触发后,PC可将用户使用PC的输入设备输入的操作的数据发送给创建了虚拟输入设备的其他终端。如,如果用户仍继续向同一个方向移动鼠标,则PC可将接收到的移动事件,如鼠标移动事件拦截,并将鼠标移动事件包含的操作参数,如鼠标操作参数传输给与PC连接的创建了虚拟输入设备的其他终端,以便该终端实现拖拽事件的接续。
需要说明的是,在本实施例中,如果与PC连接的设备仅有一个,如上述平板电脑,且平板电脑创建了虚拟输入设备,则PC可将对应操作参数传输给平板电脑,以便平板电脑实现拖拽事件的接续。
如果与PC连接的设备有多个,这多个设备中存在部分设备或全部设备建立了虚拟输入设备,则在一些实施例中,PC可在确定鼠标穿梭条件被触发时,在PC的显示屏上显示列表选项,该列表选项中包括与PC连接的设备中创建了虚拟输入设备的设备的标识(如包括上述平板电脑的标识)。PC可根据用户的选择,确定实现拖拽事件接续的设备。如用户选择了上述平板电脑的标识,则PC可将对应操作参数发送给平板电脑,以便平板电脑实现拖拽事件的接续。其中,与PC连接的设备在完成虚拟输入设备的创建后,可向PC发送虚拟输入设备创建成功的指示消息。PC根据接收到的指示消息可获得与PC连接的设备中哪些设备成功创建了虚拟输入设备,并以此为依据显示上述列表选项。在其他一些实施例中,可以预先配置穿梭关系。如果与PC连接的设备有多个,且这多个设备中存在部分设备或全部设备建立了虚拟输入设备,则可以根据预先配置的穿梭关系确定实现拖拽接续的设备。例如,与PC连接的多个设备中包括上述平板电脑,且平板电脑创建了虚拟输入设备,预先配置的穿梭关系是鼠标指针从PC显示屏的左侧(或者说左边缘)滑出,则确定实现拖拽接续的设备是平板电脑。那么,当用户按下并移动鼠标,使得鼠标指针滑过PC显示屏的左边缘时,PC不仅可以确定鼠标穿梭开始,还可确定实现拖拽接续的设备是平板电脑。当然,如果与PC连接的设备有一个,且该设备创建了虚拟输入设备时,也可以根据预先配置的穿梭关系确定实现拖拽接续的设备是否是该设备。如,预先配置的穿梭关系是鼠标指针从PC显示屏的左边缘滑出,则鼠标穿梭到平板电脑。但用户按下并移动鼠标后,使得鼠标指针滑过PC显示屏的右边缘,则可确定鼠标不穿梭到平板电脑。在另外一些实施例中,可以通过识别设备位置确定实现拖拽接续的设备。例如,用户按下并移动鼠标,使得鼠标指针滑过PC显示屏的左边缘,则可以利用蓝牙、超宽带(Ultra-wideband,UWB)、超声波等定位技术识别位于PC周围的设备位置,如PC识别出PC的左边是平板电脑,则可确定实现拖拽接续的设备是平板电脑。
其中,穿梭关系可以是用户通过配置文件提前配置的,也可以为用户提供配置穿梭关系的配置界面,用户可通过该配置界面提前配置穿梭关系。例如,以用户通过界面配置平板电端的穿梭关系为例。PC接收用户打开配置界面操作,显示配置界面,该配置界面中包括PC的标识(如PC的图标)和平板电脑的标识(如,平板电脑的图标),用户可通过拖动这两个标识来配置穿梭关系。作为一种示例,若用户将平板电脑的标识放置到PC的标识的左侧,则PC可确定当鼠标指针滑过PC显示屏的左边缘时,实现拖拽接续的设备的是平板电脑。若用户将平板电脑的标识放置到PC的标识的右侧,则PC可确定当鼠标指针滑过PC显示屏的右边缘时,实现拖拽接续的设备的是平板电脑。当存在多个设备时,可通过预先配置的方式配置每个设备的穿梭关系。以下实施例均以确定出的实现拖拽继续的设备为平板电脑为例进行说明。需要说明的是,对于根据预先配置穿梭关系及识别设备位置来确定实现拖拽接续的设备这两种实现来说,上述S1501可以在鼠标穿梭触发之前执行,也可以在鼠标穿梭触发之后执行,本实施例在此不做具体限制。
示例性的,结合图2B,在用户使用鼠标选中想要拖拽的内容后,PC的键鼠模块可接收到对应操作,如用户选中该内容的鼠标操作。用户可移动鼠标,使得PC的鼠标指针显示在用户选中的内容上。之后,如果用户按下并移动鼠标(即使用PC的鼠标输入按下操作(如鼠标按下操作)和移动操作(如鼠标移动操作)),PC的键鼠模块可对应接收到按下事件(如鼠标按下事件)和移动事件(如鼠标移动事件)。此时,由于鼠标穿梭条件还未触发,因此挂载的HOOK不会拦截输入事件,鼠标按下事件和鼠标移动事件会传输给PC的windows系统。根据接收到的鼠标按下事件和鼠标移动事件,PC的windows系统可发起针对该内容的拖拽事件,并绘制内容,如内容的阴影随鼠标指针移动的动画(或者说拖拽动画)在PC的显示屏上显示。例如,如图16所示,用户想要将PC的图片1601拖拽到平板电脑,并在平板电脑中继续拖拽。用户使用鼠标1602选中该图片1601,随后按下并移动鼠标1602。随着鼠标1602的移动,PC在PC的显示屏1603上对应显示图片1601的阴影1606随鼠标指针1604移动的动画,如图16中所示图片1601的阴影1606随鼠标指针1604移动的拖拽轨迹如轨迹1605所示。需要说明的是,在本实施例中,选中内容的操作,如S1502中的选中内容的鼠标操作是可选的。例如,用户想要拖拽的内容是一个文件,或一个文件夹时,则可以不执行该选中内容的鼠标操作,而是在鼠标指针显示在该文件或文件夹上时,执行按下操作和移动操作,即可发起针对该文件或文件夹的拖拽事件。
另如S1501中的描述,在键鼠共享模式开启后,PC会开启输入监听,并挂载HOOK。在拖拽事件发起后,鼠标指针会在PC显示屏上移动,PC的键鼠模块可利用输入监听,监测鼠标指针在PC显示屏上的实时坐标位置。当PC的键鼠模块根据监测到的鼠标指针在PC显示屏上的实时坐标位置,确定鼠标指针滑出PC显示屏的边缘时,可确定满足上述鼠标穿梭条件。此时,PC的键鼠模块可确定鼠标穿梭开始。
在PC的键鼠模块确定鼠标穿梭开始后,PC的键鼠模块可通过PC的传输管理模块,通过与平板电脑之间建立的连接,向平板电脑发送用于指示鼠标开始穿梭的穿梭状态信息(用于指示鼠标开始穿梭的穿梭状态信息可以为本申请中的第一穿梭状态信息)。平板电脑接收到该信息后,可模拟出一个鼠标指针,并在平板电脑的显示屏上显示该鼠标指针(平板电脑上显示的该鼠标指针可以为本申请中的第一光标)。PC的键鼠模块也可将PC显示屏上显示的鼠标指针隐藏。当然,随鼠标指针移动的对象,如对象的阴影也会被隐藏。例如,结合图16,随着鼠标1602的移动,在鼠标指针1604滑过PC显示屏1603的边缘后,PC隐藏PC的显示屏1603上显示的图片1601的阴影1606和鼠标指针1604。另外,平板电脑在平板电脑的显示屏上显示鼠标指针。给用户鼠标指针从PC穿梭到平板电脑的视觉效果。
在PC的键鼠模块确定鼠标穿梭开始后,如果用户对鼠标进行了操作,PC的键鼠模块可利用HOOK,拦截接收到的对应输入事件,如鼠标事件,并捕获拦截到的鼠标事件中的操作参数,如鼠标操作参数。其中,该鼠标操作参数可以包括:鼠标按键标志位(用于指示用户对鼠标进行了按下、抬起、移动或滚轮滚动中的何种操作)、坐标信息(在用户移动了鼠标时,用于指示鼠标移动的X坐标和Y坐标)、滚轮信息(在用户操作了鼠标的滚轮时,用于指示滚轮滚动的X轴距离和Y轴距离)、键位信息(用于指示用户对鼠标的左键、中键或右键中的哪个键进行了操作)。PC的键鼠模块还可通过PC的传输管理模块,将捕获到的操作参数,如鼠标操作参数通过建立的连接传输给平板电脑,用于平板电脑做出对应响应。例如,继续结合图16所示的示例,在鼠标指针滑过PC显示屏的边缘后,用户继续向同一个方向移动鼠标。PC的键鼠模块可接收移动事件,如鼠标移动事件。PC的键鼠模块此时可利用HOOK,将其拦截(或者说,将其屏蔽),以便该鼠标移动事件不会被发送给PC的windows系统,从而使得PC不会对接收到的鼠标移动事件做响应。PC的键鼠模块还可利用HOOK捕获拦截到的鼠标移动事件的操作参数,如鼠标操作参数,并通过PC的传输管理模块,通过建立的连接将捕获的该鼠标操作参数发送给平板电脑。作为一种示例,当鼠标事件为鼠标移动事件时,对应的鼠标操作参数可以是:用于指示用户对鼠标进行了移动的鼠标按键标志位,用于指示鼠标移动的X坐标和Y坐标的坐标信息,滚轮信息(取值为空)和键位信息(取值为空)。
另在鼠标穿梭开始后,PC(如PC的拖拽管理模块)可识别PC当前的拖拽状态(即是否正在进行拖拽)。如果PC当前正在进行拖拽,则可发起拖拽事件的接续,或者说发起跨屏拖拽。对于windows端,由于拖拽事件需要从窗口发起,也需要用窗口接收。因此,在确定鼠标穿梭开始后,PC可显示一个不可见的窗口,或者称为隐形窗口。示例性的,在PC的键鼠模块确定鼠标穿梭开始后,PC的键鼠模块可向PC的拖拽管理模块发送鼠标穿梭开始的回调指示。PC的拖拽管理模块可根据该回调指示向PC的窗口管理模块发送用于指示创建隐形窗口的请求。PC的窗口管理模块可根据该请求,创建并显示隐形窗口。如PC的窗口管理模块可在PC显示屏的边缘显示该隐形窗口。其中,该隐形窗口的透明度大于阈值,如隐形窗口的透明度很高,或者完全透明。
在隐形窗口显示后,如果鼠标穿梭发生时,PC正在进行拖拽,即在鼠标穿梭发生时,PC的windows系统发起的是针对内容的拖拽事件,则该隐形窗口可从windows系统接收该拖拽事件。如果鼠标穿梭发生时,PC并未进行拖拽,即用户移动鼠标时并未选中任何内容,而是仅移动了鼠标,则该隐形窗口不会接收到拖拽事件。在隐形窗口接收到拖拽事件后,PC的窗口管理模块可从隐形窗口接收到的拖拽事件中获取拖拽事件内容。如,PC的窗口管理模块可通过DragEnter事件,从拖拽事件中捕获拖拽事件内容。PC的窗口管理模块在获得拖拽事件内容后,可通过PC的传输管理模块,通过与平板电脑的建立的连接发送给平板电脑。其中,拖拽事件内容在发给平板电脑之前,PC还可对其进行序列化处理,也就是说,PC发送给平板电脑的拖拽事件内容可以是进行序列化处理后得到的数据。
示例性的,如图17所示,为本申请实施例提供的一种windows端的拖拽事件的数据结构示意图。当拖拽事件进入隐形窗口时,隐形窗口会接收到拖拽事件对应的数据对象,如IDataObject。PC的窗口管理模块可将其附加(attach)到COleDataObject。之后,通过DragEnter事件,如调用GetData函数获取拖拽事件对应的IDataObject中的拖拽事件内容。其中,在本实施例中,实现拖拽事件的延续所需的拖拽事件内容可包括文本或文件路径等。作为一种示例,PC的窗口管理模块可通过GetData(CF_UNICODETEXT)函数获取IDataObject中的文本。PC的窗口管理模块可通过GetData(CF_HDROP)函数获取IDataObject中的文件路径。在获得文本或文件路径后,可将其进行序列化处理后发送给平板电脑。
另外,在本实施例中,为了在平板电脑端能够显示被拖拽的对象,如该对象的阴影随鼠标指针移动的动画,由于阴影和位图(bitmap)可以相互转换,因此,PC还需获取PC端显示的阴影的位图(bitmap)。例如,PC可以通过截取拖拽的内容显示在PC显示屏的图像的方式,获得阴影的位图。又例如,以拖拽的内容是文本为例,PC可以根据拖拽的文本生成阴影的位图。再例如,以拖拽的内容是文件为例,PC可以根据获得的拖拽内容的文件路径查找到该拖拽的内容,以确定该拖拽的内容的类型(如图像文件),然后可根据类型使用对应的默认素材作为该阴影的位图,或者可根据获得的拖拽内容的文件路径获取该内容的缩略图作为该阴影的位图。阴影的位图可以通过PC的传输管理模块,通过与平板电脑的建立的连接发送给平板电脑。其中,阴影的位图在发给平板电脑之前,PC还可对其进行序列化处理,也就是说,PC发送给平板电脑的阴影的位图可以是进行序列化处理后得到的数据。
S1507、平板电脑接收拖拽事件内容和阴影的位图,根据拖拽事件内容和阴影的位图发起拖拽事件。
S1508、平板电脑接收鼠标操作参数,根据鼠标操作参数模拟鼠标移动事件。
S1509、平板电脑生成鼠标按下事件。
在平板电脑接收到拖拽事件内容和阴影的位图后,可对其进行解析,并发起拖拽事件。对于Android系统而言,由于拖拽事件需要从视图控件发起,也需要用视图控件接收。因此,平板电脑可开启一个透明的活动(activity),或者称为隐形activity。该隐形activity拥有透明度大于阈值的视图控件。利用该视图控件,调用安卓开源项目(Androidopen source project,AOSP)接口,平板电脑可根据接收到的拖拽事件内容和阴影的位图发起对应的拖拽事件,以便在平板电脑上实现拖拽事件的接续。
示例性的,结合图2B,及图17所示的示例,平板电脑的传输管理模块接收到拖拽事件内容和阴影的位图后,可将该拖拽事件内容和阴影的位图传输给平板电脑的拖拽管理模块。平板电脑的拖拽管理模块对接收到的拖拽事件内容进行解析,获得来自PC的文本或文件路径。根据获得的文本或文件路径,PC的拖拽管理模块可构造出拖拽事件的内容数据(clipData)。另外,平板电脑的拖拽管理模块还可根据接收到的阴影的位图,生成对应的阴影。之后,平板电脑的拖拽管理模块可利用平板电脑开启的透明activity的视图控件,调用AOSP接口提供的startDragAndDrop方法,将clipData和阴影作为输入参数,便可发起平板电脑端的拖拽事件。当然,如果拖拽事件内容和阴影的位图在发送给平板电脑之前,PC还进行了序列化处理,则平板电脑接收到对应数据后,进行反序列化处理便可获得该拖拽事件内容和阴影的位图。
其中,作为一种示例,如图18所示,为本申请实施例提供的一种Android端的拖拽事件(DragEvent)的数据结构示意图。结合图18,平板电脑的拖拽管理模块可根据接收来自PC的文本(text)或文件路径(uri)等构造出内容数据(clipData)(其中文本或文件路径包含在内容数据包括的内容物(item)中),并根据接收到的阴影的位图,生成对应的阴影,然后调用AOSP的startDragAndDrop方法,将clipData和阴影,及根据用户对鼠标的操作信息(如接收到的鼠标移动事件),获得的其他参数(如,动作(action,可包含开始、进入、悬停、释放、离开、结束等),当前x坐标,当前y坐标,本地状态(localstate),内容描述(clipdescription)等)等作为输入参数,以发起(dispatch)平板电脑端的拖拽事件(DragEvent)。
需要说明的是,结合图18,内容描述中包括标签(label)。该label用于指示拖拽事件是由平板电脑的拖拽管理模块发起,还是由平板电脑中的应用发起。例如,Label是一个字符串(String)。如,当label为“windowscast”时,用于指示拖拽事件由平板电脑的拖拽管理模块发起;当label不为“windowscast”时,用于指示拖拽事件不是由平板电的拖拽管理模块发起,而是由平板电脑的应用发起。在上述示例中,由于拖拽事件是由拖拽管理模块发起的,因此拖拽事件的内容描述中的标签为“windowscast”。其他参数的具体描述及构造规则与现有技术在Android端生成原始拖拽事件的对应实现类似,此处不再赘述。
可以理解的是,拖拽事件的执行可由拖拽操作来触发,该拖拽操作可以包括按下操作(如鼠标按下操作)和移动操作(如鼠标移动操作)。而在用户想要将PC的内容通过拖拽的方式传递到平板电脑,并在平板电脑中继续拖拽时,在用户通过移动鼠标,触发鼠标穿梭后,用户会继续向同一个方向移动鼠标。也就是说,用户会使用PC输入设备输入移动操作,如使用PC的鼠标输入鼠标移动操作。此时如S1505的描述,在用户使用PC的鼠标输入鼠标移动操作后,PC的键鼠模块会将对应接收到的移动事件,如鼠标移动事件拦截,并将鼠标移动事件包含的操作参数,如鼠标操作参数捕获处理后通过PC的传输管理模块发送给平板电脑,如发送给平板电脑的传输管理模块。此时,平板电脑的传输管理模块可接收该鼠标操作参数。由于PC与平板电脑的操作系统不同,其鼠标事件中鼠标操作参数的键值存在差异。因此,平板电脑接收到该鼠标操作参数后,可根据预设映射关系,将接收到的鼠标操作参数的键位码转换成平板电脑能够识别的键位码。之后,平板电脑(如平板电脑的键鼠模块)利用创建的虚拟输入设备根据转换键位码后的鼠标操作参数可模拟出平板电脑能够识别的输入事件,如鼠标事件,即可以模拟出平板电脑能够识别的移动事件,如鼠标移动事件。平板电脑的键鼠模块还可将鼠标移动事件发送给平板电脑的框架层。
另外,在鼠标穿梭开始时,穿梭发起端,即PC是处于正在进行拖拽的状态的,也就是说,PC是处于鼠标按下状态的,而穿梭目标端,即平板电脑此时仅可接收到鼠标移动事件,即未处于鼠标按下状态。因此,平板电脑可生成一个按下操作,如鼠标按下操作。例如,平板电脑在调用AOSP接口提供的startDragAndDrop方法后,平板电脑可收到拖拽开始回调(onDragStart)。此时平板电脑可根据平板电脑发起的拖拽事件中的标签确定拖拽事件是否由平板电脑的拖拽管理模块发起。当确定拖拽事件由平板电脑的拖拽管理模块发起(如label为“windowscast”)时,平板电脑可根据按下操作,如鼠标按下操作的操作参数,利用创建的虚拟输入设备生成(或者说模拟)按下事件,如鼠标按下事件,如,平板电脑的拖拽管理模块控制平板电脑的键鼠模块利用创建的虚拟输入设备向平板电脑的框架层发送鼠标按下事件。这样,在平板电脑端S1507中发起的拖拽事件才可被附加在平板电脑显示屏显示的鼠标指针上。
S1510、平板电脑根据鼠标移动事件和鼠标按下事件执行拖拽事件,并在平板电脑的显示屏上显示内容的阴影随鼠标指针移动的动画。
平板电脑(如平板电脑的框架层)可根据移动事件,如鼠标移动事件和按下事件,如鼠标按下事件执行S1507中发起的拖拽事件。在执行拖拽事件的过程中,平板电脑还可在平板电脑的显示屏上显示内容,如内容的阴影随鼠标指针(该鼠标指针可以为本申请中的第一光标)移动的动画。例如,结合图16,如图19所示,随着鼠标1901的移动,平板电脑在平板电脑的显示屏1902上对应显示图片的阴影1903随鼠标指针1904移动的动画,如图19中所示图片的阴影1903随鼠标指针1904移动的拖拽轨迹如轨迹1905所示。
在用户将内容通过拖拽的方式从PC拖拽到平板电脑,并在平板电脑中继续拖拽后,由于在平板电脑端,拖拽事件被附加在了平板电脑显示屏上显示的鼠标指针上,因此,用户可利用鼠标指针精确的选择鼠标释放点。例如,用户想要在平板电脑中使用或处理该内容,则可在将鼠标指针移动到想要使用或处理该内容的平板电脑的视图控件上后,释放鼠标。在鼠标被释放后,PC的键鼠模块可接收到对应的抬起事件,如鼠标抬起事件。由于该鼠标抬起事件是在鼠标穿梭开始后PC接收到的,因此PC的键鼠模块会利用HOOK,将其拦截(或者说,将其屏蔽),以便该鼠标抬起事件不会被发送给PC的windows系统,从而使得PC不会对接收到的鼠标抬起事件做响应。PC的键鼠模块还可利用HOOK,捕获鼠标抬起事件包含的操作参数,如鼠标操作参数,并通过PC的传输管理模块,通过建立的连接将捕获到的鼠标操作参数发送给平板电脑。其中,该鼠标抬起事件的鼠标操作参数可以包括:用于指示用户对鼠标进行了抬起的鼠标按键标志位,坐标信息(取值为空),滚轮信息(取值为空)和用于指示用户对鼠标的左键进行了操作的键位信息。相应的,平板电脑的传输管理模块可接收该鼠标操作参数。在平板电脑接收到该鼠标操作参数后,平板电脑可根据预设映射关系,将接收到的鼠标操作参数的键位码转换成平板电脑能够识别的键位码。之后,平板电脑利用创建的虚拟输入设备根据转换键位码后的操作参数,如鼠标操作参数可模拟出平板电脑能够识别的鼠标事件,即可以模拟出对应输入事件,如鼠标抬起事件。
在模拟出鼠标抬起事件后,平板电脑可根据鼠标指针当前所在坐标位置,确定鼠标释放点。例如,在平板电脑获知键鼠穿梭开始后,平板电脑可注册鼠标指针坐标位置的侦听器。这样,平板电脑通过该侦听器,可实时监测鼠标指针在平板电脑显示屏上的坐标位置。基于此,在平板电脑接收到鼠标抬起事件后,利用该侦听器,平板电脑可获得鼠标指针当前在平板电脑显示屏上的坐标位置。根据获得的该坐标位置,平板便可确定鼠标释放点。又例如,在平板电脑调用AOSP的startDragAndDrop方法发起拖拽事件后,平板电脑会对输入事件进行监听。如,当用户在平板电脑中继续拖拽时,平板电脑可监听到移动事件,如鼠标移动事件,根据鼠标移动事件平板电脑可获取该鼠标移动事件的操作参数,如鼠标操作参数,如从MotionEvent中提取该参数。该鼠标操作参数中包括用于指示鼠标位置的坐标信息。之后,在用户抬起手指,平板电脑监听到抬起事件,如鼠标抬起事件后,根据之前获得坐标信息平板电脑可确定鼠标指针的坐标位置,从而根据获得的坐标位置,确定鼠标释放点。
在用户释放鼠标后,由于PC端是直接对接收到的抬起事件,如鼠标抬起事件进行拦截处理的,因此,PC端的拖拽事件并未被释放,此时平板电脑可在接收到鼠标抬起事件后,通过建立的连接,向PC发送信令,以告知PC释放拖拽事件。
另外,平板电脑还可对抬起事件,如鼠标抬起事件进行相应的响应。例如,以S1502中的内容为文本为例,平板电脑在模拟出鼠标抬起事件后,平板电脑的拖拽管理模块可将上述拖拽事件中的内容数据,发送给鼠标释放点的视图控件,该内容数据中包括该文本。视图控件接收到该内容数据后,可根据内容数据中的文本进行相应的处理,如将该文本在视图控件中展示出来。又例如,S1502中的内容为文件为例。由于在平板电脑端拖拽文件的过程中,实际上文件并未传输给平板电脑。因此,在用户释放鼠标,PC接收到来自平板电脑的上述告知释放拖拽事件的信令后,PC可将该文件传输给平板电脑。平板电脑接收到该文件后,可将该文件存储在预定的缓存目录下,此时平板电脑的拖拽管理模块可获取该文件的uri(如称为uri 1),该uri 1是该缓存目录下的文件的路径,与S1507中PC发送给平板电脑的拖拽事件内容中的uri不同(PC发送的uri是该文件在PC上的存储路径)。平板电脑的拖拽管理模块根据uri 1可构造新的内容数据,并作为对鼠标抬起事件的响应,将该内容数据发送给鼠标释放点的视图控件。视图控件接收到该内容数据后,可进行相应的处理,如视图控件是备忘录中的视图控件,则可将该文件展示出来,又如视图控件是将聊天窗口中的输入框,则可将文件发送出去。
在其他一些实施例中,当平板电脑还与其他设备,如手机建立了连接时,如果用户想要继续将该内容拖拽到手机,则可继续移动鼠标,以使得平板电脑上的鼠标指针滑过平板电脑显示屏的边缘,触发鼠标从平板电脑到手机的穿梭,以便在手机上继续实现拖拽事件的接续。需要说明的是,在鼠标穿梭到手机上后,PC可直接与手机进行交互,以便手机实现拖拽事件的接续。手机上实现拖拽事件接续的具体描述,与平板电脑实现拖拽事件接续的具体描述类似,此处不再一一赘述。
可以理解的是,通过上述过程,在不启动投屏的前提下,用户可使用输入设备,如PC的鼠标,将PC应用内的文本或文件等内容使用拖拽的方式,移动到PC屏幕的边缘并继续向同一个方向移动,以触发鼠标穿梭。在鼠标穿梭开始后,鼠标指针出现在平板电脑上。且PC通过将拖拽事件内容发送给平板电脑,使得拖拽事件可被继续附加在平板电脑的鼠标指针上,以在平板电脑上实现拖拽事件的接续,给用户一个内容被从PC拖拽在平板电脑上的视觉效果。
在本申请实施例中,用户可能不仅有将PC的内容通过拖拽的方式传递到平板电脑,并在平板电脑中继续拖拽的需求,还可能会有将平板电脑中的内容通过拖拽的方式传递到PC的需求。例如,结合上述S1501-S1510中的示例,用户将PC的图片1通过拖拽的方式传递到了平板电脑,并在平板电脑中继续拖拽后,释放了鼠标。之后,用户利用平板电脑的手写笔对图片1进行编辑后保存。用户想将编辑后的图片1通过拖拽的方式传递到了PC,并在PC继续拖拽后,释放鼠标,以便在PC端保存编辑后的图片1。
请参考图20,为本申请实施例提供的另一种跨设备的对象拖拽方法的流程示意图。以下结合图15所示实施例,以在鼠标穿梭发生后,用户想要将平板电脑的内容通过拖拽的方式传递到PC,并在PC中继续拖拽为例,对本实施例提供的方法进行介绍。如图20所示,该方法可以包括以下S2001-S2010。
S2001、平板电脑接收来自PC的选中内容的鼠标操作。
S2002、平板电脑接收来自PC的鼠标按下事件和鼠标移动事件的鼠标操作参数,根据鼠标操作参数模拟鼠标按下事件和鼠标移动事件,根据鼠标按下事件和鼠标移动事件发起拖拽事件,并在平板电脑的显示屏上显示内容的阴影随鼠标指针移动的动画。
其中,在本实施例中,鼠标按下事件的鼠标操作参数可以为本申请中的第一操作参数,鼠标移动事件的鼠标操作参数可以为本申请中的第二操作参数。
如图15所示实施例中的描述,在键鼠共享模式开启后,如果鼠标穿梭发生,则PC会利用挂载HOOK在用户操作PC的输入设备,如鼠标后,拦截对应输入事件,如鼠标事件,且PC会将拦截到的鼠标事件中包含的操作参数,如鼠标操作参数捕获后发送给平板电脑。示例性的,以在鼠标穿梭到平板电脑后,用户想要通过拖拽的方式将平板电脑中的内容传递到PC,并在PC中继续拖拽为例。结合图2B,用户使用PC的输入设备,如鼠标选中想要拖拽的内容。PC的键鼠模块可接收到对应的输入操作,如鼠标操作。PC的键鼠模块会利用HOOK,拦截接收到的对应输入事件,如鼠标事件,以便该输入事件不会被发送给PC的windows系统,从而使得PC不会对接收到的输入事件做响应。PC的键鼠模块还会利用HOOK捕获拦截到的输入事件中的操作参数,如鼠标操作参数,并通过PC的传输管理模块,通过建立的连接传输给平板电脑。此时平板电脑的传输管理模块可接收到对应的操作参数,如鼠标操作参数。平板电脑在对接收到的操作参数进行键位码转化后,利用创建的虚拟输入设备可模拟出对应的输入事件,如鼠标事件。
之后,在平板电脑的鼠标指针显示在想要拖拽的对象,如用户选中的内容上时,用户可使用PC的输入设备,如鼠标输入拖拽操作,以便平板电脑可根据该拖拽操作实现对相应对象,也就是该内容的拖拽。其中,该拖拽操作可以是用于指示发起针对该选中内容的拖拽事件的操作。该拖拽操作可以包括一个操作,也可以包括多个操作。例如,拖拽操作包括两个操作,分别为按下操作和移动操作。以输入设备是鼠标为例,该按下操作可以是鼠标按下操作,该移动操作可以是鼠标移动操作。如用户可按下并移动PC的鼠标,即使用PC的鼠标输入鼠标按下操作和鼠标移动操作。之后,PC的键鼠模块可对应接收到按下事件(如鼠标按下事件)和移动事件(如鼠标移动事件)。类似的,PC的键鼠模块可利用HOOK,拦截接收到的鼠标按下事件和鼠标移动事件,并利用HOOK将拦截到的鼠标按下事件和鼠标移动事件的操作参数,如鼠标操作参数捕获后,通过PC的传输管理模块,通过建立的连接传输给平板电脑。此时平板电脑的传输管理模块可接收到对应的操作参数,如鼠标操作参数。平板电脑在对接收到的操作参数进行键位码转化后,利用创建的虚拟输入设备可模拟出对应输入事件,如模拟出按下事件(如鼠标按下事件)和移动事件(如鼠标移动事件)。
在平板电脑模拟出按下事件(如鼠标按下事件)和移动事件(如鼠标移动事件)后,作为对这些事件的响应,平板电脑可由对应应用(如选中的内容是word文档,该应用为办公应用;又如选中的内容是文件管理器中的图片,该应用为文件管理器;再如选中的内容是备忘录中的一段文本,该应用为备忘录)发起拖拽事件,并绘制内容,如内容的阴影随鼠标指针移动的动画在平板电脑的显示屏上显示。例如,用户利用平板电脑的手写笔对从PC拖拽来的图片1进行编辑后保存。用户想要将编辑后的图片拖拽到PC,并在PC中继续拖拽。如图21所示,用户可使用鼠标2101选中该编辑后的图片2102,随后按下并移动鼠标2101。随着鼠标2101的移动,平板电脑在平板电脑的显示屏2103上对应显示编辑后的图片2102的阴影2106随鼠标指针2104移动的动画,如图21中所示图片2102的阴影2106随鼠标指针2104移动的拖拽轨迹如轨迹2105所示。
需要说明的是,以上是以触发拖拽的事件包括按下事件和移动事件为例进行说明的。如用户通过按下并移动鼠标可触发拖拽。在其他一些实施例中,触发拖拽的事件可以仅包括按下事件。如用户可通过长按鼠标触发拖拽,或者用户可通过按下鼠标触发拖拽。本实施例在此不做具体限制。
S2003、平板电脑获取拖拽事件内容和阴影的位图,并缓存获得的拖拽事件内容和阴影的位图。
其中,拖拽事件内容用于拖拽接续端设备构造拖拽事件。例如,当S2001中的内容为文本时,拖拽事件内容可以包括文本(text)。又例如,当S2001中的内容为文件或文件夹时,拖拽事件内容可以包括文件路径(如,uri)。
示例性的,结合图2B,在平板电脑的应用发起拖拽事件时,对应的拖拽事件内容可被框架层回调给应用层。如在应用在调用AOSP接口提供的startDragAndDrop方法发起拖拽事件时,框架层可利用程序插桩的方式,从中提取到拖拽事件内容。如可预先确定需要插桩的地点和内容,然后根据确定出的地点和内容进行程序插桩,以便可提取出拖拽事件内容。之后,平板电脑的框架层可将提取出的拖拽事件内容回调给平板电脑应用层的拖拽管理模块。平板电脑的拖拽管理模块获得该拖拽事件内容后,可将其缓存。作为一种示例,实现拖拽事件的延续所需的拖拽事件内容可包括文本或文件路径等。在应用发起拖拽事件时,框架层利用程序插桩的方式可提取出文本或文件路径。
另外,在本实施例中,拖拽事件可能有两种发起方式,一种是由平板电脑的拖拽管理模块发起的(即拖拽是由PC穿梭到平板电脑的,如图15所示实施例中的描述),另一种是由平板电脑的应用发起的。且结合图15所示实施例中对图18所示数据结构的描述可知,在本实施例中,平板电脑的拖拽事件的内容描述中包括标签(label),用于指示拖拽事件是由平板电脑的拖拽管理模块发起,还是由平板电脑中的应用发起。可以理解的是,当拖拽事件是由平板电脑的应用发起,或者说不是由平板电脑的拖拽管理模块发起的时,才需要获取拖拽事件内容并缓存,以便在拖拽穿梭到PC后,用于PC进行拖拽事件接续。也就是说,拖拽事件被发起后,平板电脑可根据拖拽事件的内容描述中的标签(label)来区分拖拽事件是否由平板电脑的应用发起,还是由平板电脑的拖拽管理模块发起。如当label不为“windowscast”时,可确定拖拽事件不是由平板电脑的拖拽管理模块发起,而是由平板电脑的应用发起。当拖拽事件不是由平板电脑的拖拽管理模块发起的,框架层才需获取拖拽事件内容,并将获取到的拖拽事件内容发送给平板电脑的拖拽管理模块,以便其缓存该拖拽事件内容。
另外,在本实施例中,框架层还可通过新增接口或利用原有接口(如利用回调clipData的接口),获取阴影的位图(bitmap)。获得的阴影的位图也可以回调给平板电脑应用层的拖拽管理模块。平板电脑的拖拽管理模块获得该阴影的位图后,也可将其缓存。
S2004、平板电脑监测鼠标指针在平板电脑显示屏上的坐标位置。
S2005、平板电脑根据鼠标指针在平板电脑显示屏上的坐标位置,在确定鼠标指针滑出平板电脑显示屏边缘时,向PC发送用于指示鼠标穿梭结束的穿梭状态信息。
S2006、PC接收用于指示鼠标穿梭结束的穿梭状态信息。
其中,用于指示鼠标穿梭结束的穿梭状态信息可以为本申请中的第二穿梭状态信息。
在内容(如内容的阴影)跟随鼠标指针移动的过程中,平板电脑可判断被拖拽的内容(如内容的阴影)是否被拖出平板电脑显示屏的边缘。在内容(如内容的阴影)被拖出平板电脑显示屏的边缘时,表明用户想要使用鼠标对其他设备进行控制。在本实施例中,内容被拖出平板电脑显示屏的边缘的具体描述与内容被拖出PC的具体描述类似,此处不再详细赘述。以下以判断被拖拽的内容(如内容的阴影)是否被拖出平板电脑显示屏的边缘具体为判断鼠标指针是否滑出平板电脑显示屏的边缘为例进行说明。
作为一种示例,在拖拽事件发起后,鼠标指针会在平板电脑的显示屏上移动,平板电脑可监测鼠标指针在平板电脑显示屏上的实时坐标位置。例如,在键鼠穿梭开始后,平板电脑可注册鼠标指针坐标位置的侦听器。这样,平板电脑通过该侦听器,可实时监测鼠标指针在平板电脑显示屏上的坐标位置。平板电脑可根据侦听器监测到的鼠标指针在平板电脑显示屏上的实时坐标位置,确定鼠标指针是否滑过平板电脑显示屏的边缘。示例性的,平板电脑可根据鼠标指针的初始位置和相对位移确定鼠标指针在平板电脑显示屏上的坐标位置,从而确定鼠标指针是否滑出平板电脑显示屏的边缘。其中,鼠标指针的初始位置可以是鼠标开始移动时,鼠标指针在平板电脑显示屏上的坐标位置,或者说是鼠标开始移动之前鼠标指针在平板电脑显示屏上的坐标位置。该鼠标指针的初始位置具体可以是指在以平板电脑显示屏的左上角为坐标原点,X轴从左上角指向平板电脑显示屏右边缘,Y轴从左上角指向平板电脑显示屏下边缘的坐标系中的坐标位置。平板电脑确定鼠标指针滑出平板电脑显示屏边缘的具体实现与PC确定鼠标指针滑出PC显示屏边缘的具体实现类似,此处不再详细赘述。
在平板电脑确定鼠标指针滑过平板电脑显示屏的边缘后,表明用户想要使用鼠标对其他设备进行控制。如S1506中的描述,如果平板电脑仅与PC一个设备建立了连接,则表明用户想使用鼠标对PC进行控制,如果平板电脑与多个设备建立了连接,则手机可显示列表选项,该列表选项包括与平板电脑连接的所有设备的标识,供用户选择想用鼠标控制的设备。如用户选择了PC的标识,则表明用户想使用鼠标对PC进行控制。或者也可以在平板电脑中预先配置穿梭关系,用于确定鼠标穿梭到哪个设备,即确定转由哪个设备对鼠标的操作进行响应,对于穿梭关系的配置和应用的具体描述上述实施例中对应内容的描述类似,此处不在详细赘述。在确定用户想使用鼠标对PC进行控制时,平板电脑可确定鼠标穿梭结束。此时,平板电脑可通过建立的连接,向PC发送用于指示鼠标穿梭结束的穿梭状态信息。
S2007、PC根据接收到的穿梭状态信息确定鼠标穿梭结束。
S2008、PC取消鼠标事件的拦截,并生成鼠标按下事件。
S2009、PC从平板电脑获取拖拽事件内容和阴影的位图,并根据拖拽事件内容和阴影的位图发起拖拽事件。
其中,本申请中的拖拽数据可以包括该拖拽事件内容和阴影的位图。在PC接收到用于指示鼠标穿梭结束的穿梭状态信息后,可确定鼠标穿梭结束。
在确定鼠标穿梭结束后,PC可在PC显示屏上显示鼠标指针。结合图15所示实施例中的描述,在鼠标穿梭开始时,PC会隐藏PC显示屏上的鼠标指针,因此,在确定鼠标穿梭结束后,PC可重新在PC显示屏上显示鼠标指针。另外,鼠标穿梭开始的触发条件是鼠标指针滑过PC显示屏的边缘,因此,鼠标指针被隐藏前显示在PC显示屏的边缘。则在该实施例中,当鼠标穿梭结束时,PC取消鼠标指针的隐藏后,鼠标指针会显示在PC显示屏的边缘。当然,在鼠标穿梭结束时,平板电脑端的鼠标指针也将不显示。这样给用户鼠标指针从平板电脑穿梭到PC的视觉效果。
在确定鼠标穿梭结束后,PC还需卸载HOOK(或者说关闭HOOK),以取消对输入设备,如鼠标事件的拦截。示例性的,在用户通过移动鼠标,将平板电脑的内容通过拖拽的方式传递到PC,触发鼠标结束穿梭后,用户会继续向同一个方向移动鼠标,PC的键鼠模块可接收移动事件,如鼠标移动事件。由于此时已卸载了HOOK,因此,PC的键鼠模块会将接收到的移动事件,如鼠标移动事件发送给PC的windows系统,以便PC的windows系统对该移动事件进行响应。
另外,在鼠标穿梭结束前,平板电脑是处于正在进行拖拽的状态的,而鼠标穿梭回PC是要实现拖拽的接续,即需要在PC继续实现拖拽。由于Windows平台必须要在窗口上按下鼠标,才能正常发起拖拽。但在用户继续移动鼠标的过程中,PC仅可接收到移动事件,如鼠标移动事件,即不会接收到按下事件,如鼠标按下事件。因此,PC(如PC的拖拽管理模块)可生成一个按下事件,如鼠标按下事件,并传输给隐形窗口。例如,在PC确定鼠标穿梭结束后,平板电脑正在处于拖拽时,PC可生成鼠标按下事件,并传输给隐形窗口,以便在PC端S2009中发起的拖拽事件能被附加在PC显示屏显示的鼠标指针上,即在PC端实现拖拽事件的接续。
在本实施例中,在确定鼠标穿梭结束后,PC还可向平板电脑请求平板电脑的拖拽状态(即是否正在处于拖拽),当平板电脑返回的拖拽状态表明正在处于拖拽时,PC可向平板电脑请求拖拽事件内容和阴影的位图。PC可向平板电脑发送请求消息,该请求消息可用于请求拖拽数据,即用于请求拖拽事件内容和阴影的位图。
示例性的,结合图2B,在PC确定出鼠标穿梭结束时,PC的键鼠模块可向PC的拖拽管理模块发送鼠标穿梭结束的指示。PC的拖拽管理模块根据接收到的指示,可通过PC的传输管理模块,向平板电脑请求拖拽状态。当平板电脑返回的拖拽状态表明正在处于拖拽时,PC的拖拽管理模块可通过PC的传输管理模块,向平板电脑请求拖拽事件内容和阴影的位图。相应的,平板电脑的传输管理模块可接收到该请求,并向平板电脑的拖拽管理模块转发该请求。平板电脑的拖拽管理模块接收到该请求后,可将S2003中缓存的拖拽事件内容和阴影的位图,通过平板电脑的传输管理模块反馈给PC的传输管理模块。
结合S2003中的描述,PC的传输管理模块接收到拖拽事件内容后,可将该拖拽事件内容传输给PC的拖拽管理模块。PC的拖拽管理模块对接收到的拖拽事件内容进行解析,可获得来自平板电脑的文本或文件路径。根据获得的文本或文件路径,PC的拖拽管理模块可构造出拖拽事件的数据对象,如IDataObject。另外,PC的传输管理模块接收到阴影的位图后,可根据该位图在PC端还原阴影。如,可利用PC端提供的IDragSourceHelper接口还原阴影。之后,PC便可发起PC端的拖拽事件。如,结合图15所示实施例的描述,在鼠标穿梭开始时,PC会显示一隐形窗口。因此,PC可利用显示的该隐形窗口发起该拖拽事件。在拖拽事件被发起后可关闭该隐形窗口。
S2010、PC根据鼠标移动事件和鼠标按下事件执行拖拽事件,并在PC的显示屏上显示内容的阴影随鼠标指针移动的动画。
在拖拽事件被发起后,作为对移动事件,如鼠标移动事件和按下事件,如鼠标按下事件的响应,PC可执行该拖拽事件。并在PC的显示屏上显示内容,如内容的阴影随鼠标指针移动的动画。例如,结合图21,如图22所示,随着鼠标2201的移动,PC在PC的显示屏2202上对应显示编辑后的图片的阴影2203随鼠标指针2204移动的动画,如图22中所示阴影2203随鼠标指针2204移动的拖拽轨迹如轨迹2205所示。
需要说明的是,以上示例是以用户先进行了内容由PC到平板电脑的拖拽,后进行了内容由平板电脑到PC的拖拽为例进行说明的。在其他一些实施例中,用户也可以不进行内容由PC到平板电脑的拖拽,而是直接将平板电脑的某内容拖拽到了PC。这种实施例中的具体实现与图15和图20所示实施例的具体实现类似,区别在于,不执行S1502。S1503替换为接收移动事件(如鼠标移动事件),根据该移动事件在PC的显示屏上显示鼠标指针移动的动画。不执行S1506,但PC显示隐形窗口的操作是需要执行的,只是隐形窗口不会接收到拖拽事件。不执行S1507和S1509。S1510替换为平板电脑根据移动事件,如鼠标移动事件,在平板电脑的显示屏上显示鼠标指针移动的动画。也就是说,在鼠标穿梭开始后,平板电脑可接收用户使用PC的输入设备,如鼠标输入的移动平板电脑端显示的鼠标指针(如称为第一光标)的操作。作为对该操作的响应,平板电脑可在平板电脑的显示屏上显示鼠标指针移动的动画。如果用户想要拖拽某个内容,则可继续移动PC的鼠标,直到鼠标指针移动到该内容上。其中,平板电脑接收用户使用PC的输入设备,如鼠标输入的移动第一光标的操作,具体的可以是:PC拦截对应的移动事件,如鼠标移动事件,并将移动事件包括的操作参数,如称为第三操作参数发送给平板电脑。平板电脑可根据该第三操作参数模拟移动事件,如鼠标移动事件,从而可在平板电脑的显示屏上显示鼠标指针移动的动画。其他操作类似,本申请实施例在此不再详细赘述。
以上实施例是以在拖拽开始时,平板电脑将拖拽数据缓存起来,在鼠标穿梭结束后,由PC向平板电脑请求拖拽数据为例进行说明的。在其他一些实施例中,在拖拽开始时,平板电脑也可不进行拖拽数据的缓存,而是在确定鼠标穿梭结束后,获取并将PC主动发送拖拽数据,无需PC请求。
本实施例提供的方法,在不启动投屏的前提下,借助键鼠共享技术,使得用户可利用如鼠标等输入设备,通过拖拽的方式使文本或文件等内容跟随鼠标指针在参与协同使用的多个终端间穿梭。且允许用户使用这些终端对传递的内容进行处理,即可使得这多个终端的硬件能力均能参与到协同办公中来。另外,由于无需启动投屏,因此不会挤占某个终端显示屏的显示空间。提高了多终端协同使用的使用效率,提高了用户的使用体验。
另外,以上实施例是以输入设备是鼠标为例进行说明的,在本实施例中,输入设备也可以是触摸板。当输入设备是触摸板时,用户可使用触摸板的按键(左按键或右按键)输入按下操作,通过手指在触摸板上滑动输入移动操作。用户使用触摸板实现对象拖拽的具体实现与使用鼠标实现拖拽的具体实现类似,此处不再一一赘述。
图23为本申请实施例提供的一种跨设备的对象拖拽装置的组成示意图。如图23所示,该装置可以应用于第二终端(如上述手机或平板电脑),第二终端与第一终端连接,该装置可以包括:显示单元2301、接收单元2302和发送单元2303。
其中,显示单元2301,用于在第二终端显示的对象上显示第一光标。
接收单元2302,用于接收用户使用第一终端的输入设备输入的拖拽操作,拖拽操作用于发起针对对象的拖拽。
显示单元2301,还用于响应于拖拽操作,在第二终端的显示屏上显示对象随第一光标移动的动画。
发送单元2303,用于在确定对象被拖出第二终端的显示屏的边缘时,向第一终端发送拖拽数据。
进一步的,上述拖拽数据可以用于第一终端在第一终端的显示屏上显示对象随第二光标移动的动画。
进一步的,对象为应用的图标;或者,对象为窗口,窗口中包括应用的界面;对象为应用的图标时,拖拽数据包括:应用的图标;对象为窗口时,拖拽数据包括:应用的界面。
进一步的,接收单元2302,还用于接收来自第一终端的指示消息,指示消息是用户使用第一终端的输入设备输入拖拽释放操作后第一终端发送的,用于指示对对象的拖拽结束。
发送单元2303,还用于向第一终端发送数据,数据用于第一终端在第一终端的显示屏上显示应用的界面。
进一步的,当对象为应用的图标时,该装置还可以包括:创建单元2304。
创建单元2304,用于根据应用的图标创建拖拽对象,拖拽对象包括:与应用的图标相同的图标。
显示单元2301,具体用于响应于拖拽操作,显示拖拽对象随第一光标移动的动画。
进一步的,当对象为窗口时,显示单元2301,还用于显示应用的界面;接收单元2302,还用于在第一光标显示在第二终端的状态栏上时,接收用户使用第一终端的输入设备输入的长按操作,用于触发应用的界面窗口化;显示单元2301,还用于响应于长按操作,显示窗口;窗口具体包括应用的界面截图,拖拽数据具体包括应用的界面截图。
进一步的,显示单元2301,具体用于在第二终端的显示屏上显示对象的阴影随第一光标移动的动画。
进一步的,对象为文本,文件或文件夹;拖拽数据包括拖拽事件内容和阴影的位图;其中,对象为文本时,拖拽事件内容包括文本,对象为文件或文件夹时,拖拽事件内容为文件路径。
进一步的,该装置还可以包括:获取单元2305,用于取并缓存拖拽数据。
进一步的,接收单元2302,还用于接收来自第一终端的请求消息,请求消息用于请求拖拽数据;发送单元2303,具体用于向第一终端发送缓存的拖拽数据。
进一步的,接收单元2302,还用于接收来自第一终端的第一穿梭状态信息,第一穿梭状态信息用于指示穿梭开始。
显示单元2301,还用于响应于第一穿梭状态信息,在第二终端上显示第一光标。
进一步的,接收单元2302,还用于接收用户使用第一终端的输入设备输入的移动第一光标的操作。
显示单元2301,还用于响应于移动第一光标的操作,在第二终端的显示屏上显示第一光标移动的动画,直到第一光标移动到对象上。
进一步的,拖拽操作包括按下操作和移动操作;接收单元2302,具体用于接收来自第一终端的第一操作参数,第一操作参数是用户使用第一终端的输入设备执行按下操作后第一终端接收到的按下事件包含的操作参数;接收来自第一终端的第二操作参数,第二操作参数是用户使用第一终端的输入设备执行移动操作后第一终端接收到的移动事件包含的操作参数。
该装置还可以包括:模拟单元2306,用于根据第一操作参数模拟按下事件,根据第二操作参数模拟移动事件,按下事件和移动事件用于指示发起针对对象的拖拽。
显示单元2301,具体用于响应于按下事件和移动事件,显示对象随第一光标移动的动画。
进一步的,接收单元2302,具体用于接收来自第一终端的第三操作参数,第三操作参数是用户使用第一终端的输入设备执行移动操作后第一终端接收到的移动事件包含的操作参数。
模拟单元2306,用于根据第三操作参数模拟移动事件,移动事件用于指示移动第一光标。
进一步的,发送单元2303,还用于向第一终端发送第二穿梭状态信息,第二穿梭状态信息用于指示穿梭结束。
进一步的,长按操作包括按下操作和抬起操作;接收单元2302,具体用于接收来自第一终端的第四操作参数,第四操作参数是第一光标显示在状态栏上时,用户使用第一终端的输入设备执行按下操作后第一终端接收到的按下事件包含的操作参数;接收来自第一终端的第五操作参数,第五操作参数是用户执行按下操作一段时间后使用第一终端的输入设备执行抬起操作后第一终端接收到的抬起事件包含的操作参数。
模拟单元2305,用于根据第四操作参数模拟按下事件,根据第五操作参数模拟抬起事件,按下事件和抬起事件用于触发应用的界面窗口化。
显示单元2301,具体用于响应于按下事件和抬起事件,显示窗口。
进一步的,创建单元2304,还用于在与第一终端的连接建立成功后,创建虚拟输入设备;或者,接收单元2302,还用于接收来自第一终端的通知消息,通知消息用于指示第一终端的键鼠共享模式已开启,创建单元2304,还用于响应于通知消息,创建虚拟输入设备;其中,虚拟输入设备用于第二终端根据操作参数模拟输入事件。
图24为本申请实施例提供的另一种跨设备的对象拖拽装置的组成示意图。如图24所示,该装置可以应用于第一终端(如上述PC),第一终端与第二终端连接,该装置可以包括:发送单元2401和接收单元2402。
发送单元2401,用于向第二终端发送用户使用第一终端的输入设备输入的拖拽操作的数据,拖拽操作用于发起针对第二终端显示的对象的拖拽。
接收单元2402,用于接收来自第二终端的拖拽数据,拖拽数据是对象随第一光标在第二终端的显示屏上移动的过程中,第二终端确定对象被拖出第二终端的显示屏的边缘后向第一终端发送的。
进一步的,该装置还可以包括:显示单元2403,用于根据拖拽数据和拖拽操作,在第一终端的显示屏上显示对象随第二光标移动的动画。
进一步的,对象为应用的图标;或者,对象为窗口,窗口中包括应用的界面;对象为应用的图标时,拖拽数据包括:应用的图标;对象为窗口时,拖拽数据包括:应用的界面。
进一步的,接收单元2402,还用于接收用户使用第一终端的输入设备输入的拖拽释放操作。
显示单元2403,还用于响应于拖拽释放操作,在第一终端的显示屏上显示应用的界面。
进一步的,发送单元2401,还用于向第二终端发送指示消息,指示消息用于指示对对象的拖拽结束。
接收单元2402,还用于接收来自第二终端的数据。
显示单元2403,具体用于根据数据,在第一终端的显示屏上显示应用的界面。
进一步的,当对象为窗口时,发送单元2401,还用于向第二终端发送用户使用第一终端的输入设备输入的长按操作的数据,长按操作是第一光标显示在第二终端的状态栏上时用户输入的,用于触发第二终端显示的应用的界面窗口化;窗口具体包括应用的界面截图,拖拽数据具体包括应用的界面截图。
进一步的,显示单元2403,具体用于根据拖拽数据和拖拽操作,在第一终端的显示屏上显示对象的阴影随第二光标移动的动画。
进一步的,对象为文本,文件或文件夹;拖拽数据包括拖拽事件内容和阴影的位图;其中,对象为文本时,拖拽事件内容包括文本,对象为文件或文件夹时,拖拽事件内容为文件路径。
进一步的,该装置还可以包括:确定单元2404,用于确定第二光标滑出第一终端的显示屏的边缘。
进一步的,接收单元2402,还用于接收用户使用第一终端的输入设备输入的移动第二光标的操作。
显示单元2403,还用于响应于移动第二光标的操作,在第一终端的显示屏上显示第二光标移动的动画。
进一步的,发送单元2401,还用于向第二终端发送第一穿梭状态信息,第一穿梭状态信息用于指示穿梭开始。
进一步的,发送单元2401,还用于向第二终端发送用户使用第一终端的输入设备输入的移动第一光标的操作的数据,用于第二终端在第二终端的显示屏上显示第一光标移动的动画。
进一步的,拖拽操作包括按下操作和移动操作;该装置还可以包括:拦截单元2405。
拦截单元2405,用于在用户使用第一终端的输入设备执行按下操作后,拦截按下事件。
发送单元2401,具体用于向第二终端发送按下事件包括的第一操作参数。
拦截单元2405,还用于在用户使用第一终端的输入设备执行移动操作后,拦截移动事件。
发送单元2401,具体用于向第二终端发送移动事件包括的第二操作参数。
其中,第一操作参数和第二操作参数分别用于第二终端模拟按下事件和移动事件,进而用于指示发起针对对象的拖拽。
进一步的,拦截单元2405,用于在用户使用第一终端的输入设备执行移动操作后,拦截移动事件。
发送单元2401,具体用于向第二终端发送移动事件包括的第三操作参数,第三操作参数用于第二终端模拟移动事件,进而用于指示移动第一光标。
进一步的,接收单元2402,还用于接收来自第二终端的第二穿梭状态信息,第二穿梭状态信息用于指示穿梭结束。
进一步的,发送单元2401,还用于向第二终端发送请求消息,请求消息用于请求拖拽数据。
进一步的,该装置还可以包括:输入单元2406。
拦截单元2405,用于取消输入事件的拦截。
输入单元2406,用于在用户使用第一终端的输入设备执行移动操作后,接收移动事件。
输入单元2406,还用于生成按下事件。
显示单元2403,具体用于根据移动事件,按下事件和拖拽数据,在第一终端的显示屏上显示对象随第二光标移动的动画。
进一步的,显示单元2403,还用于显示隐形窗口,隐形窗口的透明度大于阈值,隐形窗口用于发起拖拽事件。
进一步的,长按操作包括按下操作和抬起操作。拦截单元2405,用于在用户使用第一终端的输入设备执行按下操作后,拦截按下事件。
发送单元2401,具体用于向第二终端发送按下事件包括的第四操作参数。
拦截单元2405,还用于在用户执行按下操作一段时间后使用第一终端的输入设备执行抬起操作后,拦截抬起事件。
发送单元2401,还用于向第二终端发送抬起事件包括的第五操作参数。
其中,第四操作参数和第五操作参数分别用于第二终端模拟按下事件和抬起事件,进而用于触发应用的界面窗口化。
本申请实施例还提供一种跨设备的对象拖拽装置,该装置可以应用于上述实施例中的第一终端或第二终端。该装置可以包括:处理器,以及用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令时实现上述方法实施例中PC或手机或平板电脑执行的各个功能或者步骤。
本申请实施例还提供一种终端(该终端可以为上述实施例中的第一终端或第二终端),该终端可以包括:显示屏、存储器和一个或多个处理器。该显示屏、存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,终端可执行上述方法实施例中PC或手机或平板电脑执行的各个功能或者步骤。当然,该终端包括但不限于上述显示屏、存储器和一个或多个处理器。例如,该终端的结构可以参考图2A所示的手机的结构。
本申请实施例还提供一种芯片系统,该芯片系统可以应用于前述实施例中的终端(如第一终端或第二终端)。如图25所示,该芯片系统包括至少一个处理器2501和至少一个接口电路2502。该处理器2501可以是上述终端中的处理器。处理器2501和接口电路2502可通过线路互联。该处理器2501可以通过接口电路2502从上述终端的存储器接收并执行计算机指令。当计算机指令被处理器2501执行时,可使得终端执行上述实施例中PC或手机或平板电脑执行的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机可读存储介质,用于存储上述终端(如PC或手机或平板电脑)运行的计算机指令。
本申请实施例还提供一种计算机程序产品,包括上述终端(如PC或手机或平板电脑)运行的计算机指令。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (43)
1.一种跨设备的对象拖拽方法,其特征在于,应用于第二终端,所述第二终端与第一终端连接,所述方法包括:
所述第二终端在所述第二终端显示的对象上显示第一光标;
所述第二终端接收用户使用所述第一终端的输入设备输入的拖拽操作,所述拖拽操作用于发起针对所述对象的拖拽;
响应于所述拖拽操作,所述第二终端在所述第二终端的显示屏上显示所述对象随所述第一光标移动的动画;
所述第二终端在确定所述对象被拖出所述第二终端的显示屏的边缘时,向所述第一终端发送拖拽数据。
2.根据权利要求1所述的方法,其特征在于,
所述拖拽数据用于所述第一终端在所述第一终端的显示屏上显示所述对象随第二光标移动的动画。
3.根据权利要求1或2所述的方法,其特征在于,所述对象为应用的图标;或者,所述对象为窗口,所述窗口中包括应用的界面;
所述对象为所述应用的图标时,所述拖拽数据包括:所述应用的图标;所述对象为所述窗口时,所述拖拽数据包括:所述应用的界面。
4.根据权利要求3所述的方法,其特征在于,在所述向所述第一终端发送拖拽数据之后,所述方法还包括:
所述第二终端接收来自所述第一终端的指示消息,所述指示消息是用户使用所述第一终端的输入设备输入拖拽释放操作后所述第一终端发送的,用于指示对所述对象的拖拽结束;
所述第二终端向所述第一终端发送数据,所述数据用于所述第一终端在所述第一终端的显示屏上显示所述应用的界面。
5.根据权利要求3或4所述的方法,其特征在于,当所述对象为所述应用的图标时,在所述第二终端接收用户使用所述第一终端的输入设备输入的拖拽操作之后,所述方法还包括:
所述第二终端根据所述应用的图标创建拖拽对象,所述拖拽对象包括:与所述应用的图标相同的图标;
响应于所述拖拽操作,所述第二终端在所述第二终端的显示屏上显示所述对象随所述第一光标移动的动画,包括:
响应于所述拖拽操作,所述第二终端显示所述拖拽对象随所述第一光标移动的动画。
6.根据权利要求3或4所述的方法,其特征在于,当所述对象为所述窗口时,在所述第二终端在所述第二终端显示的对象上显示第一光标之前,所述方法还包括:
所述第二终端显示所述应用的界面;
在所述第一光标显示在所述第二终端的状态栏上时,所述第二终端接收用户使用所述第一终端的输入设备输入的长按操作,用于触发所述应用的界面窗口化;
响应于所述长按操作,所述第二终端显示所述窗口;所述窗口具体包括所述应用的界面截图,所述拖拽数据具体包括所述应用的界面截图。
7.根据权利要求1或2所述的方法,其特征在于,所述第二终端在所述第二终端的显示屏上显示所述对象随所述第一光标移动的动画,包括:
所述第二终端在所述第二终端的显示屏上显示所述对象的阴影随所述第一光标移动的动画。
8.根据权利要求7所述的方法,其特征在于,所述对象为文本,文件或文件夹;所述拖拽数据包括拖拽事件内容和所述阴影的位图;
其中,所述对象为文本时,所述拖拽事件内容包括所述文本,所述对象为文件或文件夹时,所述拖拽事件内容为文件路径。
9.根据权利要求1-7中任一项所述的方法,其特征在于,在所述响应于所述拖拽操作,所述第二终端在所述第二终端的显示屏上显示所述对象随所述第一光标移动的动画之后,所述方法还包括:
所述第二终端获取并缓存所述拖拽数据。
10.根据权利要求9所述的方法,其特征在于,在所述向所述第一终端发送拖拽数据之前,所述方法还包括:
所述第二终端接收来自所述第一终端的请求消息,所述请求消息用于请求所述拖拽数据;
所述向所述第一终端发送拖拽数据,包括:
所述第二终端向所述第一终端发送缓存的所述拖拽数据。
11.根据权利要求1-10中任一项所述的方法,其特征在于,在所述第二终端在所述第二终端显示的对象上显示第一光标之前,所述方法还包括:
所述第二终端接收来自所述第一终端的第一穿梭状态信息,所述第一穿梭状态信息用于指示穿梭开始;
响应于所述第一穿梭状态信息,所述第二终端在所述第二终端上显示所述第一光标。
12.根据权利要求11所述的方法,其特征在于,在所述第二终端在所述第二终端上显示所述第一光标之后,所述方法还包括:
所述第二终端接收用户使用所述第一终端的输入设备输入的移动所述第一光标的操作;
响应于移动所述第一光标的操作,所述第二终端在所述第二终端的显示屏上显示所述第一光标移动的动画,直到所述第一光标移动到所述对象上。
13.根据权利要求11或12所述的方法,其特征在于,所述拖拽操作包括按下操作和移动操作;
所述第二终端接收用户使用所述第一终端的输入设备输入的拖拽操作,包括:
所述第二终端接收来自所述第一终端的第一操作参数,所述第一操作参数是用户使用所述第一终端的输入设备执行所述按下操作后所述第一终端接收到的按下事件包含的操作参数;
所述第二终端接收来自所述第一终端的第二操作参数,所述第二操作参数是用户使用所述第一终端的输入设备执行所述移动操作后所述第一终端接收到的移动事件包含的操作参数;
所述第二终端根据所述第一操作参数模拟所述按下事件,根据所述第二操作参数模拟所述移动事件,所述按下事件和所述移动事件用于指示发起针对所述对象的拖拽;
所述响应于所述拖拽操作,所述第二终端在所述第二终端的显示屏上显示所述对象随所述第一光标移动的动画,包括:
响应于所述按下事件和所述移动事件,所述第二终端显示所述对象随所述第一光标移动的动画。
14.根据权利要求12所述的方法,其特征在于,所述第二终端接收用户使用所述第一终端的输入设备输入的移动所述第一光标的操作,包括:
所述第二终端接收来自所述第一终端的第三操作参数,所述第三操作参数是用户使用所述第一终端的输入设备执行移动操作后所述第一终端接收到的移动事件包含的操作参数;
所述第二终端根据所述第三操作参数模拟所述移动事件,所述移动事件用于指示移动所述第一光标。
15.根据权利要求12-14中任一项所述的方法,其特征在于,在所述第二终端在确定所述对象被拖出所述第二终端的显示屏的边缘后,所述方法还包括:
所述第二终端向所述第一终端发送第二穿梭状态信息,所述第二穿梭状态信息用于指示穿梭结束。
16.根据权利要求6所述的方法,其特征在于,所述长按操作包括按下操作和抬起操作;
所述第二终端接收用户使用所述第一终端的输入设备输入的长按操作,包括:
所述第二终端接收来自所述第一终端的第四操作参数,所述第四操作参数是所述第一光标显示在所述状态栏上时,用户使用所述第一终端的输入设备执行所述按下操作后所述第一终端接收到的按下事件包含的操作参数;
所述第二终端接收来自所述第一终端的第五操作参数,所述第五操作参数是用户执行所述按下操作一段时间后使用所述第一终端的输入设备执行所述抬起操作后所述第一终端接收到的抬起事件包含的操作参数;
所述第二终端根据所述第四操作参数模拟所述按下事件,根据所述第五操作参数模拟所述抬起事件,所述按下事件和所述抬起事件用于触发所述应用的界面窗口化;
所述响应于所述长按操作,所述第二终端显示所述窗口,包括:
响应于所述按下事件和所述抬起事件,所述第二终端显示所述窗口。
17.根据权利要求1-16中任一项所述的方法,其特征在于,所述方法还包括:
所述第二终端在与所述第一终端的连接建立成功后,创建虚拟输入设备;或者,
所述第二终端接收来自所述第一终端的通知消息,所述通知消息用于指示所述第一终端的键鼠共享模式已开启,响应于所述通知消息,所述第二终端创建所述虚拟输入设备;
其中,所述虚拟输入设备用于所述第二终端根据操作参数模拟输入事件。
18.一种跨设备的对象拖拽方法,其特征在于,应用于第一终端,所述第一终端与第二终端连接,所述方法包括:
所述第一终端向所述第二终端发送用户使用所述第一终端的输入设备输入的拖拽操作的数据,所述拖拽操作用于发起针对所述第二终端显示的对象的拖拽;
所述第一终端接收来自所述第二终端的拖拽数据,所述拖拽数据是所述对象随第一光标在所述第二终端的显示屏上移动的过程中,所述第二终端确定所述对象被拖出所述第二终端的显示屏的边缘后向所述第一终端发送的。
19.根据权利要求18所述的方法,其特征在于,在所述第一终端接收来自所述第二终端的拖拽数据之后,所述方法还包括:
所述第一终端根据所述拖拽数据和所述拖拽操作,在所述第一终端的显示屏上显示所述对象随第二光标移动的动画。
20.根据权利要求18或19所述的方法,其特征在于,所述对象为应用的图标;或者,所述对象为窗口,所述窗口中包括应用的界面;
所述对象为所述应用的图标时,所述拖拽数据包括:所述应用的图标;所述对象为所述窗口时,所述拖拽数据包括:所述应用的界面。
21.根据权利要求20所述的方法,其特征在于,在所述第一终端接收来自所述第二终端的拖拽数据之后,所述方法还包括:
所述第一终端接收用户使用所述第一终端的输入设备输入的拖拽释放操作;
响应于所述拖拽释放操作,所述第一终端在所述第一终端的显示屏上显示所述应用的界面。
22.根据权利要求21所述的方法,其特征在于,所述第一终端在所述第一终端的显示屏上显示所述应用的界面,包括:
所述第一终端向所述第二终端发送指示消息,所述指示消息用于指示对所述对象的拖拽结束;
所述第一终端接收来自所述第二终端的数据;
所述第一终端根据所述数据,在所述第一终端的显示屏上显示所述应用的界面。
23.根据权利要求20-22中任一项所述的方法,其特征在于,当所述对象为所述窗口时,在所述第一终端向所述第二终端发送用户使用所述第一终端的输入设备输入的拖拽操作的数据之前,所述方法还包括:
所述第一终端向所述第二终端发送用户使用所述第一终端的输入设备输入的长按操作的数据,所述长按操作是所述第一光标显示在所述第二终端的状态栏上时用户输入的,用于触发所述第二终端显示的所述应用的界面窗口化;所述窗口具体包括所述应用的界面截图,所述拖拽数据具体包括所述应用的界面截图。
24.根据权利要求19所述的方法,其特征在于,所述第一终端根据所述拖拽数据和所述拖拽操作,在所述第一终端的显示屏上显示所述对象随第二光标移动的动画,包括:
所述第一终端根据所述拖拽数据和所述拖拽操作,在所述第一终端的显示屏上显示所述对象的阴影随所述第二光标移动的动画。
25.根据权利要求24所述的方法,其特征在于,所述对象为文本,文件或文件夹;所述拖拽数据包括拖拽事件内容和所述阴影的位图;
其中,所述对象为文本时,所述拖拽事件内容包括所述文本,所述对象为文件或文件夹时,所述拖拽事件内容为文件路径。
26.根据权利要求18-25中任一项所述的方法,其特征在于,在所述第一终端向所述第二终端发送用户使用所述第一终端的输入设备输入的拖拽操作的数据之前,所述方法还包括:
所述第一终端确定所述第二光标滑出所述第一终端的显示屏的边缘。
27.根据权利要求26所述的方法,其特征在于,在所述第一终端确定所述第二光标滑出所述第一终端的显示屏的边缘之前,所述方法还包括:
所述第一终端接收用户使用所述第一终端的输入设备输入的移动所述第二光标的操作;
响应于所述移动所述第二光标的操作,所述第一终端在所述第一终端的显示屏上显示所述第二光标移动的动画。
28.根据权利要求26或27所述的方法,其特征在于,在所述第一终端确定所述第二光标滑出所述第一终端的显示屏的边缘之后,所述方法还包括:
所述第一终端向所述第二终端发送第一穿梭状态信息,所述第一穿梭状态信息用于指示穿梭开始。
29.根据权利要求26-28中任一项所述的方法,其特征在于,在所述第一终端确定所述第二光标滑出所述第一终端的显示屏的边缘之后,所述方法还包括:
所述第一终端向所述第二终端发送用户使用所述第一终端的输入设备输入的移动所述第一光标的操作的数据,用于所述第二终端在所述第二终端的显示屏上显示所述第一光标移动的动画。
30.根据权利要求26-29中任一项所述的方法,其特征在于,所述拖拽操作包括按下操作和移动操作;
所述第一终端向所述第二终端发送用户使用所述第一终端的输入设备输入的拖拽操作的数据,包括:
在用户使用所述第一终端的输入设备执行所述按下操作后,所述第一终端拦截按下事件;
所述第一终端向所述第二终端发送所述按下事件包括的第一操作参数;
在用户使用所述第一终端的输入设备执行所述移动操作后,所述第一终端拦截移动事件;
所述第一终端向所述第二终端发送所述移动事件包括的第二操作参数;
其中,所述第一操作参数和所述第二操作参数分别用于所述第二终端模拟所述按下事件和所述移动事件,进而用于指示发起针对所述对象的拖拽。
31.根据权利要求29所述的方法,其特征在于,所述第一终端向所述第二终端发送用户使用所述第一终端的输入设备输入的移动所述第一光标的操作的数据,包括:
在用户使用所述第一终端的输入设备执行移动操作后,所述第一终端拦截移动事件;
所述第一终端向所述第二终端发送所述移动事件包括的第三操作参数,所述第三操作参数用于所述第二终端模拟所述移动事件,进而用于指示移动所述第一光标。
32.根据权利要求19-31中任一项所述的方法,其特征在于,在所述第一终端根据所述拖拽数据和所述拖拽操作,在所述第一终端的显示屏上显示所述对象随第二光标移动的动画之前,所述方法还包括:
所述第一终端接收来自所述第二终端的第二穿梭状态信息,所述第二穿梭状态信息用于指示穿梭结束。
33.根据权利要求32所述的方法,其特征在于,在所述第一终端接收来自所述第二终端的拖拽数据之前,所述方法还包括:
所述第一终端向所述第二终端发送请求消息,所述请求消息用于请求所述拖拽数据。
34.根据权利要求32或33所述的方法,其特征在于,在所述第一终端接收来自所述第二终端的第二穿梭状态信息之后,所述方法还包括:
所述第一终端取消输入事件的拦截;
所述第一终端根据所述拖拽操作和所述拖拽数据,在所述第一终端的显示屏上显示所述对象随所述第二光标移动的动画,包括:
在用户使用所述第一终端的输入设备执行移动操作后,所述第一终端接收移动事件;
所述第一终端生成按下事件;
所述第一终端根据所述移动事件,所述按下事件和所述拖拽数据,在所述第一终端的显示屏上显示所述对象随所述第二光标移动的动画。
35.根据权利要求26所述的方法,其特征在于,在所述第一终端确定所述第二光标滑出所述第一终端的显示屏的边缘之后,所述方法还包括:
所述第一终端显示隐形窗口,所述隐形窗口的透明度大于阈值,所述隐形窗口用于发起拖拽事件。
36.根据权利要求23所述的方法,其特征在于,所述长按操作包括按下操作和抬起操作;
所述第一终端向所述第二终端发送用户使用所述第一终端的输入设备输入的长按操作的数据,包括:
在用户使用所述第一终端的输入设备执行所述按下操作后,所述第一终端拦截按下事件,所述第一终端向所述第二终端发送所述按下事件包括的第四操作参数;
在用户执行所述按下操作一段时间后使用所述第一终端的输入设备执行所述抬起操作后,所述第一终端拦截抬起事件,所述第一终端向所述第二终端发送所述抬起事件包括的第五操作参数;
其中,所述第四操作参数和所述第五操作参数分别用于所述第二终端模拟所述按下事件和所述抬起事件,进而用于触发所述应用的界面窗口化。
37.一种跨设备的对象拖拽装置,其特征在于,包括:处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令时实现如权利要求1-17中任一项所述的方法,或者实现如权利要求18-36中任一项所述的方法。
38.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现如权利要求1-17中任一项所述的方法,或者实现如权利要求18-36中任一项所述的方法。
39.一种跨设备的对象拖拽系统,其特征在于,包括:第一终端和第二终端;所述第一终端与所述第二终端连接;
所述第二终端,用于在所述第二终端显示的对象上显示第一光标;接收用户使用所述第一终端的输入设备输入的拖拽操作,所述拖拽操作用于发起针对所述对象的拖拽;响应于所述拖拽操作,在所述第二终端的显示屏上显示所述对象随所述第一光标移动的动画;在确定所述对象被拖出所述第二终端的显示屏的边缘时,向所述第一终端发送拖拽数据;
所述第一终端,用于接收来自所述第二终端的拖拽数据。
40.根据权利要求39所述的系统,其特征在于,所述第一终端,还用于根据所述拖拽数据和所述拖拽操作,在所述第一终端的显示屏上显示所述对象随第二光标移动的动画。
41.根据权利要求39或40所述的系统,其特征在于,所述第一终端,还用于在确定第二光标滑出所述第一终端的显示屏的边缘后,向所述第二终端发送用户使用所述第一终端的输入设备输入的拖拽操作的数据。
42.根据权利要求39-41中任一项所述的系统,其特征在于,所述第一终端,还用于在确定第二光标滑出所述第一终端的显示屏的边缘后,向所述第二终端发送第一穿梭状态信息,所述第一穿梭状态信息用于指示穿梭开始。
43.根据权利要求42所述的系统,其特征在于,所述第二终端,还用于在确定所述对象被拖出所述第二终端的显示屏的边缘后,向所述第一终端发送第二穿梭状态信息,所述第二穿梭状态信息用于指示穿梭结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211272243.1A CN115657918A (zh) | 2020-07-29 | 2020-07-29 | 一种跨设备的对象拖拽方法及设备 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211272243.1A CN115657918A (zh) | 2020-07-29 | 2020-07-29 | 一种跨设备的对象拖拽方法及设备 |
CN202010747180.5A CN114089900A (zh) | 2020-07-29 | 2020-07-29 | 一种跨设备的对象拖拽方法及设备 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010747180.5A Division CN114089900A (zh) | 2020-04-24 | 2020-07-29 | 一种跨设备的对象拖拽方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115657918A true CN115657918A (zh) | 2023-01-31 |
Family
ID=80294899
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010747180.5A Pending CN114089900A (zh) | 2020-04-24 | 2020-07-29 | 一种跨设备的对象拖拽方法及设备 |
CN202211272243.1A Pending CN115657918A (zh) | 2020-07-29 | 2020-07-29 | 一种跨设备的对象拖拽方法及设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010747180.5A Pending CN114089900A (zh) | 2020-04-24 | 2020-07-29 | 一种跨设备的对象拖拽方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN114089900A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145510A (zh) * | 2021-03-30 | 2022-10-04 | 华为技术有限公司 | 一种输入设备复用的跨设备协同方法及电子设备 |
CN117270699A (zh) * | 2022-06-13 | 2023-12-22 | 荣耀终端有限公司 | 设备建立连接的方法和终端设备 |
CN114760291B (zh) * | 2022-06-14 | 2022-09-13 | 深圳乐播科技有限公司 | 一种文件处理方法及装置 |
CN118363466A (zh) * | 2023-01-19 | 2024-07-19 | 华为终端有限公司 | 多设备之间共享键盘和鼠标的方法及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070288599A1 (en) * | 2006-06-09 | 2007-12-13 | Microsoft Corporation | Dragging and dropping objects between local and remote modules |
US20150180912A1 (en) * | 2013-12-20 | 2015-06-25 | Mobigloo LLC | Method and system for data transfer between touchscreen devices of same or different type |
US20170277381A1 (en) * | 2016-03-25 | 2017-09-28 | Microsoft Technology Licensing, Llc. | Cross-platform interactivity architecture |
WO2018120884A1 (zh) * | 2016-12-29 | 2018-07-05 | 北京奇虎科技有限公司 | Pc端控制移动设备的方法及系统 |
CN110489042A (zh) * | 2019-07-17 | 2019-11-22 | 视联动力信息技术股份有限公司 | 一种基于视联网模拟拖拽的方法及系统 |
US20200019367A1 (en) * | 2018-07-10 | 2020-01-16 | Apple Inc. | Cross device interactions |
-
2020
- 2020-07-29 CN CN202010747180.5A patent/CN114089900A/zh active Pending
- 2020-07-29 CN CN202211272243.1A patent/CN115657918A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070288599A1 (en) * | 2006-06-09 | 2007-12-13 | Microsoft Corporation | Dragging and dropping objects between local and remote modules |
US20150180912A1 (en) * | 2013-12-20 | 2015-06-25 | Mobigloo LLC | Method and system for data transfer between touchscreen devices of same or different type |
US20170277381A1 (en) * | 2016-03-25 | 2017-09-28 | Microsoft Technology Licensing, Llc. | Cross-platform interactivity architecture |
WO2018120884A1 (zh) * | 2016-12-29 | 2018-07-05 | 北京奇虎科技有限公司 | Pc端控制移动设备的方法及系统 |
US20200019367A1 (en) * | 2018-07-10 | 2020-01-16 | Apple Inc. | Cross device interactions |
CN110489042A (zh) * | 2019-07-17 | 2019-11-22 | 视联动力信息技术股份有限公司 | 一种基于视联网模拟拖拽的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114089900A (zh) | 2022-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114764298B (zh) | 一种跨设备的对象拖拽方法及设备 | |
US11722449B2 (en) | Notification message preview method and electronic device | |
CN114089901B (zh) | 一种跨设备的对象拖拽方法及设备 | |
CN110737386A (zh) | 一种屏幕截取方法及相关设备 | |
WO2022042656A1 (zh) | 一种界面显示方法及设备 | |
CN115657918A (zh) | 一种跨设备的对象拖拽方法及设备 | |
CN112486363A (zh) | 一种跨设备的内容分享方法、电子设备及系统 | |
WO2022048500A1 (zh) | 一种显示方法及设备 | |
EP4227784A1 (en) | Notification message management method and electronic device | |
WO2022179405A1 (zh) | 一种投屏显示方法及电子设备 | |
CN112130788A (zh) | 一种内容分享方法及其装置 | |
WO2021057699A1 (zh) | 具有柔性屏幕的电子设备的控制方法及电子设备 | |
CN112612439A (zh) | 弹幕显示方法、装置、电子设备及存储介质 | |
CN114077411A (zh) | 数据传输方法和设备 | |
CN115016697A (zh) | 投屏方法、计算机设备、可读存储介质和程序产品 | |
CN115426521A (zh) | 用于截屏的方法、电子设备、介质以及程序产品 | |
CN114363678A (zh) | 一种投屏方法及设备 | |
WO2022206848A1 (zh) | 一种应用小部件的显示方法及设备 | |
CN114647351A (zh) | 一种界面元素显示方法及设备 | |
WO2024140757A1 (zh) | 跨设备分屏方法及相关装置 | |
WO2023273460A1 (zh) | 一种投屏显示方法及电子设备 | |
CN116301541A (zh) | 共享文件的方法、电子设备及计算机可读存储介质 | |
CN117193583A (zh) | 光标显示的方法及电子设备 | |
CN114356186A (zh) | 一种拖动阴影动画效果的实现方法及相关设备 | |
CN118101641A (zh) | 截图分享方法及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |