Inter-device transfer of resources used to perform application update cycles
By using the download manager in the computing device to negotiate resource transmission with neighboring devices, the problem that computing devices are difficult to meet the network requirements of remote systems is solved, and the timeliness and security of application updates is achieved, while reducing the dependence on high-bandwidth networks .
Patent Information
- Application Number
- CN201880092201.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2018-04-18
- Publication Date
- 2025-02-18
- Estimated Expiration
- 2038-08-28
AI Technical Summary
Some computing devices are unable to meet the high bandwidth and reliable network connection requirements of remote systems, and find it difficult to receive application updates in a timely manner.
By introducing a download manager in the computing device, the manager can search for adjacent computing devices to negotiate and transmit application resources that meet application update requirements, avoiding directly establishing high bandwidth connections with remote systems.
It realizes that computing devices complete application updates without relying on high-bandwidth networks, reduces dependence on cellular networks, saves power and costs, and improves application timeliness and security.
Smart Images

Figure CN112020704B_ABST
Abstract
Description
Background Art
[0001] Some computing devices update applications by communicating with a remote system that supports an application market, store, or other such repository. A developer can upload an application update to the remote system. In response, the remote system can push the application update to a computing device that is executing an older version of the application that needs to be updated.
[0002] At least in part to ensure the integrity of application downloads and updates, and for other reasons (e.g., to save time using cellular or other types of network-implemented Internet services that require user fees (money that might otherwise be incurred), some remote devices may not be able to communicate with the target computing device until the target computing device is able to communicate via a free or other relatively inexpensive, reliable, high-bandwidth connection to communicate with the remote system. However, some computing devices communicate almost exclusively via cellular or other less reliable or lower bandwidth connections that may not always meet the connectivity requirements imposed by such remote systems. As a result, computing devices that do not frequently maintain a network connection that meets the connectivity requirements of the remote system may not always receive application updates in a timely manner, if at all. Summary of the invention
[0003] In general, the technology of the present disclosure is directed to enabling the in-device transmission of application resources required by a device to perform local updates of applications executed at the device and to perform other operations that require additional data not yet stored on the device. As used herein, the term "application resources" refers to one or more libraries, expansion packs (e.g., map packs, translation or language packs, additional game challenges, game levels, etc.), source files, executable software packages, media content (e.g., audio or video files), other application information (e.g., news related content, promotions, advertising information), or other software components that are generally independent of the user (i.e., not user-specific) and are used during the installation, execution, or update of one or more executable applications or computing services. Instead of maintaining a connection with a remote system to obtain the application resources required to perform an application update, an example computing device executes a download manager that negotiates the transmission of application resources required to perform the update from other neighboring devices. For example, applications executed at the example computing device may register their resource requirements (e.g., libraries, source files, executable software packages, or other software components required to perform application updates) for corresponding update cycles with the download manager over time.
[0004] The download manager can search for other nearby computing devices that already have software components that can satisfy at least some of the registered resource requirements on behalf of the registered application. In response to identifying a nearby device that can satisfy at least one of the registered requirements, the example computing device can establish a direct communication link with the nearby device to transmit the software component that satisfies the at least one registered requirement to the example computing device. In response, the download manager executed at the computing device can notify the waiting application of the newly available resources, thereby enabling the waiting application to complete its application update without having to communicate directly with a remote computing system that supports an application market, application store, or other such application library set.
[0005] Throughout this disclosure, examples are described in which a computing device and / or computing system may analyze information associated with the computing device (e.g., application resource requirements, etc.) only if the computing device and / or computing system receives explicit permission from a user of the computing device to analyze the information. For example, in the case discussed below where a computing device and / or computing system may collect information related to available resources or resource requirements of an application executed at the computing device, a user may be provided with an opportunity to provide input to control whether a program or feature of the computing device (e.g., a download manager) may collect and utilize the information, and may further be provided with an opportunity to control what programs or features may or may not process the information. In addition, certain information may be pre-processed in one or more ways before it is transmitted, stored, or otherwise used by a computing device and / or computing system, such that personally identifiable information is removed. For example, before an example computing device transmits an available resource to a computing device in need, the example computing device may pre-process the available resource to ensure that user identification information embedded in the available resource is removed. Thus, a user may have control over whether information about the user is collected and, if collected, how such information may be used by a computing device and / or computing system.
[0006] In one example, the present disclosure is directed to a method, the method comprising broadcasting, by a computing device, an indication that the computing device is initiating an update cycle for one or more applications executed at the computing device; communicating, by the computing device, with a remote device that receives the indication that the computing device is initiating an update cycle, information related to at least one of: available resources of the computing device or resource requirements of the computing device; negotiating, by the computing device and the remote device, at least one of: transmission of at least some of the available resources of the computing device to the remote device to satisfy the resource requirements of the remote device; or transmission of at least some of the available resources of the remote device to the computing device to satisfy at least some of the resource requirements of the computing device; and establishing, by the computing device, a communication channel with the remote device to implement the transmission. The method further comprises, in response to implementing the transmission via the communication channel, completing, by the computing device, execution of the update cycle for one or more applications executed at the computing device.
[0007] In one example, the present disclosure is directed to a computing device, comprising means for broadcasting an indication that the computing device is initiating an update cycle for one or more applications executed at the computing device; means for communicating information related to at least one of the following with a remote device that receives the indication that the computing device is initiating an update cycle: the computing device's available resources or the computing device's resource requirements; means for negotiating with the remote device at least one of the following: transmission of at least some of the computing device's available resources to the remote device to satisfy the remote device's resource requirements; or transmission of at least some of the remote device's available resources to the computing device to satisfy at least some of the computing device's resource requirements; and means for establishing a communication channel with the remote device to implement the transmission. The device further includes means for completing execution of the update cycle for one or more applications executed at the computing device in response to implementing the transmission over the communication channel.
[0008] In one example, the present disclosure is directed to a computing device, the computing device comprising a communication unit; a memory configured to store instructions associated with a download manager; and at least one processor configured to execute instructions associated with the download manager to: broadcast, via the communication unit, an indication that the computing device is initiating an update cycle for one or more applications executed at the computing device; communicate, via the communication unit, with a remote device that receives the indication that the computing device is initiating an update cycle information related to at least one of: available resources of the computing device or resource requirements of the computing device; negotiate, via the communication unit, with the remote device at least one of: transmission of at least some of the available resources of the computing device to the remote device to satisfy the resource requirements of the remote device; or transmission of at least some of the available resources of the remote device to the computing device to satisfy at least some of the resource requirements of the computing device; establish a communication channel with the remote device to implement the transmission via the communication unit; and in response to implementing the transmission through the communication channel, complete execution of the update cycle of one or more applications executed at the computing device.
[0009] In one example, the present disclosure is directed to a computer-readable storage medium including instructions associated with a download manager of a remote device, the instructions, when executed, causing at least one processor of the remote device to: in response to receiving an indication that the computing device is initiating an update cycle for one or more applications executing at the computing device, communicate with the communication device information related to at least one of: available resources of the computing device or resource requirements of the computing device; negotiate with the computing device at least one of: transmission of at least some of the available resources of the computing device to the remote device to meet the resource requirements of the remote device; or transmission of at least some of the available resources of the remote device to the computing device to meet at least some of the resource requirements of the computing device; establish a communication channel with the computing device to implement the transmission; and implement the transmission through the communication channel so that the computing device can complete execution of the update cycle of one or more applications executing at the computing device.
[0010] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0011] Figure 1 is a conceptual diagram illustrating an example computing system configured to enable inter-device exchange of application resources required to perform an application update cycle in accordance with one or more aspects of the present disclosure.
[0012] Figure 2is a block diagram illustrating an example computing system configured to perform inter-device exchange of application resources required to perform an application update cycle in accordance with one or more aspects of the present disclosure.
[0013] Figure 3 is a conceptual diagram illustrating an example inter-device network configured to enable inter-device exchange of application resources required to perform an application update cycle in accordance with one or more aspects of the present disclosure.
[0014] Figure 4 is a flow diagram illustrating example operations performed by an example computing device configured to perform inter-device exchange of application resources required to perform an application update cycle in accordance with one or more aspects of the present disclosure. DETAILED DESCRIPTION
[0015] Figure 1 1 is a conceptual diagram illustrating an example computing system configured to enable inter-device exchange of application resources required to perform application update cycles in accordance with one or more aspects of the present disclosure. System 100 includes computing devices 110A to 110N (collectively referred to as "computing devices 110") and a remote computing system 160. Each of computing devices 110 and remote computing system 160 may communicate via network 130A. Computing devices 110A and 110B may further communicate via network 130B, and computing devices 110A and 110N may further communicate via network 130N.
[0016] Remote computing system 160 represents any suitable computing system (e.g., a desktop computer, laptop computer, mainframe, server, blade server, cloud computing system, or other type of remote computing system) capable of exchanging information via a network (such as network 130A), particularly as part of an application marketplace and application update service. Although illustrated as a single computing system, remote computing system 160 may be a single remote computing system or may include multiple remote computing systems.
[0017] Remote computing system 160 is configured to support an application market or library and provide computing device 110 with access to the application market or library. That is, remote computing system 160 may enable access to an application library via network 130A, from which computing devices 110A to 110N may download applications or application updates. For example, remote computing system 160 may enable computing device 110A to download an application installation package from remote computing system 160, which computing device 110A then executes locally on computing device 110A to install a local copy of the application.
[0018] In some examples, remote computing system 160 is configured to initiate application update cycles at devices accessing an application market or library supported by remote computing system 160. For example, remote computing system 160 may communicate with each computing device 110 to schedule a corresponding application update cycle at each computing device 110.
[0019] Network 130A represents a reliable, inexpensive, high-bandwidth network that meets the connection requirements established by remote computing system 160 for accessing the application library set of remote computing system 160. For example, network 130A may be a public or private network that facilitates data transfer between remote computing device 160 and computing device 110. Network 130A may include one or more network hubs, network switches, network routers, or any other network devices configured to establish a wired or wireless communication link (e.g., Ethernet) between two of computing system 160 and computing device 110, thereby enabling information exchange between computing system 160 and computing device 110. Computing system 160 and computing device 110 may exchange—i.e., transmit and receive—data across network 130A using any suitable communication technology.
[0020] Each computing device 110 represents any suitable computing device (e.g., a desktop computer, a laptop computer, a mobile device including mobile phones and tablet computers, a wearable device, or any other type of computing device) capable of exchanging information via network 130A to access a set of application libraries supported by remote computing system 160A. That is, computing device 110A may be a mobile phone configured to download application suite software from remote computing system 160.
[0021] Each computing device 110 includes one or more respective application resources 122A to 122N (collectively, "application resources 122"). Each application resource 122 represents one or more libraries, expansion packs (e.g., map packs, translation or language packs, additional game challenges, game levels, etc.), source files, executable software packages, media content (e.g., audio or video files), other application information (e.g., news-related content, promotions, advertising information), or other software components that are generally independent of the user (i.e., not user-specific) and are used during the installation, execution, or update of one or more executable applications or computing services.
[0022] Each computing device 110 further includes a respective resource transfer (RT) module 120A-120N (collectively, "RT modules 120") configured to maintain information regarding respective resources required to update applications or other respective application resource requirements of applications executed locally, and to negotiate the transfer of application resources 122 between computing devices 110 to satisfy the respective application resource requirements. For example, rather than establishing a network connection with a remote computing device 160 to obtain a particular update software package required to update a particular application executed at computing device 110A, RT module 120A may negotiate with RT modules 120B-120N to obtain the particular update software package directly from one of computing devices 110B-110N that previously obtained the update software package (e.g., from remote computing system 160). RT modules 120 may be implemented in hardware, software, firmware, or any combination thereof.
[0023] Each RT module 120 provides a registration scheme that enables applications executed at the corresponding computing device 110 to indicate resource requirements for their respective update cycles over time. For example, RT module 120A can maintain a resource list that indicates specific software components required by the application executed at computing device 110A to complete application updates. In some examples, the registration scheme further enables the application executed at the corresponding computing device 110 to indicate any available existing application resources that other applications that may be executed at other computing devices 110 can use to perform their respective updates. For example, RT module 120B can maintain a resource list that indicates that specific software components used by the application executed at computing device 110B to perform updates are available for transmission to other computing devices 110 so that other applications can perform application updates. In this way, the registration scheme enables each RT module 120 to keep track of the resource requirements of applications executing at the corresponding computing device 110 (and in some cases, the resources available to other computing devices 110 to meet their corresponding resource requirements), so that two RT modules 120 can negotiate the transfer of resources between the corresponding computing devices 110, thereby ultimately completing the update cycle without having to communicate with the remote computing device 160.
[0024] In operation, each computing device 110 initiates an update cycle for an application executed at the computing device 110. For example, the computing devices 110 may check for application updates at approximately the same predetermined time. The predetermined time may be established by the remote computing device 160, by factory equipment during initial programming, after an operating system update, or communicated to the computing device 110 in some other manner. In some examples, the computing device 110 may receive a corresponding instruction from a remote system such as the remote computing system 160 that causes the computing device 110 to initiate a corresponding update cycle. Another way that the computing device 110 may determine the time to initiate an update cycle may be to have "randomness" but still a determined number of times per day. For example, if one of the computing devices 110 is configured to initiate an update cycle at a certain number of times per day (e.g., twice per day, twelve times per day, once per hour, or any other appropriate interval), the computing device may divide each day into one or more update intervals (i.e., the time between each update cycle). One of the computing devices 110 may initiate the update cycle by randomly determining a specific time in the update interval to initiate the update cycle using a seed derived from the start time of the update interval. In some examples, one of computing devices 110 may be subject to a blackout period where update cycles are not allowed during each update docking period (e.g., approximately two minutes per half hour, so that one of computing devices 110 can prevent the update cycle from interfering with any other operations scheduled to be performed during the blackout period). In any case, once an update cycle is initiated, RT module 120 takes over the negotiation and exchange of application resources between computing devices 110 to complete their respective update cycles.
[0025] The computing device 110A may broadcast an indication that the computing device 110A is initiating an update cycle for one or more applications executing at the computing device 110A. For example, the RT module 120A may implement a device discovery process to identify any computing devices 110 within range in order to perform a device-to-device transfer of application resources required to complete an application update. The device discovery process may include the establishment of a personal area network (PAN), such as a PAN, in order to perform device discovery techniques. protocol or some other communication standard (e.g., Wi-Fi In other words, RT module 120A may cause computing device 110A to output information indicating that computing device 110A is ready to negotiate with any other computing devices 110 that are within range of computing device 110A and are also performing an update cycle. RT module 120A may cause computing device 110A to establish a communication session with each of computing devices 110B through 110N that respond to the broadcast, either sequentially or in parallel.
[0026] In the event that one of computing devices 110B-110N receives an indication that computing device 110A is initiating an update cycle (where “one of computing devices 110B-110N” may be referred to as “other device 110”), computing device 110A may communicate information related to at least one of: available resources of computing device 110A or resource requirements of computing device 110A. For example, in response to receiving an acknowledgement from RT module 120B that computing device 110B received a broadcast generated by RT module 120A, RT module 120A and RT module 120B may establish a connection between computing device 110A and RT module 120B. Figure 1 Similarly, in response to receiving a response from RT module 120N that computing device 110N received a broadcast generated by RT module 120A, RT module 120A and RT module 120N may establish a communication session with network 130B in order to share information related to available resources and resource requirements. Figure 1 130N) to share information about available resources and resource requirements. At least a portion of networks 130B and 130N may be implemented as a PAN, such as connection, or some other type of network connection (e.g., Wi-Fi infrared, near field communication, wireless area network – WAN and ultra-band).
[0027] The computing device 110A may negotiate the transmission of information with another one of the computing devices 110 so that at least one of the two devices 110, namely the computing device 110A and / or the other device 110, can complete their respective update cycles. Such information may include at least some of the available resources of the computing device 110A required to meet the corresponding resource requirements of the other device 110. In addition or alternatively, the information may include at least some of the available resources of another one of the computing devices 110 for meeting at least some of the resource requirements of the computing device 110A. For example, the RT module 120A and the RT module 120B may share their respective resource requirements to determine whether either one can be met through software component exchange. The RT module 120A may provide information related to the resource 122A to the RT module 120B, and the RT module 120A may receive information related to the resource 122B from the RT module 120B. The RT modules 120A and 120B may compare their respective resource requirements with the available resources of the other to determine whether to establish resource transmission. After or concurrently with negotiation with RT module 120B, RT module 120A and RT module 120N may also share their respective resource requirements to determine if either can be satisfied through software component exchange.
[0028] Communication device 110A may establish a communication channel with another computing device 110 to facilitate the transfer. For example, by utilizing network 130B or by establishing a separate dedicated communication channel with computing device 110B, RT module 120A and RT module 120B may facilitate the exchange of application resources so that either can complete its update cycle.
[0029] In some examples, the dedicated communication channel uses In some cases, the dedicated communication channel is implemented by Wi-Fi Infrared, near field communication, ultra-band, or some other type of network connection may be implemented. For example, computing device 110A and computing device 110N may use the same network 130B used during the negotiation or use different In other examples, the dedicated communication channel can be implemented as a local shared between the two devices. For example, computing device 110A may create a hotspot to which computing device 110N may connect to perform a transfer.
[0030] As an example, RT module 120B may generate a The hotspot creates a channel and provides access to the channel to the RT module 120A. The RT module 120B may then cause the computing device 110B to send a copy of the resource 122B that matches one of the registered resource requirements to the RT module 120A via the dedicated channel.
[0031] In any case, in response to implementing the transmission over the dedicated communication channel, the computing device 110A may complete execution of an update cycle for one or more applications executing at the computing device 110A. For example, after obtaining the resource 122B from the computing device 110B, the RT module 120A may notify any application that registered a need for the resource 122B that the resource 122B is now available locally (e.g., on the device) to complete the update.
[0032] In this way, an application executing at a computing device can obtain the application resources required to complete an update cycle without ever having to communicate directly with the remote computing system that originally provided the required resources. This benefit is particularly useful for applications that maintain a cellular data connection (e.g., 3G, 4G, 5G, LTE, or other type of cellular data connection) but rarely or always connect to a remote computing system. The computing device that performs the described inter-device resource transfer can ensure that applications executed on the device can and do remain up to date.
[0033] Thus, by enabling the device to automatically pre-acquire the resources required to perform the update from a trusted device located nearby to perform an application update rather than having to communicate with a remote server, the techniques of the present disclosure can improve the basic operation of a device that performs an application update. By utilizing a channel with a nearby device, the example computing device can obtain the required resources with less latency than if the device were to communicate with a remote server (e.g., via the Internet). In addition, the example computing device can obtain the required resources more regularly because the device never has to meet the network requirements imposed by the remote server in order to download application updates. Instead, resource transfers can be performed regardless of any network limitations of the receiving device itself. In addition, since the monetary costs associated with the use of cellular networks may be a concern for users, the described techniques can result in significant monetary cost savings by enabling the device to obtain the required application resources via a local peer-to-peer network established by nearby devices. Additionally, in addition to monetary cost savings, the described techniques can provide savings in power consumption compared to using a cellular connection or otherwise performing updates; for example, since cellular radios are typically slower than cellular networks, the cellular radios used to access the network may be more efficient than cellular networks. Cellular and some other types of radios consume more power, so enabling devices to update applications in a way that potentially avoids using a cellular connection can save battery and other energy consumption. By enabling devices to be kept up to date more regularly, the described techniques can ensure that applications executed locally are the most recently released versions, which can improve device security and functionality.
[0034] It should be understood that while the technology is described throughout this disclosure as being applicable to complete an "application update cycle" via inter-device transfers of application resources required to complete the application update cycle, there may be other use cases for performing inter-device transfers of application resources. For example, a map application executing at an example computing device such as computing device 110A may determine that the location of the computing device is outside of a geographic area supported by an existing map package for the map application. In response, the map application may register a request for one or more map packages associated with the device location using an example resource transfer module such as RT module 120A. When the computing device initiates an update cycle, the resource transfer module may negotiate with other computing devices to determine whether any are executing a corresponding map application that already has the required map package. In accordance with the described technology, the computing device may negotiate and implement transfers with the other neighboring devices to obtain a copy of the required map package.
[0035] A technique similar to the map application example above can be performed by a computing device executing a translation application that requires a new language pack for a different location. For example, the example computing device can negotiate with other neighboring devices and perform a transmission to obtain a copy of the required language pack.
[0036] As another example, a media application executed at an example computing device such as computing device 110A may determine that a certain media content (e.g., music, video, or other media content) may be requested by a user of the computing device at some point in the near future. For example, the media application may maintain information related to the user's music preferences, and in response to determining that a new album of a favorite artist indicated in the music preferences can be obtained from a music service and has not yet been downloaded to a song library locally stored in the device. In response, the media application may register a requirement for a copy of the songs in the new album with a resource transfer module. When the computing device initiates an update cycle, the computing device may negotiate with other computing devices to determine whether any neighboring device has obtained a local copy of the song. According to the described technology, the computing device may negotiate and implement a transmission with other neighboring devices to obtain a copy of the requested song.
[0037] Techniques similar to the above media application examples may be performed by computing devices executing other types of applications that have a need for new or updated resources. For example, the example computing device may negotiate and implement transmissions with other neighboring devices to obtain copies of news-related content that has been requested by a news application executed at the device. The example computing device may negotiate and implement transmissions with other neighboring devices to obtain copies of promotional or advertising content that has been requested by an application executed at the device.
[0038] Throughout this disclosure, examples are described in which a computing device and / or computing system may analyze information associated with the computing device (e.g., application resource requirements, etc.) only if the computing device and / or computing system receives explicit permission from a user of the computing device to analyze the information. For example, in the case discussed below where a computing device and / or computing system may collect information related to available resources or resource requirements of an application executed at the computing device, a user may be provided with an opportunity to provide input to control whether a program or feature of the computing device (e.g., a download manager) may collect and utilize the information, and may further be provided with an opportunity to control what programs or features may or may not process the information. In addition, certain information may be pre-processed in one or more ways before it is transmitted, stored, or otherwise used by a computing device and / or computing system, such that personally identifiable information is removed. For example, before an example computing device transmits an available resource to a computing device in need, the example computing device may pre-process the available resource to ensure that user identification information embedded in the available resource is removed. Thus, a user may have control over whether information about the user is collected and, if collected, how such information may be used by a computing device and / or computing system. These are only a few example use cases for the described technology; other use cases may exist for device-to-device transmission of application resources.
[0039] Figure 2 is a block diagram illustrating an example computing system configured to perform inter-device exchange of application resources required to perform an application update cycle in accordance with one or more aspects of the present disclosure. Figure 2 The computing device 210 is described below as Figure 1 An example of any one of the computing devices 110A to 110N. Figure 2 Only one particular example of computing device 210 is illustrated, and many other examples of computing device 210 may be used in other instances and may include a subset of components included in computing device 210 or include components not shown. Figure 2 Additional components shown in .
[0040] like Figure 2As shown in the example of FIG. 2 , computing device 210 includes: user interface component (UIC) 212, one or more processors 240, one or more communication units 242, one or more input components 244, one or more output components 246, and one or more storage components 248. UIC 212 includes display component 202 and presence-sensitive input component 204. Storage component 248 of computing device 210 includes instructions and other data associated with resource transfer (RT) module 220, one or more application modules 224, one or more communication modules 226, and resource data storage 222.
[0041] Communication channel 250 can interconnect each of components 212, 240, 242, 244, 246, and 248 for inter-component communication (physically, communicatively, and / or operationally). In some examples, communication channel 250 can include a system bus, a network connection, an inter-process communication data structure, or any other method for communicating data.
[0042] The one or more communication units 242 of the computing device 210 can communicate with external devices via one or more wired and / or wireless networks by transmitting and / or receiving network signals on the one or more networks. Examples of the communication unit 242 include a network interface chip (e.g., such as an Ethernet chip), an optical transceiver, a radio frequency transceiver, a GPS receiver, or any other type of device capable of sending and / or receiving information. Other examples of the communication unit 242 include a shortwave radio, a cellular data radio (e.g., 3G, 4G, 5G, LTE), radio, radios, other wireless networking radios, and controllers for Universal Serial Bus (USB), Peripheral Bus, or other bus types.
[0043] One or more input components 244 of computing device 210 can receive input. Examples of input are tactile, audio and video input. In one example, input component 242 of computing device 210 includes presence sensitive input device (e.g., touch sensitive screen, UID), mouse, keyboard, voice response system, video camera, microphone, or any other type of device for detecting input from human or machine. In some examples, input component 242 may include one or more sensor components, one or more position sensors, one or more temperature sensors, one or more motion sensors (e.g., accelerometer, gyroscope), one or more pressure sensors (e.g., barometer), one or more ambient illumination sensors, and one or more other sensors (e.g., microphone, camera, infrared proximity sensor, hygrometer, etc.). To list a few other non-limiting examples, other sensors may include heart rate sensor, magnetometer, glucose sensor, hygrometer sensor, olfactory sensor, compass sensor, pedometer sensor.
[0044] One or more output components 246 of computing device 210 can generate output. Examples of output are tactile, audio, and video output. In one example, output components 246 of computing device 210 include a sound or audio processor, a video or graphics processor, a speaker, a display, a vibration device, a liquid crystal display (LCD), a light emitting diode (LED) display, or any other type of device configured to generate output to a human or machine.
[0045] UIC 212 is configured to provide a user interface associated with computing device 210. In this way, UIC includes user input and user output functionality and can be implemented using various technologies. For example, UIC 212 can act as an input device using a presence-sensitive input screen, microphone technology, infrared sensor technology, or other input device technology used when receiving user input. UIC 212 can act as an output device configured to use any one or more display devices, speaker technology, tactile feedback technology, or other output device technology used when outputting information to the user to present output to the user. As an input device, UIC 212 detects input (e.g., touch and non-touch input) from the user. Examples of user input include gestures performed by the user (e.g., the user uses a finger or stylus to touch, indicate, and / or sweep at one or more locations of UIC 212 or its vicinity). As an output device, UIC 212 presents information (e.g., auditory, visual, and / or tactile information) to the user in the form of auditory, visual, or tactile feedback.
[0046] One or more processors 240 may implement functionality and / or execute instructions associated with computing device 210. Examples of processor 240 include application processors, graphics processors, communication processors, special-purpose processors, display controllers, bus controllers, auxiliary processors, sensor hubs, and any other hardware configured to act as a processor, processing unit, processing component, or processing device.
[0047] The software portions of the modules 220, 224, and 226 may be operable by the processor 240 to perform various actions, operations, or functions of the computing device 210. For example, the processor 240 of the computing device 210 may retrieve and execute instructions stored by the storage component 248 that cause the processor 240 to perform operations attributed to the modules 220, 224, and 226. The instructions, when executed by the processor 240, may cause the computing device 210 to access or store information within the storage component 248, such as the resource data store 222.
[0048] One or more storage components 248 within computing device 210 may store information for processing during operation of computing device 210 (e.g., computing device 210 may store data that is accessed or otherwise associated with modules 220, 224, and 226 during execution at computing device 210). In some examples, storage component 248 is temporary storage, meaning that the primary purpose of storage component 248 is not long-term storage. Storage component 248 on computing device 210 may be configured as volatile memory for short-term storage of information, so that stored contents are not retained when the computer is shut down. Examples of volatile memory include random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), and other forms of volatile memory known in the art.
[0049] In some examples, storage component 248 also includes one or more computer-readable storage media. In some examples, storage component 248 includes one or more non-transitory computer-readable storage media. Storage component 248 can be configured to store a larger amount of information than volatile memory is usually stored. Storage component 248 can be further configured as a non-volatile memory space for long-term storage of information, and retain information after the power-on / power-off cycle. Examples of non-volatile memory include hard disks, optical disks, floppy disks, flash memory, or electrically programmable memory (EPROM) or electrically erasable programmable memory (EEPROM). Storage component 248 can store instructions and / or information (e.g., data) associated with modules 220, 224, and 226. Storage component 248 may include a memory configured to store data or other information associated with modules 220, 224, and 226.
[0050] Application modules 224 represent any application executed at computing device 210. Examples of application modules 224 include: mapping or navigation software, media players, messaging clients, social media clients, calendars, email clients, games, electronic assistants, developer tools, utility software, or any other type of executable software that can run on a computing device. Computing device 210 may run from, for example, Figure 1 At least some of the application modules 224 may be downloaded from a remote computing system 160 of the remote computing system. As described in more detail below, at least some of the application modules 224 may access a resource data store 222. The resource data store 222 may contain information used by one or more of the application modules 224 to perform functions, such as updating to a newer version of software.
[0051] The communication module 226 works with the communication unit 242 to handle the communication between the computing device 210 and other computing devices. As an example, the communication module 226 can control the communication unit 242 The radio can be used, for example, on behalf of the RT module 220 to find out whether any other neighboring devices are initiating an application update cycle. As another example, the communication module 226 can control the communication unit 242 to The radio may establish a communication channel, for example, on behalf of the RT module 220 for transferring application resources between the computing device 210 and neighboring devices during an application update cycle.
[0052] RT module 220 is Figure 1 For ease of description, the RT module 220 is an example of an RT module 120. Figure 2 2 is shown as having four main functions: maintaining a resource list, providing a registration interface, negotiating for resources, and transferring resources. However, the RT module 220 may include additional or fewer main functions in other examples.
[0053] The RT module 220 maintains a resource list of any resources required by any application module 224, for example, to complete an update. Although described as a "list", the resource list maintained by the RT module 220 can be implemented as any type of data structure that enables efficient access and modification of the grouping of the mentioned application resources and requirements. In some examples, the resource list can indicate which one or some of the application modules 224 requested a particular resource, and whether the particular resource has been obtained and stored in the resource data store 222. The RT module 220 can update the resource list over time as resource availability and the needs of the computing device 210 change.
[0054] The RT module 220 provides an application programming interface (API) from which one or more of the application modules 224 can register available resources and resource requirements. For example, the RT module 220 can receive information indicating that one of the application modules 224 requires resources A, B, C, and D to complete an update via the registration API. The RT module 220 can update the resource list to indicate the requirements for resources A, B, C, and D. Subsequently, when the RT module 220 obtains the required resources on the list, the RT module 220 can update the resource list to indicate when resources A, B, C, and D become available. The RT module 220 can return an indication of where each of resources A, B, C, and D is located (e.g., within the resource data store 222) via the API, thereby enabling the one of the application modules 224 that registers with the RT module 220 to complete its update.
[0055] The RT module 220 negotiates with the remote device for the exchange of application resources to meet the application resource requirements of each other. For example, the RT module 220 can instruct the communication module 226 to initiate The discovery process is to identify any nearby remote devices that initiate an update cycle at the same time as the computing device 210 initiates the update cycle. For example, as part of the discovery process, the RT module 220 can cause the communication module 226 to communicate with the computing device 210 via a communication unit 242. Radio broadcast Wireless communication signals.
[0056] The RT module 220 can be (or other short-range communication protocols) to communicate with each remote device identified during the discovery process to determine whether the computing device 210 can contribute any available resources from the resource data store 222 in exchange for receiving at least some of the requested resources that have been registered by one or more application modules 224. For example, the RT module 220 can negotiate with two or more remote devices to find a suitable combination of remote devices that can provide application resources A, B, and C, all of which are indicated as being requested in the resource list of the RT module 220. The RT module 220 can contribute resource D as available to any remote device in need.
[0057] In some examples, RT module 220 predefines a protocol for transferring resources between computing device 210 and other remote devices. That is, for each transfer of resources, RT module 220 may follow a specific set of requirements or instructions that have been previously established for RT module 220 and other remote devices. In some examples, RT module 220 (e.g., via Part of the negotiation performed by the computing device 210 and the remote device includes negotiating how to transfer resources between the computing device 210 and the remote device.
[0058] For example, the RT module 220 can negotiate a protocol for the transmission, such as specifying: how the resources are to be transmitted (e.g., simultaneously - receiving each of A, B, and C while outputting D, sequentially - sending and receiving a single resource at a time, some at a time - receiving some of A, B, and C at the same time or at different times as outputting D), which party to the transmission will control the transmission (e.g., the requesting application will directly exchange data, the RT module 220 will be responsible for the transmission, and the remote device that is a party to the transmission will control the transmission), the data block size for the transmission, the transmission rate, and other characteristics of the transmission. In any case, as a result of the negotiation, the RT module 220 determines which resources are to be transmitted out, which resources are to be transmitted in the near future, and details about how the parties to the transmission have agreed to implement the transmission.
[0059] RT module 220 transmits application resources to and from the remote device to meet the application resource requirements of each other. That is, once RT module 220 determines which resources to transmit to the remote device and which resources to receive from the remote device, RT module 220 can establish a communication channel between computing device 210 and the remote device that meets the transmission requirements previously negotiated by RT module 220. For example, the data flow can utilize a dedicated channel that can be generated by computing device 210. The hotspot accesses and contributes to the remote device that will be part of the resource transmission. In some examples, the dedicated communication channel is established as a data stream that exists directly between the requesting applications, so that two or more requesting applications control how the resources are transmitted on the data stream (e.g., simultaneously, sequentially, one at a time, multiple at a time, etc.). In other examples, the RT module 220 controls how the resources are transmitted on the data stream in conjunction with or independently of the corresponding RT module executed at the remote device.
[0060] Figure 3 is a conceptual diagram illustrating an example inter-device network configured to enable inter-device exchange of application resources required to perform an application update cycle in accordance with one or more aspects of the present disclosure. Figure 3 The system 300 is hereinafter referred to as Figure 1 An example of a system 100 is described. Figure 3 Only one particular example of system 300 is illustrated, but many other examples of system 300 may be used in other instances and may include subsets of components included in system 300 or may include components not included in system 300. Figure 3 Additional components shown in .
[0061] System 300 includes computing devices 310A, 310B, and 310C (collectively, “computing devices 310”). Each computing device 310 is an example of computing device 210 or any computing device 110, and therefore includes a corresponding resource transfer (RT) module 320A, 320B, or 320C (collectively, “RT modules 320”) and a corresponding resource data store 322A, 322B, or 322C (collectively, “resources 322”).
[0062] Each RT module 320 maintains a corresponding resource list 314A, 314B, or 314C (collectively, "resource lists 314"). That is, one or more corresponding applications executing at each computing device 310 can register one or more application resource requirements with a corresponding one of the RT modules 320. Each RT module 320 can update a corresponding one of the resource lists 314 when the corresponding resource requirements and availability change.
[0063] exist Figure 3 In the example of FIG. 3 , one or more applications executing at computing device 310A have indicated to RT module 320A a need for resources A, B, and C. RT module 320A may have previously acquired resource D. Therefore, RT module 320A may maintain Figure 3 310A to indicate the requirements for resources A, B, and C and the availability of resource D. In other words, the RT module 310A can determine the corresponding resource requirements of one or more applications executing at the computing device 310A, and by aggregating all of the corresponding resource requirements of the one or more applications executing at the computing device, the RT module 320A can determine the total resource requirements of the computing device 310A. That is, the RT module 320A can remove redundant resource requirements or redundant available resources that have been registered by the applications executing at the computing device 310A to determine a combined list of all available and required resources of the computing device 310A.
[0064] With respect to computing devices 310B and 310C, one or more respective applications executing at computing devices 310B and 310C may have previously registered their resource requirements, and RT modules 320B and 320C may track the respective available resources. Figure 3 The resource list 314B shown in FIG. 314B indicates the demand for resource C and the availability of resources A, B, and D. The RT module 320C can then maintain the following: Figure 3 Resource list 314C is shown in FIG. 1 to indicate demand for resources A, B, and D and the availability of resource C.
[0065] In operation, each computing device 310 may initiate an update cycle for one or more respective applications at a scheduled or substantially the same predetermined time. Each computing device 310 may broadcast a respective indication that the computing device 310 is initiating an update cycle for one or more applications executing at the computing device 310.
[0066] In response to outputting an indication that computing device 310A is initiating an update cycle, computing device 310 may communicate with each of computing devices 310B and 310C via communication links 332A and 332B, respectively. Likewise, computing devices 310B and 310C may further communicate via link 332C in response to either computing device 310B or 310C initiating a respective update cycle. Each of communication links 332A, 332B, and 332C (collectively, “links 332”) may include A communication session or other short range communication session suitable for exchanging information between two of computing devices 310 in order to exchange information during negotiation of a resource transfer.
[0067] Via link 332, computing devices 310 may share the respective resource requirements and availability of each device 310. For example, RT module 320A may notify RT module 320B of the available resources and resource requirements indicated in resource list 314A via link 332A, and vice versa. RT module 320A may notify RT module 320C of the available resources and resource requirements indicated in resource list 314A via link 332B, and vice versa. RT module 320B may notify RT module 320B of the available resources and resource requirements indicated in resource list 314A via link 332C, and vice versa.
[0068] While communicating with RT module 320C of computing device 310C via link 332B, RT module 320A may determine whether any application executing at computing device 310A has a corresponding available resource that satisfies at least one of the resource requirements indicated in resource list 314C. Figure 3 In the example of , RT module 320A may determine that resource D is an available resource that satisfies at least one resource requirement of computing device 310C. RT module 320A may further determine that RT module 320C may provide resource C to RT module 320A to satisfy the resource requirement of computing device 310A.
[0069] While communicating with RT module 320B of computing device 310B via link 332A, RT module 320A may determine whether any application executing at computing device 310A has a corresponding available resource that satisfies at least one of the resource requirements indicated in resource list 314B. Figure 3In the example of , RT module 320A may determine that computing device 310A cannot satisfy any resource requirements of computing device 310B. However, RT module 320A may determine that resources A and B can be obtained from computing device 310B to satisfy at least one resource requirement of computing device 310A.
[0070] Finally, based on communication with RT module 320C via link 332C, RT module 320B may determine whether any application executing at computing device 310B has a corresponding available resource that satisfies at least one of the resource requirements indicated in resource list 314C. Likewise, RT module 320C may determine whether any application executing at computing device 310C has a corresponding available resource that satisfies at least one of the resource requirements indicated in resource list 314B. Figure 3 In the example of , RT module 320B may determine that resource C is a resource available from computing device 310C that satisfies at least one resource requirement of computing device 310B. RT module 320C may determine that resources A and B are available from computing device 310B to satisfy at least one resource requirement of computing device 310C.
[0071] After negotiation between RT modules 320, each computing device 310 may establish a corresponding dedicated communication channel for implementing corresponding resource transfer. For example, in response to negotiation with RT module 320B, RT module 320A may cause computing device 310A to generate The hotspot 330A and grants computing device 310B access to the hotspot 330A so that computing device 310A can receive resources A and B from computing device 310B. RT module 320A can communicate with RT module 320B to enable one or more applications executing at computing device 310A to obtain the required resources A and B.
[0072] Simultaneously with, before, or after the resources are transferred from computing device 310B to computing device 310A, RT module 320A may cause computing device 310A to grant computing device 310C access to hotspot 330A so that computing device 310A may receive resource C from computing device 310C. RT module 320A may communicate with RT module 320C to cause one or more applications executing at computing device 310A to obtain the requested resource C. As a result of obtaining the requested resources A, B, and C, RT module 320A may have satisfied all resource requirements of the applications executing at computing device 310A so that computing device 310A may complete execution of an update cycle for computing device 310A.
[0073] Similarly, in response to the negotiation with RT module 320B, RT module 320C may cause computing device 310C to generate The hotspot 330C and permits the computing device 310B to access the hotspot 330C so that the computing device 310C can receive resources A and B from the computing device 310B. The RT module 320C can communicate with the RT module 320B so that one or more applications executing at the computing device 310C obtain the required resources A and B via the hotspot 330C.
[0074] Simultaneously with, before, or after the resources are transferred from computing device 310B to computing device 310C, RT module 320C may cause computing device 310C to grant computing device 310A access to hotspot 330C so that computing device 310C may receive resource D from computing device 310A. RT module 320C may communicate with RT module 320A to cause one or more applications executing at computing device 310C to obtain the requested resource D. As a result of obtaining the requested resources A, B, and D, RT module 320C may have satisfied all resource requirements of the applications executing at computing device 310C so that computing device 310C may complete execution of an update cycle for computing device 310C.
[0075] In response to the negotiation with RT module 320C, RT module 320B may cause computing device 310B to generate The hotspot 330B is accessed by the computing device 310C and the computing device 310C is granted access to the hotspot 330B, so that the computing device 310C can receive the resource C from the computing device 310B. The RT module 320B can communicate with the RT module 320C so that one or more applications executing at the computing device 310B obtain the required resource C via the hotspot 330B. As a result of obtaining the required resource C, the RT module 320B may have satisfied all resource requirements of the applications executing at the computing device 310B, so that the computing device 310B can complete the execution of the update cycle of the computing device 310B.
[0076] By automatically leveraging a population of proximate devices to distribute application resources and application content through direct, device-to-device transfers, the described techniques can reduce the reliance of those computing devices on large-scale data networks or connections to application libraries. In this way, computing devices such as computing device 310 are more likely to automatically execute updated and secure applications without necessarily obtaining explicit user input.
[0077] In some examples, the described techniques can be used to share application resources with a particular "closed group" of computing devices and / or devices that are in a particular context (e.g., time, date, location, temperature, etc.) that are considered part of a "closed group" while being in a particular location. Consider an example where a host computing device can be configured to cause application resources to be transferred to another device in response to the device being in a particular location or after having previously registered a need for application resources from the host device with a corresponding RT module.
[0078] For example, a host device at an airport associated with an airline may wish to distribute a certain set of application resources when a passenger's mobile device is near a boarding gate or other locations monitored by the host device. The host can enable the passenger's mobile device to pre-register with their corresponding RT modules for future needs of application resources from the host device (e.g., in response to using airline applications to purchase tickets or check-in for flights). For example, before or during a flight, an airline application executed at a mobile device can pre-register with a corresponding RT module executed at the mobile device to configure the mobile device to obtain the application resources required by the airline application so as to improve the user experience when the passenger interacts with the airline application. The application resources may include airport maps, airline information, videos, games, photos, other in-flight entertainment, food and beverage menus, or other information. In this way, an airline or other host device can ensure that a closed group of devices obtains application resources required for a specific situation. The example of the above airline is only an example in the "closed group" application resource distribution example, and there are other examples.
[0079] Figure 4 4 is a flowchart illustrating example operations performed by an example computing device configured to perform inter-device exchange of application resources required to perform an application update cycle in accordance with one or more aspects of the present disclosure. Operations 400-470 may be performed by a computing device such as any of computing devices 110, 210, and 310, and may be performed in different Figure 4 The order shown is executed. For ease of description, Figure 2 In the context of computing device 210 Figure 4 Give a description.
[0080] like Figure 4As shown, in operation, computing device 210 can obtain user consent for RT module 220 to communicate with other devices to obtain resources for completing an application update cycle (400). For example, in order to protect user privacy and ensure that the user maintains control of their data, RT module 220 can cause UIC 212 to present a user interface from which the user of computing device 210 can decide whether to provide consent for inter-device transmission of application resources. Via the user interface, the user can provide explicit input to opt in or opt out of inter-device transmission of application resources. In the absence of explicit user consent, RT module 220 avoids negotiating with other devices to obtain resources to satisfy the update cycle.
[0081] After obtaining user consent (400), computing device 210 can broadcast an indication that an update cycle for one or more applications is being initiated (410). For example, at a random, predetermined, or scheduled time, RT module 220 can contact communication module 226 to identify any neighboring devices that have or need application resources.
[0082] The communication device 210 may determine one or more remote devices that received the broadcasted indication and want to negotiate resource transfer (420). For example, as a result of the broadcast during operation 410, the RT module 220 may determine a list of one or more remote devices that are available and willing to negotiate.
[0083] The computing device 210 may communicate information related to at least one of: available resources of the computing device 210 or resource requirements of the computing device 210 with one or more remote devices that received the indication that the computing device 210 is initiating an update cycle (430). For example, the RT module 220 may share the registered resource requirements and the list of available resources with each remote device identified in the list of remote devices generated by the RT module 220 during operation 220. In return, the RT module 220 may receive the registered resource requirements and the list of available resources from each remote device. The RT module 220 may identify any matches between available resources of the computing device 210 and the resource requirements of the remote devices, and any matches between available resources of the remote devices and the resource requirements of the computing device 210. The communication of resource requirements and availability between the computing device 210 and the one or more remote devices may be performed using methods such as This is done using a short-range communications protocol, which may be the same or different than the protocol used to broadcast the indication.
[0084] The computing device 210 may negotiate resource transfers between remote devices to satisfy resource requirements of the remote device and / or computing device 210 (440). For example, based on the match, the RT module 220 and the remote device may negotiate and perform a transfer of resources. The RT module 220 may perform resource negotiation and transfers with a single remote device at a time. Alternatively, the RT module 220 may perform resource negotiation and transfers with multiple remote devices simultaneously. For example, the computing device 210 may perform operations 420-470 for a single remote device at a time, or may perform operations 420-470 to negotiate and transfer resources with multiple remote devices simultaneously. The negotiation may use, for example, This is done using a short-range communications protocol, which may be the same or different than the protocol used to broadcast the indication.
[0085] To speed up subsequent transmission of available resources from multiple remote devices, the RT module 220 may negotiate with two or more of the multiple remote devices for partial transmission of a particular available resource. In other words, if the RT module 220 requires resource A, and resource A is available from a first remote device and is also available from a second remote device, the RT module 220 may negotiate for transmission of a portion of resource A from the first remote device, and may further negotiate for transmission of any remaining portion of resource A from the second remote device. The RT module 220 may cause the partial transmission of available resources to proceed simultaneously so that all available resources are obtained more quickly; or the RT module 220 may cause the partial transmission of available resources to proceed sequentially to reduce complexity.
[0086] Computing device 210 may (optionally) establish a communication channel for implementing the transmission (450). For example, RT module 220 may cause computing device 210 to establish a local hotspot to facilitate one or more dedicated communication channels required to implement one or more transmissions. RT module 220 can share a single hotspot with multiple remote devices. That is, RT module 220 can use The hotspot creates a dedicated communication channel to stream resources between the computing device 210 and the first remote device; and the RT module 220 can use the same The hotspot creates an additional communication channel to stream resources between computing device 210 and other remote devices. The communication channel is only one example of a dedicated communication channel for implementing resource transfer. Other types of communication channels may be used in other examples.
[0087] Operation 450 Figure 4 is shown as Figure 4In some cases, the two computing devices may implement the transmission of the application resources via the same communication channel used to negotiate the transmission. In other words, the RT module 220 of the computing device 210 may use the same communication channel used to negotiate the transmission during operation 430. or other such connection to transfer resources with a remote device.
[0088] In some examples, a computing device that sends an application resource during a transmission with another device can establish a communication channel for implementing the transmission. However, in other examples, a computing device that receives an application resource during a transmission with another device can also establish a communication channel for implementing the transmission. In other words, establishing a communication channel for the transmission of an application resource may not depend on which device (if not both) sends or receives the resource during the transmission. Either device in the transmission can establish a communication channel for implementing the transmission.
[0089] The computing device 210 may implement the transmission (460). For example, the RT module 220 may cause the computing device 210 to send at least some of the available resources of the computing device 210 to the remote device via a dedicated communication channel to satisfy the resource requirements of the remote device. Additionally or alternatively, the RT module 220 may cause the computing device 210 to receive at least some of the available resources of the remote device from the remote device to the computing device 210 via a dedicated communication channel to satisfy at least some of the resource requirements of the computing device 210. For example, during the above-described negotiation between the RT module 220 and a corresponding RT module executing at the remote device, the RT module 220 may establish a transmission plan that includes the computing device 210 sending the available resource D to the remote device in exchange for the requested resource A. The RT module 220 may cause the computing device 210 to stream the resource D to the remote device while also causing the computing device 210 to stream the resource A from the remote device. In some cases, the actual transmission of resources between the two devices is performed between the requesting applications executing at the two devices. For example, one or more of the application modules 224 that registered a need for resource A can communicate directly with an application executing at a remote device that owns resource A to implement the transfer. Similarly, one of the application modules 224 that owns resource D can communicate directly with an application executing at a remote device that needs resource D to implement the transfer.
[0090] In any case, in response to performing one or more resource transfers via the dedicated communication channel, computing device 210 can complete execution of an update cycle for one or more applications executing at the computing device 470. For example, after the transfer, once the resource is made available after the transfer, RT module 220 can provide access to the resource to any application module 224 that has registered for the resource.
[0091] With access to the newly available resources, the specific application from the application module 224 can use the newly available resources to perform its own update. That is, the specific application can use the resources received from the remote device to update from the first version of the specific application to the second version of the specific application.
[0092] Thus, a particular application can obtain the required resources to perform its update without relying on the computing device 210 having to ever satisfy the network requirements imposed by the remote device for downloading the application update. By enabling applications to be kept up to date more regularly, the described techniques can ensure that the application executed locally is the most recently released version, which can improve the security and functionality of the device.
[0093] Item 1. A method, comprising: broadcasting by a computing device an indication that the computing device is initiating an update cycle for one or more applications executed at the computing device; communicating by the computing device to a remote device that receives the indication that the computing device is initiating an update cycle information related to at least one of: available resources of the computing device or resource requirements of the computing device; negotiating by the computing device with the remote device at least one of: transmission of at least some of the available resources of the computing device to the remote device to meet the resource requirements of the remote device; or transmission of at least some of the available resources of the remote device to the computing device to meet at least some of the resource requirements of the computing device; establishing by the computing device a communication channel with the remote device to implement the transmission; and completing by the computing device execution of the update cycle of the one or more applications executed at the computing device in response to implementing the transmission through the communication channel.
[0094] Clause 2. A method according to clause 1, wherein implementing the transmission through the communication channel includes sending, by the computing device, at least some of the available resources of the computing device to the remote device via the communication channel to meet the resource requirements of the remote device.
[0095] Clause 3. A method according to any one of clauses 1-2, wherein implementing the transmission through the communication channel includes receiving, by the computing device via the communication channel, at least some of the available resources of the remote device from the remote device to the computing device to satisfy at least some of the resource requirements of the computing device.
[0096] Clause 4. A method according to any of clauses 1-3, wherein executing an update cycle of the one or more applications executed at the computing device includes providing the one or more applications with access to at least some of the available resources of the remote device received during the transmission.
[0097] Clause 5. A method according to clause 4, wherein the one or more applications include a specific application, and executing an update cycle of the one or more applications executed at the computing device includes updating the specific application from a first version of the specific application to a second version of the specific application using at least some of the available resources of the remote device received during the transmission.
[0098] Clause 6. A method according to any one of clauses 1-5, wherein the remote device is the first remote device from a plurality of remote devices that receives an indication that the computing device is initiating an update cycle, the method further comprising: communicating with each of the plurality of remote devices corresponding information related to at least one of: available resources of the computing device or resource requirements of the particular remote device; negotiating with each of the plurality of remote devices at least one of: corresponding transmission of at least some of the available resources of the computing device to the remote device to meet the resource requirements of the particular remote device; or corresponding transmission of at least some of the available resources of the particular remote device to the computing device to meet at least some of the resource requirements of the computing device; establishing a corresponding communication channel with each of the plurality of remote devices to implement the corresponding transmission of the particular remote device; and implementing the corresponding transmission through the corresponding communication channel from the particular remote device among the plurality of remote devices.
[0099] Clause 7. The method according to any one of clauses 1-6 further includes: determining, by the computing device, the corresponding resource requirements of each application from the one or more applications executed at the computing device; and determining the resource requirements of the computing device by aggregating all the corresponding resource requirements of the one or more applications executed at the computing device.
[0100] Clause 8. The method according to Clause 7 further includes: while communicating with the remote device: determining by the computing device whether any of the one or more applications executed at the computing device has corresponding available resources that satisfy at least one of the resource requirements of the remote device; and determining the available resources of the computing device that satisfy the resource requirements of the remote device by aggregating all corresponding available resources of the one or more applications executed at the computing device.
[0101] Clause 9. The method according to any one of clauses 7-8 further includes: a download manager component of the computing device that communicates individually with each of the one or more applications executed at the computing device aggregating all corresponding available resources of the one or more applications executed at the computing device to determine available resources of the computing device that meet the resource requirements of the remote device.
[0102] Clause 10. The method of any of clauses 1-9, wherein the computing device and the remote device each comprise a different mobile computing device.
[0103] Clause 11. The method of any of clauses 1-9, wherein broadcasting an indication that the computing device is initiating an update cycle comprises broadcasting the indication via a wireless communication signal received by the remote device.
[0104] Clause 12. The method of clause 11, wherein the wireless communication signal comprises wireless communication signals, and the communication channel is shared by the computing device and the remote device Hotspot established.
[0105] Item 13. A computing device comprising: a communication unit; a memory configured to store instructions associated with a download manager; and at least one processor configured to execute instructions associated with the download manager to: broadcast an indication via the communication unit that the computing device is initiating an update cycle for one or more applications executed at the computing device; communicate via the communication unit with a remote device that receives the indication that the computing device is initiating an update cycle with information related to at least one of: available resources of the computing device or resource requirements of the computing device; negotiate with the remote device via the communication unit at least one of: transmission of at least some of the available resources of the computing device to the remote device to meet the resource requirements of the remote device; or transmission of at least some of the available resources of the remote device to the computing device to meet at least some of the resource requirements of the computing device; establish a communication channel with the remote device to implement the transmission via the communication unit; and in response to implementing the transmission through the communication channel, complete the execution of the update cycle of one or more applications executed at the computing device.
[0106] Clause 14. The computing device of Clause 13, wherein the computing device comprises a first mobile computing device and the remote device comprises a second mobile computing device different from the first mobile computing device.
[0107] Clause 15. A computing device according to any one of clauses 13-14, wherein the communication unit comprises: a first communication unit, the first communication unit being configured to broadcast an indication that the computing device is initiating an update cycle via a first communication channel; and a second communication unit, the second communication unit being configured to implement the transmission through the communication channel.
[0108] Clause 16. The computing device of Clause 15, wherein the first communication channel is different from the communication channel.
[0109] Item 17. A computer-readable storage medium comprising instructions associated with a download manager of a remote device, wherein the instructions, when executed, cause at least one processor of the remote device to: in response to receiving an indication that a computing device is initiating an update cycle for one or more applications executed at the computing device, communicate with the communication device information related to at least one of: available resources of the computing device or resource requirements of the computing device; negotiate with the computing device at least one of: the transmission of at least some of the available resources of the computing device to the remote device to meet the resource requirements of the remote device; or the transmission of at least some of the available resources of the remote device to the computing device to meet at least some of the resource requirements of the computing device; establish a communication channel with the computing device to implement the transmission; and implement the transmission through the communication channel so that the computing device can complete the execution of the update cycle of one or more applications executed at the computing device.
[0110] Clause 18. The computer-readable storage medium of clause 17, wherein the instructions, when executed, further cause the at least one processor of the remote device to transmit a signal to the remote device via the broadcast signal of the computing device. The wireless communication signal receives an indication that the computing device is initiating an update cycle.
[0111] Clause 19. A computer-readable storage medium as described in any of Clauses 17-18, wherein the instructions, when executed, further cause the at least one processor of the remote device to complete execution of an update cycle of one or more applications executed at the remote device in response to implementing the transmission.
[0112] Clause 20. A computer-readable storage medium according to any one of clauses 17-19, wherein the computing device is a first computing device, the communication channel is a first communication channel, the transmission is a first transmission, and the instructions, when executed, further cause the at least one processor of the remote device to: in response to receiving an indication that the second computing device is initiating an update cycle for one or more applications executed at the second computing device, establish a second communication channel with the second computing device to implement at least one of: a second transmission of at least some of the available resources of the second computing device to the remote device, or a second transmission of at least some of the available resources of the remote device to the second computing device; and in response to implementing the second transmission via the second communication channel, enable the second computing device to complete the execution of the update cycle of one or more applications executed at the second computing device.
[0113] Clause 21. A computing device comprising at least one processor configured to perform any of the methods of clauses 1-12.
[0114] Clause 22. A system comprising means for performing any of the methods of clauses 1-12.
[0115] Clause 23. A computer-readable storage medium comprising instructions that, when executed, cause at least one processor of a computing device to perform any of the methods of clauses 1-12.
[0116] As an example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store the desired program in the form of instructions or data structures and can be accessed by a computer. Moreover, any connection is appropriately referred to as a computer-readable medium. For example, if the instruction is transmitted from a website, server or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio and microwaves, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio and microwaves are included in the definition of the medium. However, it should be understood that computer-readable storage media and media and data storage media do not include connections, carriers, signals or other transient media, but refer to non-transient tangible storage media. Disks or optical disks as used herein include compact disks (CDs), laser disks, optical disks, digital versatile disks (DVDs), floppy disks and blue-ray disks, where disks usually reproduce data magnetically, while optical disks reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0117] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, the term "processor" as used herein may refer to any of the above structures or any other structure suitable for implementing the techniques described herein. In addition, in some examples, the functionality described herein may be provided within dedicated hardware and / or software modules. Moreover, the technology may be implemented entirely in one or more circuits or logic components.
[0118] The technology of the present disclosure can be implemented in various devices or apparatuses, including wireless headphones, integrated circuits (ICs), or collections of ICs (e.g., chipsets). Various components, modules, or units are described in this disclosure to emphasize the functional aspects of devices configured to perform the disclosed technology, and do not necessarily require implementation by different hardware units. Instead, as described above, the various units may be combined in hardware units or provided by a collection of interoperating hardware units in combination with appropriate software and / or firmware, and the collection of interoperating hardware units includes one or more processors as described above.
[0119] Various embodiments have been described. These and other embodiments are within the scope of the following claims.
Claims
1. A method for transmitting application resources between devices, comprising: broadcasting, by a computing device via a personal area network protocol, an indication that the computing device is initiating an update cycle for one or more applications executed at the computing device, wherein the update cycle for the applications requires one or more application resources; communicating, by the computing device via the personal area network protocol, with one or more remote devices identified as being within range of the computing device and receiving the indication that the computing device is initiating an update cycle, information related to at least one of: available application resources of the computing device, or application resources required by the computing device; At least one of the following is negotiated by the computing device with each of the one or more remote devices via the personal area network protocol: transmitting at least some of the available application resources of the computing device to each of the one or more remote devices to meet the application resources required by each of the one or more remote devices, or transmitting at least some of the available application resources of each of the one or more remote devices to the computing device to satisfy at least some of the application resources required by the computing device; establishing, by the computing device and each of the one or more remote devices, one or more corresponding communication channels for implementing the transmission; and In response to effectuating the transmission over the one or more respective communication channels, executing, by the computing device, the update cycle of the one or more applications executing at the computing device is completed.
2. The method of claim 1 , wherein performing the transmitting via the one or more corresponding communication channels comprises: The computing device sends at least some of the available application resources of the computing device to each of the one or more remote devices via the one or more corresponding communication channels to satisfy at least some of the application resources required by each of the one or more remote devices.
3. The method according to any one of claims 1-2, wherein implementing the transmission through the one or more corresponding communication channels comprises: The computing device receives at least some of the available application resources of each of the one or more remote devices from each of the one or more remote devices to the computing device via the one or more corresponding communication channels to satisfy at least some of the application resources needed by the computing device.
4. The method of claim 1 , wherein executing an update cycle of the one or more applications executed at the computing device comprises: The one or more applications are provided access to the at least some of the available application resources for each of the one or more remote devices received during the transmission.
5. The method of claim 4, wherein the one or more applications include a specific application, and performing an update cycle of the one or more applications executed at the computing device comprises: The specific application is updated from a first version of the specific application to a second version of the specific application using the at least some of the available application resources of each of the one or more remote devices received during the transmitting.
6. The method of claim 1 , wherein the one or more remote devices are a plurality of remote devices that receive the indication that the computing device is initiating an update cycle, the method further comprising: communicating with each remote device from the plurality of remote devices regarding corresponding information related to at least one of: available application resources of the computing device, or application resources required by the remote device; Negotiate with each remote device from the plurality of remote devices at least one of: Transmitting at least some of the available application resources of the computing device to the remote device accordingly to meet the application resources required by the remote device; or Transmitting at least some of the available application resources of the remote device to the computing device accordingly to satisfy at least some of the application resources required by the computing device; establishing a corresponding communication channel with each remote device from the plurality of remote devices for implementing a corresponding transmission with the remote device; and The respective transmission is performed via the respective communication channel from the remote device of the plurality of remote devices.
7. The method according to claim 1, further comprising: determining, by the computing device, respective application resources required by each application from the one or more applications executing at the computing device; and The application resources required by the computing device are determined by aggregating all corresponding application resources required by the one or more applications executed at the computing device.
8. The method according to claim 7, further comprising: When communicating with the one or more remote devices: determining, by the computing device, whether any of the one or more applications executing at the computing device has a corresponding available application resource that satisfies at least one of the application resources needed by each of the one or more remote devices; and Available application resources of the computing device that satisfy the application resources required by each of the one or more remote devices are determined by aggregating all corresponding available application resources of the one or more applications executed at the computing device.
9. The method according to any one of claims 7-8, further comprising: A download manager component of the computing device that communicates individually with each of the one or more applications executing at the computing device aggregates all of the corresponding available application resources of the one or more applications executing at the computing device to determine a merged grouping of the available application resources of the computing device that satisfies the application resources required by each of the one or more remote devices.
10. The method of claim 1, wherein the computing device and the one or more remote devices each comprise a different mobile computing device.
11. The method according to claim 1, Wherein broadcasting the indication that the computing device is initiating an update cycle comprises: received by each of the one or more remote devices wireless communication signals to broadcast the indication, and The establishing of the one or more corresponding communication channels comprises: establishing, by the computing device, a Hotspot.
12. The method of claim 1, wherein the computing device comprises a first mobile computing device and the one or more remote devices comprises a second mobile computing device different from the first mobile computing device.
13. A computing device comprising: Communication unit, a memory configured to store instructions associated with a download manager; and at least one processor configured to execute instructions associated with the download manager to: broadcasting, via the communication unit, via a personal area network protocol, an indication that the computing device is initiating an update cycle for one or more applications executed at the computing device, wherein the update cycle for the applications requires one or more application resources; communicating, via the communication unit, via the personal area network protocol with one or more remote devices identified as being within range of the computing device and receiving the indication that the computing device is initiating the update cycle, regarding information related to at least one of: available application resources of the computing device, or application resources required by the computing device; Negotiating, via the communication unit, with each of the one or more remote devices via the personal area network protocol, at least one of the following: transmitting at least some of the available application resources of the computing device to each of the one or more remote devices to satisfy application resources required by each of the one or more remote devices; or transmitting at least some of the available application resources of each of the one or more remote devices to the computing device to satisfy at least some of the application resources required by the computing device; establishing one or more respective communication channels with each of the one or more remote devices for implementing the transmission via the communication unit; and In response to effectuating the transmission over the one or more respective communication channels, execution of the update cycle of the one or more applications executing at the computing device is completed.
14. The computing device of claim 13, wherein the computing device comprises a first mobile computing device and the one or more remote devices comprises a second mobile computing device different from the first mobile computing device.
15. The computing device according to any one of claims 13-14, wherein the communication unit comprises: a first communication unit configured to broadcast the indication that the computing device is initiating the update cycle via a first communication channel; as well as A second communication unit is configured to implement the transmission through the one or more corresponding communication channels.
16. The computing device of claim 15, wherein the first communication channel is different from the one or more corresponding communication channels.
17. A computer-readable storage medium comprising instructions associated with a download manager of a remote device, wherein the remote device is identified as being within range of a computing device, and wherein the instructions, when executed, cause at least one processor of the remote device to: In response to receiving an indication via a personal area network protocol that the computing device is initiating an update cycle for one or more applications executing at the computing device, communicating with the computing device information related to at least one of: available application resources of the computing device, or application resources required by the computing device, wherein the update cycle of the application requires one or more application resources; Negotiate with the computing device via the personal area network protocol at least one of the following: transmitting at least some of the available application resources of the computing device to the remote device to meet the application resources required by the remote device; or transmitting at least some of the available application resources of the remote device to the computing device to satisfy at least some of the application resources required by the computing device; establishing a communication channel with the computing device for implementing the transmission; and The transmitting is performed over the communication channel such that the computing device completes execution of the update cycle of the one or more applications executing at the computing device.
18. The computer-readable storage medium of claim 17, wherein the instructions, when executed, further cause the at least one processor of the remote device to: The computing device is broadcasting The wireless communication signal receives the indication that the computing device is initiating the update cycle.
19. The computer-readable storage medium of any one of claims 17-18, wherein the instructions, when executed, further cause the at least one processor of the remote device to: In response to performing the transmission, execution of an update cycle of one or more applications executing at the remote device is completed.
20. The computer-readable storage medium of claim 17, wherein the computing device is a first computing device, the communication channel is a first communication channel, the transmission is a first transmission, and the instructions, when executed, further cause the at least one processor of the remote device to: In response to receiving an indication via a personal area network protocol that a second computing device is initiating an update cycle for one or more applications executed at the second computing device, establishing a second communication channel with the second computing device for performing a second transmission for at least one of: transmitting at least some available application resources of the second computing device to the remote device, or transmitting at least some available application resources of the remote device to the second computing device, wherein the remote device is identified as being within range of the second computing device; In response to performing the second transmission over the second communication channel, the second computing device is caused to complete execution of the update cycle of the one or more applications executing at the second computing device.
Citation Information
Patent Citations
Software update via peer-to-peer networks
US20080130639A1
Peer-to-peer software update distribution network
US20080209414A1