CN104603752A - 跨平台共享应用代码 - Google Patents
跨平台共享应用代码 Download PDFInfo
- Publication number
- CN104603752A CN104603752A CN201380046420.7A CN201380046420A CN104603752A CN 104603752 A CN104603752 A CN 104603752A CN 201380046420 A CN201380046420 A CN 201380046420A CN 104603752 A CN104603752 A CN 104603752A
- Authority
- CN
- China
- Prior art keywords
- interface
- application
- platform
- neutral
- code
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
应用功能被分成平台中立组件和平台专用组件。应用模型组件定义应用的核心逻辑,并且包括用于处理用户输入的交互模型,该用于处理用户输入的交互模型是平台中立的并且可以被跨平台使用。应用主机组件包括针对专用平台的功能,但是可以跨相同平台上的不同应用重用(例如,如何在专用平台上绘图)。应用用户界面组件包括是平台专用且是应用专用的功能(例如,针对应用的专用UI)。平台中立应用编程接口(API)被开发者用来抽象应用的功能,从而使平台中立代码能跨不同的平台移植。平台专用组件和平台中立组件间的通信使用与客户机-服务器体系架构相似的线程和存储器隔离。
Description
背景
通常针对一个平台设计及创建应用,随后将该应用移植到附加的平台。例如,最初可以针对使用第一操作系统的移动设备创建应用,并随后将该应用移植到使用不同操作系统的相似类型的移动设备。每类平台具有平台专用系统调用和功能,并且每类平台在处理文本/触摸输入的方式方面也有所不同。大多数时间,在移植应用时存在对代码的显著改变,这需要非常多的努力。
发明内容
提供本发明内容是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
应用功能被分成平台中立组件和平台专用组件。诸组件包括:针对要绘图什么和如何与输入交互的平台中立功能,以及定义如何绘图以及与专用平台上的内容交互的平台专用功能。应用模型组件定义应用的平台中立核心逻辑,并且包括用于处理用户输入以及对抽象画布绘图的交互模型,该抽象画布是跨平台的并且可以被跨平台使用。应用主机组件包括针对专用平台的功能,但是可以跨相同平台上不同的应用重用(例如,如何在专用平台上绘图)。应用用户界面组件包括是平台专用且是应用专用的功能(例如,针对应用的专用UI)。平台中立应用编程接口(API)被开发者用来抽象应用的功能,从而使平台中立代码能跨不同的平台移植。例如,API可以包括用于呈现、文本输入、触摸输入、内容选择、复制/粘贴、系统事件等的接口。平台专用组件和平台中立组件间的通信使用与客户机-服务器体系架构相似的线程和存储器隔离。例如,平台专用组件和平台中立组件间的通信使用异步调用和消息队列。
附图简述
图1示出代码在两个不同的移动设备平台间的示例性共享;
图2示出用于跨不同平台共享代码的体系结构;
图3示出用于跨平台共享代码的示例性接口;
图4示出针对到应用画布的示例性界面;
图5示出了示例性触摸接口;
图6示出了示例性文本接口;
图7示出了示例性的插入符号和复制/粘贴接口;
图8示出应用模型和不同平台间的异步通信和线程;
图9示出用于跨不同平台共享代码的解说性过程;以及
图10-13以及相关描述提供了其中可实施本发明的实施例的各种操作环境的讨论。
详细描述
现在参考其中相同的标号代表相同的元素的附图,描述各实施例。
图1示出代码在两个不同移动设备平台间的示例性共享。如所示出的,系统100包括共享应用模型110的平台1(101)和平台2(120)。
如本文中所讨论的,应用模块(诸如应用模型110)定义应用的平台中立核心逻辑,并且包括用于处理用户输入以及对跨不同平台使用的抽象画布绘图的交互模型。换言之,由应用模型110定义的相同代码被第一平台(例如,APPLE设备)使用,也被不同的平台(例如,MICROSOFT设备、ANDROID设备等)使用。替代为每类平台(例如,MICROSOFT WINDOWS PHONE 8,IPHONE,GOOGLE ANDROID等)创建单独的代码,应用模型中的所有代码被跨平台共享。
开发者开发应用,该应用包括使用平台中立API以创建针对应用一致的公共代码的代码。例如,API被开发者用来对平台中立的抽象画布进行绘图/写。在许多类应用中(例如,移动设备应用),对平台的画布进行写占代码中的大部分。一般而言,要绘图什么以及期望的输入处理行为占应用的巨大部分代码(例如,相比于有50K用于平台专用代码,有5000K用于平台中立代码),并且被包括在应用模型中(见图2)。菜单/命令栏查看模块也可被开发成平台独立的。对于每类平台,设备专用代码被开发成将平台中立API调用改变成设备专用代码。
如图1中所示,即使使用相同的公共代码来定义要将什么绘图到平台的屏幕上,也可以为每个设备定制布局从而使外观和感觉被保留。
例如,平台101在第一位置处包括公式栏102、网格104和命令栏106,而平台120在不同的位置处包括公式栏122、网格124和命令栏126。平台专用代码可以被开发成根据每类平台呈现内容。尽管每个平台包括使用设备专用代码的用于呈现和输入的专用接口,应用的大部分代码是在各平台间共享的公共代码。
图2示出用于跨不同平台共享代码的体系结构200。如所示的,图2包括应用用户界面(UI)210、应用模型220、设备接口230、文本呈现适配器240和应用主机250。异步调用由虚线表示,而同步调用由实现表示。
应用UI 210包括视图212、视图模型主机218、公共小部件214以及画布主机216。应用模型220包括平台视图模型222、抽象画布224和文档模型226。
平台专用代码是应用中立的,包括用于应用主机250(例如,应用管理和服务)的代码、用于公共小部件214的代码、用于画布主机216的代码,和用于设备接口240的代码。应用主机250包括用于提供应用管理和服务的平台专用应用中立代码。
平台中立代码是应用专用的,包括用于应用模型220的代码。应用模型组件220定义应用的核心逻辑,并且包括要绘图什么以及用于处理用户输入的交互模型,该用于处理用户输入的交互模型是平台中立的并且可以被跨平台使用。应用模型组件的代码包括用于绘图以及与抽象画布224交互的平台中立API(下述)的使用。根据一个实施例,该代码和在应用模型组件220中执行的代码是跨不同平台使用的相同代码。换言之,没有使用条件表达式来描绘执行针对一个平台还是另一个平台的代码(例如,如果是平台1则执行这个框,或者如果是平台2则执行另一个框)。文档模型226是用于与对象交互的平台中立模型。
平台专用和应用专用代码包括用于视图212的代码、用于视图模型主机218的代码,以及用于文本呈现适配器240的代码。
应用用户界面组件210是平台专用的,并且针对每个专用平台编码。
应用用户界面组件210可以使用异步和/或同步调用来通信。定义了清楚地示出可以异步或同步地作出什么调用的接口(见下文)。应用用户界面组件210向应用模型220递送用户输入/数据。从应用模型220接收应用事件以及将抽象画布调用转换成设备专用调用以供在特定平台上进行呈现。有关各组件间通信的更多详情关于图8及相关讨论被提供。
图3示出用于跨平台共享代码的示例性接口。
如示出的,接口300包括IAppModel接口、IAppVMAsync接口和IAppVMSync接口,以及IAppCanvasHostAsync接口和IAppCanvasHostSync接口。诸接口定义不同组件间的异步/同步通信(也参见图8及相关讨论)。
IAppModel接口创建和管理ViewModels(视图模型)和抽象画布并处理事件。IAppVMAsync、IAppVMSync、IAppCanvasHostAsync和IAppCanvasHostSync接口使用用于命令的异步通信以及用于呈现目标和文本输入的同步通信。
图4示出针对到应用画布的示例性接口。
如示出的,系统400包括画布主机1(412)、画布主机2(414)、画布主机3(416)、应用画布420和接口430。尽管示出了三个不同的平台,但是可以存在利用抽象应用画布的更多/更少个平台。每个平台通常使用用于呈现的不同接口。例如,一个平台可以使用GLSurfaceView和OpenGL(例如,GOOGLE平台),另一个平台可以使用UIScrollView和Open GL(例如,APPLE平台),另一个平台可以使用Zoomer和TiledSurfaceHost及D3D(例如,MICROSOFT平台),等等。
针对每个平台的画布主机是设备专用的、应用在其上绘图的原始表面。应用画布420在主机上绘图所提供的位图/纹理。平台专用代码被用来实现使用应用模型中指定的平台中立API来指令的绘图。
用于呈现的示例性平台中立API(430)包括:SetCanvasSize、InvalidateCanvasRect、SignalRender、SetViewPortSize,、GetTextureToRender和SetTextureRendered。
图5示出了示例性触摸接口。
如示出的,系统500包括画布主机1(412)、画布主机2(414)、画布主机3(416)、应用画布420和接口510。
每个平台使用用于触摸输入的不同接口。例如,一个平台可以使用OnGestureListener::OnScroll(例如,GOOGLE平台),另一个平台可以使用UIPanGestureRecognizer(例如,APPLE平台),另一个平台可以使用IUIXInputHandler::OnTouchDrag(例如,MICROSOFT平台),等等。平台专用代码被用来使用由应用模型指定的平台中立API实现触摸输入。
用于触摸输入的示例性API(510)包括:当检测到轻击时使用的OnTouchTap接口,当检测到短暂保持时使用的TouchShortHold接口,当检测到保持时使用的OnTouchHold接口,当检测到拖动时使用的OnTouchDrag接口,当检测到轻拂时使用的OnTouchFlick接口,以及当检测到收窄和张开姿势时使用的OnTouchPinchStretch接口,其是平台中立的。.
图6示出了示例性文本接口。
如示出的,系统600包括画布主机1(412)、画布主机2(414)、画布主机3(416)、应用画布420和接口610。
每个平台使用用于文本输入的不同接口。例如,一个平台可以使用InputConnection::commitText(例如,GOOGLE平台),另一个平台可以使用UITextInput::replaceRange:withText(例如,APPLE平台),另一个平台可以使用ITextInputClientOwner::ReplaceText(例如,MICROSOFT平台),等等。平台专用代码被用来使用由应用模型指定的平台中立API来实现文本输入。
用于文本输入的示例性API(610)包括:用于插入字符的OnInsertChar,用于替换文本的OnReplaceText,用于未处理的键(unhandled keys)的OnUnhandledKey,用于有关软件输入面板的事件的OnSIPEvent,用以改变样式的ChangeTextUnderlineStyle,用以确定插入符号的位置的GetCaretPosition,用以确定文本内容的QueryTextContent,OnSelectionChange,用以设置合成的SetInComposition,以及用于设置/获得与用户的语言、环境和/或文化习俗有关的用户偏好信息的SetInputLocaleGetSelection。
图7示出了示例性的插入符号和复制/粘贴接口。
如示出的,系统700包括画布主机1(412)、画布主机2(414)、画布主机3(416)、应用画布420和接口750。
每个平台使用不同的接口。平台专用代码被用来使用由应用模型指定的平台中立API来实现文本输入。
示例性API 710包括:ShowCaret、ShowPCP、ShowSelectionGrippers、CopyContentToClipboard、OnPasteClipboardContent和OnCopyClipboardContent。
API 710还示出包括用于暂停、恢复、关闭和接收系统通知的不同PLM事件。以此方式,应用模型中的公共代码能够处理诸事件,诸如在各应用间切换、处理系统通知,等等。
图8示出应用模型和不同平台间的异步通信和线程。
如示出的,系统800包括:包括平台1(802)、平台2(820)和平台3(830)的三个不同的平台;应用模型异步任务队列840;以及应用模型850。每个平台包括应用用户界面(804、824、834)和应用异步任务队列(806、826和836)。
应用用户界面和应用模型间发生的通信与客户机-服务器模型相似。在平台的应用用户界面和应用模型之间存在边界。使用异步任务队列串行化从应用用户界面到应用模型的调用。以此方式,应用模型850与由不同平台中的每个平台实现的专用线程模型隔离开。应用模型中的代码由应用模型线程和工作者线程执行。由此,其他线程能够自由处理用户事件,从而保留应用的响应性。
多数从应用模型到应用UX的调用使用异步调用作出。一些调用(例如,呈现表面获取和复制数据)可以是同步调用(包括锁定)。
图9示出用于跨不同平台共享代码的解说性过程。在阅读本文中给出的例程的讨论时,应该理解,各个实施例的逻辑操作被实现为:(1)一系列运行于计算系统上的计算机实现的动作或程序模块;和/或(2)计算系统内的互连的机器逻辑电路或电路模块。这种实现是取决于实现本发明的计算系统的性能需求的选择问题。因此,所例示并构成本文中描述的实施例的逻辑操作被不同地称为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可以用软件、固件、专用数字逻辑,以及其任何组合来实现。
在开始操作之后,过程900流至操作910,在此应用的核心逻辑被标识。核心逻辑定义应用的主要功能,包括要绘图什么以及如何与应用的内容交互。核心逻辑是平台中立的,并且不能跨不同的平台使用,并且被包括在应用模型中。一般而言,要绘图什么以及期望的输入处理行为占应用的巨大部分代码(例如,相比于有50K用于平台专用代码而言,有5000K用于平台中立代码)。
移动至操作920,定义应用的用于处理用户输入的交互模型。例如,如何同内容交互(例如,触摸输入、文本输入、选择,等等)。根据一个实施例,交互模型是应用模型的一部分并且在不同的平台间使用的代码是一致的。
流至操作930,使用平台中立API对应用模型编码。平台中立应用编程接口(API)抽象应用的功能,从而使平台中立代码能跨不同的平台移植。根据一个实施例,API包括用于呈现、文本输入、触摸输入、内容选择、复制/粘贴、系统事件等的功能。
转换至操作940,应用主机被编码。应用主机包括平台专用代码,该平台专用代码是应用中立的。
移动至操作950,平台专用功能被编码(如果对另一个应用尚未完成)。
流至操作960,使用平台中立组件和设备专用组件为特定类型的平台创建应用。
该过程然后流动至结束操作并且返回来处理其他动作。
图10示出用于跨不同的平台共享代码的示例性系统。如所示,系统1000包括服务1010、数据存储1045、触摸屏输入设备/显示器1050(如平板)以及智能电话1030。
如所示,服务1010是基于云的和/或基于企业的服务,它可被配置成提供各种服务,如生产力服务(如微软OFFICE 365或用于与项目(如消息、电子数据表、文档、图表等)交互的某种其他基于云的/在线服务)。可使用不同类型的输入/输出来与该服务交互。例如,用户可使用触摸输入、基于硬件的输入、语音输入等等。服务可提供将预录制的语音与合成的语音相组合的语音输出。服务1010提供的服务/应用中的一个或多个服务/应用的功能也可被配置为基于客户端/服务器的应用。例如,客户端设备可以包括使用平台中立组件和应用专用组件创建的应用。尽管系统1000示出与生产力应用有关的服务,但其他服务/应用也可被配置。
如所解说的,服务1010是向任何数目的承租者(例如,承租者1-N)提供资源1015和服务的多承租者服务。多承租者服务1010是向订阅该服务的承租者提供资源/服务1015并分别地维护每个承租者的数据且保护其不受其他承租者数据的影响的基于云的服务。
如所示的系统1000包括检测触摸输入何时被接收到(如手指触摸或几乎触摸触摸屏)的触摸屏输入设备/显示器1050(如板式/平板设备)以及智能电话1030。诸平台可以是同类平台和/或不同类平台。可利用检测用户的触摸输入的任何类型的触摸屏。例如,触摸屏可包括一层或多层检测触摸输入的电容性材料。除了电容性材料之外或代替电容性材料,可使用其他传感器。例如,可使用红外(IR)传感器。根据一个实施例,触摸屏被配置成检测与可触摸的表面接触或位于可触摸的表面上方的物体。尽管在本说明书中使用术语“上方”,应理解,触摸面板系统的定向是不相关的。术语“上方”旨在可适用于所有这样的定向。触摸屏可被配置成确定触摸输入被接收的位置(如起点、中间点和终点)。可通过任何合适的手段,包括如耦合到触摸面板的振动传感器或话筒,来检测可触摸的表面和物体之间的实际接触。用于检测接触的传感器的示例的非穷尽列表包括:基于压力的机构、微机械加速度计、压电器件、电容传感器、电阻传感器、感应传感器、激光振动计和LED振动计。
根据一个实施例,智能电话1030和触摸屏输入设备/显示器1050被配置有移植到每个平台的应用(例如,应用1035和1055)。智能电话1030和触摸屏输入设备/显示器1050还可被配置成包括不同的应用。
如所示,触摸屏输入设备/显示器1050和智能电话1030示出了显示出对应用(1035、1055)的使用的示例性显示1052/1032。数据可被存储在设备(如智能电话1030、平板1050)上和/或某一其他位置(如网络数据存储1045)。应用1035、1055可以是基于客户机的应用、基于服务器的应用、基于云的应用和/或某种组合。
共享管理器1042配置成执行与跨不同平台的应用共享代码相关的操作。尽管管理器1042被示为在服务1010内,但是管理器的功能可被包括在其他位置中(如在智能电话1030和/或平板设备1050上)。共享管理器1042可被配置成提供如本文中所述的用于创建应用的公共代码的平台中立API。
本文描述的实施例和功能可经许多计算系统来操作,包括有线和无线计算系统、移动计算系统(如移动电话、图形输入板或平板型计算机、膝上型计算机等)。此外,本文所述的实施例和功能可在分布式系统上操作,其中应用功能、存储器、数据存储和检索、以及各种处理功能可在诸如因特网或内联网之类的分布式计算网络上彼此远程地操作。各种类型的用户界面和信息可经板载计算设备显示器或经与一个或多个计算设备相关联的远程显示单元被显示。例如,各种类型的用户界面和信息可在墙壁表面上被显示和交互,各种类型的用户界面和信息被投射在墙壁表面上。与可用于实施本发明的各实施例的许多计算系统的交互包括:键击输入、触摸屏输入、语音或其他音频输入、姿势输入(其中相关联的计算设备配备有用于捕捉和解释用于控制计算设备的功能的用户姿势的检测(如相机)功能)等。
图11-13以及相关描述提供了其中可实施本发明的实施例的各种操作环境的讨论。然而,关于图11-13所示出和讨论的设备和系统是用于示例的目的,而非对可被用于实施本文所述的本发明的各实施例的大量计算设备配置的限制。
图11是示出可用来实施本发明的各实施例的计算设备1100的示例物理组件的框图。下面描述的计算设备组件可适用于上述的计算设备。在基本配置中,计算设备1100可包括至少一个处理单元1102和系统存储器1104。取决于计算设备的配置和类型,系统存储器1104可包括但不限于,易失性存储器(例如,随机存取存储器(RAM))、非易失性存储器(例如,只读存储器(ROM))、闪存、或任何组合。系统存储器1104可包括操作系统1105、一个或多个编程模块1106,且可包括web浏览器应用1120。操作系统1105,例如,可适用于控制计算设备1100的操作。在一个实施例中,编程模块1106可包括如上所述的安装在计算设备1100上的共享管理器1042。此外,本发明的各实施方式可以结合图形库、其他操作系统、或任何其他应用程序来实践,且不限于任何特定应用程序或系统。该基本配置在图11中由虚线1108内的那些组件示出。
计算设备1100可以具有附加特征或功能。例如,计算设备1100还可包括附加数据存储设备(可移动和/或不可移动),诸如例如,磁盘、光盘、或磁带。这些附加存储由可移动存储1109和不可移动存储1110示出。
如上所述,可以在系统存储器1104中存储包括操作系统1105在内的多个程序模块和数据文件。在处理单元1102上执行时,诸如管理器之类的编程模块1106可执行包括例如与如上所述的方法900相关的操作。上述过程是一个示例,且处理单元1102可执行其他过程。根据本发明的各实施方式可以使用的其他编程模块可以包括电子邮件和联系人应用程序、文字处理应用程序、电子表格应用程序、数据库应用程序、幻灯片演示应用程序、绘图或计算机辅助应用程序等。
一般而言,根据本发明的各实施方式,程序模块可以包括可以执行特定任务或可以实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。此外,本发明的各实施方式可用其他计算机系统配置来实践,包括手持式设备、多处理器系统、基于微处理器的系统或可编程消费电子产品、小型机、大型计算机等。本发明的各实施方式也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备两者中。
此外,本发明的各实施方式可在包括分立电子元件的电路、包含逻辑门的封装或集成电子芯片、利用微处理器的电路、或在包含电子元件或微处理器的单个芯片上实现。例如,可以通过片上系统(SOC)来实施本发明的各实施例,其中,可以将图11中示出的每个或许多组件集成到单个集成电路上。这样的SOC设备可包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元以及各种应用功能,所有这些都被集成到(或“烧录到”)芯片基板上作为单个集成电路。当通过SOC操作时,在此所述的关于管理器1042的功能可以通过在单个集成电路(芯片)上集成有计算设备/系统1100的其它组件的专用逻辑来操作。本发明的各实施方式还可以使用能够执行诸如,例如,AND(与)、OR(或)和NOT(非)等逻辑运算的其他技术来实践,包括但不限于,机械、光学、流体和量子技术。另外,本发明的各实施方式可以在通用计算机或任何其他电路或系统中实现。
例如,本发明的各实施方式可被实现为计算机进程(方法)、计算系统或诸如计算机程序产品或计算机可读介质等制品。计算机程序产品可以是计算机系统可读并编码了用于执行计算机过程的指令的计算机程序的计算机存储介质。
本文所使用的术语计算机可读介质可包括计算机存储介质。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器1104、可移动存储1109和不可移动存储1110都是计算机存储介质的示例(即,存储器存储)。计算机存储介质可包括,但不限于,RAM、ROM、电可擦除只读存储器(EEPROM)、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或者可用于存储信息且可由计算设备1100访问的任何其他介质。任何这样的计算机存储介质可以是设备1100的一部分。计算设备1100还可以具有输入设备1112,如键盘、鼠标、笔、声音输入设备、触摸输入设备等。还可包括诸如显示器、扬声器、打印机等输出设备1114。上述设备是示例且可以使用其他设备。
相机和/或某种其他传感设备可操作来记录一个或多个用户以及由计算设备的用户作出的捕捉运动和/或姿势。传感设备还可操作来捕捉诸如通过话筒口述的单词和/或捕捉来自用户的诸如通过键盘和/或鼠标(未描绘)的其他输入。传感设备可包括能够检测用户的移动的任何运动检测设备。例如,相机可以包括微软运动捕捉设备,它包括多个相机和多个话筒。
本文所使用的术语计算机可读介质还可包括通信介质。通信媒介可由诸如载波或其他传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块、或其他数据来体现,并且包括任何信息传递介质。术语“已调制数据信号”可以描述以对该信号中的信息进行编码的方式设定或者改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接等有线介质,以及诸如声学、射频(RF)、红外线和其他无线介质等无线介质。
图12A和12B示出可用来实施本发明的各实施例的合适的移动计算环境,例如移动电话、智能电话、图形输入板个人计算机、膝上型计算机等。参考图12A,示出了用于实现各实施例的示例移动计算设备1200。在基本配置中,移动计算设备1200是具有输入元件和输出元件两者的手持式计算机。输入元件可包括允许用户将信息输入到移动计算设备1200中的触摸屏显示器1205和输入按钮1215。移动计算设备1200还可结合允许进一步的用户输入的可选的侧面输入元件1215。可选的侧面输入元件1215可以是旋转开关、按钮、或任何其他类型的手动输入元件。在替代实施例中,移动计算设备1200可结合更多或更少的输入元件。例如,在某些实施例中,显示器1205可以不是触摸屏。在又一替代实施例中,移动计算设备是便携式电话系统,如具有显示器1205和输入按钮1215的蜂窝电话。移动计算设备1200还可包括可选的小键盘1235。可选的小键盘1215可以是物理小键盘或者在触摸屏显示器上生成的“软”小键盘。
移动计算设备800结合输出元件,如可显示图形用户界面(GUI)的显示器1205。其他输出元件包括扬声器1225和LED光1220。另外,移动计算设备1200可包含振动模块(未示出),该振动模块使得移动计算设备1200振动以将事件通知给用户。在又一个实施例中,移动计算设备1200可结合耳机插孔(未示出),以供提供另一提供输出信号的手段。
尽管此处组合移动计算设备1200来描述,但在替代实施例中,本发明还可组合任何数量的计算机系统来被使用,如在台式环境中、膝上型或笔记本计算机系统、多处理器系统、基于微处理器或可编程消费电子产品、网络PC、小型计算机、大型计算机等。本发明的实施例也可在分布式计算环境中实践,其中任务由分布式计算环境中通过通信网络链接的远程处理设备来执行;程序可位于本机和远程存储器存储设备中。总而言之,具有多个环境传感器、向用户提供通知的多个输出元件和多个通知事件类型的任何计算机系统可结合本发明的实施例。
图12B是示出在一个实施例中使用的诸如图12A中所示的计算设备之类的移动计算设备的组件的框图。即,移动计算设备1200可结合系统1202以实现某些实施例。例如,系统1202可被用于实现可运行与台式或笔记本计算机的应用类似的一个或多个应用的“智能电话”,这些应用例如浏览器、电子邮件、日程安排、即时消息收发、以及媒体播放器应用。在某些实施例中,系统1202被集成为计算设备,诸如集成的个人数字助理(PDA)和无线电话。
一个或多个应用程序1266可被加载到存储器862中并在操作系统1264上或与操作系统1264相关联地运行。应用程序的示例包括电话拨号程序、电子邮件程序、PIM(个人信息管理)程序、文字处理程序、电子表格程序、因特网浏览器程序、消息通信程序等等。系统1202还包括存储器1262内的非易失性存储1268。非易失性存储1268可被用于存储在系统1202断电时不会丢失的持久信息。应用1266可使用信息并将信息存储在非易失性存储1268中,如电子邮件应用使用的电子邮件或其他消息等。同步应用(未示出)也可驻留于系统1202上且被编程为与驻留在主机计算机上的对应的同步应用交互,以保持非易失性存储1268中存储的信息与主机计算机处存储的相应信息同步。如应被理解的,其他应用可被加载到存储器1262中且在设备1200上运行,包括上述的共享管理器1042。
系统1202具有可被实现为一个或多个电池的电源1270。电源1270还可包括外部功率源,如补充电池或对电池重新充电的AC适配器或加电对接托架。
系统1202还可包括执行发射和接收无线电频率通信的功能的无线电1272。无线电1272通过通信运营商或服务供应商来方便系统1202与“外部世界”之间的无线连接。来往无线电1272的传输是在操作系统1264的控制下进行的。换言之,无线电1272接收的通信可通过操作系统1264传播到应用程序1266,反之亦然。
无线电1272允许系统1202例如通过网络与其他计算设备通信。无线电1272是通信介质的一个示例。通信介质通常由诸如载波或其他传输机制之类的已调制数据信号中的计算机可读指令、数据结构、程序模块、或其他数据来体现,并且包括任何信息传送介质。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。如此处所使用的术语计算机可读介质包括存储介质和通信介质两者。
系统1202的该实施例是以两种类型的通知输出设备来示出的:可被用于提供视觉通知的LED 1220,以及可被用于扬声器1225提供音频通知的音频接口1274。这些设备可直接耦合到电源1270,使得当被激活时,即使为了节省电池功率而可能关闭处理器1260和其它组件,它们也保留一段由通知机制指示的保持通电时间。LED 1220可被编程来无限地保持通电,直到用户采取行动指示该设备的通电状态。音频接口1274用于向用户提供听觉信号并从用户接收听觉信号。例如,除了被耦合到扬声器1225之外,音频接口1274还可被耦合到话筒1220来接收可听输入,例如便于电话通话。根据本发明的各实施例,话筒1220还可充当音频传感器来便于对通知的控制,如下文将描述的。系统1202可进一步包括允许板载相机1230的操作来记录静止图像、视频流等的视频接口1276。
移动计算设备实现系统1202可具有附加特征或功能。例如,设备还可包括附加数据存储设备(可移动的/或不可移动的),诸如磁盘、光盘或磁带。此类附加存储在图12B中由存储1268示出。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。
设备1200生成或捕捉的且经系统1202存储的数据/信息可如上所述本地存储在设备1200上,或数据可被存储在可由设备通过无线电1272或通过设备1200和与设备1200相关联的分开的计算设备之间的有线连接访问的任何数量的存储介质上,该计算设备如例如因特网之类的分布式计算网络中的服务器计算机。如应理解的,此类数据/信息可经设备1200、经无线电1272或经分布式计算网络来被访问。类似地,这些数据/信息可根据已知的数据/信息传送和存储手段来容易地在计算设备之间传送以供存储和使用,这些手段包括电子邮件和协作数据/信息共享系统。
图13示出使用跨不同类设备共享的代码的应用的系统体系架构。
经由共享管理器1342管理的组件可被存储在不同的通信信道或其他存储类型中。例如,可使用目录服务1322、web门户1324、邮箱服务1326、即时消息通信存储1328以及社交联网站点1330来存储组件以及从中发展出组件的信息。系统/应用1042、1320可使用任何这些类型的系统等,用于允许在存储1316中管理和存储组件。服务器1332可以提供与创建使用跨不同平台共享的代码的应用有关的通信和服务。服务器1332可通过网络1308在web上向客户机提供服务和内容。可利用服务器1332的客户机的示例包括计算设备1302,计算设备可包括任何通用个人计算机、平板计算设备1304和/或可包括智能电话的移动计算设备1306。任何这些设备可从存储1316获得显示组件管理通信和内容。
以上参考根据本发明的实施例的方法、系统和计算机程序产品的框图和/或操作说明描述了本发明的实施例。框中所注明的各功能/动作可以按不同于任何流程图所示的次序出现。例如,取决于所涉及的功能/动作,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以按相反的次序来执行。
以上说明、示例和数据提供了对本发明的组成部分的制造和使用的全面描述。因为可以在不背离本发明的精神和范围的情况下做出本发明的许多实施例,所以本发明落在所附权利要求的范围内。
Claims (10)
1.一种用于跨不同平台共享应用的应用代码的方法,包括:
定义应用的包括平台中立代码的应用模型,所述应用模型包括对所述应用的用户交互进行定义的交互模型并且定义所述应用的要绘图什么;
提供为所述应用抽象所述交互并进行绘图的平台中立应用编程接口(API),所述平台中立应用编程接口被所述应用模型中的代码使用;以及
使用开发出的所述应用模型的代码使用所述API来创建所述应用。
2.如权利要求1所述的方法,其特征在于,定义所述应用模型包括利用用于绘制与所述应用有关的内容的抽象应用画布,所述抽象应用画布是平台中立的。
3.如权利要求1所述的方法,其特征在于,定义所述交互模型包括利用用于接收与所述应用有关的用户输入的抽象应用画布,所述抽象应用画布是平台中立的。
4.如权利要求1所述的方法,其特征在于,所述API定义与触摸输入有关的功能,包括用于以下的方法:当检测到轻击时使用的OnTouchTap接口,当检测到短暂保持时使用的TouchShortHold接口,当检测到保持时使用的OnTouchHold接口,当检测到拖动时使用的OnTouchDrag接口,当检测到轻拂时使用的OnTouchFlick接口,以及当检测到收窄和张开姿势时使用的OnTouchPinchStretch接口,所述OnTouchPinchStretch接口是平台中立的。.
5.如权利要求1所述的方法,其特征在于,所述API定义与以下方法中的多数相关的功能:OnInsertChar接口;OnReplaceText接口;OnUnhandledKey接口;OnSIPEvent接口;ChangeTextUnderlineStyle接口;GetCaretPosition接口;GetSelection接口;QueryTextContent接口;以及平台中立的OnSelectionChange接口、SetCanvasSize接口、GetTextureToRender接口、SetTextureRendered接口、平台中立的InvalidateCanvasRect接口、ShowCaret接口、ShowPCP接口、以及ShowSelectionGrippers接口、OnPasteClipboardContent接口以及平台中立的OnCopyClipboardContent接口。
6.如权利要求1所述的方法,其特征在于,进一步包括定义平台中立组件和平台专用组件之间的通信模型,所述通信模型包括将任务存储在异步任务队列中的异步通信。
7.一种具有用于跨不同平台共享应用的应用代码的计算机可执行指令的计算机可读介质,包括:
提供用于为应用抽象交互并进行绘图的平台中立应用编程接口(API),所述平台中立应用编程接口被跨各平台共享的应用模型中的代码使用并包括触摸方法、文本方法以及呈现方法;
使用所述API中的方法定义应用的包括平台中立代码的应用模型,所述应用模型包括对所述应用的用户交互进行定义的交互模型并且定义要针对所述应用画什么;以及
使用使用开发出的所述应用模型的代码使用所述API来创建跨不同平台的所述应用。
8.一种用于跨不同平台共享应用的应用代码的系统,包括:
处理器和计算机可读介质;
存储在所述计算机可读介质上并在所述处理器上执行的操作环境;以及
在所述操作环境的控制下操作的共享管理器,并且所述共享管理器用于执行以下动作,包括:
提供用于为应用抽象交互并进行绘图的平台中立应用编程接口(API),所述平台中立应用编程接口被跨各模型共享的应用模型中的代码使用并包括触摸方法、文本方法以及呈现方法;
使用所述API中的方法定义应用的包括平台中立代码的应用模型,所述应用模型包括对所述应用的用户交互进行定义的交互模型并且定义要针对所述应用画什么;以及
使用使用开发出的所述应用模型的代码使用所述API来创建跨不同平台的所述应用。
9.如权利要求8所述的系统,其特征在于,所述API定义与触摸输入有关的功能,包括用于以下的方法:当检测到轻击时使用的OnTouchTap接口,当检测到短暂保持时使用的TouchShortHold接口,当检测到保持时使用的OnTouchHold接口,当检测到拖动时使用的OnTouchDrag接口,当检测到轻拂时使用的OnTouchFlick接口,以及当检测到收窄和张开姿势时使用的OnTouchPinchStretch接口,所述OnTouchPinchStretch接口是平台中立的。.
10.如权利要求8所述的系统,其特征在于,所述API定义与文本输入和呈现有关的功能,包括用于以下的方法:OnInsertChar接口;OnReplaceText接口;OnUnhandledKey接口;OnSIPEvent接口;ChangeTextUnderlineStyle接口;GetCaretPosition接口;GetSelection接口;QueryTextContent接口;以及OnSelectionChange接口,SetCanvasSize接口,GetTextureToRender接口,SaetTextureRendered接口,以及平台中立的InvalidateCanvasRect接口。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/604,342 US20140068547A1 (en) | 2012-09-05 | 2012-09-05 | Sharing application code across platforms |
US13/604,342 | 2012-09-05 | ||
PCT/US2013/058111 WO2014039593A1 (en) | 2012-09-05 | 2013-09-05 | Sharing application code across platforms |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104603752A true CN104603752A (zh) | 2015-05-06 |
Family
ID=49226528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380046420.7A Pending CN104603752A (zh) | 2012-09-05 | 2013-09-05 | 跨平台共享应用代码 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20140068547A1 (zh) |
EP (1) | EP2893437A1 (zh) |
CN (1) | CN104603752A (zh) |
WO (1) | WO2014039593A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105138327A (zh) * | 2015-08-21 | 2015-12-09 | 青岛海信移动通信技术股份有限公司 | 一种跨平台web应用的打包方法 |
CN105786434A (zh) * | 2016-03-22 | 2016-07-20 | 北京星网锐捷网络技术有限公司 | 一种远程显示的控制方法及设备 |
CN106708852A (zh) * | 2015-11-13 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 客户端长文本的展示方法和装置 |
CN107133045A (zh) * | 2017-05-09 | 2017-09-05 | 上海雪鲤鱼计算机科技有限公司 | 跨平台游戏引擎多线程通信方法、装置、存储介质及设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126084B (zh) * | 2015-07-28 | 2019-08-13 | 掌阅科技股份有限公司 | 一种用于电纸墨水屏幕的显示方法 |
CN106534983A (zh) * | 2016-11-30 | 2017-03-22 | 武汉斗鱼网络科技有限公司 | 一种播放视频列表中多视频的播放系统及播放方法 |
CN113553451B (zh) * | 2021-07-28 | 2024-04-23 | 北京字跳网络技术有限公司 | 媒体播放方法、装置、电子设备及程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030149801A1 (en) * | 2001-12-12 | 2003-08-07 | Kushnirskiy Igor Davidovich | Scriptable plug-in application programming interface |
US20040163046A1 (en) * | 2001-09-28 | 2004-08-19 | Chu Hao-Hua | Dynamic adaptation of GUI presentations to heterogeneous device platforms |
CN1828527A (zh) * | 2005-02-28 | 2006-09-06 | 微软公司 | 用于跨不同应用程序框架的数据服务的平台 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7392483B2 (en) * | 2001-09-28 | 2008-06-24 | Ntt Docomo, Inc, | Transformation of platform specific graphical user interface widgets migrated between heterogeneous device platforms |
US20080195936A1 (en) * | 2007-02-09 | 2008-08-14 | Fortent Limited | Presenting content to a browser |
-
2012
- 2012-09-05 US US13/604,342 patent/US20140068547A1/en not_active Abandoned
-
2013
- 2013-09-05 CN CN201380046420.7A patent/CN104603752A/zh active Pending
- 2013-09-05 WO PCT/US2013/058111 patent/WO2014039593A1/en active Application Filing
- 2013-09-05 EP EP13765857.1A patent/EP2893437A1/en not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040163046A1 (en) * | 2001-09-28 | 2004-08-19 | Chu Hao-Hua | Dynamic adaptation of GUI presentations to heterogeneous device platforms |
US20030149801A1 (en) * | 2001-12-12 | 2003-08-07 | Kushnirskiy Igor Davidovich | Scriptable plug-in application programming interface |
CN1828527A (zh) * | 2005-02-28 | 2006-09-06 | 微软公司 | 用于跨不同应用程序框架的数据服务的平台 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105138327A (zh) * | 2015-08-21 | 2015-12-09 | 青岛海信移动通信技术股份有限公司 | 一种跨平台web应用的打包方法 |
CN106708852A (zh) * | 2015-11-13 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 客户端长文本的展示方法和装置 |
CN105786434A (zh) * | 2016-03-22 | 2016-07-20 | 北京星网锐捷网络技术有限公司 | 一种远程显示的控制方法及设备 |
CN105786434B (zh) * | 2016-03-22 | 2019-09-20 | 北京星网锐捷网络技术有限公司 | 一种远程显示的控制方法及设备 |
CN107133045A (zh) * | 2017-05-09 | 2017-09-05 | 上海雪鲤鱼计算机科技有限公司 | 跨平台游戏引擎多线程通信方法、装置、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
EP2893437A1 (en) | 2015-07-15 |
WO2014039593A1 (en) | 2014-03-13 |
US20140068547A1 (en) | 2014-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105009062B (zh) | 浏览被显示为瓦块的电子消息 | |
CN104603752A (zh) | 跨平台共享应用代码 | |
CN105378623B (zh) | 插入式动态内容预览窗格 | |
CN104737112B (zh) | 文档中基于缩略图和文档图的导航 | |
US10133704B2 (en) | Dynamic layout of content in a grid based application | |
CN105264516A (zh) | 文档协作和对改变的通知 | |
CN109923834B (zh) | 用于协作工作空间环境的上下文对话 | |
CN105144069A (zh) | 对于显示内容的基于语义缩放的导航 | |
CN105378624A (zh) | 在交互出现于白板上时显示交互 | |
CN105074741A (zh) | 建议相关项 | |
KR20150107754A (ko) | 사용자 생성 지식을 통한 협력 학습 기법 | |
CN105229632A (zh) | 在提交文档中建议改变之前查看该改变的效果 | |
CN104471566A (zh) | 与作为应用的文档交互 | |
CN104704486A (zh) | 用于内容选择和扩大内容选择的用户界面元素 | |
CN106164855A (zh) | 瞬态用户界面元素 | |
CN104115187A (zh) | 远程桌面协议中的视频检测 | |
CN104081384A (zh) | 用于为在线文档提供计算web服务的系统和方法 | |
CN105359135A (zh) | 用墨水来创作演示 | |
CN109891445B (zh) | 经由跨iframe信令重新归位嵌入式网络内容 | |
CN104067229A (zh) | 跨应用版本的对象/形状的属性的计算 | |
CN103412704A (zh) | 用于通过姿势或触摸控制用户界面的优化方案 | |
CN106030572B (zh) | 与外部内容项的经编码的关联 | |
CN105765530B (zh) | 用于编写应用扩展激活的方法和系统 | |
US20180173377A1 (en) | Condensed communication chain control surfacing | |
Luo | Development of a Digital Desk for Power Plant Control Room Operators |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150506 |