Patent Publication Number: US-9836729-B2

Title: Media software navigation with conditional links

Description:
CROSS-REFERENCE TO RELATED APPLICATION(S) 
     This application is related to U.S. patent application, Ser. No. 11/078,086, titled “ACCESSING MEDIA CONTEXT INFORMATION USING CONTEXTUAL LINKS”, the content of which is hereby incorporated by reference. 
     BACKGROUND 
     As the popularity of digital media continues to gain momentum, more and more users are using computers as their primary source of media playback. This trend is, in part, driven by the superior versatility of a programmable computing device, as compared to a dedicated, single purpose electronic device, such as a DVD player. For example, a computer may be programmed to playback and view many types of media, such as audio, video, graphics, documents, web content, etc. The extensiveness and diversify of the network and program interfaces found in computers are often essential to gain access to online digital media content. The ability to access the Internet also allows users to obtain enhanced content related to the media from online content providers. 
     Unfortunately, a conventional computer is typically not as user-friendly as a typical electronic media device. To play media content, the user interface-offered by conventional computers often require more effort than pushing one or two buttons on a remote control. Also, users often have to use applications that are provided by third party online providers in order to receive the desire content offered by those providers. 
     A user-friendly way for third party providers to provide content to computer users without the need for a user to perform extensive setup and monitoring using the providers&#39; applications continue to elude those skilled in the art. 
    
    
     
       DESCRIPTION OF THE DRAWINGS 
       The present description will be better understood from the following detailed description read in light of the accompanying drawings, wherein: 
         FIG. 1  illustrates an example system for handling digital media content. 
         FIG. 2  illustrates an example implementation of a conditional link in the media center module shown in  FIG. 1 . 
         FIG. 3  illustrates an example implementation of a contextual link in the media center module shown in  FIG. 1 . 
         FIG. 4  shows an example process for incorporating a conditional link for navigating to a media application. 
         FIG. 5  shows an example process for incorporating contextual links for navigating to a media application. 
         FIG. 6  shows an exemplary computer device for implementing the described systems and methods. 
     
    
    
     Like reference numerals are used to designate like parts in the accompanying drawings. 
     DETAILED DESCRIPTION 
     The detailed description provided below in connection with the appended drawings is intended as a description of the present examples and is not intended to represent the only forms in which the present example may be constructed or utilized. The description sets forth the functions of the examples and the sequence of steps for constructing and operating the examples. However, the same or equivalent functions and sequences may be accomplished by different examples. 
     The systems and methods described herein are directed toward launching a third party application in a media center module using a conditional link. The media center module is configured to enable the third party application to register with the module and to associate a primary link that serves as the entry point for the application. The media center module also enables the third party application to provide a conditional link that serves as the entry point when a certain condition is met. Under normal circumstances, the media center module provides the primary link as the entry point for a user to launch the third party application. When the media center module receives a notification from the third party application to use the conditional link, the media center application causes the conditional link to be the entry point for the application. Thus, the use of conditional link enables a third party application to specify how the application is launched from the media center module under different conditions. 
       FIG. 1  illustrates an example system  100  for handling digital media content. The system  100  may include software modules in computing device  105  and servers  143 - 144 . Computing device  105  includes media center module  110  configured to provide an environment for applications to provide digital media content to computing device  105 . Media center module  110  is also configured to manage the applications and the digital media content. For example, media center module  110  may interact with third party applications  136 - 137 , which may be configured to communicate with third-party provider services  146 - 147  to provide digital media files  120  and other related information. 
     Media center module  110  may be implemented as an application or a component of the operating system for computing device  105 . An example of media center module  110  is WINDOW® XP Media Center Edition. As shown in  FIG. 1 , media center module  110  may include a graphical user interface  113 , link structure  115 , and registration manager  117 . 
     The functionalities and third party application associated with media center module  110  are typically organized with link structure  115 . Link structure  115  includes multiple links that point to local locations in computing device  105  for media content and applications, such as third party applications  136 - 137 . The links may also point to network locations in other devices, such as server  143 - 144 . Links included in link structure  115  are presented by graphical user interface  113  for selection and may serve as entry points for applications associated with media center module  110 . For example, the locations indicated by the links may be associated with data for launching applications that handle media content. Graphical user interface  113  is configured to enable a user to interact with media center module  110 . Typically, graphical user interface  113  organizes the functionalities of media center module  110  with links included in link structure  115 . 
     Registration manager  117  is configured to register applications with media center module  110 . For example, registration manger  117  may be configured to handle registration for third party applications that are installed on media center module  110 , such as third party applications  136 - 137 . In particular, third party applications  136 - 137  may have entry points that enable a user to access the applications from media center module  110 . The entry points are typically represented by links. Registration manager  117  is configured to incorporate these links into link structure  115 . Graphical user interface  113  may access link structure  115  to present the links to the user for accessing third party applications  136 - 137 . Typically, link structure  115  includes a primary link for each of the third party applications  136 - 137 . The primary link serves as the main entry point for the corresponding application. 
     Registration manager  117  may also include a conditional link for a third party application in link structure  115 . A conditional link points to a location that is different from the location associated with the primary link for the third party application. A conditional link is typically associated with a condition. When the condition exists, the conditional link replaces the primary link as the main entry point for the third party application. The location associated with the conditional link may serve as a unified place for aggregating asynchronous notifications about new content provided by the third party application. 
     For example, third party application  136  in media center module  110  may specify a conditional link that points to a page for accessing new content when they are available. Third party application  136  may receive the new content from third party provider services  146 . Third party application  136  may notify media center module  110  to use the conditional link as the main entry point when the new content has been downloaded. The media center module  110  may display a message in graphical user interface  113  about the new content. In this manner, a user may be informed of the new content without having to launch third party application  136 . Also, the user is automatically directed to a location for accessing the new content when the user selects to launch the third party application. In one embodiment, media center module  110  may include a page dedicated to new content notifications along with conditional links for the third party applications that provide the new content. 
     Digital media files  120  are digital media content managed by media center module  110 . Digital media files  120  may include any type of content, such as video files, audio files, documents, graphics, pictures, web pages, or the like. Media center module  110  may be configured to organize digital media files  120  with the context of the files, such as the artist, album, genre, producer, director, or the like. A user of digital media files  120  may desire to obtain more information about a particular file or find other media content similar to the file. Media center module  110  may be configured to allow third party applications to register as context handlers to provide information to the user in a particular context. For example, link structure  115  may include locations where contextual links associated with each particular context are stored. Media center module  110  may include links of the third party applications registered as context handlers in link structure  115  at locations associated with the registered context. 
     Media center module  110  may be configured to enable a user who desires contextual information to select and interact with context handlers. For example, if a user chooses a particular song in media center module  110  and selects to find other media content in the same context as the chosen song, media center module  110  may direct the user to the handler for that context. Media center module  110  may provide contextual information of the chosen song to the context handler so that the handler may provide media content related to the context to the user. For example, media center module  110  may provide the contextual information as a HTML Post message to the third party application that is registered to be the context handler. 
       FIG. 2  illustrates an example implementation of a conditional link in media center module  110  shown in  FIG. 1 . In this example, a third party application named More Music is registered with media center module  110 . As shown in  FIG. 2 , link structure  115  includes entries that are associated with More Music. For illustrative purpose, only a few entries in link structure  115  are shown. A third party application may registered with media center module  110  in any manner, such as by communication through an API offered by media center module  110  or by providing a setup file with setup information. 
     Typically, each application registered with media center module  110  is identified with a global universal identification (GUID) in link structure  115 . In  FIG. 2 , More Music is identified by “appID A”. Link structure  115  may also include links  211  associated with More Music. Each of the links  211  may also be identified with a GUID. In this example, two links are included for More Music and are identified as “linkID A” and “linkID B”. Each of the links points to a specific location from which program codes associated with More Music can be retrieved for launching the application. The locations associated with the links may be a local location, such as a local file, or a network location, such as an Internet address. In this example, “linkID A” is associated with a local file provided by More Music. The “linkID B” is associated with a web page provided by a More Music network server. 
     Link structure  115  may also include entry points  213  for More Music. These entry points are provided by More Music to media center module  110  during registration. As shown in  FIG. 2 , a main entry point and a conditional entry point are included for More Music. The main entry point provides program access to More Music in media center module  110  under normal circumstances. The conditional entry point is an alternative access location for More Music under a certain condition. Typically, media center module  110  provides program access to a user using the main entry point. The application associated with More Music may determine that the certain condition exists and may notify media center module  110  to use the conditional entry point for program access to More Music. 
     In  FIG. 2 , example screens of graphical user interface  113  for media center module  110  are shown to illustrate the use of a conditional link. Screen  203  shows a main music page provided by graphical user interface  113 . Screen  203  includes multiple entry points for launching third party music programs in media center module  110 . One of the entry points is entry point  207  for More Music. The entry point corresponds to the entry points  213  in link structure  115 . A user may select entry point  207  to launch an application associated with More Music. Under normal circumstances, media center module  110  is configured to launch More Music with the main entry point associated with “linkID A”. In response to the user selection, the graphical user interface  113  displays the main launch screen  204  for More Music. However, if media center module  110  receives a notification from the More Music application to implement the conditional entry point, media center module would launch More Music with the conditional entry point specified in link structure  115 . In this example, the conditional entry point is implemented when there is new music content offered by More Music. In response to the user selecting to launch More Music, the graphical user interface  113  displays the new music screen  205 . 
       FIG. 3  illustrates an example implementation of a contextual link in media center module  110  shown in  FIG. 1 . The example in  FIG. 3  is implemented when the third party application for More Music is registered with media center module  110  and requests to be a context information handler. The data in link structure  115  associated with More Music includes a contextual link  307 , which is the entry point for the application for More Music. A third party application may register to be a handler for any context provided by media center module  110 . In this example, More Music registers to be a context handler for a context in music. Link structure  115  includes More Music&#39;s entry point link for the music genre context. Media center module  110  is thus configured to direct requests for information for music genre to contextual link  307  associated with More Music. 
     In  FIG. 3 , an example screen of graphical user interface  113  for media center module  110  is shown to illustrate the use of a contextual link. Screen  303  shows a music page provided by graphical user interface  113  to access music files that are managed by media center module  110 . The music files may be organized in accordance with contextual information, such as genre. In this example, screen  303  shows songs (e.g. music files) in the rock genre that are available for user selection. As shown in  FIG. 3 , song  310  has been selected. Graphical user interface  113  then provides menu  312  to enable the selection of actions available for song  310 . One of the selections includes action  314  for retrieving information in the current context of the rock genre. Since More Music registered to be the handler for music genre, the selection of this action causes contextual link  307  to be activated and the direction to a location associated with More Music. Media center module  110  is configured to provide the contextual information to More Music so that More Music can provide information associated with the current context. For example, media center module  110  may provide the contextual information as POST data in an HTTP request. In this example, the contextual information may include the information that the current context is the rock genre. More Music may include a page at the location specified by the contextual link with information related to the rock genre. 
     It is to be appreciated that a third party application may register to be a handler in multiple context. Also, the contextual information provided by the media center module to the registered third party applications may include any type of data about a media, such as genre, artist, song, album, or the like. 
       FIG. 4  shows an example process  400  for incorporating a conditional link for navigating to a media application. Process  400  may be used by a media center module to enable a third part application to provide a conditional entry point for the application. At block  403 , a primary link and a conditional link associated with an application are identified. The primary link serves as the main entry point for launching the third party application and the conditional link is the alternative entry point that is implemented under a certain condition. The links may be provided to the media center module when the third party application registers with the module. 
     At block  405 , the links are incorporated into a link structure associated with the media center module. The link structure includes entries for each application that has registered with the media center module. At block  407 , the entry point for the application in a graphical user interface provided by the media center module is associated with the primary link. Thus, a selection of the entry point will cause the media center module to direct to the location indicated by the primary link. 
     At block  409 , data is received from the application by the media center module. The application may provide any type of data to the media center module, such as media content and related information. The application may also provide a notification to the media center module to use a conditional link. For example, the application may be configured to provide some requested media content to the media center module. When the downloading of the media content has been completed, the application may notify the media center module to use the conditional link, which points to the location for accessing the newly downloaded media content. 
     At block  411 , a determination is made whether a notification to use conditional link is provided by the application. If not, process  400  goes to return block  421 . If a notification has been provided, process  400  goes to block  413  where the application entry point is associated with the conditional link. At decision block  415 , a determination is made whether the application entry point is selected. If not, process  400  goes to return block  421 . If the entry point has been selected, process  400  continues at block  417  where the media center module directs to the location indicated by the conditional link. At block  419 , the application entry point is associated back to the primary link. Process  400  goes to block  421  where the process is returned to perform other tasks. 
       FIG. 5  shows an example process  500  for incorporating contextual links for navigating to a media application. Process  500  may be used by a media center module to enable a third party application to provide information associated with a context. At block  502 , contextual links associated with an application are identified. Each contextual link is related to a specific context and serves as the entry point for the application. The contextual links may be provided to media center module when the application registers with the module as context information handler. 
     At block  504 , the contextual links are incorporated at locations in a link structure corresponding to the contexts of the contextual links. At block  506 , a selection of an item provided by the media center module is received. The item may include any media content, such as an audio file, a video file, a document, or the like. At block  508 , a selection to access information associated with the item is received. At block  510 , the context associated with the item is identified. At block  512 , a contextual link associated with the selected item is determined. At block  514 , the media center module directs to the location associated with the contextual link. The media center also provides data about the context to the location. For example, the data may be provided as POST data in an HTTP request to the location. 
     The example code below may be used by a media center module to provide an Application Program Interface (API) for a third party application to registered with the module. 
     
       
         
           
               
             
               
                   
               
             
            
               
                 MediaCenter.Registrar 
               
               
                   RegisterApplication(string appGuid, string name, 
               
               
                   string companyName); 
               
               
                   UnregisterApplication(string appGuid); 
               
               
                   RegisterLink(string linkGuid, string name, string description, 
               
               
                   string url, 
               
               
                 string startImageUrl, string thumbnailUrl, int capabilities, string appGuid); 
               
               
                   UnregisterLink(string linkGuid); 
               
               
                   AssociateLink(string linkGuid, string associationType, 
               
               
                   string category); 
               
               
                   DisassociateLink(string linkGuid, string associationType, 
               
               
                   string category); 
               
               
                   
               
            
           
         
       
     
     The example code below may be used by a third party application to interact with the API of the media center module shown above. 
     
       
         
           
               
             
               
                   
               
             
            
               
                 reg = MediaCenter.Registrar; 
               
               
                 string installDir = “file://c:\Program Files\FooBar Inc\MoreMusic”; 
               
               
                 // Registering an extensibility application: 
               
               
                 string myAppGuid = “{e9dc1cb5-5b17-4b21-bd66-5e0c2efe8175}”; 
               
               
                 reg.RegisterApplication(myAppGuid, “MoreMusic”, “FooBar, Inc.”); 
               
               
                 // Registering a link: 
               
               
                 string myLinkGuid = “{c1bc45e2-c4d8-4226-a44f-a2bf38532618}”; 
               
               
                 reg.RegisterLink( 
               
               
                   myLinkGuid, 
               
               
                   “MoreMusic”, 
               
               
                   “MoreMusic is your one-stop shop for all music, all the time.”, 
               
               
                   installDir + “home.htm”, 
               
               
                   installDir + “startimage.png”, 
               
               
                   installDir + “thumbnail.png”, 
               
               
                   0, 
               
               
                   myAppGuid); 
               
               
                 // Associating a link with various places within Media Center: 
               
               
                 reg.AssociateLink(myLinkGuid, “Programs”, “”); 
               
               
                 reg.AssociateLink(myLinkGuid, “MoreWithThis”, 
               
               
                 “Artist,Album,Song,Genre”); 
               
               
                 reg.AssociateLink(myLinkGuid, “Services”, “Music,Radio”); 
               
               
                 // Registering and associating a “new for me” link: 
               
               
                 string myNewLinkGuid = “{7abeaef5-2839-4c30-a8dd-a6168aa37db4}”; 
               
               
                 reg.RegisterLink( 
               
               
                   myNewLinkGuid, 
               
               
                   “New albums available from MoreMusic”, 
               
               
                   “MoreMusic has some new albums you might be interested in 
               
               
                 purchasing.”, 
               
               
                   installDir + “newforme.htm”, 
               
               
                   installDir + “startimage.png”, 
               
               
                   installDir + “thumbnail.png”, 
               
               
                   0, 
               
               
                   myAppGuid); 
               
               
                 reg.AssociateLink(myNewLinkGuid, “NewForMe”, “”); 
               
               
                 // Removing a “new for me” link (unregisters and removes associations): 
               
               
                 reg.UnregisterLink(myNewLinkGuid); 
               
               
                 // Removing the whole application (unregisters app plus all its links and 
               
               
                 associations): 
               
               
                 reg.UnregisterApplication(myAppGuid); 
               
               
                   
               
            
           
         
       
     
     The example code below may be incorporated in an extensible markup language (XML) file that serves as input to the API shown above. 
     
       
         
           
               
               
             
               
                   
                   
               
             
            
               
                   
                 &lt;application 
               
               
                   
                   appGuid=”{e9dc1cb5-5b17-4b21-bd66-5e0c2efe8175}” 
               
               
                   
                   name=”MoreMusic” 
               
               
                   
                   companyName=”FooBar, Inc.”&gt; 
               
               
                   
                  &lt;link 
               
               
                   
                    linkGuid=”{c1bc45e2-c4d8-4226-a44f-a2bf38532618}” 
               
               
                   
                    name=”MoreMusic” 
               
               
                   
                    description=“MoreMusic is your one-stop 
               
               
                   
                    shop for all music, all the time.” 
               
               
                   
                    url=“.\home.html”; 
               
               
                   
                    startImageUrl=“.\startimage.png” 
               
               
                   
                    thumbnailUrl=“.\thumbnail.png” 
               
               
                   
                    capabilities=”0”&gt; 
               
               
                   
                   &lt;association type=”Programs” /&gt; 
               
               
                   
                   &lt;association type=”MoreWithThis” 
               
               
                   
                   category=“Artist,Album,Song,Genre” /&gt; 
               
               
                   
                   &lt;association type=”Services” 
               
               
                   
                   category=“Artist,Album,Song,Genre” /&gt; 
               
               
                   
                  &lt;/link&gt; 
               
               
                   
                  &lt;link&gt; 
               
               
                   
                    linkGuid=”{7abeaef5-2839-4c30-a8dd-a6168aa37db4}” 
               
               
                   
                    name=”New albums available from MoreMusic” 
               
               
                   
                    description=“MoreMusic has some new albums you might be 
               
               
                   
                 interested in purchasing.” 
               
               
                   
                    url=“.\newforme.html”; 
               
               
                   
                    startImageUrl=“.\MoreMusic\startimage.png” 
               
               
                   
                    thumbnailUrl=“.\MoreMusic\thumbnail.png” 
               
               
                   
                    capabilities=”0”&gt; 
               
               
                   
                   &lt;association type=”NewForMe” /&gt; 
               
               
                   
                  &lt;/link&gt; 
               
               
                   
                 &lt;/application&gt; 
               
               
                   
                   
               
            
           
         
       
     
       FIG. 6  shows an exemplary computer device  600  for implementing the described systems and methods. In its most basic configuration, computing device  600  typically includes at least one central processing unit (CPU)  605  and memory  610 . 
     Depending on the exact configuration and type of computing device, memory  610  may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.) or some combination of the two. Additionally, computing device  600  may also have additional features/functionality. For example, computing device  600  may include multiple CPU&#39;s. The described methods may be executed in any manner by any processing unit in computing device  600 . For example, the described process may be executed by both multiple CPU&#39;s in parallel. 
     Computing device  600  may also include additional storage (removable and/or non-removable) including, but not limited to, magnetic or optical disks or tape. Such additional storage is illustrated in  FIG. 6  by storage  615 . Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Memory  610  and storage  615  are all examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computing device  600 . Any such computer storage media may be part of computing device  600 . 
     Computing device  600  may also contain communications device(s)  640  that allow the device to communicate with other devices. Communications device(s)  640  is an example of communication media. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer-readable media as used herein includes both computer storage media and communication media. The described methods may be encoded in any computer-readable media in any form, such as data, computer-executable instructions, and the like. 
     Computing device  600  may also have input device(s)  635  such as keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s)  630  such as a display, speakers, printer, etc. may also be included. All these devices are well know in the art and need not be discussed at length. 
     While the preferred embodiment of the invention has been illustrated and described, it will be appreciated that various changes can be made therein without departing from the spirit and scope of the invention.