CN114764298A - 一种跨设备的对象拖拽方法及设备 - Google Patents

一种跨设备的对象拖拽方法及设备 Download PDF

Info

Publication number
CN114764298A
CN114764298A CN202210260430.1A CN202210260430A CN114764298A CN 114764298 A CN114764298 A CN 114764298A CN 202210260430 A CN202210260430 A CN 202210260430A CN 114764298 A CN114764298 A CN 114764298A
Authority
CN
China
Prior art keywords
terminal
dragging
drag
data
window
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.)
Granted
Application number
CN202210260430.1A
Other languages
English (en)
Other versions
CN114764298B (zh
Inventor
周星辰
林尤辉
王欢
曹原
丁宁
魏曦
王海军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210260430.1A priority Critical patent/CN114764298B/zh
Publication of CN114764298A publication Critical patent/CN114764298A/zh
Application granted granted Critical
Publication of CN114764298B publication Critical patent/CN114764298B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction 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/0485Scrolling or panning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction 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/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction 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/0486Drag-and-drop
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay

Abstract

本申请提供一种跨设备的对象拖拽方法及设备,涉及电子设备领域。提高了多终端协同使用的使用效率,使得拖拽更加直接显性化,提高了用户的拖拽使用体验。具体方案为,第一终端在第一终端的显示屏上显示对象;第一终端接收用户输入的拖拽操作,拖拽操作用于发起对对象的拖拽;响应于拖拽操作,第一终端在第一终端的显示屏上显示对象随拖拽操作移动的动画;第一终端在确定用户的拖拽意图是跨设备拖拽后,向第二终端发送拖拽数据,拖拽数据用于第二终端在第二终端的显示屏上显示上述对象。

Description

一种跨设备的对象拖拽方法及设备
本申请为,2020年7月29日提交中国专利局、申请号为202010747181.X、申请名称为“一种跨设备的对象拖拽方法及设备”的发明专利申请的分案申请。
技术领域
本申请涉及电子设备领域,尤其涉及一种跨设备的对象拖拽方法及设备。
背景技术
随着电子技术及移动互联网的发展,一个用户可同时拥有更多如手机、平板电脑、个人电脑(personal computer,PC)、智能家居设备(如电视机)等终端。一般情况下,各个终端的使用都是比较独立的。在如协同办公等有多终端协同使用需求的场景下,用户会将多个终端连接起来一起使用。例如,用户拥有一台PC和一部手机,用户可将PC和手机采用无线或有线的方式连接起来一起配合使用,实现PC和手机的协同办公。
发明内容
本申请实施例提供一种跨设备的对象拖拽方法及设备,在多终端协同使用的场景下,实现了这多个终端之间用户界面(user interface,UI)元素等对象的拖拽,提高了多终端协同使用的使用效率。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请提供一种跨设备的对象拖拽方法,该方法可以应用于第一终端,第一终端与第二终端连接,该方法可以包括:第一终端在第一终端的显示屏上显示对象;第一终端接收用户输入的拖拽操作,该拖拽操作用于发起对对象的拖拽;响应于拖拽操作,第一终端在第一终端的显示屏上显示对象随拖拽操作移动的动画;第一终端在确定用户的拖拽意图是跨设备拖拽后,向第二终端发送拖拽数据,拖拽数据用于第二终端在第二终端的显示屏上显示对象。
作为一种示例,在本实施例中,第一终端和第二终端均是可以运行操作系统,可以安装应用,具有显示器(或者说显示屏)的终端。第一终端和第二终端运行的操作系统可以相同,也可以不同。
采用本实施提供的技术方案,允许用户通过拖拽的方式,将窗口或UI元素或界面中的UI控件等对象从一个终端拖拽到协同使用的另一个终端中,提高了多终端协同使用的使用效率,使得拖拽更加直接显性化,提高了用户的拖拽使用体验。打破了不同终端之间屏幕、系统的壁垒,且无需依赖投屏窗口,便可实现各种对象的拖拽。另,拖拽的目标端设备,如上述第二终端并不需要作为第一终端的扩展屏,实现了真正意义上的跨设备跨系统的对象拖拽。且无需用户预先安装其他辅助软件,便可实现拖拽。
在一种可能的实现方式中,该方法还可以包括:在对象在第一终端的显示屏上移动的过程中,当对象的第一区域被拖出第一终端的显示屏时,第一终端在第一终端的显示屏上显示对象的第二区域;其中,拖拽数据具体用于第二终端在第二终端的显示屏上显示对象的第一区域,第一终端上显示的对象的第二区域与第二终端上显示的对象的第一区域能够实现对象内容的完整呈现。通过根据用户的拖拽,在第一终端和第二终端配合显示被拖拽对象的动画,使得拖拽动画流畅直观地呈现给用户。
在另一种可能的实现方式中,拖拽操作至少包括触发对象移动的操作;第一终端显示屏上显示的对象的第二区域随着操作动态变化。通过根据用户在第一终端的操作,动态调整显示在第一终端显示屏上的对象的区域,跟手性更佳。
在另一种可能的实现方式中,在第一终端在第一终端的显示屏上显示对象的第二区域之后,该方法还可以包括:第一终端接收来自第二终端的第三拖拽数据,第三拖拽数据是第二终端接收到用户对第二终端上显示的对象的第一区域的拖拽操作后,向第一终端发送的,第三拖拽数据包括对象第一角的坐标信息;第一终端显示屏上显示的对象的第二区域随着第三拖拽数据的变化而动态变化。通过根据用户在第二终端的操作,动态调整显示在第一终端显示屏上的对象的区域,跟手性更佳。该实现方式适用于两个不同用户或非连贯性拖拽任务的场景。
在另一种可能的实现方式中,上述拖拽数据可以包括第一拖拽数据和第二拖拽数据;在向第二终端发送拖拽数据之前,该方法还可以包括:第一终端在对象被开始拖拽时,从拖拽开始事件中获取第一拖拽数据;第一终端在对象在第一终端的显示屏上移动过程中,从拖拽移动事件中获取第二拖拽数据。
在另一种可能的实现方式中,上述对象可以为窗口或窗口的部分区域,窗口中包括应用的界面;第一拖拽数据可以包括:应用的界面和对象的矩形信息;第二拖拽数据可以包括:对象第一角的坐标信息。例如,第二拖拽数据中对象第一角的坐标信息可以是指对象在第一终端显示屏上第一角的坐标信息。
在另一种可能的实现方式中,当拖拽的对象为窗口时,在向第二终端发送拖拽数据之后,该方法还可以包括:第一终端接收用户输入的拖拽释放操作,该拖拽释放操作用于指示对对象的拖拽结束;响应于拖拽释放操作,第一终端向第二终端发送数据,数据用于第二终端在第二终端的显示屏上显示应用的界面。当拖拽的对象为窗口的部分区域时,在向第二终端发送拖拽数据之后,该方法还可以包括:第一终端接收用户输入的拖拽释放操作,该拖拽释放操作用于指示对对象的拖拽结束;响应于拖拽释放操作,第一终端向第二终端发送数据,该数据和上述拖拽数据用于第二终端在第二终端的显示屏上显示应用的界面的部分区域,该部分区域与用户拖拽的窗口的部分区域内容相同。在用户释放拖拽后,可通过向第二终端发送对应数据,实现被拖拽的窗口中应用界面或应用界面的部分区域在第二终端的显示,给用户以窗口或窗口部分区域被拖拽到第二终端的视觉效果。
在另一种可能的实现方式中,第一拖拽数据还可以包括应用的应用标签,应用标签用于第二终端开启第二终端本地的与应用标签对应的应用;在向第二终端发送拖拽数据之后,该方法还可以包括:第一终端接收用户输入的拖拽释放操作,拖拽释放操作用于指示对对象的拖拽结束;响应于拖拽释放操作,第一终端向第二终端发送指示信息,指示信息用于指示对对象的拖拽结束。在用户释放拖拽后,可通过向第二终端发送指示信息,以便第二终端根据该指示信息,及拖拽数据中包括的应用标签,开启本地对应应用并显示界面,给用户以窗口被拖拽到第二终端的视觉效果。
在另一种可能的实现方式中,该窗口可以为应用窗口或自由(freeform)小窗。
在另一种可能的实现方式中,上述对象可以为视频组件,悬浮窗,画中画或freeform小窗;第一拖拽数据可以包括:对象的矩形信息,对象在第一终端当前显示界面中的层名称;第二拖拽数据可以包括:对象第一上角的坐标信息。例如,第二拖拽数据中对象第一角的坐标信息可以是指对象在第一终端显示屏上第一角的坐标信息。
在另一种可能的实现方式中,在第一终端在确定用户的拖拽意图是跨设备拖拽后,该方法还可以包括:第一终端向第二终端发送录屏数据,录屏数据和拖拽数据用于第二终端在第二终端的显示屏上显示对象的部分区域或全部区域。通过向第二终端发送录屏数据,以用于第二终端还原被拖拽的对应的内容。
在另一种可能的实现方式中,在向第二终端发送拖拽数据之后,该方法还可以包括:第一终端接收用户输入的拖拽释放操作,拖拽释放操作用于指示对对象的拖拽结束;响应于拖拽释放操作,第一终端向第二终端发送指示信息,指示信息用于指示第二终端在第二终端的显示屏上显示对象的全部区域。在用户释放拖拽后,可通过向第二终端发送指示信息,以便第二终端根据该指示信息显示被拖拽对象的全部区域,给用户以UI元素被拖拽到第二终端的视觉效果。
在另一种可能的实现方式中,上述对象可以为第一界面中的UI控件,或上述对象为第一界面的部分区域,该部分区域包括UI控件。作为一种示例,该UI控件可以为widget或者其他界面中的控件;响应于拖拽操作,第一终端在第一终端的显示屏上显示对象随拖拽操作移动的动画,包括:响应于拖拽操作,第一终端在第一终端的显示屏上显示对象的阴影随拖拽操作移动的动画;其中,第一拖拽数据可以包括阴影的矩形信息,阴影和UI控件的标识;第二拖拽数据可以包括阴影第一角的坐标信息。
在另一种可能的实现方式中,在向第二终端发送拖拽数据之后,该方法还可以包括:第一终端接收用户输入的拖拽释放操作,拖拽释放操作用于指示对对象的拖拽结束;第一终端获取并向第二终端发送第一界面的指令流,指令流和UI控件的标识用于第二终端在第二终端的显示屏上显示UI控件。在用户释放拖拽后,可通过向第二终端发送被拖拽UI控件的界面的指令流,以便第二终端可根据接收到的被拖拽UI控件的标识从指令流中提取出该UI控件,并显示,给用户以UI控件被拖拽到第二终端的视觉效果。
在另一种可能的实现方式中,在第一终端接收用户输入的拖拽释放操作之后,该方法还可以包括:第一终端确定第一终端上显示的对象的第二区域小于第一阈值,或确定被拖出第一终端的显示屏的第一区域大于第二阈值。
在另一种可能的实现方式中,该方法还可以包括:第一终端在确定第一终端上显示的对象的第二区域大于第一阈值,或确定被拖出第一终端的显示屏的第一区域小于第二阈值时,第一终端在第一终端的显示屏上显示对象的第二区域。
在另一种可能的实现方式中,确定用户的拖拽意图是跨设备拖拽,可以包括:第一终端确定对象被拖入设置在第一终端的显示屏边缘的拖拽感知区域;或,第一终端确定对象与第一终端的显示屏的边缘小于预定距离。
在另一种可能的实现方式中,在向第二终端发送拖拽数据之前,该方法还可以包括:第一终端确定跨设备拖拽的目标设备是第二终端。
在另一种可能的实现方式中,在第一终端确定跨设备拖拽的目标设备是第二终端之前,该方法还可以包括:第一终端显示至少两个候选终端的信息;其中,至少两个候选终端包括:与第一终端连接的终端,和/或,与第一终端未连接但与第一终端的距离在可连接范围内的终端;第一终端确定跨设备拖拽的目标设备是第二终端,可以包括:第一终端接收用户对至少一个第二终端的信息的选择操作;其中,若用户选择的第二终端未与第一终端连接,方法还包括:第一终端与第二终端建立连接。用户可选择一个或多个第二终端作为拖拽的目的端设备,实现多设备的协同办公。
在另一种可能的实现方式中,该方法还可以包括:在第一终端在确定用户的拖拽意图是跨设备拖拽时,第一终端显示提示信息,提示信息用于提示对象将被拖出第一终端的显示屏。
第二方面,本申请提供一种跨设备的对象拖拽方法,应用于第二终端,第二终端与第一终端连接,该方法可以包括:第二终端接收来自第一终端的拖拽数据,拖拽数据是第一终端在确定用户拖拽第一终端的显示屏上的对象的拖拽意图是跨设备拖拽后发送的;第二终端根据拖拽数据,在第二终端的显示屏上显示对象。
在一种可能的实现方式中,第二终端根据拖拽数据,在第二终端的显示屏上显示对象,可以包括:第二终端根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的第一区域;其中,第一终端上显示的对象的第二区域与第二终端上显示的对象的第一区域能够实现对象内容的完整呈现。
在另一种可能的实现方式中,拖拽数据可以包括第一拖拽数据和第二拖拽数据;第二终端显示屏上显示的对象的第一区域随着第二拖拽数据的变化而动态变化。
在另一种可能的实现方式中,该方法还可以包括:第二终端接收用户对第二终端的显示屏上显示的对象的第一区域的拖拽操作;第二终端显示屏上显示的对象的第一区域随拖拽操作动态变化。
在另一种可能的实现方式中,在第二终端接收用户对第二终端的显示屏上显示的对象的第一区域的拖拽操作之后,该方法还可以包括:第二终端向第一终端发送第三拖拽数据,第三拖拽数据包括对象第一角的坐标信息,用于第一终端动态调整第一终端显示屏上显示的对象的第二区域。
在另一种可能的实现方式中,上述对象可以为窗口或窗口的部分区域,窗口中包括应用的界面;第一拖拽数据包括:应用的界面和对象的矩形信息;第二拖拽数据包括:对象第一角的坐标信息。
在另一种可能的实现方式中,在第二终端根据拖拽数据,当对象为窗口时,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的第一区域之后,该方法还可以包括:第二终端接收来自第一终端的数据,该数据是用户输入拖拽释放操作后第一终端发送的,拖拽释放操作用于指示对对象的拖拽结束;第二终端根据数据在第二终端的显示屏上显示应用的界面。当对象为窗口的部分区域时,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的第一区域之后,该方法还可以包括:第二终端接收来自第一终端的数据,该数据是用户输入拖拽释放操作后第一终端发送的,拖拽释放操作用于指示对对象的拖拽结束;第二终端根据数据和拖拽数据在第二终端的显示屏上显示应用的界面的部分区域,显示的该部分区域的内容与被拖拽的窗口的部分区域的内容相同。
在另一种可能的实现方式中,第一拖拽数据还可以包括应用的应用标签;在第二终端根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的第一区域之后,该方法还可以包括:第二终端接收来自第一终端的指示信息,该指示信息是用户输入拖拽释放操作后第一终端发送的,用于指示对对象的拖拽结束;第二终端开启第二终端本地的与应用标签对应的应用。当被拖拽的对象是窗口时,第二终端还可显示与应用标签对应的应用的界面。当被拖拽的对象为窗口的部分区域时,第二终端还可根据拖拽数据显示与应用标签对应的应用的界面的部分区域。
在另一种可能的实现方式中,上述窗口为应用窗口或自由(freeform)小窗。
在另一种可能的实现方式中,上述对象可以为视频组件,悬浮窗,画中画或freeform小窗;第一拖拽数据可以包括:对象的矩形信息,对象在第一终端当前显示界面中的层名称;第二拖拽数据可以包括:对象第一角的坐标信息。
在另一种可能的实现方式中,该方法还可包括:第二终端接收来自第一终端的录屏数据;第二终端根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的第一区域:包括:第二终端根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,根据录屏数据在第二终端的显示屏上显示对象的第一区域。
在另一种可能的实现方式中,在第二终端根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的第一区域之后,该方法还可包括:第二终端接收来自第一终端的指示信息,指示信息是用户输入拖拽释放操作后第一终端发送的;响应于指示信息,第二终端根据录屏数据在第二终端的显示屏上显示对象的全部区域。
在另一种可能的实现方式中,上述对象可以为第一界面中的UI控件,或对象为第一界面的部分区域,部分区域包括UI控件;其中,该UI控件可以为widget,也可以为界面中的任意控件。第二终端根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的第一区域,包括:第二终端根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的阴影的第一区域;其中,第一拖拽数据包括阴影的矩形信息,阴影和UI控件的标识;第二拖拽数据包括阴影第一角的坐标信息。
在另一种可能的实现方式中,在第二终端根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的第一区域之后,该方法还可以包括:第二终端接收来自第一终端的第一界面的指令流;第二终端根据指令流和UI控件的标识,在第二终端的显示屏上显示UI控件。
在另一种可能的实现方式中,UI控件在第二终端显示屏上的布局与UI控件在第一界面中的布局不同。
在另一种可能的实现方式中,在第二终端根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的第一区域之后,该方法还可以包括:第二终端在第二终端的显示屏上显示对象的第一区域。
在另一种可能的实现方式中,在第二终端接收到来自第一终端的第一拖拽数据后,该方法还可以包括:第二终端显示提示信息,提示信息用于提示对象将被拖入第二终端的显示屏。
第三方面,本申请提供一种跨设备的对象拖拽装置,该装置可以应用于第一终端,第一终端与第二终端连接,该装置可以包括:显示单元,用于在第一终端的显示屏上显示对象;输入单元,用于接收用户输入的拖拽操作,拖拽操作用于发起对对象的拖拽;显示单元,还用于响应于拖拽操作,第一终端在第一终端的显示屏上显示对象随拖拽操作移动的动画;发送单元,用于在确定用户的拖拽意图是跨设备拖拽后,向第二终端发送拖拽数据,拖拽数据用于第二终端在第二终端的显示屏上显示对象。
在一种可能的实现方式中,显示单元,还用于在对象在第一终端的显示屏上移动的过程中,当对象的第一区域被拖出第一终端的显示屏时,在第一终端的显示屏上显示对象的第二区域;其中,拖拽数据具体用于第二终端在第二终端的显示屏上显示对象的第一区域,第一终端上显示的对象的第二区域与第二终端上显示的对象的第一区域能够实现对象内容的完整呈现。
在另一种可能的实现方式中,拖拽操作至少包括触发对象移动的操作;显示单元在显示屏上显示的对象的第二区域随着操作动态变化。
在另一种可能的实现方式中,该装置还包括:接收单元,用于接收来自第二终端的第三拖拽数据,第三拖拽数据是第二终端接收到用户对第二终端上显示的对象的第一区域的拖拽操作后,向第一终端发送的,第三拖拽数据包括对象第一角的坐标信息;显示单元在显示屏上显示的对象的第二区域随着第三拖拽数据的变化而动态变化。
在另一种可能的实现方式中,拖拽数据可以包括第一拖拽数据和第二拖拽数据;该装置还可以包括:获取单元,用于在对象被开始拖拽时,从拖拽开始事件中获取第一拖拽数据;在对象在第一终端的显示屏上移动过程中,从拖拽移动事件中获取第二拖拽数据。
在另一种可能的实现方式中,上述对象可以为窗口,窗口中包括应用的界面或窗口的部分区域;第一拖拽数据可以包括:应用的界面和对象的矩形信息;第二拖拽数据可以包括:对象第一角的坐标信息。
在另一种可能的实现方式中,输入单元,还用于接收用户输入的拖拽释放操作,拖拽释放操作用于指示对对象的拖拽结束;发送单元,还用于响应于拖拽释放操作,向第二终端发送数据,数据用于第二终端在第二终端的显示屏上显示应用的界面或应用的界面的部分区域。
在另一种可能的实现方式中,第一拖拽数据还可以包括应用的应用标签,应用标签用于第二终端开启第二终端本地的与应用标签对应的应用;输入单元,还用于接收用户输入的拖拽释放操作,拖拽释放操作用于指示对对象的拖拽结束;发送单元,还用于响应于拖拽释放操作,向第二终端发送指示信息,指示信息用于指示对对象的拖拽结束。
在另一种可能的实现方式中,窗口为应用窗口或freeform小窗。
在另一种可能的实现方式中,上述对象可以为视频组件,悬浮窗,画中画或freeform小窗;第一拖拽数据可以包括:对象的矩形信息,对象在第一终端当前显示界面中的层名称;第二拖拽数据可以包括:对象第一角的坐标信息。
在另一种可能的实现方式中,在第一终端在确定用户的拖拽意图是跨设备拖拽后,发送单元,还用于向第二终端发送录屏数据,录屏数据和拖拽数据用于第二终端在第二终端的显示屏上显示对象的部分区域或全部区域。
在另一种可能的实现方式中,输入单元,还用于接收用户输入的拖拽释放操作,拖拽释放操作用于指示对对象的拖拽结束;发送单元,还用于响应于拖拽释放操作,向第二终端发送指示信息,指示信息用于指示第二终端在第二终端的显示屏上显示对象的全部区域。
在另一种可能的实现方式中,上述对象为第一界面中的UI控件,或对象为第一界面的部分区域,部分区域包括UI控件;显示单元,具体用于:响应于拖拽操作,在第一终端的显示屏上显示对象的阴影随拖拽操作移动的动画;其中,第一拖拽数据包括阴影的矩形信息,阴影和UI控件的标识;第二拖拽数据包括阴影第一角的坐标信息。
在另一种可能的实现方式中,输入单元,还用于接收用户输入的拖拽释放操作,拖拽释放操作用于指示对对象的拖拽结束;获取单元,还用于获取第一界面的指令流,发送单元,还用于向第二终端发送第一界面的指令流,指令流和UI控件的标识用于第二终端在第二终端的显示屏上显示UI控件。
在另一种可能的实现方式中,该装置还可以包括:确定单元,用于确定第一终端上显示的对象的第二区域小于第一阈值,或确定被拖出第一终端的显示屏的第一区域大于第二阈值。
在另一种可能的实现方式中,显示单元,还用于在确定第一终端上显示的对象的第二区域大于第一阈值,或确定被拖出第一终端的显示屏的第一区域小于第二阈值时,在第一终端的显示屏上显示对象的第二区域。
在另一种可能的实现方式中,确定单元,还用于确定用户的拖拽意图是跨设备拖拽。
确定单元,具体用于确定对象被拖入设置在第一终端的显示屏边缘的拖拽感知区域;或,确定对象与第一终端的显示屏的边缘小于预定距离。
在另一种可能的实现方式中,确定单元,还用于确定跨设备拖拽的目标设备是第二终端。
在另一种可能的实现方式中,显示单元,还用于显示至少两个候选终端的信息;其中,至少两个候选终端包括:与第一终端连接的终端,和/或,与第一终端未连接但与第一终端的距离在可连接范围内的终端;确定单元,具体用于接收用户对至少一个第二终端的信息的选择操作;其中,若用户选择的第二终端未与第一终端连接,该装置还可以包括:连接单元,用于与第二终端建立连接。
在另一种可能的实现方式中,显示单元,还用于在确定用户的拖拽意图是跨设备拖拽时,显示提示信息,提示信息用于提示对象将被拖出第一终端的显示屏。
第四方面,本申请提供一种跨设备的对象拖拽装置,该装置可以应用于第二终端,第二终端与第一终端连接,该装置可以包括:接收单元,用于接收来自第一终端的拖拽数据,拖拽数据是第一终端在确定用户拖拽第一终端的显示屏上的对象的拖拽意图是跨设备拖拽后发送的;显示单元,用于根据拖拽数据,在第二终端的显示屏上显示对象。
在一种可能的实现方式中,显示单元,具体用于根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的第一区域;其中,第一终端上显示的对象的第二区域与第二终端上显示的对象的第一区域能够实现对象内容的完整呈现。
在另一种可能的实现方式中,拖拽数据包括第一拖拽数据和第二拖拽数据;显示单元在第二终端显示屏上显示的对象的第一区域随着第二拖拽数据的变化而动态变化。
在另一种可能的实现方式中,该装置还包括:输入单元,用于接收用户对第二终端的显示屏上显示的对象的第一区域的拖拽操作;显示单元在第二终端显示屏上显示的对象的第一区域随拖拽操作动态变化。
在另一种可能的实现方式中,该装置还包括:发送单元,用于向第一终端发送第三拖拽数据,第三拖拽数据包括对象第一角的坐标信息,用于第一终端动态调整第一终端显示屏上显示的对象的第二区域。
在另一种可能的实现方式中,对象为窗口,窗口中包括应用的界面或窗口的部分区域;第一拖拽数据包括:应用的界面和对象的矩形信息;第二拖拽数据包括:对象第一角的坐标信息。
在另一种可能的实现方式中,接收单元,还用于接收来自第一终端的数据,该数据是用户输入拖拽释放操作后第一终端发送的,拖拽释放操作用于指示对对象的拖拽结束;显示单元,还用于根据数据在第二终端的显示屏上显示应用的界面,或根据数据和拖拽数据在第二终端的显示屏上显示应用的界面的部分区域。
在另一种可能的实现方式中,第一拖拽数据还包括应用的应用标签;接收单元,还用于接收来自第一终端的指示信息,指示信息是用户输入拖拽释放操作后第一终端发送的,用于指示对对象的拖拽结束;显示单元,还用于开启第二终端本地的与应用标签对应的应用,并显示与应用标签对应的应用的界面,或者,并根据拖拽数据显示与应用标签对应的应用的界面的部分区域。
在另一种可能的实现方式中,窗口为应用窗口或freeform小窗。
在另一种可能的实现方式中,对象为视频组件,悬浮窗,画中画或freeform小窗;第一拖拽数据包括:对象的矩形信息,对象在第一终端当前显示界面中的层名称;第二拖拽数据包括:对象第一角的坐标信息。
在另一种可能的实现方式中,接收单元,还用于接收来自第一终端的录屏数据;显示单元,具体用于根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,根据录屏数据在第二终端的显示屏上显示对象的第一区域。
在另一种可能的实现方式中,接收单元,还用于接收来自第一终端的指示信息,指示信息是用户输入拖拽释放操作后第一终端发送的;显示单元,还用于响应于指示信息,根据录屏数据在第二终端的显示屏上显示对象的全部区域。
在另一种可能的实现方式中,对象为第一界面中的UI控件,或对象为第一界面的部分区域,部分区域包括UI控件;显示单元,具体用于根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的阴影的第一区域;其中,第一拖拽数据包括阴影的矩形信息,阴影和UI控件的标识;第二拖拽数据包括阴影第一角的坐标信息。
在另一种可能的实现方式中,接收单元,还用于接收来自第一终端的第一界面的指令流;显示单元,还用于根据指令流和UI控件的标识,在第二终端的显示屏上显示UI控件。
在另一种可能的实现方式中,UI控件在第二终端显示屏上的布局与UI控件在第一界面中的布局不同。
在另一种可能的实现方式中,显示单元,还用于在第二终端的显示屏上显示对象的第一区域。
在另一种可能的实现方式中,显示单元,还用于显示提示信息,提示信息用于提示对象将被拖入第二终端的显示屏。
第五方面,本申请提供一种跨设备的对象拖拽装置,该装置可以包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令时实现如第一方面或第一方面的可能的实现方式中任一项所述的方法,或者实现如第二方面或第二方面的可能的实现方式中任一项所述的方法。
第六方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令被处理器执行时实现如第一方面或第一方面的可能的实现方式中任一项所述的方法,或者实现如第二方面或第二方面的可能的实现方式中任一项所述的方法。
第七方面,本申请的提供一种终端,该终端包括显示屏,一个或多个处理器和存储器;显示屏,处理器和存储器耦合;存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当计算机指令被终端执行时,使得该终端执行如第一方面或第一方面的可能的实现方式中任一项所述的方法,或者,使得该终端执行如第二方面或第二方面的可能的实现方式中任一项所述的方法。
第八方面,本申请提供一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在终端中运行时,终端中的处理器执行第一方面或第一方面的可能的实现方式中任一项所述的方法,或者执行第二方面或第二方面的可能的实现方式中任一项所述的方法。
第九方面,本申请提供一种跨设备的对象拖拽系统,该系统可以包括:第一终端和第二终端,第一终端与第二终端连接;第一终端,用于在第一终端的显示屏上显示对象;接收用户输入的拖拽操作,拖拽操作用于发起对对象的拖拽;响应于拖拽操作,在第一终端的显示屏上显示对象随拖拽操作移动的动画;在确定用户的拖拽意图是跨设备拖拽后,向第二终端发送拖拽数据;第二终端,用于接收来自第一终端的拖拽数据,根据拖拽数据,在第二终端的显示屏上显示对象。
在一种可能的实现方式中,第一终端,还用于在对象在第一终端的显示屏上移动的过程中,当对象的第一区域被拖出第一终端的显示屏时,在第一终端的显示屏上显示对象的第二区域;第二终端,具体用于在第二终端的显示屏上显示对象的第一区域;其中,第一终端上显示的对象的第二区域与第二终端上显示的对象的第一区域能够实现对象内容的完整呈现。
在另一种可能的实现方式中,第一终端显示屏上显示的对象的第二区域,及第二终端显示屏上显示的对象的第一区域,随着用户在第一终端或第二终端上输入的拖拽操作动态变化。
需要说明的是,在本实施例中,所述的第一角可以为被拖拽对象的左上角,左下角,右上角和右下角中的任意一个。
可以理解地,上述提供的第三方面及其任一种可能的实现方式所述的跨设备的对象拖拽装置,第四方面及其任一种可能的实现方式所述的跨设备的对象拖拽装置,第五方面所述的跨设备的对象拖拽装置,第六方面所述的计算机可读存储介质,第七方面所述的终端,第八方面所述的计算机程序产品及第九方面所述的跨设备的对象拖拽系统所能达到的有益效果,可参考如第一方面或第二方面及其任一种可能的实现方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种系统架构的简化示意图;
图2为本申请实施例提供的一种手机的结构示意图;
图3为本申请实施例提供的一种软件架构的组成示意图;
图4为本申请实施例提供的一种跨设备的对象拖拽方法的流程示意图;
图5A为本申请实施例提供的一种跨设备的对象拖拽界面示意图;
图5B为本申请实施例提供的另一种跨设备的对象拖拽界面示意图;
图6A为本申请实施例提供的一种拖拽感知区域的示意图;
图6B为本申请实施例提供的一种显示坐标系的示意图;
图6C为本申请实施例提供的一种窗口溢出设备屏幕的示意图;
图7为本申请实施例提供的一种推荐设备列表的示意图;
图8A为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图8B为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图9为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图10为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图11为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图12为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图13为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图14为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图15为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图16为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图17为本申请实施例提供的另一种跨设备的对象拖拽方法的流程示意图;
图18为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图19为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图20为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图21为本申请实施例提供的又一种跨设备的对象拖拽方法的流程示意图;
图22为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图23为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图24为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图25为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图26为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图27为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图28为本申请实施例提供的又一种跨设备的对象拖拽界面示意图;
图29为本申请实施例提供的一种跨设备的对象拖拽装置的组成示意图;
图30为本申请实施例提供的另一种跨设备的对象拖拽装置的组成示意图;
图31为本申请实施例提供的一种芯片系统的组成示意图。
具体实施方式
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
拖拽(或者称为拖放)主要是指数据传送。用户使用鼠标或其他输入设备可指定需要拖拽的对象(如文件,文字,UI元素等)及其需要被拖拽到的目标位置。传统拖拽场景包括:PC上的拖拽和手机等触屏终端上的拖拽。其中,对于PC上的拖拽而言,用户可通过移动鼠标使得鼠标指针移动到需要拖拽的对象上并通过按下鼠标左键(或为达到此目的某个其他按钮)来指定要拖拽的对象,后续通过移动鼠标可使得该对象从PC显示屏的一个位置拖动到另一个位置。对于手机等触屏终端上的拖拽而言,用户可使用连续触屏手势指定要拖拽的对象,并将其从手机显示屏的一个位置拖动到另一个位置。
目前,多终端协同使用已是较为常见的办公方式。在多终端协同使用时,拖拽也是用户经常使用的功能。而多终端协同使用场景下的拖拽可能会涉及到对象在多个终端间的跨设备拖拽。
本申请实施例提供一种跨设备的对象拖拽方法及设备,该方法可以应用于多个终端协同使用的场景中。本申请实施例提供的方法,允许用户利用如鼠标,触摸屏等输入设备,将如,应用窗口,自由(freeform)小窗,视频组件,悬浮窗,画中画,小组件,UI控件等UI元素(或者说对象)从一个终端拖拽到协同使用的另一个终端中。提高了多终端协同使用的使用效率,使得拖拽更加直接显性化,提高了用户的拖拽使用体验。
下面将结合附图对本申请实施例的实施方式进行详细描述。
请参考图1,为本申请实施例提供的一种可以应用上述方法的系统架构的简化示意图。如图1所示,该系统架构至少可以包括:第一终端101和第二终端102。
其中,第一终端101和第二终端102可通过有线或无线的方式建立连接。基于建立的连接,第一终端101和第二终端102可配合一起使用。在本实施例中,第一终端101和第二终端102采用无线方式建立连接时采用的无线通信协议可以为无线保真(wirelessfidelity,Wi-Fi)协议、蓝牙(Bluetooth)协议、ZigBee协议、近距离无线通信(Near FieldCommunication,NFC)协议,各种蜂窝网协议等,在此不做具体限制。
在具体实现时,上述第一终端101和上述第二终端102,可以为手机,平板电脑,手持计算机,PC,蜂窝电话,个人数字助理(personal digital assistant,PDA),可穿戴式设备(如智能手表),智能家居设备(如电视机),车载电脑,游戏机,以及增强现实(augmentedreality,AR)\虚拟现实(virtual reality,VR)设备等,本实施例对第一终端101和第二终端102的具体设备形态不做特殊限制。且在本实施例中,第一终端101和第二终端102的设备形态可以相同。如第一终端101和第二终端102均为手机。第一终端101和第二终端102的设备形态也可以不同。如,图1中的(a)所示,第一终端101为手机,第二终端102为平板电脑。又如,图1中的(b)所示,第一终端101为PC,第二终端102为手机。
上述第一终端101和第二终端102可以是触屏设备,也可以是非触屏设备。在本实施例中,第一终端101和第二终端102均是可以运行操作系统,安装应用,具有显示器(或者说显示屏)的终端。仅包括显示处理模块的显示屏不是本实施例中所述的第一终端101和第二终端102。其中,第一终端101和第二终端102的操作系统可以是Android系统、ios系统、windows系统、mac系统、Linux系统等,本实施例在此不做具体限制。第一终端101和第二终端102的操作系统可以相同,也可以不同。作为一种示例,第一终端101,第二终端102分别可以包括存储器,处理器和显示器。其中,存储器可以用于存储操作系统,处理器可以用于运行存储器中存储的操作系统。
在本申请实施例中,在第一终端101与第二终端102连接的情况下,用户可利用第一终端101的输入设备(如鼠标,触摸板或触摸屏),将第一终端101显示屏上显示的如应用窗口,freeform小窗,视频组件,悬浮窗,画中画,小组件,UI控件等UI元素通过拖拽的方式,拖拽到第二终端102的显示屏上显示。
例如,结合图1中的(a)所示,以第一终端101为手机,第二终端102为平板电脑为例。手机的显示屏具备触控功能,如称为触摸屏101a。用户可利用手机的触摸屏101a,将手机显示的应用窗口,如称为窗口1从手机的触摸屏101a拖拽到平板电脑的显示屏102a上显示。
又例如,结合图1中的(b)所示,以第一终端101为PC,第二终端102为手机为例。PC与鼠标101b-1连接。用户可利用PC的鼠标101b-1,将PC显示的应用窗口,如称为窗口2从PC的显示屏101b-2拖拽到手机的显示屏102b上显示。
需要说明的是,以上是以用户将第一终端101显示的UI元素从第一终端101拖拽到一个第二终端102中为例进行说明的。在其他一些实施例中,当第一终端101与多个第二终端102建立了连接的情况下,用户可通过拖拽的方式,将第一终端101显示的UI元素拖拽到这多个第二终端102中的一个或多个终端中。其中,不同第二终端102的设备形态可以相同,也可以不同。第一终端101与不同第二终端102的连接方式可以相同,也可以不同。本实施例在此不做具体限制。
在本实施例中,以终端为手机为例。请参考图2,为本申请实施例提供的一种手机的结构示意图。以下实施例中的方法可以在具有上述硬件结构的手机中实现。
如图2所示,手机可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193以及显示屏194等。可选的,手机还可以包括移动通信模块150,用户标识模块(subscriberidentification 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时,移动通信模块150可以提供应用在手机上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise 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 multiple 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卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和手机的接触和分离。手机可以支持1个或N个SIM卡接口,N为大于1的正整数。手机通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,手机采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在手机中,不能和手机分离。
结合图1,请参考图3,为本申请实施例提供的一种软件架构的组成示意图。如图3所示,第一终端101和第二终端102的软件架构均可以包括:应用层和框架层(framework,FWK)。
在一些实施例中,应用层可以包括安装在终端的各个应用。例如,安装在终端中的应用可以包括设置,计算器,相机,短信息,音乐播放器,文件管理器,图库,浏览器,备忘录,新闻,视频播放器,邮件等。这些应用可以是终端的系统应用,也可以是第三方应用,本申请实施例在此不做具体限制。例如,第一终端101的应用层可以包括安装在第一终端101的各个应用,如文件管理器,图库,备忘录,视频播放器等。又例如,第二终端102的应用层可以包括安装在第一终端101的各个应用,如视频播放器,邮件等。应用层还可以包括拖拽服务模块。应用层还可以包括launcher,SystemUI等(图中未示出)。
在本申请实施例中,在第一终端101和第二终端102建立连接后,基于上述软件架构,用户使用第一终端101的输入设备(如鼠标,触摸板或触摸屏),可将第一终端101显示的UI元素,通过拖拽的方式传递到第二终端102。也就是说,用户可利用第一终端101的输入设备,通过拖拽的方式,实现UI元素从第一终端101到第二终端102的拖拽,即实现跨设备拖拽。
其中,可以理解的是,在跨设备拖拽中,第一终端101和第二终端102根据其实现功能的不同,可以分别称为源端设备(或称为source端)和目标设备(或称为sink端)。具体的,源端设备可以是指的提供拖拽相关数据的设备。目标设备可以是指接收拖拽相关数据的设备。
以第一终端101为源端设备,第二终端102为目标设备为例。结合图3,第一终端101应用层可用于提供拖拽的相关数据,用于实现UI元素的拖拽。第一终端101的框架层可用于提供源端设备的拖拽功能及窗口管理功能。如框架层可以包括窗口管理模块,用于实现显示界面的窗口化。又如,框架层可用于提供基础拖拽逻辑以实现源端设备的拖拽等。第一终端101应用层的模块,如launcher,SystemUI可用于监听框架层发起的拖拽,拖拽服务模块可用于获取拖拽相关的数据并发送给作为目标设备的第二终端102。
第二终端102应用层的模块,如拖拽服务模块可用于接收拖拽相关的数据。第二终端102的框架层用于提供目标设备的拖拽功能及窗口管理功能。如框架层可以包括窗口管理模块,用于配合第二终端102的拖拽服务模块根据接收到的数据在目标设备实现窗口的绘制等。又如,在用户继续在目标设备进行拖拽时,框架层可用于提供基础拖拽逻辑以实现目标设备的拖拽等。
进一步的,上述应用层还可以包括:投屏服务模块。在本实施例中,第一终端101和第二终端102的投屏服务模块可用于配合实现投屏处理功能。如,当用户在第一终端101中停止拖拽操作后,第一终端101的投屏服务模块可启动投屏进程,以便第一终端101的拖拽服务模块获得相关数据,如录屏数据后发送给第二终端102。第二终端102的拖拽服务模块可将接收到的录屏数据交由第二终端102的投屏服务模块绘制对应UI元素并显示。另外,在第一终端101将UI元素投屏显示到第二终端102后,用户可对投屏到第二终端102的UI元素进行操作。第一终端101和第二终端102的投屏服务模块可配合对该操作进行响应,以实现在目标设备端对源端设备的反向控制。
需要说明的是,本实施例示意的软件架构并不构成对第一终端101和第二终端102的具体限定。在另一些实施例中,第一终端101和/或第二终端102可以包括比图示更多或更少的层,或者更多或更少的模块,或者组合某些模块,或者不同的模块布置,本实施例在此并不做具体限制。例如,上述所示的软件架构除了包括上述应用层和框架层之外,还可以包括其他层,如内核层(图3中未示出)等。该内核层是硬件和软件之间的层。内核层至少可以包含显示驱动,摄像头驱动,音频驱动,传感器驱动等。
如上述实施例中的描述,本实施例中拖拽的对象可以是终端显示屏上显示的UI元素(或者说对象)。其中,UI元素具体的可以是应用窗口,freefrom小窗,小组件(widget,如时钟widget,卡片widget,日历widget等),视频组件,悬浮窗,画中画,UI控件等界面元素。以下结合图1,图3及其他附图,根据拖拽对象的不同分别对本申请实施例提供的跨设备的对象拖拽方法进行详细介绍。
图4为本申请实施例提供的一种跨设备的对象拖拽方法的流程示意图。其中,本实施例以第一终端101为手机,第二终端102为平板电脑,第一终端101的输入设备为触摸屏,拖拽的对象为应用窗口或freeform小窗为例,对本实施例提供的方法进行详细说明。例如,手机作为源端设备,平板电脑作为目标设备。
如图4所示,该方法可以包括以下S401-S407。
S401、手机接收拖拽第一窗口的用户操作。
S402、响应于S401中的用户操作,手机显示第一窗口随用户操作移动的动画。
本实施例中的第一窗口可以是应用窗口,也可以是freeform小窗。用户操作用于触发第一窗口在触摸屏上随用户手指(或触控笔)的移动而移动,或者说该用户操作用于发起对第一窗口的拖拽。也就是说,用户通过执行该用户操作,可触发第一窗口,如应用窗口或freeform小窗在手机触摸屏上随用户手指(或触控笔)的移动而移动,即触发针对第一窗口的拖拽。需要说明的是,应用窗口可以是手机中安装的任意一个应用的窗口,该应用可以是系统应用,也可以是第三方应用,本实施例在此不做限制。
其中,S401中的用户操作可以为本申请中的拖拽操作。在一些实施例中,S401中的用户操作可以包括一个或多个操作。示例性的,该用户操作可以包括触发第一窗口拖起的操作和触发第一窗口移动的操作。
其中,触发第一窗口拖起的操作可以是触屏手势操作。如,以第一窗口是应用窗口为例,触发第一窗口拖起的触屏手势操作可以是以下预定手势操作中的任意一种:对第一窗口标题栏的手势操作(如长按操作,双击操作等),针对第一窗口的滑动操作(如在终端当前显示第一窗口的情况下,从手机下边缘开始到指向手机上边缘的滑动操作),对第一窗口的手势操作(如单指长按操作,单指双击操作,多指长按操作等),在第一窗口上的3D触控操作(3Dtouch),在第一窗口上的手掌操作(如手掌长按操作,手掌单击操作等)等。以第一窗口是freeform小窗为例,触发第一窗口拖起的触屏手势操作可以是以下预定手势操作中的任意一种:对侧边dock栏中应用图标的点击操作,在终端当前显示应用界面的情况下从应用界面的底部向上滑动的滑动操作。触发第一窗口拖起的操作也可以是隔空手势操作。其中隔空手势操作可以是静态隔空手势操作,也可以动态隔空手势操作。静态隔空手势操作指某一时刻手部的姿态,比如手指弯曲、收拢等。如OK手势、V手势、五指伸开的手势等。动态隔空手势操作指一段时间内手部的运动情况,包括运动方向、速度、手部姿态变化等。如挥动手势、平移手势、握拳手势、按压手势等。触发第一窗口拖起的隔空手势操作可以是以上静态隔空手势操作或动态隔空手势操作中的任意一种。
触发第一窗口移动的操作可以是触屏手势操作。如触发第一窗口移动的触屏手势操作可以是对拖起后的第一窗口的按下并移动的操作。触发第一窗口移动的操作也可以是隔空手势操作。如,触发第一窗口移动的隔空手势操作是对拖起后的第一窗口的按压手势和平移手势。又如,触发第一窗口移动的隔空手势操作是在第一窗口拖起后,执行的握拳手势和平移手势。再如,触发第一窗口移动的隔空手势操作是在第一窗口拖起后,执行的如上述静态隔空手势操作和平移手势。其中,本实施例中所述的按下,也可以描述为按住,是指用户按下未抬起手指(或使用触控笔按住屏幕未抬起)的操作。
需要说明的是,上述触屏手势操作可以是用户用手进行的,也可以是使用触控笔进行的,本实施例在此不做限制。
示例性的,结合图5A,以第一窗口是应用窗口,如计算器窗口,S401中的用户操作包括针对该计算器窗口的滑动操作,及对拖起后的计算器窗口的按下并移动的操作为例。如图5A中的(a)所示,手机的触摸屏上显示有窗口,如称为计算器窗口501。该计算器窗口501中包括计算器的界面。用户在想要针对计算器窗口501执行拖拽时,可针对该计算器窗口501执行滑动操作,如向上滑动计算器窗口501。如图5A中的(b)所示,作为对该操作的响应,手机可将计算器窗口501显示为拖起的状态。如,手机的窗口管理模块可将计算器窗口501进行缩小处理,还可进行背景虚化处理,并交由手机应用层的launcher显示缩小后的计算器窗口501。
之后,用户通过按下计算器窗口501并移动手指,可使得该计算器窗口501在手机触摸屏上跟随用户手指的移动而移动,给用户以计算器窗口501被用户手指拖动的视觉效果。在本实施例中,窗口被拖动的方向(或者说拖拽方向)可以是指向手机触摸屏上边缘的方向(如简称为向上拖动),或指向手机触摸屏左边缘的方向(如简称为向左拖动),或指向手机触摸屏右边缘的方向(如简称为向右拖动),或指向手机触摸屏下边缘的方向(如简称为向下拖动)。例如,如图5A中的(c)所示,用户可使用手指对拖起后的计算器窗口501执行按下操作,并向右移动手指的操作。随着用户手指的移动,手机,如手机的框架层可绘制计算器窗口501随用户手指移动的动画(或者说拖拽动画),并交由手机的应用层(如应用层的launcher)在手机的触摸屏上显示计算器窗口501随用户手指移动的动画,给用户以计算器窗口501被用户手指向右拖动的视觉效果。
又示例性的,结合图5B,以第一窗口是freeform小窗,该freeform小窗中包括计算器的界面,S401中的用户操作包括对侧边dock栏计算器图标的点击操作,及对freeform小窗的按下并移动的操作为例。如图5B中的(a)所示,手机的触摸屏上显示有桌面,用户可在手机触摸屏上执行从手机触摸屏的右边缘开始的向左的滑动操作。作为对该滑动操作的响应,手机可显示dock栏502,该dock栏502中包括一个或多个应用的图标,在用户对该dock栏502中的图标进行操作,如点击操作后,手机可以freeform小窗的形式显示对应应用的界面。Dock栏502中包括计算器的图标503。用户可对Dock栏502中包括的计算器的图标503进行点击操作。响应于该点击操作,如图5B中的(b)所示,手机(如手机的窗口管理模块)可显示freeform小窗504,该freeform小窗504中包括计算器的界面。之后,用户通过按下freeform小窗504并移动手指,可使得该freeform小窗504在手机触摸屏上跟随用户手指的移动而移动,给用户以freeform小窗504被用户手指拖动的视觉效果。其中,freeform小窗504被用户拖拽的具体描述与图5A中计算器窗口501被用户拖拽的具体描述类似,此处不再详细赘述。另外,以freeform小窗的形式显示应用界面的用户操作除了上述对dock栏502中对应图标的点击操作外,还可以是在终端显示该应用界面时,用户从应用界面的底部开始向上滑动的滑动操作。其中,滑动操作的终点可以是应用界面中的任意一个位置,如可以是应用界面的顶部,本实施例在此不做具体限制。
S403、手机在确定用户拖拽第一窗口的拖拽意图是跨设备拖拽时,向平板电脑发送拖拽数据1。
其中,拖拽数据1可以为本申请中的第一拖拽数据。
可以理解的是,拖拽可以分为设备内拖拽和跨设备拖拽(或者说设备间拖拽)。设备内拖拽可以是指拖拽意图是将被拖拽的对象由该设备的一个位置拖动到该设备的另一个位置的拖拽。跨设备拖拽可以是指拖拽意图是将被拖拽的对象由该设备的一个位置拖动到另一个设备中的拖拽。
在本实施例中,在第一窗口被用户拖拽后,手机可判断用户拖拽第一窗口的拖拽意图是否是跨设备拖拽。并在确定用户拖拽第一窗口的拖拽意图是跨设备拖拽后,向跨设备拖拽中的目标设备发送拖拽数据,如称为拖拽数据1,用于该目标设备绘制拖拽窗口,以给用户第一窗口从源端设备拖拽到目标设备的视觉效果。示例性的,结合图3,在第一窗口被拖拽的过程中,可由手机的应用层(如应用层的launcher)进行拖拽监听,以判断用户拖拽第一窗口的意图是否是跨设备拖拽。
在一些实施例中,手机(如手机应用层的launcher)可通过拖拽感知区域来确定用户拖拽第一窗口的拖拽意图是否是跨设备拖拽。
其中,拖拽感知区域可以是手机触摸屏上距离触摸屏边缘预定距离的区域。该预定距离可以是预先定义的,也可以提供设置界面供用户设置,本实施例在此不做限制。
示例性的,一个终端(如手机)的拖拽感知区域可以是一个,也可以是多个。例如,图6A为本实施例提供的一种拖拽感知区域的位置示意图。如图6A所示,手机可以设置有四个拖拽感知区域,分别称为拖拽感知区域1,拖拽感知区域2,拖拽感知区域3和拖拽感知区域4。这些拖拽感知区域处设置有透明的视图(view)控件。其中,拖拽感知区域1在靠近手机触摸屏上边缘的位置。拖拽感知区域2在靠近手机触摸屏右边缘的位置。拖拽感知区域3在靠近手机触摸屏下边缘的位置。拖拽感知区域4在手机触摸屏左边缘的位置。也就是说,在靠近手机触摸屏四个边缘的位置分别设置有一透明的视图控件。在第一窗口,如图6A中所示的第一窗口601被拖入上述四个拖拽感知区域中的任意一个拖拽感知区域中时,设置在对应区域的视图控件可监测到第一窗口601的拖入。在存在视图控件监测到第一窗口601拖入时,手机便可以确定用户的拖拽意图是跨设备拖拽。
上述拖拽感知区域还可用于手机判断拖拽方向。如S402中的描述,拖拽方向可以包括向上拖拽,向右拖拽,向下拖拽和向左拖拽。手机根据第一窗口被拖入的拖拽感知区域在触摸屏上的位置可确定拖拽方向。例如,继续结合图6A,当第一窗口601被拖入位于手机触摸屏上侧的拖拽感知区域,如图6A中的拖拽感知区域1时,设置在该拖拽感知区域1处的视图控件可监测到第一窗口601的拖入,手机可确定拖拽方向为向上拖拽。当第一窗口601被拖入位于手机触摸屏右侧的拖拽感知区域,如图6A中的拖拽感知区域2时,设置在该拖拽感知区域2处的视图控件可监测到第一窗口601的拖入,手机可确定拖拽方向为向右拖拽。当第一窗口601被拖入位于手机触摸屏下侧的拖拽感知区域,如图6A中的拖拽感知区域3时,设置在该拖拽感知区域3处的视图控件可监测到第一窗口601的拖入,手机可确定拖拽方向为向下拖拽。当第一窗口601被拖入位于手机触摸屏左侧的拖拽感知区域,设置在该拖拽感知区域4处的视图控件可监测到第一窗口601的拖入,如图6A中的拖拽感知区域4时,手机可确定拖拽方向为向左拖拽。
在其他一些实施例中,手机(如手机应用层的launcher)可以通过判断第一窗口与触摸屏边缘的距离来确定用户拖拽第一窗口的拖拽意图是否是跨设备拖拽。
示例性的,可以在确定第一窗口的左上角,右上角,左下角和右下角中的某个角与触摸屏的边缘的距离小于预定距离时,确定用户的拖拽意图是跨设备拖拽。还可以通过判断具体与触摸屏的哪个边缘的距离小于预定距离,来判断拖拽方向。
例如,请参考图6B,为本实施例提供的一种显示坐标系的示意图。如图6B所示,该显示坐标系的坐标原点为手机触摸屏的左上角,x轴从坐标原点指向手机触摸屏的右边缘,y轴从坐标原点指向手机触摸屏的下边缘。手机可确定该显示坐标系中,手机各边缘的坐标,如,手机触摸屏的右边缘在X轴上的坐标为x3,左边缘在X轴上的坐标为0,上边缘在Y轴上的坐标为0,下边缘在Y轴上的坐标为y3。在第一窗口,如图6B中所示的第一窗口602在手机触摸屏上被用户拖拽的过程中,手机可实时监测第一窗口602的左上角,右上角,左下角,右下角,如分别为图6B中所示的A1,A2,A3,A4在显示坐标系中的坐标。如,左上角A1在显示坐标系中的坐标为(x1,y1),右上角A2在显示坐标系中的坐标为(x2,y1),左下角A3在显示坐标系中的坐标为(x1,y2),右下角A4在显示坐标系中的坐标为(x2,y2)。根据第一窗口602的四个角的坐标和手机触摸屏四个边缘的坐标,手机可在确定四个角中的某个角与触摸屏的边缘的距离小于预定距离时,确定用户拖拽第一窗口602的拖拽意图是跨设备拖拽,还可确定拖拽方向。如手机根据右上角A2在X轴上的坐标x2与触摸屏右边缘的坐标x3,确定出右上角A2与触摸屏的右边缘的距离(如,x3-x2)小于预定距离,则可确定用户拖拽第一窗口602的拖拽意图是跨设备拖拽,还可确定拖拽方向为向右拖拽。又如手机根据左下角A3在X轴上的坐标x1与触摸屏左边缘的坐标0,确定出左下角A3与触摸屏的左边缘的距离(如,x1-0或者说x1)小于预定距离,则可确定用户拖拽第一窗口602的拖拽意图是跨设备拖拽,还可确定拖拽方向为向左拖拽。
如上描述,在手机确定用户拖拽第一窗口的拖拽意图是跨设备拖拽后,为了能够在目标设备实现拖拽的接续,给用户第一窗口从源端设备拖拽到目标设备的视觉效果,手机可以向目标设备发送对应的拖拽数据,如称为拖拽数据1。例如,结合图3,可由手机应用层的拖拽服务模块向目标设备发送该拖拽数据1,用于目标设备实现拖拽窗口的绘制。
其中,手机应用层的拖拽服务模块可在第一窗口被开始拖拽时,获得该拖拽数据1。作为一种示例,手机应用层的拖拽服务模块获得拖拽数据1的具体实现可以是:在手机(如手机应用层的launcher)发起针对第一窗口的拖拽后,手机的框架层会生成对应的拖拽事件,如拖拽开始事件,该拖拽开始事件中包括上述拖拽数据1。手机应用层的launcher可以回调框架层生成的拖拽开始事件,以从拖拽开始事件中提取到上述拖拽数据1。手机应用层的launcher提取到拖拽数据1后,可将该拖拽数据1发送给手机应用层的拖拽服务模块。手机应用层的拖拽服务模块便可获得该拖拽数据1。之后,在手机应用层的launcher进行拖拽监听,确定出用户拖拽第一窗口的拖拽意图是跨设备拖拽后,可通知手机应用层的拖拽服务模块此次拖拽是跨设备拖拽,此时手机应用层的拖拽服务模块可向跨设备拖拽的目标设备发送获得的拖拽数据1。
在一些实施例中,拖拽数据1可以包括第一窗口中应用的界面,如可以是第一窗口的截图(或者说第一窗口中应用的界面截图),第一窗口的矩形(rectangle,rect)信息。拖拽数据1还可以包括被拖拽对象的类型(如窗口类型)和/或用于指示该拖拽数据1是拖拽开始事件中相关数据的指示。该指示可以标识拖拽开始,可用于通知跨设备拖拽的源端设备和目标设备启动跨设备拖拽的相关服务,如拖拽服务,投屏服务等,用于实现跨设备的拖拽。
其中,第一窗口的rect信息包括开始拖拽时第一窗口左上角、右上角、左下角和右下角四个角的坐标信息。具体的,继续参考图6B,在本实施例提供的显示坐标系下,第一窗口的rect信息可以包括:左上角A1在显示坐标系中的坐标(x1,y1),右上角A2在显示坐标系中的坐标(x2,y1),左下角A3在显示坐标系中的坐标(x1,y2),右下角A4在显示坐标系中的坐标(x2,y2)。
如上述描述,作为源端设备的手机可将获取到的拖拽数据1发送给跨设备拖拽中的目标设备,以用于该目标设备绘制拖拽窗口。
在一些实施例中,作为源端设备的手机确定目标设备的过程可以是:手机获取与手机建立了连接的设备。如果手机仅与一个设备建立了连接,则手机可将该设备确定为目标设备。如,手机仅与平板电脑建立了连接,则手机在确定用户的拖拽意图是跨设备拖拽后可确定该平板电脑为目标设备,并向该平板电脑发送获取到的拖拽数据(如上述拖拽数据1)。
如果手机同时与多个设备建立了连接,则手机可显示这多个设备(如称为候选终端)的信息。如手机可显示推荐设备列表,该推荐设备列表中包括与手机建立了连接的各设备(或者说候选终端)的信息,如设备标识,供用户选择。用户可以对一个或多个设备标识进行选择操作。手机在接收到用户的选择操作后,可将用户选择的设备标识对应的设备确定为目标设备。如,手机同时与平板电脑和PC建立了连接,则手机在确定用户的拖拽意图是跨设备拖拽后,可显示包括平板电脑的标识和PC的标识的推荐设备列表。当用户想要将第一窗口拖拽到平板电脑时,可以对推荐设备列表中平板电脑的标识进行选择操作。手机接收到该选择操作后,可确定该平板电脑为目标设备,并向其发送获取到的拖拽数据(如上述拖拽数据1)。
如果手机没有与其他设备建立连接,则手机可采用蓝牙发现或Wi-Fi发现等发现技术,获取与手机的距离在可连接范围内的设备,并显示与手机的距离在可连接范围内的设备(如称为候选终端)的信息。如手机可显示这些设备的信息,如包括设备标识的推荐设备列表,供用户选择。类似的,用户可以对一个或多个设备标识进行选择操作。手机在接收到用户的选择操作后,可确定用户选择的设备标识对应的设备为目标设备。由于该设备与手机当前并没有建立连接,因此手机可在确定出目标设备后,向该设备发送请求,以请求与该设备建立连接。在与该设备的连接建立成功后,手机可向该设备发送获取到的拖拽数据(如上述拖拽数据1)。如,手机采用定位技术,获取到平板电脑和PC与手机的距离均在可连接范围内。则手机显示包括平板电脑的标识和和PC的标识的推荐设备列表。当用户想要将第一窗口拖拽到平板电脑时,可以对推荐设备列表中平板电脑的标识进行选择操作。手机接收到该选择操作后,可确定平板电脑为目标设备,手机可请求与平板电脑建立连接。在连接建立成功后,手机可向平板电脑发送获取到的拖拽数据1。
在其他一些实施例中,手机确定目标设备的过程可以是:手机获取与手机连接的设备,并采用定位技术获取与手机的距离在可连接范围内的设备。手机根据获取结果可确定这些设备(如称为候选终端)的信息。如手机可显示推荐设备列表,供用户选择。可以理解的是,该推荐设备列表中可以包括:一个或多个与手机建立了连接的设备的信息,如设备标识,和/或,一个或多个未与手机建立连接但与手机的距离在可连接范围内的设备的信息,如设备标识。之后,手机根据用户的选择操作,可确定用户选择的设备标识对应的设备确定为目标设备,并向其发送获取到的拖拽数据(如上述拖拽数据1)。该实现方式中实现细节的具体描述与上一实现方式中对应描述类似,此处不在一一赘述。
需要说明的是,上述推荐设备列表中包括的设备标识可以是设备的图标,也可以是设备的名称,还可以是设备的图标和名称,本实施例在此不做具体限制。
另外,在本实施例中,手机显示的拖拽设备列表中包括的设备标识可以按照预定的规则进行显示。为了便于描述,将与手机建立了连接的设备的设备标识简称为连接设备标识,将未与手机建立连接但与手机的距离在可连接范围内的设备的设备标识简称为未连接设备标识。
示例性的,预定规则可以包括以下规则中的一种或多种规则:
规则1、连接设备标识的推荐优先级高于未连接设备标识的推荐优先级。也就是说,目标设备优先推荐与手机已连接的设备。
规则2、与手机距离近的设备的设备标识的推荐优先级高于与手机距离远的设备的设备标识的推荐优先级。也就是说,目标设备优先推荐与手机距离近的设备。
规则3、位于拖拽方向上的设备的设备标识的推荐优先级高于位于其他方向上的设备的设备标识的推荐优先级。也就是说,目标设备优先推荐位于拖拽方向上的设备。如,拖拽方向为向上拖拽,则优先推荐指向手机上边缘方向上的设备;又如拖拽方向为向左拖拽,则优先推荐指向手机左边缘方向上的设备;又如拖拽方向为向下拖拽,则优先推荐指向手机下边缘方向上的设备;又如拖拽方向为向右拖拽,则优先推荐指向手机右边缘方向上的设备。
规则4、根据拖拽内容推荐目标设备。如,拖拽窗口中的内容是视频或PPT等,则具有大屏幕的设备(如电视机)的设备标识的推荐优先级高于屏幕尺寸较小的设备(如手机)的设备标识的推荐优先级,即目标设备优先推荐大屏设备。又如,拖拽窗口是编辑类应用的窗口,如图片编辑窗口,绘图窗口,文字编辑窗口等,则具有较高交互能力的设备(如PC,手机,平板电脑等)的设备标识的推荐优先级高于交互能力较低的设备(如电视机)的设备标识的推荐优先级,即目标设备优先推荐交互能力高的设备。
规则5、根据设备相对于手机的方向显示对应的设备标识。例如,位于指向手机上边缘方向上的设备的设备标识显示在手机触摸屏靠近上边缘的显示区域。位于指向手机右边缘方向上的设备的设备标识显示在手机触摸屏靠近右边缘的显示区域。位于指向手机下边缘方向上的设备的设备标识显示在手机触摸屏靠近下边缘的显示区域。位于指向手机左边缘方向上的设备的设备标识显示在手机触摸屏靠近左边缘的显示区域。或者,根据设备类型的不同分类显示对应的设备标识。例如,如手机,平板电脑等移动设备的设备标识显示在手机触摸屏靠近左边缘或右边缘的显示区域。如大屏设备(如电视机,PC),可穿戴设备等的设备标识显示在手机触摸屏靠近上边缘的显示区域。
需要说明的是,手机与其他设备的距离及其他设备相对手机的方向,手机可利用蓝牙、超宽带(Ultra-wideband,UWB)、超声波等定位技术获得。另外,推荐优先级的高低在推荐设备列表中可以通过排序(如,推荐优先级高的设备标识排在推荐优先级低的设备标识之前),高亮(如,推荐优先级高的设备标识高亮显示,推荐优先级低的设备标识正常显示),动态显示(如,推荐优先级高的设备标识动态显示,推荐优先级低的设备标识静态显示)等方式呈现,本实施例在此并不做具体限制。
示例性的,结合图7,以目标设备是用户在手机显示推荐设备列表中选择的,且推荐设备列表按照上述规则1和规则5(根据设备类型的不同分类显示对应的设备标识)显示,设备标识包括设备的图标和名称为例。在确定用户的拖拽意图是跨设备拖拽后,如图7所示,手机可显示推荐设备列表701,该推荐设备列表701中包括:平板电脑的设备标识702,PC的设备标识703,电视机的设备标识704及手机X的设备标识705。其中,平板电脑已与该手机建立了连接,PC,手机X和电视机未与手机建立连接。如图7所示,在手机触摸屏靠近右边缘的显示区域显示有平板电脑的设备标识702和手机X的设备标识705,在手机触摸屏靠近上边缘的显示区域显示有PC的设备标识703和电视机的设备标识704,并以高亮的方式显示平板电脑的设备标识702,以提示用户手机与平板电脑建立了连接。
在手机显示候选设备的信息,如推荐设备列表后,用户可在该推荐列表中选择想要将第一窗口拖拽到的目标设备。其中,用户可以选择一个或多个设备作为目标设备。如果用户选择了一个设备作为目标设备,则手机(如手机应用层的拖拽服务模块)可将获取到的拖拽数据(如上述拖拽数据1)发送给该设备,用于其实现拖拽窗口的绘制。如果用户选择了多个设备作为目标设备,则手机(如手机应用层的拖拽服务模块)可将获取到的拖拽数据(如上述拖拽数据1)发送给这多个设备,用于这些设备实现拖拽窗口的绘制。例如,继续结合图7,以用户想要将第一窗口拖拽到平板电脑为例。用户可对推荐设备列表701中平板电脑的设备标识702进行选择操作(如点击操作)。作为对该操作的响应,手机可确定平板电脑为目标设备。之后,手机可向平板电脑发送获取到的拖拽数据1。
另外,在一些实施例中,作为源端设备的手机在确定用户的拖拽意图是跨设备拖拽时,可显示相关提示(如称为提示信息),以提示用户被拖拽的对象将被拖出手机。类似的,作为目标设备的平板电脑在接收到拖拽数据1时,也可以显示相关提示。如平板电脑可根据拖拽数据1中的用于指示该拖拽数据1是拖拽开始事件中相关数据的指示,可以显示相关提示,以提示用户存在对象将被拖入。当然,在跨设备拖拽时,可以仅在源端设备上提示对象将被拖出,或仅在目标设备上提示存在对象将被拖入,或源端设备和目标设备均可进行对应提示,本实施例在此不做具体限制。例如,如图8A中的(a)所示,在手机确定用户的拖拽意图是跨设备拖拽时,手机可在对象将被拖出的屏幕边缘显示界面元素81,提示用户被拖拽的对象将被拖出手机。如,手机可根据拖拽方向确定具体在哪个边缘显示界面元素81,如拖拽方向为向右拖拽,则在屏幕右边缘显示界面元素81,拖拽方向为向上拖拽,则在屏幕上边缘显示界面元素81。另外,在平板电脑接收到拖拽数据1时,平板电脑可在对象将被拖入的屏幕边缘显示界面元素82,提示用户存在对象将被拖入。又例如,如图8A中的(b)所示,手机在确定用户的拖拽意图是跨设备拖拽时不做提示,平板电脑在接收到拖拽数据1时,在显示屏显示界面元素83,提示用户存在对象将被拖入。其中,上述界面元素81,界面元素82和界面元素83可以为条状的界面元素,如图中所示的长方形界面元素,还可以是其他形状,其他大小的界面元素,其还可以填充颜色,如蓝色,白色,彩色等。另外,界面元素81,界面元素82和界面元素83可以静态显示在屏幕上,也可以动态显示在屏幕上,本申请实施例也不进行限制。
S404、在第一窗口在手机上继续被拖拽的过程中,向平板电脑发送拖拽数据2。
其中,拖拽数据2可以包括第一窗口第一角的坐标信息。该第一角可以为第一窗口的左上角,左下角,右上角和右下角中的任意一个。在其他一些实施例中,该拖拽数据2中也可以包括:第一窗口左上角,左下角,右上角和右下角中的多个角的坐标信息。以下实施例中以拖拽数据2包括第一窗口的第一角的坐标信息,第一角为左上角为例进行说明。
拖拽数据2还可以包括用于指示该拖拽数据2是拖拽移动事件中相关数据的指示。该指示可以用于通知跨设备拖拽的目标设备将目标设备上显示的窗口继续跟手移动。
用户在触发跨设备拖拽,如将第一窗口拖入拖拽感知区域后,可能会继续移动手指(或触控笔)。随着用户手指(或触控笔)的移动,第一窗口在手机触摸屏上随之移动。可以理解的是,用户在手机触摸屏上拖拽第一窗口的过程中,会存在第一窗口部分区域显示在手机的触摸屏上,另一部分区域被隐藏(或者说溢出触摸屏)的情况。在一些实施例中,在跨设备拖拽时,为了给用户第一窗口从源端设备拖拽到目标设备的视觉效果,在第一窗口被拖拽的过程中,如果第一窗口的部分区域溢出触摸屏,则可在源端设备和目标设备同时显示第一窗口,具体的被拖拽的第一窗口,一部分区域显示在源端设备上,另一部分区域(溢出源端设备的区域)显示在目标设备上。为了达到该效果,在第一窗口被拖拽的过程中,手机可实时获取拖拽过程中对应的拖拽数据,如称为拖拽数据2,并发送给跨设备拖拽的目标设备(如平板电脑),用于其结合上述拖拽数据1在目标设备实现拖拽窗口的绘制。
示例性的,结合图3,在具体实现时,手机应用层的拖拽服务模块可在第一窗口被拖拽的过程中(或者说移动的过程中),实时获取并向跨设备拖拽的目标设备(如平板电脑)发送该拖拽数据2。
作为一种示例,手机应用层的拖拽服务模块获取拖拽数据2的具体实现可以是:在第一窗口被拖拽的过程中,手机的框架层会生成对应的拖拽事件,如拖拽移动事件,该拖拽移动事件中包括上述拖拽数据2。手机应用层的launcher可以回调框架层生成的拖拽移动事件,以从拖拽移动事件中提取到上述拖拽数据2。手机应用层的launcher提取到拖拽数据2后,可将该拖拽数据2发送给手机应用层的拖拽服务模块。手机应用层的拖拽服务模块便可获得该拖拽数据2。
S405、平板电脑接收拖拽数据1和拖拽数据2。当第一窗口存在区域溢出手机触摸屏时,平板电脑根据接收到的拖拽数据1和拖拽数据2显示窗口缩略图的部分区域。
其中,窗口缩略图是根据拖拽数据1中包括的第一窗口的截图绘制的,与第一窗口截图的内容相同。窗口缩略图中显示在平板电脑显示屏上的区域的内容与第一窗口溢出手机触摸屏的区域的内容相同。
如S404中的描述,为了给用户第一窗口从手机拖拽到平板电脑的视觉效果,平板电脑根据手机的分辨率,以及接收到的拖拽数据1和拖拽数据2,可判断被拖拽的第一窗口是否存在区域溢出手机触摸屏。当平板电脑确定出被拖拽的第一窗口存在区域溢出手机触摸屏时,平板电脑可在平板电脑的显示屏上对应显示窗口缩略图的部分区域(该区域与第一窗口溢出手机触摸屏的区域内容相同)。其中,手机的分辨率可以是平板电脑在与手机建立连接的过程中,或连接建立成功后手机发送给平板电脑的。
作为一种示例,结合图6B,以拖拽数据1中包括的第一窗口的rect信息为:第一窗口左上角A1的坐标为(x1,y1),第一窗口右上角A2的坐标为(x2,y1),第一窗口左下角A3的坐标为(x1,y2),第一窗口右下角A4的坐标为(x2,y2),拖拽数据2中第一窗口左上角A1的坐标为(x1',y1')为例。如图6C所示,平板电脑根据手机的分辨率,及接收到的拖拽数据1和拖拽数据2,判断被拖拽的第一窗口是否存在区域溢出手机触摸屏的具体实现可以是:平板电脑可根据拖拽数据1中第一窗口左上角A1的坐标为(x1,y1)和第一窗口右上角A2的坐标为(x2,y1),确定出第一窗口的宽度为x2-x1。可根据拖拽数据1中第一窗口左上角A1的坐标为(x1,y1)和第一窗口左下角A3的坐标为(x1,y2),确定出第一窗口的长度为y2-y1。平板电脑根据手机的分辨率可确定手机触摸屏的右边缘在x轴上的坐标,如为x3,手机触摸屏的下边缘在y轴上的坐标,如为y3。
平板电脑根据第一窗口的宽度(x2-x1),长度(y2-y1),手机触摸屏右边缘的坐标x3,手机触摸屏下边缘的坐标y3,及拖拽数据2中第一窗口左上角的坐标(x1',y1')可判断出被拖拽的第一窗口是否存在区域溢出手机触摸屏。其中,当x1'小于0时,可以确定第一窗口存在区域溢出手机触摸屏;当y1'小于0时,可以确定第一窗口存在区域溢出手机触摸屏;当x1'与第一窗口的宽度(x2-x1)之和大于手机触摸屏右边缘的坐标x3时,可以确定第一窗口存在区域溢出手机触摸屏;当y1'与第一窗口的长度(y2-y1)之和大于手机触摸屏下边缘的坐标y3时,可以确定第一窗口存在区域溢出手机触摸屏。例如,结合图5A所示示例,及图6C,由于用户拖拽第一窗口的拖拽方向是向右拖拽,则第一窗口的右边缘会先被滑出手机触摸屏,则平板电脑在接收到拖拽数据1和拖拽数据2后,可以确定出x1'与第一窗口的宽度(x2-x1)之和大于手机触摸屏右边缘的坐标x3,此时平板电脑可确定第一窗口存在区域溢出手机触摸屏。
在确定第一窗口存在区域溢出手机触摸屏后,平板电脑可根据上述拖拽数据1和拖拽数据2,确定第一窗口在手机触摸屏溢出的部分,并在平板电脑的显示屏上显示窗口缩略图的对应区域(该区域与第一窗口溢出手机触摸屏的区域内容相同)。
如,在具体实现时,平板电脑可根据拖拽数据1中第一窗口的截图生成窗口缩略图。还可根据确定出的第一窗口的宽度(x2-x1)和长度(y2-y1),确定第一窗口的大小,根据第一窗口的大小可以确定窗口缩略图的大小。其中,窗口缩略图的大小与第一窗口的大小可以相同,也可以不同,如窗口缩略图的大小是第一窗口缩放一定比例(缩放比例可根据目标设备的屏幕大小调整)后的大小。
平板电脑还可根据拖拽数据1中第一窗口的rect信息和拖拽数据2中第一窗口左上角的坐标来确定在平板电脑的显示屏上显示窗口缩略图的哪部分区域。如,平板电脑可根据拖拽数据1中第一窗口的rect信息和拖拽数据2中第一窗口左上角的坐标,确定第一窗口的左侧,右侧,上侧,下侧中哪侧溢出手机触摸屏,并确定第一窗口溢出手机触摸屏的区域占第一窗口的比例,也就是说可确定第一窗口具体哪部分区域溢出手机触摸屏。以此为依据,平板电脑便可确定在平板电脑的显示屏上显示窗口缩略图的哪个区域。示例性的,当平板电脑确定出第一窗口的右侧三分之一区域溢出手机触摸屏,则可确定在平板电脑的显示屏上显示窗口缩略图的右侧三分之一。又如,当平板电脑确定出第一窗口的上侧五分之一区域溢出手机触摸屏,则可确定在平板电脑的显示屏上显示窗口缩略图的上侧五分之一。
示例性的,继续结合上述示例,平板电脑确定第一窗口具体哪部分区域溢出手机触摸屏的具体实现可以是:当平板电脑确定出x1'小于0时,平板电脑可确定是第一窗口的左侧部分溢出手机触摸屏。平板电脑还可确定第一窗口溢出手机触摸屏的区域占第一窗口的比例,如具体为:|x1'|/(x2-x1)。当平板电脑确定出y1'小于0时,平板电脑可确定第一窗口的上侧部分溢出手机触摸屏。平板电脑还可确定第一窗口溢出手机触摸屏的区域占第一窗口的比例,如具体为:|y1'|/(y2-y1)。当平板电脑确定出x1'与第一窗口的宽度(x2-x1)之和大于手机触摸屏右边缘的坐标x3时,平板电脑可确定第一窗口的右侧部分溢出手机触摸屏。平板电脑还可确定第一窗口溢出手机触摸屏的区域占第一窗口的比例,如具体为:1-(x3-x1')/(x2-x1)。当平板电脑确定出y1'与第一窗口的长度(y2-y1)之和大于手机触摸屏下边缘的坐标y3时,平板电脑可确定第一窗口的下侧部分溢出手机触摸屏。平板电脑还可确定第一窗口溢出手机触摸屏的区域占第一窗口的比例,如具体为:1-(y3-y1')/(y2-y1)。
另外,S405中平板电脑显示窗口缩略图部分区域的位置(如称为拖入位置)与第一窗口拖出手机触摸屏的位置(如简称为拖出位置)可以是对应的。
其中,拖入位置与拖出位置对应可以包括:窗口被拖出源端设备的边缘与被拖入目标设备的边缘对应。例如,拖出位置为手机触摸屏的左边缘,拖入位置则为平板电脑显示屏的右边缘。拖出位置为手机触摸屏的右边缘,拖入位置则为平板电脑显示屏的左边缘。拖出位置为手机触摸屏的上边缘,拖入位置则为平板电脑显示屏的下边缘。拖出位置为手机触摸屏的下边缘,拖入位置则为平板电脑显示屏的上边缘。在具体实现时,平板电脑可以根据第一窗口在手机触摸屏上的拖拽方向,确定拖入位置。如,拖拽方向为向右拖拽,则拖出位置会是手机触摸屏的右边缘,因此平板电脑可确定拖入位置为平板电脑显示屏的左边缘,给用户以窗口由平板电脑的左边缘被拖入的视觉效果。拖拽方向为向左拖拽,则拖出位置会是手机触摸屏的左边缘,因此平板电脑可确定拖入位置为平板电脑显示屏的右边缘,给用户以窗口由平板电脑的右边缘被拖入的视觉效果。拖拽方向为向上拖拽,则拖出位置会是手机触摸屏的上边缘,因此平板电脑可确定拖入位置为平板电脑显示屏的下边缘,给用户以窗口由平板电脑的下边缘被拖入的视觉效果。拖拽方向为向下拖拽,则拖出位置会是手机触摸屏的下边缘,因此平板电脑可确定拖入位置为平板电脑显示屏的上边缘,给用户以窗口由平板电脑的上边缘被拖入的视觉效果。
作为一种示例,平板电脑可根据实时接收到的拖拽数据2确定第一窗口在手机触摸屏上的拖拽方向。如上描述,在第一窗口被用户拖拽的过程中,手机会实时获取并向平板电脑拖拽数据2,根据实时接收到的拖拽数据2中第一窗口左上角的坐标的变化,平板电脑可确定第一窗口在手机触摸屏上的拖拽方向。如,平板电脑第一时刻接收到的拖拽数据2中第一窗口左上角的坐标为(x1_1',y1_1'),第二时刻(第二时刻晚于第一时刻)接收到的拖拽数据2中第一窗口左上角的坐标为(x1_2',y1_2')。如果x1_2'大于x1_1',y1_1'等于y1_2',则平板电脑可确定第一窗口在手机触摸屏上的拖拽方向为向右拖拽。如果x1_2'小于x1_1',y1_1'等于y1_2',则平板电脑可确定第一窗口在手机触摸屏上的拖拽方向为向左拖拽。如果x1_2'等于x1_1',y1_1'小于y1_2',则平板电脑可确定第一窗口在手机触摸屏上的拖拽方向为向下拖拽。如果x1_2'等于x1_1',y1_1'大于y1_2',则平板电脑可确定第一窗口在手机触摸屏上的拖拽方向为向上拖拽。
拖入位置与拖出位置对应还可以包括:窗口在源端设备边缘的具体位置与在目标设备边缘的具体位置对应。例如,拖出位置为手机触摸屏的某边缘(如右边缘)的居中位置,则拖入位置也是平板电脑对应边缘(如左边缘)的居中位置。在具体实现时,平板电脑可以根据拖拽数据2中的第一窗口左上角的坐标,确定在平板电脑的对应边缘的具体拖入位置。例如,结合图6C,以第一窗口左上角的坐标为(x1',y1')为例。平板电脑根据第一窗口左上角在手机显示坐标系的Y轴上的坐标y1'和手机的分辨率,可确定第一窗口顶部边缘到手机触摸屏上边缘的距离占手机高度的比例,如确定出的比例为五分之一。平板电脑可根据该比例和平板电脑的分辨率,确定窗口缩略图的顶部边缘距离平板电脑上边缘的位置(如将比例与平板电脑高度的乘积作为窗口缩略图的顶部边缘在平板电脑显示坐标系的Y轴上的坐标),以实现窗口在源端设备边缘的具体位置与在目标设备边缘的具体位置对应的效果。
示例性的,结合图3,图5A及图6C,以拖拽数据1包括计算器窗口的截图,计算器窗口的rect信息(即开始拖拽时第一窗口左上角、右上角、左下角和右下角四个角的坐标信息),拖拽数据2中包括拖拽过程中第一窗口左上角的坐标信息为例。手机在向平板电脑发送拖拽数据1和拖拽数据2后,平板电脑应用层的拖拽服务模块可接收该拖拽数据1和拖拽数据2。之后,平板电脑应用层的拖拽服务模块可将拖拽数据1和拖拽数据2交由平板电脑的框架层,由框架层根据拖拽数据1和拖拽数据2绘制并在平板电脑的显示屏上显示窗口缩略图的部分区域。例如,如图8B所示,平板电脑显示的窗口缩略图,如801所示。可以看到的是,窗口缩略图801的内容与计算器窗口501在手机中的溢出部分的内容相同,或者说窗口缩略图801与计算器窗口501显示在手机上的部分可实现计算机窗口501中内容的完整呈现。另外,计算器窗口501被拖拽的拖拽方向是向右拖拽,窗口缩略图801的拖入位置为平板电脑显示屏的左边缘802。另拖出位置为手机触摸屏的右边缘803的居中位置,拖入位置具体也为左边缘802的居中位置。这样,给用户的视觉效果是,计算器窗口501从手机上被拖拽到跨设备拖拽的目标设备端,即平板电脑。
可以理解的是,随着第一窗口在手机上继续被拖拽,手机可根据用户操作动态调整第一窗口显示在手机触摸屏上区域的大小。另外,手机也会实时获取并向平板电脑发送拖拽数据2。平板电脑也可根据接收到的拖拽数据2动态调整窗口缩略图显示在平板电脑显示屏上的区域大小。
也就是说,在用户在手机触摸屏上拖拽第一窗口的过程中,随着用户手指(或触控笔)的移动,第一窗口显示在手机触摸屏上的区域会发生变化,溢出手机触摸屏的区域也会发生变化。在本实施例中,为了体现跟手性,随着用户手指(或触控笔)的移动,源端设备(如手机)和目标设备(如平板电脑)可根据手指(或触控笔)的移动,对各自显示内容的显示部分的大小进行动态调整。
具体的,对于手机而言,可根据用户手指的移动,动态调整第一窗口显示在手机触摸屏的区域的大小。对于平板电脑而言,可根据第一窗口在手机触摸屏溢出的部分的变化,动态调整窗口缩略图显示在平板电脑显示屏的区域的大小。示例性的,如果用户手指(或触控笔)继续向S401中的同一个方向移动,则第一窗口显示在手机触摸屏的区域减少,溢出触摸屏的部分增多。相应的,窗口缩略图显示在平板电脑上的区域增多。如果用户手指(或触控笔)向S401中的相反方向移动,则第一窗口显示在手机触摸屏的区域增多,溢出触摸屏的部分减少。相应的,窗口缩略图显示在平板电脑上的区域减少。例如,结合图8B,如图9中的(a)所示,当用户手指继续向右移动时,计算器窗口501向右移动,显示在手机触摸屏的区域减少,计算器窗口501继续右移溢出手机的触摸屏。对应的,窗口缩略图801显示在平板电脑上的区域增多,即新溢出手机触摸屏的区域在平板电脑上显示出来。如图9中的(b)所示,当用户手指向左移动时,计算器窗口501向左移动,显示在手机触摸屏的区域增多,计算器窗口501溢出手机的触摸屏的区域减少。对应的,窗口缩略图801显示在平板电脑上的区域减少。
在具体实现时,作为源端设备的手机可在用户拖拽第一窗口的过程中,实时获取上述拖拽数据2,并发给作为目标设备的平板电脑。该拖拽数据2中包括第一窗口左上角的坐标信息。平板电脑根据实时接收到的拖拽数据2中第一窗口左上角的坐标信息,可实时获取第一窗口溢出手机触摸屏的部分,从而以此为依据对窗口缩略图显示在平板电脑显示屏上的区域大小进行实时动态调整。其中,获取第一窗口溢出手机触摸屏的部分的具体实现与S405中对应内容的具体实现类似,此处不再详细赘述。
需要说明的是,以上实施例中是以由跨设备拖拽的目标设备确定第一窗口溢出手机触摸屏的区域占第一窗口的比例为例进行说明的。在其他一些实施例中,也可以由跨设备拖拽的源端设备确定第一窗口溢出手机触摸屏的区域占第一窗口的比例,并可将确定出的比例发送给目标设备,如源端设备在确定第一窗口存在区域溢出手机触摸屏时,将该比例携带在拖拽数据2中发送给目标设备。这样,目标设备根据接收到的比例,及确定出的第一窗口具体哪侧溢出手机触摸屏,便可确定出需要在平板电脑的显示屏上显示窗口缩略图的具体区域。源端设备确定上述比例的具体实现与平板电脑确定该比例的具体实现类似,此处不在一一赘述。
S406、手机接收释放拖拽的用户操作。
S407、响应于S406中的用户操作,手机将第一窗口对应的应用界面投屏显示到平板电脑上。
其中,上述释放拖拽的用户操作可以为用户停止移动并抬起手指(或触控笔)的操作。在触发跨设备拖拽,如第一窗口被拖入拖拽感知区域后,如果用户想要将被拖拽的第一窗口显示到作为目标设备的平板电脑,则用户可停止移动并抬起手指(或触控笔)。作为对该用户操作的响应,平板电脑可显示该第一窗口对应的应用界面。如,手机可将第一窗口对应的应用界面投屏显示到平板电脑。作为一种示例,平板电脑显示的该应用界面的可以窗口悬停的方式,显示在平板电脑屏幕的边缘或中间。还可全屏显示该应用界面,本实施例在此不做具体限制。
需要说明的是,在一些实施例中,在触发跨设备拖拽后,手机可在接收到用户释放拖拽的操作后,便执行S407。在其他一些实施例中,在触发跨设备拖拽后,手机可在接收到用户释放拖拽的操作后,先判断第一窗口显示在手机触摸屏的区域的大小是否小于预设阈值(或者判断第一窗口溢出手机触摸屏的区域的大小是否大于预设阈值,如预设阈值为50%)。在确定第一窗口显示在手机触摸屏的区域的大小小于预设阈值(或者确定第一窗口溢出手机触摸屏的区域的大小大于预设阈值)时,执行S407。如果确定第一窗口显示在手机触摸屏的区域的大小大于预设阈值(或者确定第一窗口溢出手机触摸屏的区域的大小小于预设阈值),则可不进行投屏显示,也就是说,不将第一窗口对应应用界面投屏显示到平板电脑上。如,手机可在手机触摸屏上正常显示第一窗口的应用界面。手机还可向平板电脑发送指示信息,用于指示拖拽停止,以便平板电脑正常显示平板电脑自身的界面。或者,如果确定第一窗口显示在手机触摸屏的区域的大小大于预设阈值(或者确定第一窗口溢出手机触摸屏的区域的大小小于预设阈值),则被拖拽的第一窗口悬停吸附显示在手机和平板电脑上,如显示效果可如图8B所示,即被拖拽的第一窗口一部分显示在手机上,一部分显示在平板电脑上。需要说明的是,对于在接收到用户释放拖拽的操作后,确定出第一窗口显示在手机触摸屏的区域的大小大于预设阈值(或者确定第一窗口溢出手机触摸屏的区域的大小小于预设阈值)时,是执行将第一窗口悬停吸附显示在手机和平板电脑上的操作,还是不进行投屏显示,可以是预先配置的。
示例性的,结合图3,及上述图5A,图8B和图9所示示例。在触发跨设备拖拽,如计算器窗口被拖入拖拽感知区域,并继续拖拽后,用户停止移动并抬起了手指。对应的,手机可接收到用户释放拖拽的操作。作为对该操作的响应,手机的投屏服务模块可启动投屏进程。响应于该投屏进程的启动,手机的拖拽服务模块可通过手机的显示管理器(如该显示管理器是手机框架层的模块)获取对应数据并发送给平板电脑。平板电脑根据接收到的数据可在平板电脑上显示第一窗口对应的应用界面。如响应于投屏进程的启动,手机的拖拽服务模块可通过手机的显示管理器获取对应数据,如录屏数据,并发送给平板电脑,即实现第一窗口对应应用界面在平板电脑的投屏显示。在一些实施例中,可采用分布式多媒体协议(Distributed Multi-media Protocol,DMP)来实现第一窗口对应应用界面在平板电脑上的投屏显示。例如,在投屏进程启动后,手机的拖拽服务模块可使用手机的显示管理器(DisplayManager)创建虚拟显示(VirtualDisplay)。如手机的拖拽服务模块向手机的显示管理器发送创建VirtualDisplay的请求,手机的显示管理器完成VirtualDisplay的创建后,可将创建的VirtualDisplay返回给手机的拖拽服务模块。之后,手机的拖拽服务模块可将第一窗口对应的应用界面绘制移到该VirtualDisplay中。另外,还可将VirtualDisplay绑定到手机的投屏服务模块以进行录屏。这样,手机的拖拽服务模块可获得录屏数据。在手机的拖拽服务器模块获得录屏数据后,可将录屏数据进行编码后发送给平板电脑。平板电脑的拖拽服务模块可接收到对应数据,对该数据进行解码后便可获得录屏数据。平板电脑的拖拽服务模块将解码后得到的录屏数据交由平板电脑的投屏服务模块。如图10所示,平板电脑的投屏服务模块与平板电脑的框架层配合可根据录屏数据绘制计算器窗口对应的应用界面1001并显示,如平板电脑的框架层可提供一个surfaceview来实现应用界面1001在平板电脑端的投屏显示。另外,如图10所示,对于手机而言,在接收到用户释放拖拽的操作后,手机可显示桌面1002。在另一实施例中,手机也可以显示该计算器窗口的应用界面(图中未示出),该计算器窗口可以悬停的方式显示在手机屏幕的边缘或中间,还可全屏,本实施例在此不作具体限制。在其他一些实施例中,也可以采用无线投影(Miracast)实现第一窗口对应的应用界面在平板电脑上的投屏显示,即手机可获取该应用界面的所有图层,然后将获得的所有图层整合成视频流(或者说称为录屏数据)并编码后通过实时流传输协议(real time streaming protocol,RTSP)协议发送给平板电脑。平板电脑在接收到视频流后可对其进行解码并播放,以实现第一窗口对应应用界面在平板电脑上的投屏显示。或者,手机可以将第一窗口对应应用界面的进行指令抽取后获得指令流,并获取该应用界面的层信息等,之后通过将指令流及层信息等发送给平板电脑,用于平板电脑恢复出第一窗口对应的应用界面,以实现第一窗口对应应用界面在平板电脑上的投屏显示。
在一些实施例中,在源端设备将第一窗口对应的应用界面投屏显示到目标设备后,可通过以下方式将第一窗口对应的应用界面拖回源端设备(或者说退出投屏)。
方式1、如图11所示,在源端设备将第一窗口对应的应用界面投屏显示到目标设备后,目标设备显示的应用界面中可包括用于将第一窗口对应的应用界面拖回源端设备的按钮,如按钮1102。目标设备在接收到用户对该按钮1102的操作后,可退出投屏,源端设备可继续显示该第一窗口对应的应用界面,给用户以应用界面从目标设备拖回源端设备的视觉效果。如目标设备接收到用户对按钮1102的操作后,可向源端设备发送退出投屏的请求,源端设备接收到该请求后,停止投屏,并在源端设备显示第一窗口的应用界面。
方式2、上述用于将第一窗口对应的应用界面拖回源端设备的按钮也可以显示在源端设备。如继续结合图11所示,在源端设备将第一窗口对应的应用界面投屏显示到目标设备后,源端设备显示用于将第一窗口对应的应用界面拖回源端设备的按钮,如按钮1101。源端设备在接收到用户对该按钮1101的操作后,可停止投屏,并继续显示该第一窗口对应的应用界面,给用户以应用界面从目标设备拖回源端设备的视觉效果。
需要说明的是,在具体实现时,上述按钮1101和上述按钮1102可在第一窗口对应的应用界面投屏显示到目标设备后,仅显示一个,也可以都显示,本实施例在此不做具体限制。
方式3、源端设备在接收到用户在状态栏或快捷工具栏断开与目标设备连接的操作后,可停止投屏,并继续显示该第一窗口对应的应用界面,以给用户应用界面从目标设备拖回源端设备的视觉效果。
需要说明的是,以上实施例各步骤及其对应描述仅是窗口从源端设备到目标设备拖拽的一种可能实现,本申请中拖拽的实现并不局限于上述描述。
例如,以上实施例中是以用户从源端设备将窗口拖出后释放手指完成拖拽为例说明的,可以认为这样的拖拽是一次连贯性的拖拽。在其他一些实施例中,用户的拖拽也可不是一次连贯性的拖拽动作,即拖拽是一个非连贯性的过程。如支持先从源端设备将窗口拖出,然后再在目标设备拖入。该实现方式适用于两个不同用户或非连贯性拖拽任务的场景。这种实现方式与以上实施例中S401-S407的实现类似,区别在于,作为目标设备的平板电脑在接收录屏数据后,暂时将该录屏数据缓存起来,也即暂不利用接收到的录屏数据进行第一窗口对应应用界面的绘制与显示。这样的话,平板电脑的显示屏显示的即为窗口缩略图的部分区域。用户可利用平板电脑的输入设备,对平板电脑显示屏上显示的窗口缩略图进行拖拽,以实现在目标设备的拖入。如,结合图8B,如图12所示,平板电脑的显示屏具备触摸功能,用户可使用手指(或触控笔)在平板电脑的显示屏1201上输入对应用户操作(如向右滑动),以触发窗口缩略图(如窗口缩略图801)在平板电脑上的拖拽。之后,在用户想要在作为目标设备的平板电脑上显示第一窗口对应应用界面时,可在平板电脑上释放拖拽。对应的,平板电脑可接收到用户释放拖拽操作。此时,作为对该操作的响应,平板电脑可根据缓存的录屏数据,进行第一窗口对应应用界面的绘制与显示在平板电脑的显示屏上。需要说明的是,在用户利用平板电脑的输入设备拖拽窗口缩略图的过程中,平板电脑可根据用户操作动态调整窗口缩略图显示在平板电脑显示屏上区域的大小,手机也可以对应动态调整第一窗口显示在手机触摸屏上的区域大小。如,平板电脑可根据用户的操作,向手机发送包含窗口缩略图的左上角的坐标信息的拖拽数据(该拖拽数据可以为本申请中的第三拖拽数据),以便手机根据该拖拽数据动态调整第一窗口显示在手机触摸屏上的区域大小。其具体实现与S405中对应内容的描述类似,此处不再详细赘述。另外,用户也可以选择不在目标设备上进行拖拽。如果平板电脑在预设时间内未接收到用户对窗口缩略图的拖拽操作,则如图13所示,平板电脑可收起显示的窗口缩略图。可选的,继续结合图13所示,在收起窗口缩略图后,平板电脑还可支持再拖入,如显示悬浮球1301(或悬浮条)。用户可对该悬浮球1301执行对应操作,如点击操作,以触发平板电脑重新显示窗口缩略图(如图12所示),以支持用户在平板电脑上执行拖拽操作。
又例如,以上实施例中是以目标设备为一个设备为例说明的。在其他一些实施例中,目标设备也可以有多个设备。如,用户在源端设备显示的推荐设备列表中选择了多个设备标识,则这多个设备标识对应的设备则均作为目标设备。又如,源端设备同时与多个设备建立了连接,源端设备自动将这多个与手机建立了连接的设备确定为目标设备(在该实现方式中,源端设备可不显示推荐设备列表)。需要说明的是,作为目标设备的这多个设备的设备形态可以相同(如均为平板电脑,或均为PC),也可以不同(如,包括平板电脑和PC,或包括平板电脑,PC和电视机),本实施例在此不做具体限制。这种实现方式与以上实施例中S401-S407的实现类似,区别在于,源端设备会向这多个设备分别发送获取到的拖拽数据,如上述拖拽数据1,上述拖拽数据2,以用于这多个设备分别根据接收到的拖拽数据进行窗口缩略图的显示。另外,在源端设备接收到用户释放拖拽的操作后,会将第一窗口对应的应用界面分别投屏显示到这多个设备上。作为一种示例,以源端设备为PC,如称为PC-A。PC-A同时与两个PC(如分别称为PC-B和PC-C)建立了连接为例。结合图14,如图14中的(a)所示,用户在PC-A上发起针对计算器窗口1401的拖拽。如图14中的(b)所示,当计算器窗口1401移动到PC-A的拖拽感知区域后,PC-A获取并向PC-B和PC-C发送拖拽数据1,在用户继续拖拽计算器窗口1401的过程中,PC-A实时获取并向PC-B和PC-C发送拖拽数据2。结合图14,如图15所示,在计算器窗口1401存在区域溢出PC-A的显示屏时,PC-B和PC-C可根据接收到的拖拽数据1和拖拽数据2,分别显示窗口缩略图的部分区域。如,PC-B显示的窗口缩略图如1501所示,PC-C显示的窗口缩略图如1502所示。在目标设备显示窗口缩略图后,用户可利用PC-A的输入设备(如鼠标)继续将第一窗口拖出源端设备,或者利用PC-B或PC-C的输入设备将第一窗口拖入目的设备。之后,如图16所示,如果接收到用户释放拖拽的操作,则将计算器窗口对应的应用界面投屏显示到PC-B和PC-C中显示。如,PC-B显示的应用界面如1601所示,PC-C显示的应用界面如1602所示。在窗口对应的应用界面投屏到多个目标设备上显示后,在该应用的应用服务不支持多焦点编辑的情况下,一次只允许用户在一个目标设备上进行对应的编辑操作。如果该应用的应用服务支持多焦点编辑,则允许用户同时在这多个目标设备上进行编辑操作。另外,在窗口对应的应用界面投屏到多个目标设备上显示后,用户可通过源端设备显示的用于将窗口对应应用界面拖回源端设备的按钮,将这多个目标设备上的应用界面一次性拖回源端设备。例如,继续结合图16所示,PC-A显示有按钮1603,用户可通过对该按钮1603进行操作,以触发PC-A停止投屏,PC-A还可继续显示计算器窗口对应的应用界面,给用户以应用界面从PC-B和PC-C拖回PC-A的视觉效果。
再例如,以上实施例是以在接收到用户释放拖拽的操作后,源端设备将第一窗口对应的应用界面投屏到目标设备上实现窗口显示的。在其他一些实施例中,也可以通过在目标设备上开启对应应用来实现窗口的显示。这种实现方式与以上实施例中S401-S407的实现类似,区别在于,S406接收到用户释放拖拽的操作后,不执行S407,而是执行:手机可以向平板电脑发送指示信息,用于指示对窗口的拖拽结束。平板电脑接收到指示信息后,检测平板电脑中是否包括有与应用标签对应的应用。应用标签可以包括应用的标识(Identity,ID,如包名)或应用的名称。应用标签还可包括应用的类名。应用标签可以是手机携带在上述拖拽数据1中发送给平板电脑的。与应用标签对应的应用可以是与第一窗口对应应用相同的应用,也可以是具备相同功能的应用。如果有与应用标签对应的应用,则平板电脑开启该应用并根据内容信息(该内容信息是手机发送给平板电脑的第一窗口中显示的内容的信息)显示对应应用界面。如果平板电脑中不存在与应用标签对应的应用,则可向手机请求录屏数据,即通过将第一窗口对应的应用界面投屏到平板电脑上实现窗口的显示。另外,如果目标设备是采用开启对应应用的方式来实现窗口显示的,则窗口服务的运行都在目标设备端,因此,不存在将第一窗口对应应用界面拖回源端设备(或者说退出投屏)的情况。
再例如,以上实施例是以输入设备为触摸屏为例进行说明的。在其他一些实施例中,输入设备也可以是鼠标,触控板等,本实施例在此不做限制。这种实现方式与以上实施例中S401-S407的实现类似,区别在于,用户输入对应操作使用的输入设备不同。
图17为本申请实施例提供的一种跨设备的对象拖拽方法的流程示意图。其中,本实施例以第一终端101为手机,第二终端102为电视机,第一终端101的输入设备为触摸屏,拖拽的对象为视频组件(view),悬浮窗,画中画等UI元素为例,对本实施例提供的方法进行详细说明。例如,手机作为源端设备,电视机作为目标设备。
如图17所示,该方法可以包括以下S1701-S1708。
S1701、手机接收拖拽UI元素的用户操作。
S1702、响应于S1701中的用户操作,手机显示UI元素随用户操作移动的动画。
本实施例中的UI元素可以是视频组件(或者称为视频元素),悬浮窗(如视频聊天窗),画中画等。S1701中的用户操作可以为本申请中的拖拽操作。
需要说明的是,S1701和S1702中对应内容的描述与图4所示实施例S401和S402中对应内容的描述类似,区别在于,S1701和S1702中拖拽的对象是视频组件,悬浮窗(如视频聊天窗),画中画等UI元素。本实施例在此不在进行详细描述。
示例性的,结合图3和图18,以被拖拽的对象是视频组件,S1701中的用户操作包括针对该视频组件的长按操作,及对拖起后的视频组件的按下并移动的操作为例。如图18中的(a)所示,手机的触摸屏上显示有视频应用的界面,该界面中包括视频组件1801。在视频组件1801中正在播放某视频(如视频X)。用户在想要针对视频组件1801执行拖拽时,可针对该视频组件1801执行长按操作。如图18中的(b)所示,作为对该操作的响应,手机可触发视频组件1801拖起。如,手机的窗口管理模块可将视频组件1801进行缩小处理,还可进行背景虚化处理,并交由手机应用层的launcher显示缩小后的视频组件1801。另外,在视频应用的界面中,可继续显示原视频组件进行视频播放(如图18所示,也即被拖起的视频组件1801是手机复制的一个窗口),也可以不显示(图中未示出,也即被拖起的视频组件1801就是原视频组件)。
之后,用户通过按下视频组件1801并移动手指,可使得该视频组件1801在手机触摸屏上跟随用户手指的移动而移动,给用户以视频组件1801被用户手指拖动的视觉效果。在本实施例中,视频组件1801的拖拽方向可以是向上拖动,向左拖动,向右拖动,向下拖动。例如,如图18中的(c)所示,用户可使用手指对拖起后的视频组件1801执行按下操作,并向右移动手指的操作。随着用户手指的移动,手机,如手机的框架层可绘制视频组件1801随用户手指移动的动画,并交由手机的应用层(如应用层的launcher)在手机的触摸屏上显示视频组件1801随用户手指移动的动画。
需要说明的是,对于视频组件,悬浮窗,画中画这些UI元素而言,其可能在手机触摸屏上本身就处于拖起的状态,用户只需直接按下UI元素并移动手指,便可在手机触摸屏上对该UI元素进行拖拽。因此,在一些实施例中,S1701中的用户操作可以不包括触发UI元素拖起的操作,仅包括触发UI元素移动的操作。
S1703、手机在确定用户拖拽UI元素的拖拽意图是跨设备拖拽时,向电视机发送拖拽数据1。
其中,拖拽数据1可以为本申请中的第一拖拽数据。示例性的,拖拽数据1可以包括UI元素的rect信息,UI元素在当前显示界面中的层名称(layer Name)。拖拽数据1还可以包括被拖拽对象的类型(如视频组件,画中画,悬浮窗等)和/或用于指示该拖拽数据1是拖拽开始事件中相关数据的指示。
S1704、在UI元素在手机上继续被拖拽的过程中,向电视机发送拖拽数据2。
其中,拖拽数据2可以为本申请中的第二拖拽数据。示例性的,拖拽数据2可以包括UI元素第一角的坐标信息。该第一角可以为UI元素的左上角,左下角,右上角和右下角中的任意一个。在其他一些实施例中,该拖拽数据2中也可以包括:UI元素左上角,左下角,右上角和右下角中的多个角的坐标信息。以下实施例以拖拽数据2包括UI元素的第一角的坐标信息,第一角为左上角为例进行说明。
拖拽数据2还可以包括用于指示该拖拽数据2是拖拽移动事件中相关数据的指示。
S1705、在确定用户拖拽UI元素的拖拽意图是跨设备拖拽后,向电视机发送录屏数据。
由于在本实施例中,拖拽的对象中的内容在实时变化,因此,在确定用户拖拽UI元素的拖拽意图是跨设备拖拽后,作为源端设备的手机需实时获取录屏数据发送给作为目标设备的电视机。
S1706、电视机接收拖拽数据1,拖拽数据2及录屏数据。当UI元素存在区域溢出手机触摸屏时,电视机根据接收到的录屏数据,拖拽数据1和拖拽数据2显示被拖拽UI元素的部分区域。
需要说明的是,本实施例S1703-S1706中对拖拽数据1,拖拽数据2,确定拖拽意图是否是跨设备拖拽,确定拖拽方向,确定目标设备以及目标设备显示被拖拽UI元素部分区域的具体描述与图4所示实施例S403-S405中对应内容的描述类似,此处不再详细赘述。区别在于,在该实施例中,手机在确定用户拖拽UI元素的拖拽意图是跨设备拖拽后,还需实时向目标设备发送录屏数据。在本实施例中,录屏数据包括视频数据和音频数据视频数据用于目标设备在目标设备的显示屏上显示对应UI元素,音频数据用于目标设备播放对应声音。另外,拖拽数据1中还需要包括被拖拽的UI元素在当前显示界面中的layer Name,用于目标设备从接收到的录屏数据中过滤出该UI元素并显示。
示例性的,结合图3和图18所示示例,在接收到S1701中的用户操作后,手机(如手机应用层的三方应用,具体为视频应用)在手机上触发针对视频组件的拖拽。手机的框架层会生成对应的拖拽事件,如拖拽开始事件,该拖拽开始事件中包括上述拖拽数据1。手机应用层的该三方应用可以回调框架层生成的拖拽开始事件,以从拖拽开始事件中提取到上述拖拽数据1。手机应用层的三方应用提取到拖拽数据1后,可将该拖拽数据1发送给手机应用层的拖拽服务模块。手机应用层的拖拽服务模块便可获得该拖拽数据1。之后,在手机应用层的三方应用进行拖拽监听,确定出用户拖拽UI元素的拖拽意图是跨设备拖拽后,可通知手机应用层的拖拽服务模块此次拖拽是跨设备拖拽,此时手机应用层的拖拽服务模块可向跨设备拖拽的目标设备发送获得的拖拽数据1。
在确定用户的拖拽意图是跨设备拖拽后,在视频组件被拖拽的过程中,手机的框架层会生成对应的拖拽事件,如拖拽移动事件,该拖拽移动事件中包括上述拖拽数据2。手机应用层的三方应用可以回调框架层生成的拖拽移动事件,以从拖拽移动事件中提取到上述拖拽数据2。手机应用层的三方应用提取到拖拽数据2后,可将该拖拽数据2发送给手机应用层的拖拽服务模块。由手机应用层的拖拽服务模块将该拖拽数据2发送给目标设备。
另外,在手机上触发针对视频组件的拖拽,或在确定拖拽意图是跨设备拖拽后,手机可启动投屏进程,如手机应用层的拖拽服务模块通知手机应用层的投屏服务模块启动投屏,以便对手机进行录屏,获得录屏数据。手机还可通知目标设备,如电视机的投屏服务模块投屏开始。在确定拖拽意图是跨设备拖拽后,手机可将获得录屏数据发送给目标设备。可以理解的是,在本实施例中,录屏数据包括视频数据和音频数据。视频数据的获取过程与S407中描述的录屏数据的获取方式类似,此处不再详细赘述。音频数据的获取过程可以是:手机可预先创建一个音频录音(AudioRecord)对象,并创建一个缓存(buffer)。在拖拽开始后,手机的拖拽服务模块可调用该AudioRecord对象。在该AudioRecord对象被调用后,可对手机中的音频数据进行录制,如被拖拽的对象是视频组件,则可对视频组件中播放的视频中的音频进行录制,以获得音频数据,该音频数据会被存储到创建的buffer中。这样,在确定拖拽意图是跨设备拖拽后,手机的拖拽服务模块可从buffer中获得音频数据。需要说明的是,在跨设备拖拽视频组件等UI元素时,可以将视频数据和音频数据均投屏到目标设备,也可以只将视频数据投屏到目标设备,而不将音频数据投屏到目标设备,本实施例在此不做具体限制。
在作为目标设备的电视机接收到来自手机的拖拽数据1,拖拽数据2及录屏数据后,电视机可根据手机的分辨率,拖拽数据1及拖拽数据2,判断被拖拽的UI元素是否存在区域溢出手机触摸屏。当电视机确定出被拖拽的UI元素存在区域溢出手机触摸屏时,电视机可根据接收到的录屏数据(如录屏数据中的视频数据)和拖拽数据1中包括的layer Name,显示被拖拽UI元素,如上述视频组件的部分区域,还可根据录屏数据中的音频数据播放声音。其中视频组件显示在电视机显示屏上的区域与视频组件在手机溢出手机触摸屏的区域的内容相同。
示例性的,结合图3和图18,手机在向电视机发送拖拽数据1,拖拽数据2及录屏数据后,电视机应用层的拖拽服务模块可接收该拖拽数据1,拖拽数据2及录屏数据。之后,电视机应用层的拖拽服务模块可根据手机的分辨率,拖拽数据1及拖拽数据2,判断被拖拽的视频组件是否存在区域溢出手机触摸屏。当确定出被拖拽的视频组件存在区域溢出手机触摸屏时,电视机的拖拽服务模块可确定出视频组件具体哪个区域溢出手机触摸屏,并将确定出的结果,录屏数据及拖拽数据1中的layer Name,交由电视机的投屏服务模块。电视机的投屏服务模块与电视机的框架层配合,可根据拖拽数据1中的layer Name从录屏数据(如录屏数据中的视频数据)中过滤出被拖拽的视频组件(其中该视频组件是完整的视频组件),并根据确定出的被拖拽的视频组件具体哪个区域溢出手机触摸屏的结果,绘制并在电视机的显示屏上显示该视频组件的部分区域,如平板电脑的框架层(如框架层包括的窗口管理服务,该窗口管理服务配置有如视频组件等对象允许溢出屏幕的相关参数)可提供一个surfaceview来实现视频组件的部分区域在电视机上的显示。如,电视机在进行界面绘制时,可遍历录屏数据对应的界面的所有层,如果某个层与拖拽数据1中的layer Name不对应(或者说不匹配),则不参绘制,这样便可实现仅在跨设备拖拽的目标设备端显示被拖拽的UI元素的效果。例如,如图19所示,电视机显示的视频组件,如1901所示。可以看到的是,视频组件1901的内容与视频组件1801在手机中的溢出部分的内容相同,或者说视频组件1901与视频组件1801显示在手机上的部分可实现视频组件1801中内容的完整呈现。另外,视频组件1801被拖拽的拖拽方向是向右拖拽,视频组件1901的拖入位置为电视机显示屏的左边缘1902。另拖出位置为手机触摸屏的右边缘1903的居中位置,拖入位置具体也为左边缘1902的居中位置。这样,给用户的视觉效果是,视频组件1801从手机上被拖拽到跨设备拖拽的目标设备端,即电视机。电视机还可根据录屏数据中的音频数据播放声音。
可以理解的是,随着在UI元素在手机上继续被拖拽,手机可根据用户操作动态调整UI元素显示在手机触摸屏上区域的大小。另外,手机可会实时获取并向电视机发送录屏数据和拖拽数据2。电视机根据接收到的录屏数据,拖拽数据1中的layer Name和拖拽数据2可动态调整UI元素显示在电视机显示屏上的区域大小和显示内容。具体实现与图4所示实施例中对应内容的描述类似,此处不再详细赘述。
需要说明的是,以上示例是以用户拖拽的UI元素是视频组件为例进行说明的,如上描述,用户拖拽的UI元素还可以是悬浮窗,画中画。拖拽悬浮窗和画中画的具体实现与拖拽视频组件的具体实现类似,此处不再一一赘述。区别在于,在拖拽画中画的具体实现中,在接收到拖拽画中画的用户操作后,是由手机应用层的systemUI触发针对画中画的拖拽,且是由sys temUI回调框架层生成的拖拽事件以便将对应的拖拽数据,如上述拖拽数据1,拖拽数据2发送给手机应用层的拖拽服务模块的。
S1707、手机接收释放拖拽的用户操作。
S1708、响应于S1707中的用户操作,手机向电视机发送指示信息。电视机根据指示信息将被拖拽UI元素全部区域显示到电视机上。
如S1706中的描述,手机会实时向电视机发送录屏数据,在用户在手机上释放拖拽后,手机可向电视机发送用于指示用户停止拖拽的指示信息。电视机根据该指示信息可获知用户已停止拖拽,电视机可根据当前时刻接收到的录屏数据(如录屏数据中的视频数据),在电视机的显示屏上显示被拖拽UI元素全部区域。例如,结合图19,如图20所示,用户在手机上释放拖拽后,电视机可在电视机的显示屏上悬浮显示视频组件2001的全部区域。其中视频组件2001可以悬浮显示在电视机屏幕的边缘或中间,也可以全屏显示。另外,如图20所示,对于手机而言,在接收到用户释放拖拽的操作后,手机可显示包括视频组件的视频应用的界面2002。在另一实施例中,手机也可以显示视频应用的界面,但该界面中不包括视频组件(图中未示出),或者,手机也可以显示桌面(图中未示出),本实施例在此不作具体限制。或者,手机可悬浮显示该视频组件,如悬浮显示在手机屏幕的中间或边缘。
需要说明的是,如S407中的描述,源端设备在接收到用户释放拖拽的操作后,在一种实现方式(如称为实现方式1)中,可将被拖拽的对象的全部区域投屏显示到目标设备端,在另一种实现方式(如称为实现方式2)中,只有在被拖拽的对象溢出源端设备的比例大于预设阈值(或显示在源端设备的比例小于预设阈值)时,才会将被拖拽的对象的全部区域投屏显示到目标设备端。在一些实施例中,在上述实现方式2中,如果接收到释放操作后,被拖拽的对象溢出源端设备的比例小于预设阈值(或显示在源端设备的比例大于预设阈值),则被拖拽的对象可悬停吸附显示在源端设备和目标设备上。例如,在拖拽如视频组件,悬浮窗或画中画等UI元素的过程中,如果源端设备接收到释放拖拽的用户操作,如用户停止在源端设备拖拽该UI元素时,该被拖拽的UI元素溢出源端设备的比例小于预设阈值,则被拖拽的UI元素将悬停吸附显示在源端设备和目标设备上。如,显示效果可如图19所示,即被拖拽的视频组件一部分显示在手机上,一部分显示在电视机上。在其他一些实施例中,在上述实现方式2中,如果接收到释放操作后,被拖拽的对象溢出源端设备的比例小于预设阈值(或显示在源端设备的比例大于预设阈值),则可停止被拖拽对象到目标设备端的投屏显示,如,手机可在手机触摸屏上正常显示视频组件。手机还可向电视机发送指示信息,用于指示拖拽停止,以便电视机正常显示电视机自身的界面。需要说明的是,对于在接收到释放操作后,被拖拽的对象溢出源端设备的比例小于预设阈值(或显示在源端设备的比例大于预设阈值)时,是执行将被拖拽UI元素悬停吸附显示在源端设备和目标设备上的操作,还是停止投屏显示,可以是预先配置的。
用户还可利用电视机的输入设备,实现对视频组件2001的控制,如放大,反向控制等控制操作。例如,反向控制可以是对视频组件播放的视频的播放/暂停,快进,快退等控制。如,结合图20,视频组件2001中还包括的播放/暂停按钮2003,快退按钮2004,快进按钮2005。用户可使用电视机的输入设备,如遥控器,对视频组件2001中的按钮进行操作。如,以用户对快进按钮2005进行了操作为例。在用户使用遥控器对快进按钮2005进行了操作后,电视机的投屏服务模块可获取该操作的位置信息,电视机根据该位置信息和视频源区域可确定该位置对应在手机上视频组件中快进按钮的位置。视频源区域用于指示视频组件2001中各位置与手机中视频组件各位置的对应关系。之后,电视机的投屏服务模块可通过电视机的拖拽服务模块将用户对快进按钮进行了操作的指令发送给手机的拖拽服务模块。手机的拖拽服务模块将该指令转发给手机的框架层。作为对该指令的响应,手机的框架层可对视频进行快进处理,并获取对应的录屏数据。获得的录屏数据可通过手机的拖拽服务模块发送给电视机的拖拽服务模块。之后,电视机的拖拽服务模块可将录屏数据交由电视机的投屏服务模块,由电视机的投屏服务模块与电视机的框架层配合,绘制并在电视机的显示屏上显示快进的视频,实现在电视机端对手机端的反向控制。又如,结合图20,视频组件2001中还包括按钮2006。用户可利用电视机的遥控器对该按钮2608进行点击操作,响应于该点击操作,电视机放大视频组件2001。视频组件2001中还包括按钮2007。用户可利用电视机的遥控器对该按钮2007进行点击操作,响应于该点击操作,视频停止在电视机中播放,如电视机可向手机发送退出投屏的请求,手机接收到该请求后,停止视频组件的投屏。
采用图17所示实施例中的方法,可实现视频组件,悬浮窗,画中画等UI元素从源端设备到目标设备的拖拽。例如,用户在手机上使用悬浮窗观看一个综艺视频或和朋友视频通话。用户到家后,可将该悬浮窗拖拽到电视机上,在电视机上使用悬浮窗继续观看或视频通话。
需要说明的是,本实施例中其他内容的描述与图4中对应内容的描述类似,此处不再一一赘述。另外,当拖拽对象是freeform小窗时,可以按照图4所示实施例的方案来实现从源端设备到目标设备的拖拽,也可以按照图11所示实施例的方案来实现从源端设备到目标设备的拖拽,本实施例在此不做具体限制。
图21为本申请实施例提供的一种跨设备的对象拖拽方法的流程示意图。其中,本实施例以第一终端101为手机,第二终端102为PC,第一终端101的输入设备为触摸屏,拖拽的对象为界面中的UI控件为例,对本实施例提供的方法进行详细说明。例如,手机作为源端设备,PC作为目标设备。
如图21所示,该方法可以包括以下S2101-S2107。
S2101、手机接收拖拽第一界面的UI控件的用户操作。
S2102、响应于S2101中的用户操作,手机显示UI控件随用户操作移动的动画。
其中,UI控件是一种界面元素,它包含在应用程序中,用户可以通过直接操作(direct manipulat ion)来与UI控件交互,从而对应用程序的有关信息进行读取或者编辑。一般而言,UI控件可以包括图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏等可视的界面元素。
可以理解的是,对于不同的界面,其包括的UI控件不同。在本实施例中,不同界面中允许被拖拽的UI控件可以是该界面所包括的所有UI控件,也可以是部分UI控件。界面中允许被拖拽的UI控件可以是预先定义的。如可以在手机中预先配置对应的配置文件,该配置文件中包括不同应用的界面中允许被拖拽的UI控件的配置信息,如该配置文件中包括各界面中允许被拖拽的UI控件的标识,即只有标识包含在该配置文件中的UI控件才是允许被拖拽的UI控件。在实际应用中,被用户拖拽的UI控件可以是一个,也可以是多个,本实施例在此不作具体限制。
在本实施例中,S2101中的用户操作可以为本申请中的拖拽操作。其中,S2101中的用户操作可以包括一个或多个操作。示例性的,该用户操作可以包括选中UI控件的操作和触发选中的UI控件移动的操作。
其中,选中UI控件的操作可以用于手机确定用户想要拖拽的UI控件。在一些实施例中,选中UI控件的操作可以包括一个手势操作,该手势操作可以为触屏手势操作。也就是说,通过执行该一个触屏手势操作,可选中想要拖拽的UI控件。
如,用户想要拖拽的UI控件是一个,选中UI控件的操作可以是对该UI控件的单指操作,如单指长按操作,单指双击操作等,还可以是对该UI控件的3D触控操作(3Dtouch),还可以是对该UI控件的手掌操作,如手掌长按操作,手掌单击操作等。例如,如图22中的(a)所示,手机当前显示第一界面2201,该第一界面2201为音乐播放界面。该第一界面2201中所有的UI控件,如返回按钮2202,分享按钮2203,专辑按钮2204,歌词2205,收藏按钮2206,下载按钮2207,其他按钮2208,播放模式按钮2209,上一首按钮2210,播放/暂停按钮2211,下一首按钮2212,菜单按钮2213及进度条2214均允许被拖拽。结合图22中的(a),以选中UI控件的操作为单指长按操作为例。用户想要拖拽专辑按钮2204时,如图22中的(b)所示,可对专辑按钮2204执行单指长按操作。手机在接收到该操作后,可确定该专辑按钮2204为用户选择的想要拖拽的UI控件。
又如,用户想要拖拽的UI控件是多个,选中UI控件的操作可以是双指捏合操作。其中,双指捏合区域内的所有允许被拖拽的UI控件将被手机确定为想要拖拽的UI控件。例如,结合图22中的(a),用户想要拖拽专辑按钮2204和歌词2205时,如图22中的(c)所示,用户可执行双指捏合操作。手机在接收到该操作后,可确定双指捏合区域内的UI控件,如专辑按钮2204和歌词2205为用户选择的想要拖拽的UI控件。
又如,用户想要拖拽的是第一界面中所有允许被拖拽的UI控件,选中UI控件的操作可以是三指捏合操作。例如,结合图22中的(a),用户想要拖拽第一界面2201中所有允许被拖拽的UI控件时,如图22中的(d)所示,用户可在第一界面2201上执行三指捏合操作。手机在接收到该操作后,可确定第一界面2201中的所有UI控件(即图22中的(a)所示的控件2202-2214)均为用户选择的想要拖拽的UI控件。
在其他一些实施例中,选中UI控件的操作可以包括两个手势操作。也就是说,通过执行这两个手势操作,可选中想要拖拽的UI控件。例如,这两个手势操作包括:手势操作1和手势操作2。其中,手势操作1可以是触屏手势操作,也可以是隔空手机操作。该操作与S401中触发第一窗口拖起的操作类似,此处不再详细赘述。区别在于,该手势操作1的功能是用于触发手机开启多元素拖拽模式。在多元素拖拽模块开启后,手机可以将第一界面中允许被拖拽的UI控件显示为待拖拽状态。UI控件的拖拽状态可以以抖动或在允许被拖拽的UI控件上显示选择框等方式展示出。手势操作2可以是触屏手势操作,如该手势操作2具体可以是对显示为待拖拽状态的UI控件的点击操作。根据手势操作1和手势操作2,手机可确定用户想要拖拽的UI控件。例如,结合图22中的(a),以第一界面2201中允许被拖拽的UI控件包括:专辑按钮2204,歌词2205,播放模式按钮2209,上一首按钮2210,播放/暂停按钮2211,下一首按钮2212,及菜单按钮2213,手势操作1为对第一界面2201的单指双击操作,手势操作2为对UI控件的点击操作为例。如图23中的(a)所示,用户对第一界面2201执行单指双击操作。作为对该操作的响应,专辑按钮2204,歌词2205,播放模式按钮2209,上一首按钮2210,播放/暂停按钮2211,下一首按钮2212,及菜单按钮2213开始抖动。用户可对这些UI控件中的一个或多个UI控件进行点击操作,以选择想要拖拽的UI控件。如,以用户想要拖拽的UI控件包括歌词2205,上一首按钮2210,播放/暂停按钮2211和下一首按钮2212为例。用户可对歌词2205,上一首按钮2210,播放/暂停按钮2211和下一首按钮2212分别进行点击操作。如图23中的(b)所示,为了便于用户获知哪些UI控件已被选中,可在被选中的UI控件上显示选中标识2301。这样,手机根据用户执行的手势操作1和手势操作2,可确定歌词2205,上一首按钮2210,播放/暂停按钮2211和下一首按钮2212为用户选择的想要拖拽的UI控件。
上述触发UI控件移动的操作可以是触屏手势操作。如触发UI控件移动的触屏手势操作可以是对选中的UI控件的按下并移动的操作。触发UI控件移动的操作也可以是隔空手势操作。如,触发UI控件移动的隔空手势操作是对选中的UI控件的按压手势和平移手势。又如,触发UI控件移动的隔空手势操作是在UI控件被选中后,执行的握拳手势和平移手势。其中,触发UI控件移动的操作可以是针对上述选中的UI控件中的任意一个或多个执行的。例如,以触发UI控件移动的是对选中的UI控件的按下并移动的操作为例,结合图23所示的示例,用户可针对歌词2205执行按下并移动的操作。
之后,手机可绘制并显示被选中的UI控件随用户手指的移动而移动的动画。在一些实施例中,手机可绘制并显示被选中的UI控件的阴影(shadow,或者称为拖拽阴影)随用户手指的移动而移动的动画。如在显示动画之前,手机可生成被选中的UI控件的阴影。示例性的,结合图3和图23所示示例,手机生成阴影的具体过程可以是:用户选中想要拖拽的UI控件,并针对选中的UI控件执行按下并移动的操作后,手机的拖拽服务模块可接收到对应操作。手机的拖拽服务模块向手机的框架层发送触发控件拖拽的指示,如该指示中可以包括手机获取到的被拖拽的UI控件的标识。手机的框架层接收到该指示后,根据被拖拽的UI控件的标识监听对应UI控件,并将被拖拽的UI控件的控件信息发送给手机的拖拽服务模块。其中,控件信息可以包括被拖拽的UI控件的标识,阴影,在第一界面中的位置信息等。如,歌词2205,上一首按钮2210,播放/暂停按钮2211和下一首按钮2212为被拖拽的UI控件。手机的框架层根据接收到的UI控件的标识,对歌词2205,上一首按钮2210,播放/暂停按钮2211和下一首按钮2212这些UI控件进行监控,并将歌词2205,上一首按钮2210,播放/暂停按钮2211和下一首按钮2212中各UI控件的标识,阴影及在第一界面中的位置信息传输给手机的拖拽服务模块。手机的拖拽服务模块根据接收到的被拖拽UI控件的控件信息可生成被选中的UI控件的阴影。例如,生成的阴影如图24中的(a)中2401所示。这样,随着用户手指的移动,手机可显示该阴影被拖拽的动画,给用户以被选中的UI控件被用户手指拖动的视觉效果。例如,结合图24中的(b)所示,以用户向右移动手指为例。随着用户手指的移动,手机,如手机的框架层可绘制阴影2401随用户手指移动的动画,并交由手机的应用层(如应用层的launcher)在手机的触摸屏上显示阴影2401随用户手指移动的动画。另外,被拖拽的UI控件可仍显示在第一界面中(如图24中所示),也可以不显示(图中未示出),本实施例在此不做限制。需要说明的是,图24中所示的阴影2401包括被拖拽的UI控件的阴影和承载这些阴影的背景。其中,背景用于承载被拖拽的UI控件的阴影,该背景可以是画布或画板,其可以是透明的,也可以是不透明的(如图24中所示),本实施例在此不做具体限制。
其中,手机(如手机的拖拽服务模块)接收到对应操作后,通过UI控件识别可识别出被用户拖拽的UI控件的类型。根据识别出的UI控件的类型手机可确定被拖拽的UI控件的标识。其中,控件的类型与标识一一对应,且该对应关系是预先存储在手机中的。示例性的,可采用人工智能(artificial intelligence)识别的方法来识别出被用户拖拽的UI控件的类型。例如,可预先获取手机中各应用的各界面(如包括上述音乐播放界面),如可通过截屏的方法获取音乐播放界面的整帧图像数据,并采用机器学习中的目标检测技术(如R-CNN,Fast-R-CNN YOLO等模型算法)定位出该音乐播放界面中的各UI控件的区域,然后将定位出的该音乐播放界面中的各UI控件的区域和类型与该音乐播放界面的标识对应存储在手机中。在接收到用户拖拽该音乐播放界面中UI控件的操作后,手机根据用户选中UI控件时触摸的位置,及存储的该音乐播放界面中的各UI控件的区域,可识别出用户拖拽的UI控件的类型。又例如,在接收到用户拖拽该音乐播放界面中UI控件的操作后,可将用户选中的UI控件绘制出来,然后采用机器学习中的目标分类技术(如ResNet模型算法),可识别出绘制出的UI控件的类型。
S2103、手机在确定用户拖拽UI控件的拖拽意图是跨设备拖拽时,向PC发送拖拽数据1。
其中,该拖拽数据1可以为本申请中的第一拖拽数据。拖拽数据1可以包括阴影的rect信息,阴影和被拖拽的UI控件的标识。拖拽数据1还可以包括被拖拽对象的类型(如UI控件)和/或用于指示该拖拽数据1是拖拽开始事件中相关数据的指示。
S2104、在UI控件在手机上继续被拖拽的过程中,向PC发送拖拽数据2。
其中,该拖拽数据2可以为本申请中的第二拖拽数据。拖拽数据2可以包括阴影第一角的坐标信息。该第一角可以为阴影的左上角,左下角,右上角和右下角中的任意一个。在其他一些实施例中,该拖拽数据2中也可以包括:阴影左上角,左下角,右上角和右下角中的多个角的坐标信息。以下实施例中以拖拽数据2包括阴影的第一角的坐标信息,第一角为左上角为例进行说明。
拖拽数据2还可以包括用于指示该拖拽数据2是拖拽移动事件中相关数据的指示。
S2105、PC接收拖拽数据1和拖拽数据2。当确定UI控件存在区域溢出手机触摸屏时,PC根据接收到的拖拽数据1和拖拽数据2显示UI控件的部分区域。
需要说明的是,本实施例S2103-S2105中对拖拽数据1,拖拽数据2,确定拖拽意图是否是跨设备拖拽,确定拖拽方向,确定目标设备以及目标设备显示UI控件部分区域的具体描述与图4所示实施例S403-S405中对应内容的描述类似,此处不再详细赘述。
示例性的,结合图3,图23和图24所示示例,手机在接收到S2101中的用户操作后,手机(如手机应用层的三方应用,具体为音乐播放器)在手机上触发针对UI控件的拖拽。手机应用层的拖拽服务模块可获取并向跨设备拖拽的目标设备,如电视机发送获得的拖拽数据1。在UI控件被拖拽的过程中,手机应用层的拖拽服务模块可获取并向目标设备发送拖拽数据2。
PC应用层的拖拽服务模块可接收拖拽数据1和拖拽数据2。根据接收到的拖拽数据1和拖拽数据2,PC应用层的拖拽服务模块可在确定被拖拽UI控件,如被拖拽UI控件的阴影存在区域溢出手机触摸屏时,PC的拖拽服务模块可确定出阴影具体哪个区域溢出手机触摸屏,并将确定出的结果及阴影,交由PC的框架层,由框架层根据阴影及确定出的阴影具体哪个区域溢出手机触摸屏的结果,绘制并在PC的显示屏上显示阴影的部分区域。例如,如图25所示,PC显示的阴影如2501所示。可以看到的是,阴影2501的内容与阴影2502在手机中的溢出部分的内容相同,或者说阴影2501与阴影2502显示在手机上的部分可实现阴影2502中内容的完整呈现。另外,阴影2502被拖拽的拖拽方向是向右拖拽,阴影2501的拖入位置为PC显示屏的左边缘2503。另拖出位置为手机触摸屏的右边缘2504的居中位置,拖入位置具体也为左边缘2503的居中位置。这样,给用户的视觉效果是,UI控件从手机上被拖拽到跨设备拖拽的目标设备端,即PC。
可以理解的是,随着UI控件在手机上继续被拖拽,手机可根据用户操作动态调整阴影显示在手机触摸屏上区域的大小。另外,手机会实时获取并向PC发送拖拽数据2。PC根据接收到的拖拽数据2可动态调整阴影显示在PC显示屏上的区域大小。具体实现与图4所示实施例中对应内容的描述类似,此处不再详细赘述。
S2106、手机接收释放拖拽的用户操作。
S2107、响应于S2106中的用户操作,手机将被拖拽的UI控件投屏显示到PC。
本实施例中对S2106和S2107的具体描述与图4所示实施例中S406和S407中对应内容的描述类似。区别在于,在本实施例中,手机对第一界面进行指令抽取,获得该第一界面对应的指令流。手机将获得指令流发送给PC后,PC可根据拖拽数据1中包括的被拖拽的UI控件的标识,从该指令流中抽取与该被拖拽的UI控件对应的画布(canvas)指令,从而根据该canvas指令实现被拖拽的UI控件在PC上的显示。其中,被拖拽的UI控件可悬浮显示在PC屏幕的中间或边缘。例如,PC提供一个surfaceview来显示canvas指令的内容,该内容即为UI控件。PC在提供的surfaceview实现UI控件的显示时可根据预先配置的布局文件来显示各UI控件。其中,该布局文件中包括各UI控件绘制区域的配置(如包括UI控件的标识,位置及样式等配置),各UI控件的绘制区域不重叠。另外,该布局文件中各UI控件的绘制区域可与对应UI控件在原界面中的区域不对应,也就是说,通过该布局文件,可实现UI控件的重新布局。其中,UI控件在PC上可以窗口的形式显示,并在本实施例中,支持以悬浮小窗的形式显示在跨设备拖拽的目标设备,如PC的显示屏上。
示例性的,结合图3,及上述图23,图24和图25所示示例。在触发跨设备拖拽后,用户停止移动并抬起了手指。对应的,手机可接收到用户释放拖拽的操作。作为对该操作的响应,手机,如手机的拖拽服务模块可获取当前显示界面的指令流,并发送给PC。PC的拖拽服务模块接收到指令流后,可将得到的指令流交由PC的框架层。PC的框架层可根据拖拽数据1中包括的被拖拽的UI控件的标识,从指令流中抽取与该被拖拽的UI控件对应的canvas指令,然后根据预先配置的布局文件和canvas指令,实现UI控件的重新布局,并如图26所示,绘制并在窗口2601中显示对应的UI控件,如包括歌词2602,上一首按钮2603,播放/暂停按钮2604和下一首按钮2605。可以看到的是,投屏到PC上的被拖拽UI控件的布局与手机中这些控件的布局不同。另外,如图26所示,对于手机而言,在接收到用户释放拖拽的操作后,手机显示的界面2606中可包括被拖拽的UI控件(如图26中所示),也可以不显示被拖拽的UI控件(图中未示出),本实施例在此不作具体限制。
用户还可利用PC的输入设备(如鼠标),实现对窗口2601的控制,如放大,反向控制等控制操作。如,窗口2601中还包括按钮2607。用户可利用PC的鼠标对该按钮2607进行点击操作,响应于该点击操作,窗口2601全屏显示在PC显示屏上。又如,窗口2601中还包括按钮2608。用户可利用PC的鼠标对该按钮2608进行点击操作,响应于该点击操作,窗口2601停止在PC显示屏上显示。另外,PC还可向手机发送退出投屏的请求,手机接收到该请求后,停止UI控件的投屏。又如,反向控制可以是在PC端对手机端音乐的播放/暂停,上一首,下一首,调整歌词进度等控制。具体描述与图17所示实施例中S1708中对应内容的描述类似,此处不再详细赘述。
采用图21所示实施例中的方法,可实现应用窗口中UI控件从源端设备到目标设备的拖拽。例如,用户将图片编辑或绘图窗口的画布拖拽到平板电脑,以使用平板电脑的触控笔进行手绘,而调色板、笔触等工具保留在手机上。
其中,以上实施例中是对如何对第一界面中的UI控件进行拖拽进行说明的。在其他一些实施例中,用户也可以通过页面选择手势,指关节手势,手指(如食指)手势或使用鼠标等,以框选(如画圈)的形式选中第一界面中想要拖拽的区域,也即可对第一界面的某些区域进行拖拽。例如,结合图27,以用户通过页面选择手势框选第一界面中想要拖拽的区域为例。如图27中的(a)所示,手机当前显示第一界面2701,该第一界面2701为音乐播放界面。在用户想对第一界面2701的某些区域进行拖拽时,可执行预定操作,该操作可以是预先定义的用于指示手机进入页面选择状态的操作,如双击状态栏等,本实施例在此不做具体限制。作为对该操作的响应,手机进入页面选择状态,如图27中的(b)所示,并在第一界面2701上显示选择框2702。用户可通过手势操作对该选择框2702进行调节,以选定想要拖拽的区域,其中,选择框2702框选的区域即为用户选定的想要拖拽的区域。如用户通过手势操作,将选择框2702调整为图27中的(c)所示的位置和大小,调整后的选择框2702所框选的区域即为用户想要拖拽的区域。之后,用户可通过长按调整后的选择框2702或通过对用于确定拖拽区域按钮进行操作,以向手机指示想要拖拽的区域已选定。手机在接收到该操作后,可获取用户选定的拖拽区域中的UI控件的标识。根据获取到的UI控件的标识,手机可生成选定的拖拽区域对应的阴影(具体实现与拖拽UI控件的实现类似,此处不再详细描述)。例如,如图27中的(c)所示,用户选定的拖拽区域包括播放模式按钮2703,上一首按钮2704,播放/暂停按钮2705,下一首按钮2706和菜单按钮2707。手机在接收到用户选定拖拽区域的操作后,可获取播放模式按钮2703的标识,上一首按钮2704的标识,播放/暂停按钮2705的标识,下一首按钮2706的标识,和菜单按钮2707的标识。根据这些标识,手机可生成选定的拖拽区域对应的阴影,如图27中的(d)所示的2708。之后,用户可移动手指,随着用户手指的移动手机可绘制并显示选定的拖拽区域的阴影2708随用户手指的移动而移动的动画,即实现对界面中的区域的拖拽。之后跨设备拖拽的流程与拖拽UI控件的流程相同,此处不再详细赘述。另外,在手机进入页面选择状态后,手机还可显示退出按钮2709和设置按钮2710。其中,退出按钮2709用于退出页面选择状态,进行页面的正常显示。设置按钮2710提供了跨设备拖拽后的权限设置。如,用户对设置按钮2710进行点击操作后,手机可显示权限设置选项2711,通过在对该权限设置选项2711中按钮的开关选择,可控制跨设备拖拽的目标设备是否支持显示,音频及反向控制。例如,显示权限开启,则在完成跨设备拖拽后,可在跨设备拖拽的目标设备显示被拖拽的对象,如上述选定的拖拽区域。又如,触控权限开始,则允许用户通过对跨设备拖拽的目标设备中显示的拖拽区域中的控件进行操作,以实现对源端设备的控制。
需要说明的是,当拖拽对象是第一界面中部分区域时,除了可以按照图21所示实施例的方案来实现源端设备到目标设备的拖拽外,还可按照图4所示实施例的方案来实现,区别在于,拖拽数据1中包括被拖拽的该区域的矩形信息,拖拽数据2中包括该区域的第一角的坐标信息。另外,在拖拽释放后,仅将拖拽的该区域显示到目标设备即可。
另外,以上实施例中是一次性对第一界面中的多个UI控件进行拖拽为例,对拖拽UI控件的实施过程进行说明的。在另一些实施例中,还可以分多次对第一界面中的多个UI控件进行拖拽,一次拖拽的UI控件可以是一个,也可以是多个。例如,结合图28,以用户分两次将两个控件拖拽到PC端为例。如图28中的(a)所示,用户通过执行S2101中的用户操作,可触发第一界面2801,如音乐播放界面中专辑按钮2802在手机上的拖拽。手机根据用户操作可获得该专辑按钮2802的标识,通过对该专辑按钮2802的监听,手机可获得该专辑按钮2802对应的控件信息,根据该控件信息手机可生成对应的阴影,从而在手机上绘制并显示该阴影随用户操作移动的动画。在用户拖拽该控件的过程中,手机可发送对应的拖拽数据到PC,以便手机与PC协同实现跨屏的拖拽效果。在用户释放拖拽后,手机可将该专辑按钮2802投屏显示到PC端。如图28中的(b)所示,专辑按钮2802在PC端的投屏显示如2804所示。之后,用户可通过重新执行S2101中的用户操作,触发第一界面2801,如音乐播放界面中歌词2803在手机上的拖拽。类似的,手机可与PC协同实现歌词2803的跨屏拖拽效果。在用户释放拖拽后,手机可将该歌词2803投屏显示到PC端。如图28中的(b)所示,歌词2804在PC端的投屏显示如2805所示。需要说明的是,第一次拖拽释放后,专辑按钮2802投屏显示到PC端的描述与上述实施例中对应内容的描述相同。第二次拖拽释放后UI控件的投屏显示与上述对应内容的描述也是类似的,区别在于,第二次UI控件投屏时,需要将第一次拖拽的UI控件也增加进来,从而实现两次拖拽的UI控件均投屏显示到目标设备的效果。另外,在UI控件投屏显示到PC后,本实施例还可支持用户在PC端,对投屏显示的UI控件的移动,或放大等处理。例如,如图28中的(c)所示。用户可将PC上显示的歌词2805从专辑按钮2804的左边移动到上边。
需要说明的是,本实施例中其他内容的描述与图4中对应内容的描述类似,此处不再一一赘述。另外,对于拖拽对象是widget(如,时钟widget,卡片widget,日历widget,音乐widget等)时的具体实现与图21所示实施例中,拖拽对象是UI控件时的具体实现类似,此处不再一一赘述。
综上所述,采用本实施提供的方法,允许用户利用如鼠标,触摸屏等输入设备,将窗口或UI元素或界面中的UI控件从一个终端拖拽到协同使用的另一个终端中,提高了多终端协同使用的使用效率,使得拖拽更加直接显性化,提高了用户的拖拽使用体验。打破了不同终端之间屏幕、系统的壁垒,且无需依赖投屏窗口,便可实现应用窗口,各种UI元素(如悬浮窗,UI控件等)的拖拽。另外,通过根据用户的拖拽,在源端设备和目标设备端配合显示被拖拽对象的动画,使得拖拽动画流畅直观地呈现给用户。另拖拽的目标端设备并不需要作为源端设备的扩展屏,实现了真正意义上的跨设备跨系统的窗口拖拽。且无需用户预先安装其他辅助软件,便可实现窗口的拖拽。
需要说明的是,以上各实施例是以将对象从源端设备拖拽到目标设备为例进行说明的。用户也可以将对象从目标设备拖拽到源端设备,其具体实现与从源端设备将对象拖拽到目标设备的实现类似,此处不在详细赘述。
图29为本申请实施例提供的一种跨设备的对象拖拽装置的组成示意图。如图29所示,该装置可以应用于第一终端(如上述手机),第一终端与第二终端连接,该装置可以包括:显示单元2901、输入单元2902和发送单元2903。
显示单元2901,用于在第一终端的显示屏上显示对象。
输入单元2902,用于接收用户输入的拖拽操作,拖拽操作用于发起对对象的拖拽。
显示单元2901,还用于响应于拖拽操作,第一终端在第一终端的显示屏上显示对象随拖拽操作移动的动画。
发送单元2903,用于在确定用户的拖拽意图是跨设备拖拽后,向第二终端发送拖拽数据,拖拽数据用于第二终端在第二终端的显示屏上显示对象。
进一步的,显示单元2901,还用于在对象在第一终端的显示屏上移动的过程中,当对象的第一区域被拖出第一终端的显示屏时,在第一终端的显示屏上显示对象的第二区域。
其中,拖拽数据具体用于第二终端在第二终端的显示屏上显示对象的第一区域,第一终端上显示的对象的第二区域与第二终端上显示的对象的第一区域能够实现对象内容的完整呈现。
进一步的,拖拽操作至少包括触发对象移动的操作;显示单元2901在第一终端显示屏上显示的对象的第二区域随着操作动态变化。
进一步的,该装置还可以包括:接收单元2904,用于接收来自第二终端的第三拖拽数据,第三拖拽数据是第二终端接收到用户对第二终端上显示的对象的第一区域的拖拽操作后,向第一终端发送的,第三拖拽数据包括对象第一角的坐标信息。
显示单元2901在第一终端显示屏上显示的对象的第二区域随着第三拖拽数据的变化而动态变化。
进一步的,拖拽数据可以包括第一拖拽数据和第二拖拽数据。
该装置还可以包括:获取单元2905,用于在对象被开始拖拽时,从拖拽开始事件中获取第一拖拽数据;在对象在第一终端的显示屏上移动过程中,从拖拽移动事件中获取第二拖拽数据。
进一步的,上述对象可以为窗口或窗口的部分区域,窗口中包括应用的界面;第一拖拽数据可以包括:应用的界面和对象的矩形信息;第二拖拽数据可以包括:对象第一角的坐标信息。
进一步的,输入单元2902,还用于接收用户输入的拖拽释放操作,拖拽释放操作用于指示对对象的拖拽结束。
发送单元2903,还用于响应于拖拽释放操作,向第二终端发送数据,数据用于第二终端在第二终端的显示屏上显示应用的界面或应用的界面的部分区域。
进一步的,第一拖拽数据还可以包括应用的应用标签,应用标签用于第二终端开启第二终端本地的与应用标签对应的应用。
输入单元2902,还用于接收用户输入的拖拽释放操作,拖拽释放操作用于指示对对象的拖拽结束。
发送单元2903,还用于响应于拖拽释放操作,向第二终端发送指示信息,指示信息用于指示对对象的拖拽结束。
进一步的,窗口可以为应用窗口或freeform小窗。
进一步的,上述对象可以为视频组件,悬浮窗,画中画或freeform小窗;第一拖拽数据可以包括:对象的矩形信息,对象在第一终端当前显示界面中的层名称;第二拖拽数据可以包括:对象第一角的坐标信息。
进一步的,在第一终端在确定用户的拖拽意图是跨设备拖拽后,发送单元2903,还用于向第二终端发送录屏数据,录屏数据和拖拽数据用于第二终端在第二终端的显示屏上显示对象的部分区域或全部区域。
进一步的,输入单元2902,还用于接收用户输入的拖拽释放操作,拖拽释放操作用于指示对对象的拖拽结束。
发送单元2903,还用于响应于拖拽释放操作,向第二终端发送指示信息,指示信息用于指示第二终端在第二终端的显示屏上显示对象的全部区域。
进一步的,上述对象为第一界面中的UI控件,或对象为第一界面的部分区域,部分区域包括UI控件。
显示单元2901,具体用于:响应于拖拽操作,在第一终端的显示屏上显示对象的阴影随拖拽操作移动的动画;其中,第一拖拽数据包括阴影的矩形信息,阴影和UI控件的标识;第二拖拽数据包括阴影第一角的坐标信息。
进一步的,输入单元2902,还用于接收用户输入的拖拽释放操作,拖拽释放操作用于指示对对象的拖拽结束。
获取单元2905,还用于获取第一界面的指令流。
发送单元2903,还用于向第二终端发送第一界面的指令流,指令流和UI控件的标识用于第二终端在第二终端的显示屏上显示UI控件。
进一步的,该装置还可以包括:确定单元,用于确定第一终端上显示的对象的第二区域小于第一阈值,或确定被拖出第一终端的显示屏的第一区域大于第二阈值。
在另一种可能的实现方式中,显示单元2901,还用于在确定第一终端上显示的对象的第二区域大于第一阈值,或确定被拖出第一终端的显示屏的第一区域小于第二阈值时,在第一终端的显示屏上显示对象的第二区域。
进一步的,确定单元,还用于确定用户的拖拽意图是跨设备拖拽。
确定单元,具体用于确定对象被拖入设置在第一终端的显示屏边缘的拖拽感知区域;或,确定对象与第一终端的显示屏的边缘小于预定距离。
进一步的,确定单元,还用于确定跨设备拖拽的目标设备是第二终端。
进一步的,显示单元2901,还用于显示至少两个候选终端的信息;其中,至少两个候选终端包括:与第一终端连接的终端,和/或,与第一终端未连接但与第一终端的距离在可连接范围内的终端。
输入单元2902,还用于接收用户对至少一个第二终端的信息的选择操作。确定单元具体用于,根据用户的选择操作确定跨设备拖拽的目标设备是第二终端。
其中,若用户选择的第二终端未与第一终端连接,该装置还可以包括:连接单元2907,用于与第二终端建立连接。
在另一种可能的实现方式中,显示单元2901,还用于在确定用户的拖拽意图是跨设备拖拽时,显示提示信息,提示信息用于提示对象将被拖出第一终端的显示屏。
图30为本申请实施例提供的一种跨设备的对象拖拽装置的组成示意图。如图30所示,该装置可以应用于第二终端(如上述平板电脑,电视机,PC等),第二终端与第一终端连接,该装置可以包括:接收单元3001和显示单元3002。
接收单元3001,用于接收来自第一终端的拖拽数据,拖拽数据是第一终端在确定用户拖拽第一终端的显示屏上的对象的拖拽意图是跨设备拖拽后发送的。
显示单元3002,用于根据拖拽数据,在第二终端的显示屏上显示对象。
进一步的,显示单元3002,具体用于根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的第一区域;其中,第一终端上显示的对象的第二区域与第二终端上显示的对象的第一区域能够实现对象内容的完整呈现。
进一步的,拖拽数据包括第一拖拽数据和第二拖拽数据;显示单元3002在第二终端显示屏上显示的对象的第一区域随着第二拖拽数据的变化而动态变化。
进一步的,该装置还可以包括:输入单元3003,用于接收用户对第二终端的显示屏上显示的对象的第一区域的拖拽操作。
显示单元3002在第二终端显示屏上显示的对象的第一区域随拖拽操作动态变化。
进一步的,该装置还包括:发送单元3004,用于向第一终端发送第三拖拽数据,第三拖拽数据包括对象第一角的坐标信息,用于第一终端动态调整第一终端显示屏上显示的对象的第二区域。
进一步的,对象为窗口或窗口的部分区域,窗口中包括应用的界面;第一拖拽数据包括:应用的界面和对象的矩形信息;第二拖拽数据包括:对象第一角的坐标信息。
进一步的,接收单元3001,还用于接收来自第一终端的数据,该数据是用户输入拖拽释放操作后第一终端发送的,拖拽释放操作用于指示对对象的拖拽结束。
显示单元3002,还用于根据数据在第二终端的显示屏上显示应用的界面,或根据数据和拖拽数据在第二终端的显示屏上显示应用的界面的部分区域。
进一步的,第一拖拽数据还包括应用的应用标签。
接收单元3001,还用于接收来自第一终端的指示信息,指示信息是用户输入拖拽释放操作后第一终端发送的,用于指示对对象的拖拽结束。
显示单元3002,还用于开启第二终端本地的与应用标签对应的应用,并显示与应用标签对应的应用的界面,或者,并根据拖拽数据显示与应用标签对应的应用的界面的部分区域。
进一步的,窗口为应用窗口或freeform小窗。
进一步的,对象为视频组件,悬浮窗,画中画或freeform小窗;第一拖拽数据包括:对象的矩形信息,对象在第一终端当前显示界面中的层名称;第二拖拽数据包括:对象第一角的坐标信息。
进一步的,接收单元3001,还用于接收来自第一终端的录屏数据。
显示单元3002,具体用于根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,根据录屏数据在第二终端的显示屏上显示对象的第一区域。
进一步的,接收单元3001,还用于接收来自第一终端的指示信息,指示信息是用户输入拖拽释放操作后第一终端发送的。
显示单元3002,还用于响应于指示信息,根据录屏数据在第二终端的显示屏上显示对象的全部区域。
进一步的,对象为第一界面中的UI控件,或对象为第一界面的部分区域,部分区域包括UI控件。
显示单元3002,具体用于根据拖拽数据,在确定对象的第一区域被拖出第一终端的显示屏时,在第二终端的显示屏上显示对象的阴影的第一区域;其中,第一拖拽数据包括阴影的矩形信息,阴影和UI控件的标识;第二拖拽数据包括阴影第一角的坐标信息。
进一步的,接收单元3001,还用于接收来自第一终端的第一界面的指令流。
显示单元3002,还用于根据指令流和UI控件的标识,在第二终端的显示屏上显示UI控件。
进一步的,UI控件在第二终端显示屏上的布局与UI控件在第一界面中的布局不同。
进一步的,显示单元3002,还用于在第二终端的显示屏上显示对象的第一区域。
进一步的,显示单元3002,还用于显示提示信息,提示信息用于提示对象将被拖入第二终端的显示屏。
本申请实施例还提供一种跨设备的对象拖拽装置,该装置可以应用于上述实施例中的第一终端或第二终端。该装置可以包括:处理器,以及用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令时实现上述方法实施例中手机或平板电脑或PC或电视机执行的各个功能或者步骤。
本申请实施例还提供一种终端(该终端可以为上述实施例中的第一终端或第二终端),该终端可以包括:显示屏、存储器和一个或多个处理器。该显示屏、存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,终端可执行上述方法实施例中手机或平板电脑或PC或电视机执行的各个功能或者步骤。当然,该终端包括但不限于上述显示屏、存储器和一个或多个处理器。例如,该终端的结构可以参考图2所示的手机的结构。
本申请实施例还提供一种芯片系统,该芯片系统可以应用于前述实施例中的终端(如第一终端或第二终端)。如图31所示,该芯片系统包括至少一个处理器3101和至少一个接口电路3102。该处理器3101可以是上述终端中的处理器。处理器3101和接口电路3102可通过线路互联。该处理器3101可以通过接口电路3102从上述终端的存储器接收并执行计算机指令。当计算机指令被处理器3101执行时,可使得终端执行上述实施例中手机或平板电脑或PC或电视机执行的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机可读存储介质,用于存储上述终端(如手机或平板电脑或PC或电视机)运行的计算机指令。
本申请实施例还提供一种计算机程序产品,包括上述终端(如手机或平板电脑或PC或电视机)运行的计算机指令。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (27)

