The present disclosure relates generally to controlling the execution of software applications. More particularly, the present disclosure relates to using multiple mobile devices to control a software application.
Today it is common to deliver a presentation to a group using a presentation software application executing on a computer. Often the display produced by the application is routed to a projector for easy viewing by the entire group. It is also common to have multiple presenters in a single presentation, each taking turns describing the displayed presentation slides. One problem with this approach lies in passing control from one presenter to the next. One common solution is to physically pass a simple remote control from one presenter to the next. Another common solution is to shout instructions to an assistant operating the computer.
In general, in one aspect, an embodiment features computer-readable media embodying instructions executable by a first computer to perform functions comprising: receiving a first user input from a user of the first computer, wherein the first user input represents a command to take control of an application executing on a second computer; responsive to receiving the first user input, taking the control of the application executing on the second computer; receiving a second user input from the user of the first computer while keeping the control of the application executing on the second computer, wherein the second user input represents a command to pass the control of the application to a third computer; and responsive to receiving the second user input, passing the control of the application to the third computer.
Embodiments of the computer-readable media can include one or more of the following features. In some embodiments, the functions further comprise: receiving a third user input from the user of the first computer prior to passing the control of the application to the third computer, wherein the third user input represents a command to invite a user of the third computer to take the control of the application; and responsive to receiving the third user input, sending a first message to the third computer, wherein the first message represents an invitation to take the control of the application; wherein the control of the application is passed to the third computer only subsequent to an acceptance of the invitation to take the control of the application. In some embodiments, the first message further represents: an identifier of the second computer; an identifier of the application; and a starting time and a duration for an interval, wherein the user of the third computer can take the control of the application only during the interval. In some embodiments, the functions further comprise: receiving a second message from the third computer prior to passing the control of the application to the third computer, wherein the second message represents an acceptance of the invitation to take the control of the application; and responsive to receiving the second message, and prior to passing the control of the application to the third computer, displaying an indication of the acceptance of the invitation to take the control of the application. In some embodiments, the functions further comprise: sending the first message to the third computer prior to taking the control of the application executing on the second computer. In some embodiments, the functions further comprise: sending the first message to the third computer subsequent to taking the control of the application executing on the second computer. In some embodiments, the functions further comprise: receiving a third user input from a user of the first computer subsequent to passing the control of the application to the third computer, wherein the third user input represents a command to revoke the control of the application executing on the second computer; responsive to receiving the third user input, revoking the control of the application executing on the second computer.
In general, in one aspect, an embodiment features computer-readable media embodying instructions executable by a first computer to perform functions comprising: receiving a first message from a second computer, wherein the second computer has control of a application executing on a third computer, and wherein the first message represents a passing of the control of the application from the second computer to the first computer; responsive to receiving the first message, displaying an indication of the passing of the control of the application; and responsive to receiving the first message, taking the control of the application.
Embodiments of the computer-readable media can include one or more of the following features. In some embodiments, the functions further comprise: receiving a second message from a second computer prior to receiving the first message, wherein the second message represents an invitation to take the control of the application; and responsive to receiving the second message, displaying an indication of the invitation to take the control of the application. In some embodiments, the second message further represents: an identifier of the third computer; an identifier of the application; and a starting time and a duration for an interval, wherein the user of the first computer can take the control of the application only during the interval. In some embodiments, the functions further comprise: subsequent to displaying the indication of the invitation to take the control of the application, receiving a first user input from the user of the first computer, wherein the first user input represents a command to accept the invitation to take the control of the application; and responsive to receiving the first user input, sending a third message to the second computer, wherein the third message represents an acceptance of the invitation to take the control of the application; wherein the control of the application is passed to the first computer only subsequent to sending the third message to the second computer. In some embodiments, the functions further comprise: receiving a second user input from the user of the first computer while keeping the control of the application executing on the third computer, wherein the second user input represents a command to pass the control of the application to the second computer; and responsive to receiving the second user input, passing the control of the application to the second computer. In some embodiments, the functions further comprise: receiving a second user input from the user of the first computer while keeping the control of the application executing on the third computer, wherein the second user input represents a command to pass the control of the application to a fourth computer; and responsive to receiving the second user input, passing the control of the application to the fourth computer.
In general, in one aspect, an embodiment features a computer-implemented method for a first computer, the method comprising: receiving a first user input from a user of the first computer, wherein the first user input represents a command to take control of a application executing on a second computer; responsive to receiving the first user input, taking the control of the application executing on the second computer; receiving a second user input from the user of the first computer while keeping the control of the application executing on the second computer, wherein the second user input represents a command to pass the control of the application to a third computer; and responsive to receiving the second user input, passing the control of the application to the third computer.
Embodiments of the computer-implemented method can include one or more of the following features. Some embodiments comprise receiving a third user input from the user of the first computer prior to passing the control of the application to the third computer, wherein the third user input represents a command to invite a user of the third computer to take the control of the application; and responsive to receiving the third user input, sending a first message to the third computer, wherein the first message represents an invitation to take the control of the application; wherein the control of the application is passed to the third computer only subsequent to an acceptance of the invitation to take the control of the application. In some embodiments, the first message further represents: an identifier of the second computer; an identifier of the application; and a starting time and a duration for an interval, wherein the user of the third computer can take the control of the application only during the interval. Some embodiments comprise receiving a second message from the third computer prior to passing the control of the application to the third computer, wherein the second message represents an acceptance of the invitation to take the control of the application; and responsive to receiving the second message, and prior to passing the control of the application to the third computer, displaying an indication of the acceptance of the invitation to take the control of the application. Some embodiments comprise sending the first message to the third computer prior to taking the control of the application executing on the second computer. Some embodiments comprise sending the first message to the third computer subsequent to taking the control of the application executing on the second computer. Some embodiments comprise receiving a third user input from a user of the first computer subsequent to passing the control of the application to the third computer, wherein the third user input represents a command to revoke the control of the application executing on the second computer; responsive to receiving the third user input, revoking the control of the application executing on the second computer.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims.
The leading digit(s) of each reference numeral used in this specification indicates the number of the drawing in which the reference numeral first appears.
Embodiments of the present disclosure provide shared control of an application using multiple mobile devices. In the disclosed embodiments, the application is described as a presentation application that displays a series of slides under user control. The application can execute on a computer that is local to the user or remote from the user. For example, the application can execute on a computer implemented as a cloud server. However, any sort of application can be controlled according to the techniques described herein. In the disclosed embodiments, the mobile devices are described as smartphones. However, the smartphones can be replaced with any sort of computer capable of implementing the functions described herein, including computers that are not mobile. For example, the smartphones can be replaced with tablet computers, laptop computers, desktop computers, and the like.
According to the disclosed embodiments, the control exercised by the mobile devices is limited to applications executing on the computer. That is, the mobile devices are not allowed to control the operating system of the computer. In some embodiments, only one mobile device at a time is allowed to control the application executing on the computer. Control is shared by passing control from one mobile device to another. In other embodiments, multiple mobile devices can control the application simultaneously. A presenter can also control the application directly using the computer on which the application is executing. In some embodiments, control of the application can be passed between mobile devices automatically in response to some event. For example, if a presenter receives a phone call while controlling the application, and accepts the phone call, then control of the application is automatically passed to another mobile device. In some embodiments, presenters can use the mobile devices to communicate with each other during the presentation, for example by talking, sending text messages, and the like.
In some embodiments, the mobile devices are managed using invitations. That is, before a mobile device can take control of the application executing on the computer, that mobile device must receive an invitation from a presentation organizer, and must accept that invitation. The invitation and acceptance can take the form of an email message or the like. The invitation and acceptance can take place before the presentation or during the presentation. The presentation organizer can be a presenter, but this is not required.
Referring to
Remote control apps 120 can communicate with local control app 122 using any sort of protocol. According to one embodiment, local control app 122 can control presentation application 108 executing on computer 106 by exchanging JavaScript Object Notation (JSON) objects with an application programming interface (API) of the application 108. JSON is described in RFC 4627, which is incorporated by reference herein. In other embodiments, local control app 122 can control presentation application 108 executing on computer 106 using other techniques, for example using other object types such as XML and the like. The presentation application 108 executing on computer 106 can also be controlled by a user of the computer 106.
In
In some embodiments, the remote control apps 120 allow remote presenters 102 to communicate with audience 118. For example, presenter 102B can use his smartphone 104B to describe the slide being shown, and this audio feed can be rendered for audience 118. In some embodiments, the remote control apps 120 allow the presenters 102 to communicate with each other in order to coordinate the presentation.
Referring to
At 208, the first smartphone 104A receives a user input from the first presenter 102A. The user input represents a command to invite the second presenter 102B to take control of the presentation application 108 executing on computer 106. At 210, responsive to receiving the user input, the first smartphone 104A sends an invitation message to the second smartphone 104B. As used herein, the term “message” generally refers to an electronic signal representing a digital message. The invitation message represents an invitation to take control of the presentation application 108 executing on computer 106. In some embodiments, the invitation message represents an identifier of the computer 106, an identifier of the presentation application 108, and a starting time and a duration for an interval, where the user of the third computer can take control of the application only during the interval. In some embodiments, the message can include a globally unique identifier (GUID). The invitation message can be included in a meeting invitation such as those generated by calendar applications, personal information manager applications, and the like.
At 212, the second smartphone 104A receives the invitation message and, responsive to receiving the message, displays an indication of the invitation to take control of the presentation application 108 executing on computer 106. The second presenter 102B can view the invitation and accept or decline. In the example of
At 218, the first smartphone 104A receives the acceptance message, and displays an indication of the acceptance of the invitation to take control of the presentation application 108 executing on computer 106. At 220, the first smartphone 104A receives a user input from the first presenter 102A while keeping control of the presentation application 108 executing on computer 106. The user input represents a command to pass control of the presentation application 108 to the second smartphone 104B. At 222, responsive to receiving the user input, the first smartphone 104A sends a pass control message to the second smartphone 104B. The pass control message represents a passing of control of the presentation application 108 from the first smartphone 104A to the second smartphone 104B.
At 224, the second smartphone 104B receives the message and, responsive to receiving the message, displays an indication of the passing of control of the presentation application 108 from the first smartphone 104A to the second smartphone 104B. At 226, responsive to receiving the message, the second smartphone 104B takes control of the presentation application 108 executing on computer 106.
When the second presenter 102B is done with his part of the presentation, he returns control of the presentation application 108 to the first presenter 102A, or to the first presenter 102 to reclaim control of the presentation application 108. In other embodiments, the second presenter 102B can pass control of the presentation application 108 to the third presenter 102C. At 228, the second smartphone 104B receives a user input from the second presenter 102B while keeping control of the presentation application 108 executing on computer 106. The user input represents a command to pass control of the presentation application 108 to the first smartphone. 104A. At 230, responsive to receiving the user input, the second smartphone 104B sends a pass control message to the first smartphone 104A. The pass control message represents a passing of control of the presentation application 108 from the second smartphone 104B to the first smartphone 104A.
At 232, the first smartphone 104A receives the message and, responsive to receiving the message, displays an indication of the passing of control of the presentation application 108 from the second smartphone 104B to the first smartphone 104A. At 234, responsive to receiving the message, the first smartphone 104A takes control of the presentation application 108 executing on computer 106. When the first presenter 102A is done presenting, the presentation application 108 can be terminated, at 236.
Referring to
The first presenter 102A then invites the third presenter 102C. In particular, at 312, the first smartphone 104A receives a user input from the first presenter 102A. The user input represents a command to invite the third presenter 102C to take control of the presentation application 108. At 314, responsive to receiving the user input, the first smartphone 104A sends an invitation message to the third smartphone 104C. The invitation message represents an invitation to take control of the presentation application 108. At 316, the third smartphone 104C receives the invitation message and, responsive to receiving the message, displays an indication of the invitation to take control of the presentation application 108 executing on computer 106. The third presenter 102C can view the invitation and accept or decline. In the example of FIG. 3, the third presenter 102C accepts the invitation. That is, at 318, the third smartphone 104C receives a user input from the third presenter 102C. The user input represents a command to accept the invitation to take control of the presentation application 108 executing on computer 106. At 320, responsive to receiving the user input, the third smartphone 104C sends an acceptance message to the first smartphone 104A. The acceptance message represents an acceptance of the invitation to take control of the presentation application 108.
At 322, the presentation application 108 begins executing on computer 106. The presentation application 108 can be launched by the first presenter 102A by operating the computer 106 directly, or by using the first smartphone 104A. Alternatively, the presentation application 108 can be launched by an assistant. Referring now to
At 328, the first smartphone 104A receives a user input from the first presenter 102A while keeping control of the presentation application 108 executing on computer 106. The user input represents a command to pass control of the presentation application 108 to the second smartphone 104B. At 330, responsive to receiving the user input, the first smartphone 104A sends a pass control message to the second smartphone 104B. The pass control message represents a passing of control of the presentation application 108 from the first smartphone 104A to the second smartphone 104B.
At 332, the second smartphone 104B receives the message and, responsive to receiving the message, displays an indication of the passing of control of the presentation application 108 from the first smartphone 104A to the second smartphone 104B. At 334, responsive to receiving the message, the second smartphone 104B takes control of the presentation application 108 executing on computer 106.
When the second presenter 102B is done with his part of the presentation, he passes control of the presentation application 108 to the third presenter 102C. In other embodiments, the second presenter 102B can return control of the presentation application 108 to the first presenter 102A. At 336, the second smartphone 104B receives a user input from the second presenter 102B while keeping control of the presentation application 108 executing on computer 106. The user input represents a command to pass control of the presentation application 108 to the third smartphone 104C. At 338, responsive to receiving the user input, the second smartphone 104B sends a pass control message to the third smartphone 104C. The pass control message represents a passing of control of the presentation application 108 from the second smartphone 104B to the third smartphone 104C.
At 340, the third smartphone 104C receives the message and, responsive to receiving the message, displays an indication of the passing of control of the presentation application 108 from the second smartphone 104B to the third smartphone 104C. At 342, responsive to receiving the message, the third smartphone 104C takes control of the presentation application 108 executing on computer 106. When the third presenter 102C is done presenting, the presentation application 108 can be terminated, at 344.
Referring to
Returning to
Returning to
Returning to
Referring to
Returning to
Returning to
Alternatively, if at 1026, the remote control app 120 is installed on smartphone 104B, then the second presenter 102B launches the remote control app 120, at 1034. In some embodiments, invitations expire after a predetermined interval. In the embodiment of
Returning to
Alternatively, if the invitation has not expired, and at 1044, the presentation application 108 is not running on computer 106, then at 1046, the remote control app 120 displays a “please wait” notification. The “please wait” notification is displayed on the select presenter screen 1100 of
Returning to
Referring to
“Handoff” button 1602 is displayed. Tapping the “Handoff” button 1602 transfers control of the presentation application to another presenter.
Referring to
Returning to
Returning to
In some embodiments, while the second presenter 102B is controlling the presentation application 108, at 1526, the first presenter 102A can revoke control at any time. In this case, at 1522, control of the presentation application 108 returns to the first presenter 102A.
In the embodiments described above, the presentation application 108 executes on a computer 106 that is in the same room as the audience 118, or at least nearby. In other embodiments, the presentation application 108 executes on a remote network server, also referred to herein as a “cloud server.”
Referring to
Remote control apps 1820 can communicate with local control app 1822 using any sort of protocol. According to one embodiment, local control app 1822 can control presentation application 1808 executing on cloud server 1802 by exchanging JSON objects with an API of the application 1808. In other embodiments, local control app 1822 can control presentation application 1808 executing on cloud server 1802 using other techniques, for example using other object types such as XML and the like.
In some embodiments, the remote control apps 1820 allow remote presenters 102 to communicate with audience 118. For example, presenter 102B can use his smartphone 104B to describe the slide being shown, and this audio feed can be rendered for audience 118. In some embodiments, the remote control apps 1820 allow the presenters 102 to communicate with each other in order to coordinate the presentation.
In some embodiments, instead of controlling the presentation application 1808, presenters 102 control slide shows created by the presentation application.
A presenter 1910 can present the slide show 1906 without using the presentation application 1808. The presentation author 1902 has permission to create, edit, and present the slide show 1906, as indicated by ellipse 1912. However, the presenter 1910 has permission only to present the slide show 1906, as indicated by ellipse 1914. The presentation 1904 can be created or edited by multiple presentation authors 1902. The slide show 1906 can be presented by multiple presentation authors 1902 and/or presenters 1910.
In some embodiments, the presentation author 1902 uploads a presentation 1904 to the cloud 1908 and enters a presentation name for the presentation 1904. A user-defined structure can be employed to organize presentations 1904 and slide shows 1906, for example by category. Then permissions can be granted to a single presentation, or to all presentations within a category. As part of the creation or upload of a presentation 1904, the presentation author 1902 can indicate the permitted slide show presenters 1910, for example by email address.
Giving the cloud presentation 1904 a unique name allows the presentation author 1902 to change presentation file names on his local computer, while keeping them defined as the same presentation 1904 in the cloud 1908. For example, a presentation author 1902 has a presentation on his local hard-drive named “why you should buy this product” and uploads it to the cloud with the name “product advantages.” The next day, that presentation author 1902 can rename the file locally “why you should buy this product 2-08-2012” and upload that newer version as an increment to the “product advantages” presentation 1904 in the cloud 1908.
An added benefit here is that the presentation files no longer have to be the same file type. For example, one can save a presentation file created by one presentation application, and then open that presentation file with a different presentation application. If the presentation file type can be converted to a standardized slide show object (across source file types), then the source file type is not relevant.
In some embodiments, the slide show 1906 can be implemented in a master/drone manner.
Presentation attendees 118 can view an ongoing slide show 1906 using a browser 1810 on a computer 1806. The slide show presenter distributes a link for a running slide show 1906 to presentation attendees 118 who would like to view this slide show on their own devices 1806. An attendee receives this slide show link, and opens it on a browser 1810. This link takes the user to a web-based slide show viewer. This web-based viewer has the full-screen modality of the slide show, but not the functionality to change slides, view notes, and the like. In some embodiments, an attendee device 1806 can be used to project the slide show for a wider audience.
Embodiments of the disclosure can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Embodiments of the disclosure can be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor; and method steps of the disclosure can be performed by a programmable processor executing a program of instructions to perform functions of the disclosure by operating on input data and generating output. The disclosure can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Each computer program can be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Generally, a computer will include one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM disks. Any of the foregoing can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
A number of implementations of the disclosure have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims.