This invention relates to software development, and more particularly to content distribution.
It can be difficult for content publishers to create engaging experiences for new mobile phones and other consumer electronics devices since such devices typically have proprietary hardware interfaces and lack mature software development tools. Moreover, content developed for one device may not be compatible with other devices. To overcome this issue, content publishers may need to create custom presentation software for each device to which they publish content. However, this makes publishing content to different devices cumbersome at best.
In general, one aspect of the subject matter described in this specification can be embodied in a data structure within a computer memory. The data structure comprises an application for the Binary Runtime Environment for Wireless (BREW), the application includes an executable portion and a document portion. The executable portion is capable of signaling an external module to cause presentation of the document by the external module.
These and other aspects can optionally include one or more of the following features. The document can be one of: a Flash document, a Shockwave document, or a Portable Document Format (PDF) document. The document can be compressed, encrypted or both. The external module can be a BREW extension. The external module is compiled separately from the application.
In general, another aspect of the subject matter described in this specification can be embodied in a data structure within a computer memory. The data structure comprises an executable module for BREW. The executable module includes an executable portion and a Flash content portion, where the executable portion is capable of causing the presentation of the Flash content on a mobile device.
These and other aspects can optionally include one or more of the following features. The document can be compressed, encrypted or both. The external module can be a BREW extension. The external module can be compiled separately from the application.
In general, another aspect of the subject matter described in this specification can be embodied in a method that includes identifying an executable module for BREW capable of causing presentation of a document by signaling an external module. The document is identified and incorporated into the executable module. Other embodiments of this aspect include corresponding systems, apparatus, and computer program products.
These and other aspects can optionally include one or more of the following features. The document can be one of: a Flash document, a Shockwave document, or a Portable Document Format (PDF) document. The document can be compressed, encrypted or both. The external module can be a BREW extension. The external module can be compiled separately from the application.
In general, another aspect of the subject matter described in this specification can be embodied in a method that includes identifying an application for BREW. The application includes an executable portion and a document portion. The executable portion is executed, where the execution causes presentation of the document portion by signaling an external module capable of causing the presentation of the document. Other embodiments of this aspect include corresponding systems, apparatus, and computer program products.
These and other aspects can optionally include one or more of the following features. The document can be one of: a Flash document, a Shockwave document, or a Portable Document Format (PDF) document. The external module can be a BREW extension. The external module can be compiled separately from the application. An account can be debited or credited based on the identifying, the executing or the signaling. An account to be debited or credited based on receiving the application and the external module.
In general, another aspect of the subject matter described in this specification can be embodied in a method that includes receiving a BREW application that contains a document. An external module is received and the application is executed, where the executing causes presentation of the document by signaling the external module. An account is debited or credited based on the receiving, the executing or the signaling. Other embodiments of this aspect include corresponding systems, apparatus, and computer program products.
These and other aspects can optionally include one or more of the following features. The document can one of: a Flash document, a Shockwave document, or a Portable Document Format (PDF) document. The external module can be a BREW extension. The external module can be compiled separately from the application.
Particular embodiments of the subject matter described in this specification can be implemented to realize one or more of the following advantages. Documents can be easily packaged for presentation in a BREW environment. Document distribution and presentation can automatically tie into a revenue generation system. Necessary presentation software can be automatically downloaded on the target device when the document is first presented to a user. Since the content is part of a binary package the package provides implicit security to the content. Since content is part of the binary module and the binary module is loaded by the system no additional run time memory may be required to load the content.
The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims.
Like reference symbols in the various drawings indicate like elements.
A so-called “escort” application program (e.g., 102b) encapsulates a document (e.g., 104) such as, for example, an Adobe Flash document, and enables the document to be downloaded to and presented on clients that support BREW (e.g., 112). Flash and Flash Player are available from Adobe Systems Incorporated of San Jose, Calif. Adobe Flash is an Integrated Development Environment (IDE) for developing Flash documents that support, for instance, rich content, user interfaces, and web applications. Adobe Flash Player is a multiple-platform virtual machine used to present Flash documents. Flash is commonly used to create interactive web page content such as advertisements, integrate video into web pages, and create rich, client-side applications, for example.
A BREW system includes a set of Application Programming Interfaces (APIs) 106 for running software on clients (e.g., 112). The APIs 106 allow application software (e.g., 102b) to be independent of client's native software 114. The BREW APIs 106 provide applications access to a client's communication systems, input systems (e.g., microphones, cameras), and output systems (e.g., displays, speakers). Moreover, the BREW APIs 106 also allow applications to take advantage of an automatic billing model which can automatically charge a user for downloading an application or parts of an application, running an application, or combinations of these.
To create the escort application 102b, a software developer 108 first creates or identifies a document 104 for presentation on the client device 112. The document 104 can include text, graphics, sound, animation, other multimedia content, and combinations of these. The document 104 is not limited to a particular content format and can contain interactive content. For example, the document 104 can be formatted as a Shockwave (from Adobe Systems Incorporated), Portable Document Format (PDF), Flash, Flash Lite (from Adobe Systems Incorporated), a sound or music file, an electronic game executable, a movie or animation file, or graphic file, etc. The document 104 can additionally be compressed, encrypted or both.
The developer 108 uses a software development tool to combine a document loader portion 102a with the document 104 to create the BREW escort application 102b. The document loader portion 102a is a BREW application. In some implementations, the software development tool can insert the document 104 contents into a data segment of the document loader portion 102a. The new escort application 102b can be uploaded to a BREW Distribution System (BDS) as an item within a BDS catalog 110. The BDS catalog 110 is a system in which BREW applications are made available over a wireless service provider to end users through a wireless service provider's Application Download Server (ADS). A wireless service provider, also known as a wireless carrier, mobile phone operator, or cellular provider, is a company that provides communication services for its subscribers' wireless devices.
A client user can browse a wireless service provider's ADS to locate BREW applications available within the BDS catalog 110, such as the escort application 102b, for download to the client 112. Once the escort application 102b is downloaded to the client 112, a user can choose to execute the escort application 102b or the escort application 102b can automatically execute. Execution of the escort application 102b causes execution of the document loader portion 102a which, in turn, causes presentation of the document 104 on the client 112, as will be described in more detail below.
The document and the document loader portion are then incorporated into an escort application (e.g. 102b; step 206). A software development tool, for example a compiler product, can bundle a document with a document loader into an escort application. The development tool can also compress and/or encrypt the document. The escort application is then published in an application catalog such as the BDS catalog, for example (step 208). This makes the escort application available to users for downloading into their clients. In some implementations, a client device's wireless service provider provides client access to the catalog and facilitates downloading of the escort application from its servers.
The escort application 102b is dependent on one or more external modules which are needed to present the document 104. An external module is compiled separately from the escort application 102b. In some implementations, an external module is a BREW extension. Extensions are module software that can be downloaded once and shared by a number of applications, similar to Dynamic Link Libraries (DLL) in the Microsoft Windows and Unix operating systems. During or after the escort application 102b has been downloaded to the client 112, one or more external modules (e.g., 306 and 308) which are needed by the escort application 102b are automatically downloaded from a server (e.g., 302) by the BREW system if they are have not already been downloaded.
The escort application 102b can begin to execute automatically after the download process has completed, or the escort application 102b can be explicitly invoked by the user. The escort application 102b interacts with the public extension 308 by way of one or more APIs, for example, to cause the public extension 308 to present the document 104 bundled within the escort application 102b. For example, a public extension 308 API function call could take as arguments the location of the document 104 within the escort application 102b, the document 104's type, the document's 104 length, and other suitable parameters. With this information, the public extension 308 can obtain and present the document 104, such as by providing the document or a reference to the document to a Flash player or a PDF viewer.
In some implementations, the means for presenting the document 104 is incorporated into the public extension 308. In other implementations, the means is incorporated into a private extension 306 so that the escort application 102 does not interact directly with the private extension 306. Instead, the public extension 308 interacts with the private extension 306 on behalf of the escort application 102b. The private extension 306 can include a fine level of granularity in its API which can be taken advantage of by the public extension 308 for controlling the presentation of the document 104. The private extension 306 API can be hidden from applications such that, in some implementations, only through the public extension 308 can an application interact with the private extension 306. This has the advantage of providing a simpler API to applications by hiding more complex APIs behind the public extension 308.
A revenue generation system is built into the BREW environment that allows an account to be automatically charged for downloading files, executing applications, or combinations of these, according to a billing model. In one implementation, the BREW application performs calls to one or more BREW extensions to verify access to the application. For example, a previously downloaded application can require additional payment in order to run because the monthly license for content access has expired. In this circumstance, a BREW extension can be used to enact a debit to the user's wireless service provider service account. In another implementation, a BREW extension can be used to trigger a credit to a user's wireless service provider service account.
The memory 520 is a computer readable medium such as volatile or non volatile that stores information within the system 500. The memory 520 could store data structures representing one or more applications 102b, a private extension 306 and a public extension 308, for example. The storage device 530 is capable of providing persistent storage for the system 500. The storage device 530 can be a floppy disk device, a hard disk device, an optical disk device, a flash drive, or a tape device, or other suitable persistent storage means. The input/output devices 540 provide input/output operations for the system 500. In one implementation, the input/output device 540 includes a keyboard, stylus and/or pointing device. In another implementation, the input/output device 540 includes a display unit for displaying graphical user interfaces.
The input/output device 540 can provide input/output operations for the application 102b. The application 102b can be, for example, an application containing a document 104 formatted in Shockwave, Portable Document Format (PDF), Flash or Flash Lite document format available from Adobe Systems, Incorporated of San Jose, Calif., or another document format or executable format for presentation on a wireless device. The BREW application can include external modules required for its presentation. Examples of such external module software components include private extension 306 and public extension 308. BREW APIs 106 provide translation between the BREW application 102 software and the device-specific software 114 such as the software used for accessing the input/output device 540. Such software components 102, 104, 106, 306, and 308 can be persisted in storage device 530, memory 520 or can be obtained over a network connection, to name a few examples.
Embodiments of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium for execution by, or to control the operation of, data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them.
The term “data processing apparatus” encompasses all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub-programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio player, a Global Positioning System (GPS) receiver, to name just a few. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, embodiments of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described is this specification, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
While this specification contains many specifics, these should not be construed as limitations on the scope of the invention or of what can be claimed, but rather as descriptions of features specific to particular embodiments of the invention. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features can be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination can be directed to a subcombination or variation of a subcombination.
Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing can be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
Thus, particular embodiments of the invention have been described. Other embodiments are within the scope of the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results.
This application is a divisional application of, and claims priority to U.S. utility application Ser. No. 11/567,111, filed on Dec. 5, 2006, the entire content of which is incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
5797098 | Schroeder et al. | Aug 1998 | A |
6025841 | Finkelstein et al. | Feb 2000 | A |
6188401 | Peyer | Feb 2001 | B1 |
6195569 | Frederiksen | Feb 2001 | B1 |
6292099 | Tse et al. | Sep 2001 | B1 |
6381468 | Larsen et al. | Apr 2002 | B1 |
6512529 | Janssen et al. | Jan 2003 | B1 |
6529744 | Birkler et al. | Mar 2003 | B1 |
6729929 | Sayers et al. | May 2004 | B1 |
6732358 | Siefert | May 2004 | B1 |
6757372 | Dunlap et al. | Jun 2004 | B1 |
6775362 | Ransom | Aug 2004 | B1 |
6892067 | Sharma et al. | May 2005 | B1 |
6928468 | Leermakers | Aug 2005 | B2 |
6964061 | Cragun et al. | Nov 2005 | B2 |
6976217 | Vertaschitsch et al. | Dec 2005 | B1 |
6983421 | Lahti et al. | Jan 2006 | B1 |
7003327 | Payne et al. | Feb 2006 | B1 |
7035629 | Fujii | Apr 2006 | B2 |
7096474 | Wong et al. | Aug 2006 | B2 |
7099685 | Park et al. | Aug 2006 | B2 |
7142977 | Knuuttila et al. | Nov 2006 | B2 |
7152203 | Gao et al. | Dec 2006 | B2 |
7158788 | Holler et al. | Jan 2007 | B2 |
7159500 | John et al. | Jan 2007 | B2 |
7165099 | Sprigg et al. | Jan 2007 | B2 |
7167728 | Wagner et al. | Jan 2007 | B1 |
7187948 | Alden | Mar 2007 | B2 |
7243164 | Vegge | Jul 2007 | B2 |
7275243 | Gibbons et al. | Sep 2007 | B2 |
7283841 | Luke et al. | Oct 2007 | B2 |
7299289 | Lorenz et al. | Nov 2007 | B1 |
7299409 | Joshi et al. | Nov 2007 | B2 |
7308689 | Black et al. | Dec 2007 | B2 |
7310784 | Gottlieb et al. | Dec 2007 | B1 |
7316003 | Dulepet et al. | Jan 2008 | B1 |
7319862 | Lincoln et al. | Jan 2008 | B1 |
7403209 | Liao et al. | Jul 2008 | B2 |
7478158 | Rodgers et al. | Jan 2009 | B1 |
7480422 | Ackley et al. | Jan 2009 | B2 |
7634559 | Brown | Dec 2009 | B2 |
7639943 | Kalajan | Dec 2009 | B1 |
7706782 | Hosmer et al. | Apr 2010 | B1 |
7743339 | Chanda et al. | Jun 2010 | B1 |
20020140729 | Price et al. | Oct 2002 | A1 |
20020152239 | Bautista-Lloyd et al. | Oct 2002 | A1 |
20020161634 | Kaars | Oct 2002 | A1 |
20020161796 | Sylthe | Oct 2002 | A1 |
20030105845 | Leermakers | Jun 2003 | A1 |
20030167318 | Robbin et al. | Sep 2003 | A1 |
20030210270 | Clow et al. | Nov 2003 | A1 |
20040034853 | Gibbons et al. | Feb 2004 | A1 |
20040104938 | Saraswat et al. | Jun 2004 | A1 |
20040203384 | Sugikawa et al. | Oct 2004 | A1 |
20040213296 | Kanayama et al. | Oct 2004 | A1 |
20040215652 | Muller et al. | Oct 2004 | A1 |
20040237068 | Ren | Nov 2004 | A1 |
20040260652 | Rose | Dec 2004 | A1 |
20050090246 | Leermakers | Apr 2005 | A1 |
20050131837 | Sanctis et al. | Jun 2005 | A1 |
20050172154 | Short et al. | Aug 2005 | A1 |
20050215238 | Macaluso | Sep 2005 | A1 |
20050226188 | Santhoff et al. | Oct 2005 | A1 |
20050246193 | Roever et al. | Nov 2005 | A1 |
20050246703 | Ahonen | Nov 2005 | A1 |
20050246726 | Labrou et al. | Nov 2005 | A1 |
20050266884 | Marriott et al. | Dec 2005 | A1 |
20060013502 | Weigand | Jan 2006 | A1 |
20060015819 | Hawkins et al. | Jan 2006 | A1 |
20060026304 | Price | Feb 2006 | A1 |
20060123360 | Anwar et al. | Jun 2006 | A1 |
20060153040 | Girish et al. | Jul 2006 | A1 |
20060165104 | Kaye | Jul 2006 | A1 |
20060171515 | Hintermeister et al. | Aug 2006 | A1 |
20060184968 | Clayton et al. | Aug 2006 | A1 |
20060200815 | Li | Sep 2006 | A1 |
20060206918 | McLean | Sep 2006 | A1 |
20060224943 | Snyder et al. | Oct 2006 | A1 |
20060250578 | Pohl et al. | Nov 2006 | A1 |
20060256130 | Gonzalez | Nov 2006 | A1 |
20060265508 | Angel et al. | Nov 2006 | A1 |
20060271696 | Chen et al. | Nov 2006 | A1 |
20070026799 | Wang et al. | Feb 2007 | A1 |
20070038931 | Allaire et al. | Feb 2007 | A1 |
20070130331 | Kao et al. | Jun 2007 | A1 |
20070140116 | Vega-Garcia | Jun 2007 | A1 |
20070155426 | Balakrishnan et al. | Jul 2007 | A1 |
20070220504 | Eker | Sep 2007 | A1 |
20070277230 | Hawkins et al. | Nov 2007 | A1 |
20080059533 | Krikorian | Mar 2008 | A1 |
20080077956 | Morrison et al. | Mar 2008 | A1 |
20080147671 | Simon et al. | Jun 2008 | A1 |
20080184128 | Swenson et al. | Jul 2008 | A1 |
20080222520 | Balakrishnan et al. | Sep 2008 | A1 |
20080261657 | Amit | Oct 2008 | A1 |
20080268911 | Eronen et al. | Oct 2008 | A1 |
20090031418 | Matsuda et al. | Jan 2009 | A1 |
20090042599 | Scott | Feb 2009 | A1 |
20090094272 | Skriletz | Apr 2009 | A1 |
20110113320 | Neff et al. | May 2011 | A1 |
20130167024 | Chanda et al. | Jun 2013 | A1 |
Entry |
---|
“Adobe Flex 2 Developer's Guide”, Adobe Systems, Inc., retrieved from <http://download.macromedia.com/pub/documentation/en/flex2/flex2—devguide.pdf>, (2006), 100 pages. |
“Advisory Action”, U.S. Appl. No. 11/567,111, (Nov. 8, 2012), 3 pages. |
“Binary Runtime Environment for Wireless”BREW 2.1 API Reference, Qualcomm, (May 8, 2003), 43 pages. |
“BSQUARE Delivers PDF Viewing Capabilities for Windows Powered Devices”, Business Wire, (Oct. 16, 2000), 3 pages. |
“Examiner's Answer to Appeal”, U.S. Appl. No. 11/567,111, (Apr. 26, 2013), 24 pages. |
“Final Office Action”, U.S. Appl. No. 11/567,111, (Aug. 2, 2012), 21 pages. |
“Non-Final Office Action”, U.S. Appl. No. 11/567,111, (Dec. 14, 2010), 16 pages. |
“Non-Final Office Action”, U.S. Appl. No. 11/567,111, (Mar. 12, 2012), 18 pages. |
“Non-Final Office Action”, U.S. Appl. No. 11/567,111, (Jul. 1, 2010), 14 pages. |
“Non-Final Office Action”, U.S. Appl. No. 12/577,035, (Jul. 25, 2011), 7 pages. |
“Notice of Allowance”, U.S. Appl. No. 11/567,111, (Aug. 29, 2011), 5 pages. |
“Notice of Panel Decision from Pre-Appeal Brief Review”, U.S. Appl. No. 11/567,111, (Dec. 27, 2012), 2 pages. |
“PCT Search Report”, Application No. PCT/US2008/056278, (Aug. 12, 2009), 13 pages. |
“Restriction Requirement”, U.S. Appl. No. 11/567,111, (Mar. 30, 2010), 6 pages. |
“U.S. Application ad Filed”, U.S. Appl. No. 10/791,298, (Mar. 1, 2007), 43 pages. |
“U.S. Application as Filed”, U.S. Appl. No. 10/791,299, (Mar. 1, 2004), 26 pages. |
“U.S. Application as Filed”, U.S. Appl. No. 10/791,311, (Mar. 1, 2004), 27 pages. |
Flanagan, David “Java Foundation Classes in a Nutshell: A Desktop Quick Reference”, Section 2.6, O'Reilly Publishing, retrieved from <http://docstore.mik.ua/orelly/java-ent/jfc/index/htm> on Feb. 27, 2012, (Sep. 1999), 8 pages. |
Number | Date | Country | |
---|---|---|---|
20130166439 A1 | Jun 2013 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11567111 | Dec 2006 | US |
Child | 13620522 | US |