1.一种跨设备的对象拖拽方法,其特征在于,应用于第一终端,所述第一终端与第二终端连接,所述方法包括:
所述第一终端在所述第一终端的显示屏上显示对象;
所述第一终端接收用户输入的拖拽操作;
响应于所述拖拽操作,所述第一终端在所述第一终端的显示屏上显示所述对象随所述拖拽操作移动的动画;
所述第一终端确定用户的拖拽意图是跨设备拖拽,所述第一终端显示至少一个候选终端的信息;其中,所述至少一个候选终端包括:与所述第一终端连接的终端;所述至少一个候选终端包括所述第二终端;
所述第一终端接收用户对所述第二终端的信息的点击操作,向所述第二终端发送拖拽数据,所述拖拽数据用于所述第二终端在所述第二终端的显示屏上显示所述对象。
2.根据权利要求1所述的方法,其特征在于,所述第一终端确定用户的拖拽意图是跨设备拖拽,包括:
所述第一终端确定所述对象被拖入设置在所述第一终端的显示屏边缘的拖拽感知区域。
3.根据权利要求1所述的方法,其特征在于,所述第一终端确定用户的拖拽意图是跨设备拖拽,包括:
所述第一终端确定所述对象与所述第一终端的显示屏的边缘小于预定距离。
4.根据权利要求3所述的方法,其特征在于,所述第一终端确定所述对象与所述第一终端的显示屏的边缘小于预定距离,包括:
所述第一终端确定所述对象的第一角与所述第一终端的显示屏的边缘小于预定距离。
5.根据权利要求1所述的方法,其特征在于,所述第一终端显示至少一个候选终端的信息,包括:所述第一终端显示所述至少一个候选终端的设备标识。
6.根据权利要求1至4中任一项所述的方法,其特征在于,所述对象为视频组件,悬浮窗,画中画,应用窗口,自由freeform小窗或UI控件。
7.根据权利要求1所述的方法,其特征在于,所述第一终端在所述第一终端的显示屏上显示对象,包括:所述第一终端在所述第一终端的显示屏上播放第一视频;
所述拖拽数据用于所述第二终端在所述第二终端的显示屏上显示所述对象,包括:所述拖拽数据用于所述第二终端在所述第二终端的显示屏上播放所述第一视频。
8.根据权利要求7所述的方法,其特征在于,所述拖拽数据用于所述第二终端在所述第二终端的显示屏上继续播放所述第一视频。
9.根据权利要求7所述的方法,所述拖拽数据用于所述第二终端在所述第二终端的显示屏上全屏继续播放所述第一视频。
10.根据权利要求1所述的方法,其特征在于,所述向所述第二终端发送拖拽数据之前,所述方法还包括:
所述第一终端确定跨设备拖拽的目标设备是所述第二终端。
11.根据权利要求1-10中任一项所述的方法,其特征在于,所述拖拽数据包括第一拖拽数据和第二拖拽数据;
在所述向所述第二终端发送拖拽数据之前,所述方法还包括:
所述第一终端在所述对象被开始拖拽时,从拖拽开始事件中获取所述第一拖拽数据;
所述第一终端在所述对象在所述第一终端的显示屏上移动过程中,从拖拽移动事件中获取所述第二拖拽数据。
12.根据权利要求11所述的方法,其特征在于,所述对象为窗口或所述窗口的部分区域,所述窗口中包括应用的界面;
所述第一拖拽数据包括:所述应用的界面和所述对象的矩形信息;
所述第二拖拽数据包括:所述对象第一角的坐标信息。
13.一种跨设备的对象拖拽方法,其特征在于,应用于第二终端,所述第二终端与第一终端连接,所述方法包括:
所述第二终端接收来自所述第一终端的拖拽数据,所述拖拽数据是所述第一终端在确定用户拖拽所述第一终端的显示屏上的对象的拖拽意图是跨设备拖拽、并在所述第一设备显示的至少一个候选终端的信息中点击所述第二终端的信息后发送的;其中,所述至少一个候选终端包括:与所述第一终端连接的终端;所述至少一个候选终端包括所述第二终端;
所述第二终端根据所述拖拽数据,在所述第二终端的显示屏上显示所述对象。
14.根据权利要求13所述的方法,其特征在于,所述至少一个候选终端的信息包括设备标识。
15.根据权利要求13或14所述的方法,其特征在于,所述对象为视频组件,悬浮窗,画中画,应用窗口,自由freeform小窗或UI控件。
16.根据权利要求13所述的方法,其特征在于,所述对象用于播放第一视频;
所述第二终端根据所述拖拽数据,在所述第二终端的显示屏上显示所述对象,包括:所述第二终端根据所述拖拽数据,在所述第二终端的显示屏上播放所述第一视频。
17.根据权利要求16所述的方法,其特征在于,所述第二终端根据所述拖拽数据,在所述第二终端的显示屏上继续播放所述第一视频。
18.根据权利要求16所述的方法,其特征在于,所述第二终端根据所述拖拽数据,在所述第二终端的显示屏上全屏继续播放所述第一视频。
19.根据权利要求13所述的方法,其特征在于,所述拖拽数据包括第一拖拽数据和第二拖拽数据,所述对象为窗口或所述窗口的部分区域,所述窗口中包括应用的界面;
所述第一拖拽数据包括:所述应用的界面和所述对象的矩形信息;
所述第二拖拽数据包括:所述对象第一角的坐标信息。
20.一种跨设备的对象拖拽装置,其特征在于,包括:处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令时实现如权利要求1-12中任一项所述的方法,或者实现如权利要求13-19中任一项所述的方法。
21.一种终端,所述终端包括显示屏,一个或多个处理器和存储器;所述显示屏和所述一个或多个处理器和存储器耦合;所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述计算机指令被所述终端执行时,使得所述终端执行如权利要求1-12中任一项所述的方法,或者执行如权利要求13-19中任一项所述的方法。
22.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现如权利要求1-12中任一项所述的方法,或者实现如权利要求13-19中任一项所述的方法。
23.一种计算机程序产品,所述计算机程序产品包括计算机可读代码,当所述计算机可读代码在终端中运行时,使得所述终端中的处理器执行如权利要求1-12中任一项所述的方法,或者执行如权利要求13-19中任一项所述的方法。
24.一种跨设备的对象拖拽系统,其特征在于,包括:第一终端和第二终端,所述第一终端与所述第二终端连接;
所述第一终端,用于在所述第一终端的显示屏上显示对象;接收用户输入的拖拽操作;响应于所述拖拽操作,在所述第一终端的显示屏上显示所述对象随所述拖拽操作移动的动画;确定用户的拖拽意图是跨设备拖拽,显示至少一个候选终端的信息,其中,所述至少一个候选终端包括:与所述第一终端连接的终端;所述至少一个候选终端包括所述第二终端;接收用户对所述第二终端的信息的点击操作,向所述第二终端发送拖拽数据;
所述第二终端,用于接收来自所述第一终端的拖拽数据,根据所述拖拽数据,在所述第二终端的显示屏上显示所述对象。
25.根据权利要求24所述的系统,其特征在于,所述至少一个候选终端的信息包括设备标识。
26.根据权利要求24或25述的系统,其特征在于,所述对象为视频组件,悬浮窗,画中画,应用窗口,自由freeform小窗或UI控件。
27.根据权利要求24述的系统,其特征在于,所述第一终端,用于在所述第一终端的显示屏上显示对象,包括:所述第一终端,用于在所述第一终端的显示屏上播放第一视频;
所述第二终端,用于接收来自所述第一终端的拖拽数据,根据所述拖拽数据,在所述第二终端的显示屏上显示所述对象,包括:所述第二终端,用于接收来自所述第一终端的拖拽数据,根据所述拖拽数据,在所述第二终端的显示屏上继续播放所述第一视频。
CN202210260430.1A 2020-07-29 2020-07-29 一种跨设备的对象拖拽方法及设备 Active CN114764298B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210260430.1A CN114764298B (zh) 2020-07-29 2020-07-29 一种跨设备的对象拖拽方法及设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210260430.1A CN114764298B (zh) 2020-07-29 2020-07-29 一种跨设备的对象拖拽方法及设备
CN202010747181.XA CN112083867A (zh) 2020-07-29 2020-07-29 一种跨设备的对象拖拽方法及设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202010747181.XA Division CN112083867A (zh) 2020-04-24 2020-07-29 一种跨设备的对象拖拽方法及设备

