An embodiment of the present invention relates generally to software for computing devices and convergence networking of such devices. More specifically, it relates to enabling downloading and executing of software applications on various user devices in the same network.
Applications that run on non-traditional computing devices, commonly referred to as “apps,” are now quite widespread and known to many users mostly due to their increasingly prevalent use of smartphones, tablets, and other mobile devices. Apps are presently available on a wide range of platforms, including TVs and PCs. Smartphone users frequently download, install and use apps onto their devices. This practice is becoming increasingly popular as well with tablets. Apps are one of the drivers making these mobile devices more and more popular. Finding an app in an app marketplace or app store and then downloading it onto a mobile device is a straightforward procedure and has now become second-hand nature for a lot of users, particularly younger ones.
However, downloading an app onto a TV has not yet caught on among the general public. People do not generally think of executing an app on their TV, even if they have an app on their smartphone and a companion or compatible app is available. Users simply are not aware that there is a similar app available for download on their TV. Or, the user has already downloaded a similar or companion app on their TV but is unaware that the two apps (e.g., on the phone and TV) executing together can provide an enhanced user experience. In instances where a user thinks about executing an app on a TV, she does it by using a remote control and downloads and executes it directly on the TV.
Convergence among various devices is becoming more popular, especially among devices on a home network that has a TV. Convergence features provide the capability of devices to communicate and, consequently, new mechanisms for deploying apps on other devices within a convergence network would be desirable. There is an increasing desire to have devices on a local network communicate with each other and share information. For example, with apps, there is often a companion app that executes on a compatible device having an entirely different platform. To illustrate, there may be a Hulu app for the TV and for a smartphone, but the user only has the one on her smartphone. However, her experience with Hulu would be better if she could execute the Hulu app for the TV as well. As such, it would be desirable to have two or more companion apps work together with minimal user input to deliver an enhanced user experience for the apps.
One aspect of the invention is a method of using a device to execute an app on another (second) device, for example, using a smartphone having a particular app to execute a companion app on a TV. The two devices will typically be in two different classes, that is, have different operating systems, platforms, and the like, but this is not required (e.g., each device can be a smartphone, tablet, or TV). The second device is queried by the first device to determine whether there is a compatible or companion app already installed on the second device. If there is, it is then determined whether the companion app is presently running on the second device. If it is not, then a message is displayed on the first device asking whether the user of the first device wants to execute the companion app on the second device. If the user of the first device consents, the companion app is executed on the second device. In one embodiment, there may be a message displayed on the second device stating that another user is causing the execution of an app on the second device. For example, a person watching TV will see a message that another user, via her smartphone, is causing the execution of a companion app on the TV. The program or show that the person is watching on TV will not be interrupted.
Another aspect of the invention is a method of using a first device to execute an app on a second device. The first device queries the second device for a compatible app to see if it is already installed. The user of the first device is prompted as to whether to install the compatible app on the second device. It is then determined whether to install the compatible app on the second device. A request is transmitted to the second device to install the compatible app. The compatible app is then downloaded onto the second device.
The invention and the advantages thereof may best be understood by reference to the following description taken in conjunction with the accompanying drawings in which:
In the drawings, like reference numerals are sometimes used to designate like structural elements. It should also be appreciated that the depictions in the figures are diagrammatic and not to scale.
Applications are currently available on a wide range of platforms and devices, including smartphones, tablet devices, mobile gaming devices, computing devices in cars, PCs, and TVs. Users are accustomed to the app download, installation, and usage experience on their handheld and mobile devices, the vast majority of which are smartphones and tablets. Now that convergence features enable communication between all these devices and platforms on a local/home network, new mechanisms described in the various embodiments of the present invention deploy apps among various devices in the convergence network. One example of convergence is allowing the user to launch an app on a TV using a smartphone. The overall goal is that when devices are on the same network, it would be desirable to have synergy among the devices.
Methods and systems for enhancing the user experience of application downloading and usage between multiple devices in a network are described in the various figures. One or more embodiments describe the ability of one instance of an app on a first device to identify and verify installation and/or execution of a companion app on a second compatible device where the two devices may have entirely different platforms (e.g., smartphone operating system and TV platform). The term platform may refer to the application runtime environment provided by the TV. It may be described as a layer above the TV operating system that provides both a runtime environment for generic programming instructions as well as the APIs to interface with specific TV functions, services or devices. In the TV application platform, programmers have a choice of programming, for example, in JavaScript or Flash. There are also APIs to interface with the TV tuner, infra-red remote, WiFi/Ethernet/Bluetooth adapters, cameras, and the like.
One or more embodiments of the present invention deliver more than a mere “split screen” user experience or simple sharing of an app on the devices where one app is executing on a smartphone and another related app is executing on a TV. One or more embodiments describe ways in which the experience for users having their devices on the same network converge in order to improve the user experience with respect to a particular app. In this manner, they deliver an enhanced and efficient means of providing an n-screen experience with the app; ways that provide synergy between devices on the same network.
In a second scenario, the companion app may not be on the second device but one is available from an app download server or other source on the network. In this case, a display such as one shown in 108a where the user is asked whether he wants to initiate a download of a companion “Netflix for TV” app onto the TV. During this time, the TV continues to display a TV show or other image as shown in 108b. If the user gives permission to download the companion app, a display such as 110a on the smartphone indicating that the Netflix for TV app is being downloaded is shown. The TV may display a message such as shown in 110b (“Downloading Netflix App for TV . . . ”) or a similar message. At download completion the companion app will execute automatically. In an alternative embodiment the TV could prompt the user again for confirmation. As these display images show, most of the processes take place in the background, beginning with discovery of the second device to the launching or downloading of the companion app. The only interaction with the user is seeking permission to perform the launching or downloading activity. In another embodiment, these activities may be done automatically without confirmation from the user. This may be preferable for users who always want to have companion apps downloaded or executed on one or more additional devices on the network. In this scenario, the user will automatically have a convergence experience (multi-screen experience) with the app on his devices.
At block 204, the first device discovers a compatible device/platform on the network. This discovery may be done using conventional and suitable protocols such as UPnP, Bon Jour, and the like. A device or platform is compatible if it can execute a companion app to the primary app. At block 206, it is determined whether such a device has been discovered on the network.
If such a device (the “second device”), such as a TV or tablet, is found on the network, control goes to block 208 where the first device queries the second device whether the second device presently has a companion or compatible app (with respect to the primary app on the first device). The second device has a software stack that can handle this type of query or request. The query is sent using a communication protocol as defined or chosen by the developer. It may be a proprietary communication protocol. If no compatible device is found on the network, the discovery process continues in the background and control goes back to block 204.
At block 210, the first device is informed of whether a companion app is already installed on the second device. If a companion app is already on the second device, control goes to block 212. If the companion app is not installed, control goes to block 220 of
At block 216, the first device determines whether the user accepts the offer (i.e., gives permission to execute the companion app on the second device). If the user does not, the process ends. If the user accepts the offer, a message is sent to the second device and the companion app executes at which stage the process ends. Returning to the path where the companion app is already installed on the second device, the user can begin experiencing app and device convergence on two devices.
Going back to block 210, if the companion app is not installed on the second device, control goes to block 220 in
At block 222, if the user does not consent to downloading the app, control goes to block 226 where a “do not install” setting is saved as the last user selection. This setting may be checked prior to block 220 where the user is prompted to install the companion app. If this setting indicates that the user previously selected the “do not install” option, he is not prompted again on the same question. The process then loops back to block 204 where the discovery process continues. For example, although the user may not want to install the app on the TV, a tablet may now be discoverable on the network and the same process executing in the background on the primary device will occur for this or any new devices. In this case, the user may want to install the companion app on the tablet.
Through the processes described above, an application running on one class of devices (e.g., smartphone, tablet, or devices having the same operating system or platform) has awareness of a companion application for a second class of devices (e.g., a TV). A device from the first class realizes or becomes aware of the presence of a device from the second class on the same local network and the first device coordinates the download and installation of the companion app enabling communication of the two apps and providing a convergence experience for the user. Described below are variations of the above embodiments and alternative embodiments. Some of the description may repeat certain aspects of the content in
In one embodiment, the ability of one instance of an application on a first device to verify an installation of a companion or second instance of the application on a second device is described. Also described is the ability of the first instance on the first device to initiate a download of the companion application on a second device. The first and second devices may be any suitable computing device such as smartphones, tablets, TVs, mobile or stationary gaming devices, and PCs. For example, in one example the process may begin with a first device, such as a tablet, running a first instance of an app. The first device is connected to a local/home network and, in the background, discovers that there is a compatible or suitable second device on the network, such as a TV or PC, and communicates with the second device to exchange data or commands, such as commands relating to a discovery protocol (e.g., UPnP) which allows the first device to discover the second device and find its capabilities, including what apps are installed. The first device then sends a request to the second device to determine whether the second device has a companion or second instance of the (first instance) app running on the first device.
The second device sends a response to the request to the first device, i.e., whether the second device as the companion app installed or whether the server has it available for download. If the second device does not have the companion app and the server has it available for download, the first instance of the app on the first device displays a message or notification to the user. The notification indicates that a companion app is available for the second device and, in the same notification, asks whether the user wants to have the companion app downloaded to the second device from the server or other source.
If the user gives permission or approval to download the companion app, the first device issues a command to the second device to download the companion app from the server. The second device then initiates a download of the companion app after which the second device has the companion app. The first instance of the app initiates the download of a companion instance of the app onto a separate device where all the processes, except seeking permission from the user, execute in the background. The user does not need to explicitly connect to and browse an app store or app market. The mechanism for executing the processes described above can be embedded in any app in order to promote use of a companion app for a second device.
In this manner, app vendors encourage users to install companion apps onto more devices, for which consumers may not have been aware that apps were available. This is most often the case with apps for TVs. As a result of the embodiments described herein, the second device, such as the TV, is likely used more often as an app device. The user is more aware and is more inclined to use convergence apps and have a better user experience with the apps.
To illustrate an embodiment, one device is a smartphone and the other device is a TV. The smartphone is the device being used by a user and has a primary app (also referred to as a client app) that is executing on the smartphone and the TV, in this illustration, already has an app that is a companion app to the primary app on the smartphone. It should be noted that the same relationship can be seen in the other direction, that is, the user is watching TV or the user is using (running) an app on the TV and the TV has the primary app and the smartphone already has a companion app to the primary app on the TV.
Returning to the illustration, the smartphone is running the primary app, and is on the same network as the TV. It discovers that there is a compatible TV in the same network. Here compatible implies it is on the same network and is able to execute apps. The smartphone then “pairs” with the TV. If there are other compatible devices, such as other smartphones or PCs, the smartphone carries out the same process with the other devices. The smartphone then checks via the network whether the TV has a companion app to the app executing on the smartphone. If the TV has a companion app, this fact is transmitted to the smartphone, again via the local network. The primary app on the smartphone then displays a message to the user telling the user that there is a companion app on the TV and asks whether the user wants to launch the companion app. If the user gives approval, the smartphone issues a command to the TV via network protocol (which may be proprietary) to launch the companion app on the TV. The TV launches the companion app. The primary app on the smartphone then communicates with the companion app to provide an enhanced, multi-screen user experience with respect to the app.
As described above, an embodiment of the invention introduces a new mechanism for an app on a first device to discover and launch a companion app on a second device. This may be described as a peer-to-peer communication over a home/local network as described in
An embodiment of the present invention introduces a way to identify a second device on the network and have a first device automatically ask the second device whether it has a companion app. The only interaction or communication with the user of the first device that may be needed is a message asking whether the user wants to download or execute a companion app on the second device in order to have a multi-screen app experience. In other embodiments, this is not needed.
The various embodiments enable a primary app on a first device to identify and discover a second device in the network and a compatible/companion app. This identifying and discovering is done in the background while the first device is on and connected to the network. The user of the first device is given the option of downloading and/or launching the companion app on the second device. In this manner, the user enjoys a rich, immersive app experience on multiple devices.
As noted above, the primary computing device in an embodiment of the invention is a TV, but it may be another computing device such as a smart phone, a tablet computer, a mobile device, a PC, and the like.
In one embodiment, system 400 includes a display or screen 404. This display may be in the same housing as system 400. It may also have a keyboard 410 that is shown on display 404 (i.e., a virtual keyboard) or may be a physical component that is part of the device housing. It may have various ports such as HDMI or USB ports (not shown). Computer-readable media that may be coupled to device 400 may include USB memory devices and various types of memory chips, sticks, and cards.
Processor 422 is also coupled to a variety of input/output devices such as display 404 and network interface 440. In general, an input/output device may be any of: video displays, keyboards, microphones, touch-sensitive displays, tablets, styluses, voice or handwriting recognizers, biometrics readers, or other devices. Processor 422 optionally may be coupled to another computer or telecommunications network using network interface 440. With such a network interface, it is contemplated that the CPU might receive information from the network, or might output information to the network in the course of performing the above-described method steps. Furthermore, one or more method embodiments of the present invention may execute solely upon processor 422 or may execute over a network such as the Internet in conjunction with a remote processor that shares a portion of the processing.
In addition, one or more embodiments of the present invention further relate to computer storage products with a computer-readable medium that have computer code thereon for performing various computer-implemented operations. The media and computer code may be those specially designed and constructed for the purposes of one or more embodiments of the present invention, or they may be of the kind well known and available to those having skill in the computer software arts. Examples of computer-readable media include, but are not limited to: magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs and holographic devices; magneto-optical media such as floptical disks; and hardware devices that are specially configured to store and execute program code, such as application-specific integrated circuits (ASICs), programmable logic devices (PLDs) and ROM and RAM devices. Examples of computer code include machine code, such as produced by a compiler, and files containing higher-level code that are executed by a computer using an interpreter.
Although illustrative embodiments and applications of this invention are shown and described herein, many variations and modifications are possible which remain within the concept, scope, and spirit of the invention, and these variations would become clear to those of ordinary skill in the art after perusal of this application. Accordingly, the embodiments described are illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope and equivalents of the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
6567984 | Allport | May 2003 | B1 |
6809830 | Lafky | Oct 2004 | B1 |
7136874 | Mercer | Nov 2006 | B2 |
7143353 | Thomas | Nov 2006 | B2 |
7309287 | Miyamoto et al. | Dec 2007 | B2 |
7356357 | DeCost | Apr 2008 | B2 |
7398474 | Yan | Jul 2008 | B2 |
7716700 | Carlucci | May 2010 | B2 |
7948476 | Goto | May 2011 | B2 |
7949680 | Yanagita et al. | May 2011 | B2 |
7987491 | Reisman et al. | Jul 2011 | B2 |
8331772 | Zdepski | Dec 2012 | B1 |
8421808 | Ishii et al. | Apr 2013 | B2 |
8589909 | Hu | Nov 2013 | B2 |
8589986 | McCoy | Nov 2013 | B2 |
8726189 | Weber et al. | May 2014 | B2 |
8875212 | Rakib | Oct 2014 | B2 |
8937534 | Kreiner et al. | Jan 2015 | B2 |
8943409 | Bryant-Rich | Jan 2015 | B2 |
8990703 | Nhiayi | Mar 2015 | B2 |
9252950 | Caspi | Feb 2016 | B2 |
9264753 | Xu | Feb 2016 | B2 |
20030221100 | Russ | Nov 2003 | A1 |
20070094322 | Peev et al. | Apr 2007 | A1 |
20070171201 | Pi | Jul 2007 | A1 |
20070174424 | Chen | Jul 2007 | A1 |
20070178891 | Louch | Aug 2007 | A1 |
20070201833 | Cherna | Aug 2007 | A1 |
20080028389 | Genty et al. | Jan 2008 | A1 |
20090111453 | Hsu | Apr 2009 | A1 |
20090168090 | Nakano et al. | Jul 2009 | A1 |
20090249429 | Sullivan | Oct 2009 | A1 |
20090260001 | Park et al. | Oct 2009 | A1 |
20100023852 | Chou | Jan 2010 | A1 |
20100046009 | Pandit et al. | Feb 2010 | A1 |
20100060572 | Tsern et al. | Mar 2010 | A1 |
20100097650 | Seo | Apr 2010 | A1 |
20100192206 | Aoyama | Jul 2010 | A1 |
20100197220 | Zilliacus | Aug 2010 | A1 |
20100262673 | Chang et al. | Oct 2010 | A1 |
20100277365 | Ha et al. | Nov 2010 | A1 |
20110083069 | Paul et al. | Apr 2011 | A1 |
20110099157 | Lebeau et al. | Apr 2011 | A1 |
20110214121 | Gentile | Sep 2011 | A1 |
20110289493 | Keefe | Nov 2011 | A1 |
20120002111 | Sandoval | Jan 2012 | A1 |
20120008910 | Tamura et al. | Jan 2012 | A1 |
20120050183 | Lee et al. | Mar 2012 | A1 |
20120054616 | Mittal | Mar 2012 | A1 |
20120054735 | Tseng | Mar 2012 | A1 |
20120066715 | Jain et al. | Mar 2012 | A1 |
20120151530 | Krieger | Jun 2012 | A1 |
20120220355 | Haltovsky | Aug 2012 | A1 |
20120290669 | Parks | Nov 2012 | A1 |
20130042233 | Kinsella | Feb 2013 | A1 |
20130064187 | Patil | Mar 2013 | A1 |
20130094591 | Laksono | Apr 2013 | A1 |
20130108239 | Ryer | May 2013 | A1 |
20130132605 | Kocks et al. | May 2013 | A1 |
20140006474 | White | Jan 2014 | A1 |
20140010121 | Patil et al. | Jan 2014 | A1 |
20140082610 | Wang | Mar 2014 | A1 |
20140089414 | Patil et al. | Mar 2014 | A1 |
20140099973 | Cecchini et al. | Apr 2014 | A1 |
20140108623 | Gunderson | Apr 2014 | A1 |
20140139742 | Krishna | May 2014 | A1 |
20140165112 | Freeman et al. | Jun 2014 | A1 |
20140170978 | Wolman et al. | Jun 2014 | A1 |
20150022619 | Aleixo Dinis Lopes | Jan 2015 | A1 |
20150063779 | Fahn et al. | Mar 2015 | A1 |
20150067508 | Fahn et al. | Mar 2015 | A1 |
20200097272 | Gava et al. | Mar 2020 | A1 |
Number | Date | Country |
---|---|---|
1020050122612 | Dec 2005 | KR |
20100017023 | Feb 2010 | KR |
10-2011-0093844 | Aug 2011 | KR |
20120094231 | Aug 2012 | KR |
20120122164 | Nov 2012 | KR |
2009151635 | Dec 2009 | WO |
Entry |
---|
Wikipeida, “Splash Screen”, http://en.wikipedia.org/wiki/Splash_screen, Internet Archive Jun. 22, 2012 (Year: 2012). |
Bonamy, “Do not ask again” Message Boxes, https://www.codeporject.com/Articles/3624/quot-Do-not-ask-again-quot-Message-Boxes, accessed on Nov. 9, 2020 (Year: 2003). |
Park, M. et al., “A perceptive remote-control 3D TV interface”, The International Society for Optical Engineering, Apr. 13, 2007, pp. 1-2, SPIE Newsroom, United States. |
Bove Jr., V.M. et al., “Hyperlinked television research at the MIT Media Laboratory” IBM Systems Journal, Jul. 2000, pp. 470-478, vol. 39, Nos. 3&4, IBM, United States. |
European Search Report dated Mar. 14, 2014 for European Patent Application No. 14150416.7 from European Patent Office, pp. 1-8, Munich Germany. |
Wikipedia, “Secure Shell-SSH”, Jan. 26, 2013, pp. 1-9, Wikipedia.org, United States (downloaded on Jul. 30, 2014). |
International Search Report and Written Opinion dated Mar. 31, 2014 for International Application No. PCT/KR2013/011498 from Korean Intellectual Property Office, pp. 1-8, Daejeon, Republic of Korea. |
U.S. Non-Final Office Action for U.S. Appl. No. 14/023,215 dated Jan. 16, 2015. |
U.S. Final Office Action for U.S. Appl. No. 14/023,215 dated Aug. 3, 2015. |
U.S. Advisory Action for U.S. Appl. No. 14/023,215 dated Oct. 22, 2015. |
U.S. Non-Final Office Action for U.S. Appl. No. 14/190,026 dated Sep. 30, 2015. |
U.S. Final Office Action for U.S. Appl. No. 14/191,943 dated Jun. 17, 2016. |
U.S. Advisory Action for U.S. Appl. No. 14/190,026 dated May 19, 2016. |
U.S. Non-Final Office Action for U.S. Appl. No. 14/023,215 dated Apr. 6, 2016. |
U.S. Final Office Action for U.S. Appl. No. 14/190,026 dated Feb. 10, 2016. |
U.S. Non-Final Office Action for U.S. Appl. No. 14/191,943 dated Feb. 16, 2016. |
U.S. Final Office Action for U.S. Appl. No. 14/023,215 dated Sep. 23, 2016. |
U.S. Advisory Action for U.S. Appl. No. 14/191,943 dated Oct. 4, 2016. |
U.S. Advisory Action for U.S. Appl. No. 14/023,215 dated Jan. 12, 2017. |
U.S. Non-Final Action for U.S. Appl. No. 14/191,943 dated Jan. 11, 2017. |
U.S. Final Office Action for U.S. Appl. No. 14/191,943 dated Jun. 30, 2017. |
U.S. Non-Final Office Action for U.S. Appl. No. 14/023,215 dated Feb. 23, 2017. |
U.S. Final Office Action for U.S. Appl. No. 14/023,215 dated Aug. 30, 2017. |
U.S. Non-Final Office Action for U.S. Appl. No. 14/190,026 dated Sep. 12, 2017. |
U.S. Notice of Allowance for U.S. Appl. No. 14/191,943 dated Oct. 10, 2017. |
European Examination Report dated Nov. 9, 2017 for European Application No. 14150416.7 from European Patent Office Action, pp. 1-5, Munich, Germany. |
U.S. Advisory Action for U.S. Appl. No. 14/023,215 dated Dec. 13, 2017. |
U.S. Final Office Action for U.S. Appl. No. 14/190,026 dated Jan. 19, 2018. |
U.S. Notice of Allowance for U.S. Appl. No. 14/190,026 dated Oct. 24, 2018. |
Korean Office Action dated Jul. 17, 2019 for Korean Application No. 10-2013-0168267 from Korean Patent Office Action, pp. 1-15, Seoul, South Korea (English-language translation included pp. 1-10). |
Korean Notice of Allowance dated Mar. 18, 2020 for Korean Application No. 10-2020-020275745 from Korean Patent Office Action, pp. 1-9, Seoul, South Korea (English-language translation included pp. 1-2). |
U.S. Final Office Action for U.S. Appl. No. 16/696,829 dated Nov. 24, 2020. |
Supplementary European Search Report dated Nov. 11, 2020 for European Patent Application No. 20184977.5 from European Patent Office, pp. 1-4, Munich Germany. |
Summons to attend oral proceedings pursuant to Rule 115(1) EPC dated Nov. 20, 2020 for European Patent Application No. 14150416.7 from European Patent Office, pp. 1-8, Munich Germany. |
European Examination Report dated Nov. 24, 2020 for European Application No. 20184977.5 from European Patent Office Action, pp. 1-6, Munich, Germany. |
Result of Consulation dated Nov. 2, 2020 for European Application No. 14150416.7 from European Patent Office Action, pp. 1-4, Munich, Germany. |
Netflix, “DIAL: Discovery and Launch protocal specification, Version 1.6.4”, Dec. 19, 2012, p. 1-16, Retreived from the Internet: https://community.arubanetworks.com/HigherLogic/System/DownloadDocumentFile.ashx? DocumentFileKey=84dcfb59-f256-4ebd-a10f-e0a9a1f9f9ef. |
U.S. Non-Final Office Action for U.S. Appl. No. 16/696,829 dated Aug. 6, 2020. |
U.S. Notice of Allowance for U.S. Appl. No. 16/696,829 dated Mar. 17, 2021. |
U.S. Advisory Action for U.S. Appl. No. 16/696,829 dated Mar. 3, 2021. |
European Examination Report dated May 3, 2021 for European Application No. 20184977.5 from European Patent Office Action, pp. 1-4, Munich, Germany. |
U.S. Corrected Notice of Allowability for U.S. Appl. No. 16/696,829 dated Jun. 8, 2021. |
U.S. Corrected Notice of Allowability for U.S. Appl. No. 16/696,829 dated Jun. 23, 2021. |
Number | Date | Country | |
---|---|---|---|
20140215457 A1 | Jul 2014 | US |