Publications (2)

Publication Number Publication Date
CN114764298A true CN114764298A (zh) 2022-07-19
CN114764298B CN114764298B (zh) 2023-03-03

Family

ID=73735752

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210260430.1A Active CN114764298B (zh) 2020-07-29 2020-07-29 一种跨设备的对象拖拽方法及设备
CN202010747181.XA Pending CN112083867A (zh) 2020-04-24 2020-07-29 一种跨设备的对象拖拽方法及设备

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202010747181.XA Pending CN112083867A (zh) 2020-04-24 2020-07-29 一种跨设备的对象拖拽方法及设备

Country Status (4)

Country Link
US (1) US20230325067A1 (zh)
EP (1) EP4177725A4 (zh)
CN (2) CN114764298B (zh)
WO (1) WO2022022495A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024041371A1 (zh) * 2022-08-23 2024-02-29 华为技术有限公司 一种信息传输方法与电子设备

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114764298B (zh) * 2020-07-29 2023-03-03 华为技术有限公司 一种跨设备的对象拖拽方法及设备
CN114741008B (zh) * 2020-12-24 2024-05-03 华为技术有限公司 分布式跨设备协同方法、电子设备及通信系统
CN112698770B (zh) * 2020-12-28 2022-08-16 北京小米移动软件有限公司 信息处理方法及装置、存储介质
WO2022156566A1 (zh) * 2021-01-25 2022-07-28 华为技术有限公司 设备交互方法、位置确定方法、电子设备及芯片系统
CN114968165A (zh) * 2021-02-28 2022-08-30 华为技术有限公司 一种分布式音频播放方法及电子设备
CN115268618A (zh) * 2021-04-30 2022-11-01 华为技术有限公司 一种跨设备迁移任务的方法、装置、系统和存储介质
CN113362410B (zh) * 2021-05-31 2023-04-14 维沃移动通信(杭州)有限公司 绘图方法、装置、电子设备及介质
CN115700463A (zh) * 2021-07-30 2023-02-07 华为技术有限公司 一种投屏方法、系统及电子设备
CN113407086B (zh) * 2021-08-20 2021-11-30 北京鲸鲮信息系统技术有限公司 对象拖拽方法、设备和存储介质
CN115712340A (zh) * 2021-08-20 2023-02-24 华为技术有限公司 电子设备及人机交互方法
CN113891167B (zh) * 2021-08-27 2023-07-04 荣耀终端有限公司 投屏方法和电子设备
CN115729392A (zh) * 2021-08-31 2023-03-03 华为技术有限公司 一种设备交互方法、电子设备及系统
CN114816135B (zh) * 2021-09-16 2023-11-03 华为技术有限公司 跨设备绘制系统
CN115993924A (zh) * 2021-10-18 2023-04-21 华为技术有限公司 跨设备拖拽方法、电子设备及存储介质
CN114356162A (zh) * 2021-12-30 2022-04-15 Oppo广东移动通信有限公司 内容显示方法及相关产品
CN116560535A (zh) * 2022-01-28 2023-08-08 华为技术有限公司 应用组件管理方法及相关设备
CN114461123A (zh) * 2022-01-30 2022-05-10 深圳创维-Rgb电子有限公司 投屏控制方法、装置、投屏器及计算机可读存储介质
CN114546568A (zh) * 2022-02-25 2022-05-27 重庆紫光华山智安科技有限公司 页面元素拖放方法、装置、电子设备及存储介质
CN114760291B (zh) * 2022-06-14 2022-09-13 深圳乐播科技有限公司 一种文件处理方法及装置
CN115460450A (zh) * 2022-09-09 2022-12-09 北京有竹居网络技术有限公司 屏幕录制方法、装置、电子设备、存储介质及程序产品
CN116974446A (zh) * 2023-09-18 2023-10-31 荣耀终端有限公司 一种动画效果的显示方法及装置
CN117472380B (zh) * 2023-12-28 2024-03-22 江西铜锐信息技术有限公司 一种前端表单生成方法及系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110209103A1 (en) * 2010-02-25 2011-08-25 Hinckley Kenneth P Multi-screen hold and drag gesture
US20130145290A1 (en) * 2011-12-06 2013-06-06 Google Inc. Mechanism for switching between document viewing windows
US20130342482A1 (en) * 2012-06-25 2013-12-26 Lg Electronics Inc. Mobile terminal and controlling method thereof
CN105556451A (zh) * 2013-06-07 2016-05-04 苹果公司 用于多个显示器的用户界面
CN106354451A (zh) * 2015-07-14 2017-01-25 三星电子株式会社 用于操作电子设备的方法和电子设备
CN108829323A (zh) * 2018-06-22 2018-11-16 联想(北京)有限公司 信息处理方法、装置及电子设备
CN109462692A (zh) * 2018-10-29 2019-03-12 努比亚技术有限公司 分屏显示操作方法、移动终端及计算机可读存储介质
WO2019071872A1 (zh) * 2017-10-09 2019-04-18 华为技术有限公司 一种文件分享方法及终端
CN110908625A (zh) * 2018-09-18 2020-03-24 阿里巴巴集团控股有限公司 多屏显示方法、装置、设备、系统、舱体及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130080143A1 (en) * 2011-09-27 2013-03-28 Paul E. Reeves Unified desktop docking behavior with device as master
CN102523346B (zh) * 2011-12-15 2013-12-25 广州市动景计算机科技有限公司 跨设备文件传输方法、装置、中转服务器及设备
RU2601831C2 (ru) * 2011-12-28 2016-11-10 Нокиа Текнолоджиз Ой Предоставление открытого экземпляра приложения
EP2632188B1 (en) * 2012-02-24 2018-04-11 BlackBerry Limited Method and apparatus for interconnected devices
US20130332872A1 (en) * 2012-06-11 2013-12-12 EVERYTHINK Ltd. System and method for drag hover drop functionality
KR102133410B1 (ko) * 2013-01-31 2020-07-14 삼성전자 주식회사 멀티태스킹 운용 방법 및 이를 지원하는 단말기
KR20160048429A (ko) * 2014-10-24 2016-05-04 엘지전자 주식회사 이동 단말기 및 그 제어 방법
CN105892851A (zh) * 2016-03-29 2016-08-24 北京金山安全软件有限公司 一种可视资源传输方法、装置及电子设备
KR102182417B1 (ko) * 2016-09-06 2020-11-24 후아웨이 테크놀러지 컴퍼니 리미티드 데이터 공유 방법 및 단말기
CN107943439B (zh) * 2016-10-13 2021-09-07 斑马智行网络(香港)有限公司 界面移动方法、装置、智能终端、服务器和操作系统
US20180107358A1 (en) * 2016-10-17 2018-04-19 International Business Machines Corporation Multiple-display unification system and method
CN109753215B (zh) * 2018-04-02 2020-03-27 北京字节跳动网络技术有限公司 一种窗口分屏显示方法、装置及设备
CN108958684A (zh) * 2018-06-22 2018-12-07 维沃移动通信有限公司 投屏方法及移动终端
CN109669747A (zh) * 2018-11-30 2019-04-23 维沃移动通信有限公司 一种移动图标的方法及移动终端
CN114764298B (zh) * 2020-07-29 2023-03-03 华为技术有限公司 一种跨设备的对象拖拽方法及设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110209103A1 (en) * 2010-02-25 2011-08-25 Hinckley Kenneth P Multi-screen hold and drag gesture
US20130145290A1 (en) * 2011-12-06 2013-06-06 Google Inc. Mechanism for switching between document viewing windows
US20130342482A1 (en) * 2012-06-25 2013-12-26 Lg Electronics Inc. Mobile terminal and controlling method thereof
CN105556451A (zh) * 2013-06-07 2016-05-04 苹果公司 用于多个显示器的用户界面
CN106354451A (zh) * 2015-07-14 2017-01-25 三星电子株式会社 用于操作电子设备的方法和电子设备
WO2019071872A1 (zh) * 2017-10-09 2019-04-18 华为技术有限公司 一种文件分享方法及终端
CN108829323A (zh) * 2018-06-22 2018-11-16 联想(北京)有限公司 信息处理方法、装置及电子设备
CN110908625A (zh) * 2018-09-18 2020-03-24 阿里巴巴集团控股有限公司 多屏显示方法、装置、设备、系统、舱体及存储介质
CN109462692A (zh) * 2018-10-29 2019-03-12 努比亚技术有限公司 分屏显示操作方法、移动终端及计算机可读存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024041371A1 (zh) * 2022-08-23 2024-02-29 华为技术有限公司 一种信息传输方法与电子设备

Also Published As

Publication number Publication date
EP4177725A1 (en) 2023-05-10
CN114764298B (zh) 2023-03-03
EP4177725A4 (en) 2023-10-18
CN112083867A (zh) 2020-12-15
WO2022022495A1 (zh) 2022-02-03
US20230325067A1 (en) 2023-10-12

Similar Documents

Publication Publication Date Title
CN114764298B (zh) 一种跨设备的对象拖拽方法及设备
WO2021018067A1 (zh) 一种悬浮窗口的管理方法及相关装置
US11922005B2 (en) Screen capture method and related device
WO2021013158A1 (zh) 显示方法及相关装置
WO2020244497A1 (zh) 一种柔性屏幕的显示方法及电子设备
CN110865744B (zh) 一种分屏显示方法与电子设备
WO2020052529A1 (zh) 全屏显示视频中快速调出小窗口的方法、图形用户接口及终端
KR102534354B1 (ko) 시스템 탐색 바 표시 제어 방법, 그래픽 사용자 인터페이스 및 전자 디바이스
CN112558825A (zh) 一种信息处理方法及电子设备
WO2021212922A1 (zh) 一种对象拖拽方法及设备
CN116055610B (zh) 显示图形用户界面的方法和移动终端
WO2022062898A1 (zh) 一种窗口显示方法及设备
CN114356198A (zh) 数据的传输方法及装置
EP4195638A1 (en) Display method, and device
WO2020238759A1 (zh) 一种界面显示方法和电子设备
WO2021057699A1 (zh) 具有柔性屏幕的电子设备的控制方法及电子设备
CN115657918A (zh) 一种跨设备的对象拖拽方法及设备
CN115016697A (zh) 投屏方法、计算机设备、可读存储介质和程序产品
CN115480670A (zh) 一种导航栏显示方法、显示方法与第一电子设备
WO2022228043A1 (zh) 显示方法、电子设备、存储介质和程序产品
CN111324255B (zh) 一种基于双屏终端的应用处理方法及通信终端
CN114647351A (zh) 一种界面元素显示方法及设备
CN113885973A (zh) 翻译结果显示方法、装置及电子设备
CN117336562A (zh) 直播画面调整方法、装置、电子设备及存储介质
CN117270717A (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
GR01 Patent grant
GR01 Patent grant