U.S. patent application number 15/963866 was filed with the patent office on 2018-08-30 for metered network synchronization.
This patent application is currently assigned to Microsoft Technology Licensing, LLC. The applicant listed for this patent is Microsoft Technology Licensing, LLC. Invention is credited to Scott E. Dart, Swagat Dasgupta, MerryJane M. Fosdick, Andrew J. Koltz, Varun Ramesh Mani, Oded Y. Shekel, Benjamin Salim Srour, Benjamin N. Truelove, Haohui Yin, Joerg C. Zender.
Application Number | 20180248947 15/963866 |
Document ID | / |
Family ID | 49261746 |
Filed Date | 2018-08-30 |
United States Patent
Application |
20180248947 |
Kind Code |
A1 |
Mani; Varun Ramesh ; et
al. |
August 30, 2018 |
Metered Network Synchronization
Abstract
Metered network synchronization techniques are described. A
current network connection of a computing device is checked as to
whether the current network connection has been identified as a
metered network. Access by a synchronization engine of the
computing device to communicate via the current network connection
to synchronize data of the computing device with another computing
device is managed based at least in part on a setting associated
with the metered network.
Inventors: |
Mani; Varun Ramesh;
(Redmond, WA) ; Yin; Haohui; (Bellevue, WA)
; Dart; Scott E.; (Bellevue, WA) ; Truelove;
Benjamin N.; (Lynnwood, WA) ; Srour; Benjamin
Salim; (Seattle, WA) ; Dasgupta; Swagat;
(Redmond, WA) ; Zender; Joerg C.; (Renton, WA)
; Fosdick; MerryJane M.; (Kirkland, WA) ; Shekel;
Oded Y.; (Bellevue, WA) ; Koltz; Andrew J.;
(Seattle, WA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Microsoft Technology Licensing, LLC |
Redmond |
WA |
US |
|
|
Assignee: |
Microsoft Technology Licensing,
LLC
Redmond
WA
|
Family ID: |
49261746 |
Appl. No.: |
15/963866 |
Filed: |
April 26, 2018 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13905091 |
May 29, 2013 |
9998536 |
|
|
15963866 |
|
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 16/10 20190101;
G06F 11/1461 20130101; G06F 11/1448 20130101; H04L 67/1095
20130101 |
International
Class: |
H04L 29/08 20060101
H04L029/08; G06F 17/30 20060101 G06F017/30; G06F 11/14 20060101
G06F011/14 |
Claims
1-20. (canceled)
21. A method comprising: accessing synchronization settings for a
particular computing device that is associated with a particular
user account, the synchronization settings indicating that: first
data of the particular computing device is designated for
synchronization when a current network connection of the particular
computing device is metered, and second data of the particular
computing device is not designated for synchronization when the
current network connection of the particular computing device is
metered; checking whether the current network connection of the
particular computing device is metered; when the current network
connection is not metered, synchronizing the first data and the
second data with another computing device that is also associated
with the particular user account, the first data and the second
data being synchronized over the current network connection via a
cloud service; and when the current network connection is metered,
synchronizing the first data and not the second data with the
another computing device, the first data being synchronized over
the current network connection via the cloud service.
22. The method of claim 21, wherein the current network connection
is a metered cellular connection when the first data and not the
second data is synchronized.
23. The method of claim 21, wherein the current network connection
is an unmetered cellular connection when the first data and the
second data are synchronized.
24. The method of claim 21, wherein the current network connection
is a metered Wi-Fi connection when the first data and not the
second data is synchronized.
25. The method of claim 24, wherein the current network connection
is an unmetered Wi-Fi connection when the first data and the second
data are synchronized.
26. The method of claim 25, further comprising: automatically
identifying the metered Wi-Fi connection as metered.
27. The method of claim 21, the first data comprising user settings
for one or more applications of the particular computing
device.
28. The method of claim 27, the second data comprising one or more
files of the particular computing device.
29. The method of claim 27, the second data comprising a backup
image of the particular computing device.
30. A computing device comprising: one or more processors; and one
or more computer-readable storage media comprising instructions
stored thereon that, when executed by the one or more processors,
cause the one or more processors to: access synchronization
settings for a particular computing device that is associated with
a particular user account, the synchronization settings indicating
that: first data of the particular computing device is designated
for synchronization when a current network connection of the
particular computing device has a particular status, and second
data of the particular computing device is not designated for
synchronization when the current network connection of the
particular computing device has the particular status; check
whether the current network connection of the particular computing
device has the particular status; when the current network
connection does not have the particular status, synchronize the
first data and the second data with another computing device that
is also associated with the particular user account, the first data
and the second data being synchronized over the current network
connection via a cloud service; and when the current network
connection has the particular status, synchronize the first data
and not the second data with the another computing device, the
first data being synchronized over the current network connection
via the cloud service.
31. The computing device of claim 30, the particular status being a
metered status.
32. The computing device of claim 31, the particular status being a
metered roaming status.
33. The computing device of claim 30, wherein the instructions,
when executed by the one or more processors, cause the one or more
processors to: identify one or more characteristics of the current
network connection; and based at least on the one or more
characteristics, determine whether the current network connection
has the particular status.
34. The computing device of claim 30, the synchronization settings
being designated via user input to the computing device.
35. The computing device of claim 30, the particular status
relating to available bandwidth of the current network
connection.
36. The computing device of claim 30, the particular status
relating to a particular time when the current network connection
has a particular limitation.
37. The computing device of claim 30, the particular status
relating to a particular time of day when the current network
connection has a bandwidth limitation.
38. A computer-readable storage medium storing instructions which,
when executed by one or more processors, cause the one or more
processors to perform acts comprising: obtaining synchronization
settings for a first computing device associated with a particular
user account; determining whether a current network connection of
the first computing device has a particular status; and based at
least on whether the current network connection of the first
computing device has the particular status, selectively
synchronizing data of the first computing device with at least one
other computing device that is also associated with the particular
user account.
39. The computer-readable storage medium of claim 38, provided in
the first computing device.
40. The computer-readable storage medium of claim 38, the
particular status indicating whether the current network connection
has a particular limitation for use.
Description
BACKGROUND
[0001] Users have access to an ever increasing variety of computing
devices, from desktop PCs and laptops to tablets and mobile phones.
These computing devices may be configured in a variety of ways to
support a variety of different techniques to access a network.
Accordingly, the way in which these devices may access a network
may vary based on a device type. However, a particular situation in
which the computing device is utilized to access the network may
also have an effect on usage of the device.
[0002] For example, a user of a laptop computer may leverage a
wired connection in an office to access a network that does not
have limit the bandwidth made available to the laptop. However, in
other situations (such as a hotel) limits may be set on the access
to the network that is made available to the laptop. Conventional
techniques that were utilized to manage access to the network by
the laptop itself, however, did not address these situations and
thus may result in inefficient utilization of the network.
SUMMARY
[0003] Metered network synchronization techniques are described. A
current network connection of a computing device is checked as to
whether the current network connection has been identified as a
metered network. Access by a synchronization engine of the
computing device to communicate via the current network connection
to synchronize data of the computing device with another computing
device is managed based at least in part on a setting associated
with the metered network.
[0004] This Summary is provided to introduce a selection of
concepts in a simplified form that are further described below in
the Detailed Description. This Summary is not intended to identify
key features or essential features of the claimed subject matter,
nor is it intended to be used as an aid in determining the scope of
the claimed subject matter.
BRIEF DESCRIPTION OF THE DRAWINGS
[0005] The detailed description is described with reference to the
accompanying figures. In the figures, the left-most digit(s) of a
reference number identifies the figure in which the reference
number first appears. The use of the same reference numbers in
different instances in the description and the figures may indicate
similar or identical items.
[0006] FIG. 1 is an illustration of an environment in an example
implementation that is operable to implement techniques described
herein.
[0007] FIG. 2 illustrates a system in an example implementation of
the computing device of FIG. 1 as showing a synchronization module
in greater detail.
[0008] FIG. 3 depicts an example of a user interface that is
configured to accept user inputs to identify a network and
corresponding network connection as a metered network.
[0009] FIG. 4 depicts an example of a user interface that is
configured to accept user inputs to specify settings for use in
managing access to a network that has been identified as a metered
network as described in relation to FIG. 3.
[0010] FIG. 5 is a flow diagram depicting a procedure in an example
implementation in which a network is identified as a metered
network and a setting is used at least in part to manage access of
a synchronization engine to the network.
[0011] FIG. 6 is a flow diagram depicting a procedure in an example
implementation in which settings for metered and metered roaming
networks are used to manage network access permitted by a
synchronization engine.
[0012] FIG. 7 illustrates an example system that includes the
computing device as described with reference to FIG. 1.
[0013] FIG. 8 illustrates various components of an example device
that can be implemented as any type of computing device as
described with reference to FIGS. 1-7 to implement embodiments of
the techniques described herein.
DETAILED DESCRIPTION
Overview
[0014] Network usage is a primary part of the ever increasing
functionality supported by a computing device. For example, a
computing device may be configured to perform automatic backups of
data of the computing device to protect this data from corruption
and loss. However, situations may be encountered in which this
backup may interfere with the overall operation of the computing
device.
[0015] For instance, the computing device may be connected to a
metered network and thus limitations may be encountered as part of
access to the network. This may include bandwidth limitations,
limitations of an overall amount of data that may be transferred,
costs per communication, and so on. Therefore, such situations may
make backup of the data undesirable as it may interfere with other
functionality of the computing device (may consume a large part of
the overall bandwidth that is available to the device), may consume
available resources that are limited, and so on.
[0016] Metered network connection techniques are described. In one
or more implementations, a computing device may manage access that
addresses whether a current network connection is identified as a
metered network. For example, a user interface may be configured
such that a user may manually identify a network connection as a
metered network, such as a hotel connection, airport connection,
mobile broadband access, and so on. This identification may also be
performed automatically and without user intervention, such as to
identify a particular device as associated with a metered network,
such as a mobile broadband network.
[0017] A user may then specify settings that are to be used in such
situations of an identified metered network to manage access to the
network. For example, the settings may specify that access is or is
not permitted to particular metered networks, throttling to be
performed, access that is permitted if the metered access is also
identified as a roaming metered network, and so on. In this way, a
user may specify how access to the metered networks is to be
managed to synchronize data of the computing device. Continuing
with the previous example, the computing device may include a
backup synchronization engine and use these settings to manage
access of this engine to the metered network. Other settings may
also be specified for other synchronization engines, such as a
settings synchronization engine, a file synchronization engine, and
so on. Thus, each of these engines may have settings set for that
engine in particular to manage access. A variety of other examples
are also contemplated, further discussion of which may be found in
relation to the following sections.
[0018] In the following discussion, an example environment is first
described that may employ the techniques described herein. Example
procedures are then described which may be performed in the example
environment as well as other environments. Consequently,
performance of the example procedures is not limited to the example
environment and the example environment is not limited to
performance of the example procedures.
Example Environment
[0019] FIG. 1 is an illustration of an environment 100 in an
example implementation that is operable to employ synchronization
techniques described herein. The illustrated environment 100
includes a computing device 102 having a processing system 104 and
a computer-readable storage medium that is illustrated as a memory
106 although other confirmations are also contemplated as further
described below.
[0020] The computing device 102 may be configured in a variety of
ways. For example, a computing device may be configured as a
computer that is capable of communicating over a network, such as a
desktop computer, a mobile station, an entertainment appliance, a
set-top box communicatively coupled to a display device, a wireless
phone, a game console, and so forth. Thus, the computing device 102
may range from full resource devices with substantial memory and
processor resources (e.g., personal computers, game consoles) to a
low-resource device with limited memory and/or processing resources
(e.g., traditional set-top boxes, hand-held game consoles).
Additionally, although a single computing device 102 is shown, the
computing device 102 may be representative of a plurality of
different devices, such as multiple servers utilized by a business
to perform operations such as by a web service, a remote control
and set-top box combination, an image capture device and a game
console configured to capture gestures, and so on.
[0021] The computing device 102 is further illustrated as including
an operating system 108. The operating system 108 is configured to
abstract underlying functionality of the computing device 102 to
applications 110 that are executable on the computing device 102.
For example, the operating system 108 may abstract the processing
system 104, memory 106, network 112, and/or display device
functionality of the computing device 102 such that the
applications 110 may be written without knowing "how" this
underlying functionality is implemented. The application 110, for
instance, may provide data to the operating system 108 to be
rendered and displayed by the illustrated display device without
understanding how this rendering will be performed. The operating
system 108 may also represent a variety of other functionality,
such as to manage a file system and user interface that is
navigable by a user of the computing device 102.
[0022] The operating system 108 is also illustrated as including a
synchronization module 114. The synchronization module 114 is
representative of functionality to synchronize data of the
computing device 102 with another device, such as a service
provider 116 via the network 112. Although illustrated as part of
the operating system 106, the synchronization module 114 may be
implemented in a variety of other ways, such as a standalone
module, part of one of the applications 110, and so on.
[0023] The service provider 116 is illustrated as including a
synchronization service manager module 118 that is representative
of functionality to synchronize data of the computing device 102
with storage 120 of computing devices that are used to implement
the service provider 116 (e.g., servers of a server farm) and/or
other computing devices 122. The synchronization service manager
module 118, for instance, may utilize the storage 120 to support
data storage "over the cloud" as part of the service provider 116.
The synchronization service manager module 118 may also be
configured to automatically synchronize this data with other
computing devices 122, such as those devices associated with a
user's account. In this way, data may be synchronized and "roamed"
between the computing device 102, storage 120, and other computing
devices 122. A variety of different types of data may be
synchronized, further discussion of which is described as follows
and shown in a corresponding FIG. 2.
[0024] Generally, any of the functions described herein can be
implemented using software, firmware, hardware (e.g., fixed logic
circuitry), or a combination of these implementations. The terms
"module," "functionality," and "engine" as used herein generally
represent software, firmware, hardware, or a combination thereof.
In the case of a software implementation, the module,
functionality, or engine represents program code that performs
specified tasks when executed on a processor (e.g., CPU or CPUs).
The program code can be stored in one or more computer readable
memory devices. The features of the techniques described below are
platform-independent, meaning that the techniques may be
implemented on a variety of commercial computing platforms having a
variety of processors.
[0025] For example, the computing device 102 may also include an
entity (e.g., software) that causes hardware of the computing
device 102 to perform operations, e.g., processors, functional
blocks, and so on. For example, the computing device 102 may
include a computer-readable medium that may be configured to
maintain instructions that cause the computing device, and more
particularly hardware of the computing device 102 to perform
operations. Thus, the instructions function to configure the
hardware to perform the operations and in this way result in
transformation of the hardware to perform functions. The
instructions may be provided by the computer-readable medium to the
computing device 102 through a variety of different
configurations.
[0026] One such configuration of a computer-readable medium is
signal bearing medium and thus is configured to transmit the
instructions (e.g., as a carrier wave) to the hardware of the
computing device, such as via a network. The computer-readable
medium may also be configured as a computer-readable storage medium
and thus is not a signal bearing medium. Examples of a
computer-readable storage medium include a random-access memory
(RAM), read-only memory (ROM), an optical disc, flash memory, hard
disk memory, and other memory devices that may use magnetic,
optical, and other techniques to store instructions and other
data.
[0027] FIG. 2 illustrates a system 200 in an example implementation
of the computing device 102 of FIG. 1 as showing the
synchronization module 114 in greater detail. In this example, the
synchronization module 114 is illustrated as including a plurality
of synchronization engines (illustrated as "sync engines") that are
representative of functionality to synchronize corresponding data.
Examples of the engines include a settings sync engine 202, a file
sync engine 204, and a backup sync engine 206. The settings sync
engine 202 is representative of functionality to synchronize user
settings 208, such as user settings for applications 110 (e.g., a
browser, word processor), the operating system 108 (e.g., a
background, arrangement of representations of applications 110),
network passwords, and so on.
[0028] The file sync engine 204 is representative of functionality
to synchronize files 210 over the network 112. The files 210, for
instance, may be included in one or more collections of data (e.g.,
folders, files, and so on) specified by a user that are to be
synchronized via the network 112. In this way, the files 210 may be
"roamed" across the network 112 to storage 120 of computing devices
of the service provider 116, other computing devices 122, and so
on.
[0029] The backup sync engine 206 is representative of
functionality to synchronize backup data 212 via the network, such
as to store a backup to storage 120 of the service provider 116.
This may include data of the applications 110 and/or identification
of the applications, the operating system 108, and so on. For
example, this backup may be performed by taking an "image" of the
memory 106 of the computing device 102 which may be used to restore
the computing device 102 in case of data corruption or other
errors. Other examples of backup data are also contemplated without
departing from the spirit and scope thereof
[0030] As previously described, the network 112 used to support a
network connection between the synchronization module 114 and the
service provider 116 or other computing device may assume a variety
of different configurations. Illustrated examples of which include
a plain-old telephone system (POTS) 214, mobile broadband 216
(e.g., 3G, 4G, LTE, and other cellular networks), local broadband
218 (e.g., a local area network), Wi-Fi 220, and other 224
networks.
[0031] In some situations, the network 112 may have limitations in
network access of the synchronization module 114 via the network
112 and thus the network 112 may be considered a "metered network"
in such situations. A variety of different factors may be used to
define whether a network connection is metered. For example, a
metered network may involve cost (e.g., per usage, employ
thresholds levels), bandwidth limitations, limitations based on
time of access (e.g., time of day, day of week, etc.), and other
factors and combinations thereof
[0032] Therefore, a metered network (and characteristics of the
metered network) may influence a user's choices regarding
synchronization of different types of data in different ways. For
example, a user may wish to keep files 210 "up-to-date" even in
instances of a metered network (e.g., to keep work files current)
but not wish to synchronize backup data 212 or user settings 208 in
such situations. Accordingly, each of the settings sync engine 202,
file sync engine 204, and backup sync engine 206 may include
respective metered settings 226, 228, 230 that specify how
synchronization performed by those engines is to be managed in
instances of a metered network.
[0033] Further, roaming settings 232, 234, 236 may also be set to
specify how access to the metered networks are to be managed based
on additional characteristics of the metered network, such as
whether the metered network supports roaming access in the current
example. For example, a mobile broadband network may support
different pricing and access structures between typical and roaming
access. A network and corresponding network connection may be
identified as metered in a variety of ways, an example of which is
described as follows and shown in a corresponding figure.
[0034] FIG. 3 depicts an example of a user interface 300 that is
configured to accept user inputs to identify a network and
corresponding network connection as a metered network. In this
example, the user interface 300 includes an option to identify a
network and corresponding network connection as a metered network.
This may include an option to specify a hardware device that is
associated with the network access as involving a metered network
as illustrated.
[0035] This may also include an option to specify a current network
connection as involving a metered network, which is also
illustrated. For example, a user may access a hotel network that
may involve time and bandwidth limitations. Therefore, a user may
access the network and then specify that the current network is
part of a metered network, such as part of identification of
whether a network is private or public. In another example, a user
may manually identify a network (e.g., a Wi-Fi access point of a
coffee shop) as a metered network. A variety of other examples are
also contemplated.
[0036] The synchronization module 114 may also include
functionality to automatically identify a network or network
connection as metered. This may be based on characteristics
identified from the network and/or network connection itself, based
on which device is used to access the network (e.g., a mobile
broadband modem), and so on. Thus, a network and corresponding
network connection may be identified as a metered network
connection in a variety of ways.
[0037] In the illustrated example, the user interface 300 is
further configured to support user verification of a metered
network, which is illustrated through use of slider bars in the
figure but other examples are also contemplated. For instance, the
synchronization module 114 may automatically identify a network as
a metered network and a user may then verify whether that is the
case in the user interface 300. These identifications may then be
leveraged as part of the management of the synchronization of data,
an example of which is described as follows and shown in the
corresponding figure.
[0038] FIG. 4 depicts an example of a user interface 400 that is
configured to accept user inputs to specify settings for use in
managing access to a network that has been identified as a metered
network as described in relation to FIG. 3. In this example, the
user interface 400 includes options to specify settings to set
whether synchronization is to be permitted over a metered
network.
[0039] For example, options are provided to specify whether
synchronization over a metered network is performed for settings,
files, and backup data. Thus, each of these options corresponds to
a respective one of the synchronization engines in FIG. 2. In this
way, a user may specify different settings for different types of
data.
[0040] Options are also provided to specify settings for particular
characteristics of the metered network. In the illustrated example,
an option is given for whether the metered network is a roaming
metered network. Therefore, a user may specify whether
synchronization is permitted for a metered network in general and
specifically whether synchronization is permitted when the metered
network is a roaming metered network.
[0041] In this example, the example settings are binary and thus
describe whether synchronization "is" or "is not" permitted. Other
examples are also contemplated. For instance, settings may be based
on a particular time of day, day of week, available bandwidth, an
overall threshold amount of data that is available, and so on.
[0042] The computing device, for example, may access a satellite
network that has bandwidth limitations at particular times of day
and an overall bandwidth limitation that is applied monthly.
Settings may therefore be utilized to specify that backups are to
occur at the "unlimited" times of day as long as the overall
threshold has not been exceeded, whereas synchronization of files
may occur at any time and settings are to occur at manually
specified times. In this way, the identification of the metered
network and corresponding settings may be used to manage access to
a network by the synchronization engines, an example of which is
described as follows and shown in a corresponding figure in the
following section.
Example Procedures
[0043] The following discussion describes synchronization
techniques that may be implemented utilizing the previously
described systems and devices. Aspects of each of the procedures
may be implemented in hardware, firmware, or software, or a
combination thereof. The procedures are shown as a set of blocks
that specify operations performed by one or more devices and are
not necessarily limited to the orders shown for performing the
operations by the respective blocks. In portions of the following
discussion, reference will be made to FIGS. 1-4.
[0044] FIG. 5 depicts a procedure 500 in an example implementation
in which a network is identified as a metered network and a setting
is used at least in part to manage access of a synchronization
engine to the network. A network and a corresponding network
connection are identified as a metered network (block 502). For
example, as shown in FIG. 3, a network connection may be identified
as a metered network in a variety of ways, which may include manual
and automatic techniques.
[0045] A current network connection of a computing device is
checked to determine whether it is identified as a metered network
(block 504). A synchronization module 114, for instance, may
determine whether a current network connection that is to be
initiated and/or has been initiated already by a computing device.
This may include a comparison of a name of the network with a list
of networks that have been identified as metered networks as
described previously.
[0046] Access permitted by a synchronization engine of the
computing device to communicate via the current network connection
to synchronize data of the computing device with another computing
device is managed based at least in part on a setting associated
with the metered network (block 506). This may include whether to
permit or restrict access, adjust access (e.g., throttling), and so
forth. Further, these techniques may be leveraged for different
synchronization engines such that different settings may be used
for the different engines as previously described. An example of
usage of the settings in the management of access by a
synchronization engine is described as follows.
[0047] FIG. 6 depicts a procedure 600 in an example implementation
in which settings for metered and metered roaming networks are used
to manage network access permitted by a synchronization engine. A
synchronization engine is woken (block 602), such as at a
predetermined interval, particular point in time, and so on.
[0048] A current network connection is checked (block 604), such as
to identify the network and corresponding network connection. A
determination is made as to whether a metered network flag has been
set (decision block 606). If so ("yes" from decision block 606), a
determination is made as to whether the current network connection
is metered (decision block 608). If so ("yes" from decision block
608), the access to the network is restricted and the
synchronization engine returns to a sleep state (block 610).
[0049] If not ("no" from decision block 608), a determination is
made as to whether a metered network roaming flag is set (decision
block 612). If so ("yes" from decision block 612), a determination
is made as to whether a current network has been identified as a
roaming metered network (decision block 614). If so ("yes" from
decision block 614), the access to the network is restricted and
the synchronization engine returns to a sleep state (block 610). If
not ("no" from decision block 614), upload/download from a service
is permitted (block 616). A variety of other examples are also
contemplated.
Example System and Device
[0050] FIG. 7 illustrates an example system 700 that includes the
computing device 102 as described with reference to FIG. 1. The
example system 700 enables ubiquitous environments for a seamless
user experience when running applications on a personal computer
(PC), a television device, and/or a mobile device. Services and
applications run substantially similar in all three environments
for a common user experience when transitioning from one device to
the next while utilizing an application, playing a video game,
watching a video, and so on.
[0051] In the example system 700, multiple devices are
interconnected through a central computing device. The central
computing device may be local to the multiple devices or may be
located remotely from the multiple devices. In one embodiment, the
central computing device may be a cloud of one or more server
computers that are connected to the multiple devices through a
network, the Internet, or other data communication link. In one
embodiment, this interconnection architecture enables functionality
to be delivered across multiple devices to provide a common and
seamless experience to a user of the multiple devices. Each of the
multiple devices may have different physical requirements and
capabilities, and the central computing device uses a platform to
enable the delivery of an experience to the device that is both
tailored to the device and yet common to all devices. In one
embodiment, a class of target devices is created and experiences
are tailored to the generic class of devices. A class of devices
may be defined by physical features, types of usage, or other
common characteristics of the devices.
[0052] In various implementations, the computing device 102 may
assume a variety of different configurations, such as for computer
702, mobile 704, and television 706 uses. Each of these
configurations includes devices that may have generally different
constructs and capabilities, and thus the computing device 102 may
be configured according to one or more of the different device
classes. For instance, the computing device 102 may be implemented
as the computer 702 class of a device that includes a personal
computer, desktop computer, a multi-screen computer, laptop
computer, netbook, and so on.
[0053] The computing device 102 may also be implemented as the
mobile 702 class of device that includes mobile devices, such as a
mobile phone, portable music player, portable gaming device, a
tablet computer, a multi-screen computer, and so on. The computing
device 102 may also be implemented as the television 706 class of
device that includes devices having or connected to generally
larger screens in casual viewing environments. These devices
include televisions, set-top boxes, gaming consoles, and so on. The
techniques described herein may be supported by these various
configurations of the computing device 102 and are not limited to
the specific examples the techniques described herein. Thus, the
computing device 102 is illustrated as including an immersive
environment module 114 that may implement the techniques described
herein.
[0054] The cloud 708 includes and/or is representative of a
platform 710 for content services 712. The platform 710 abstracts
underlying functionality of hardware (e.g., servers) and software
resources of the cloud 708. The content services 712 may include
applications and/or data that can be utilized while computer
processing is executed on servers that are remote from the
computing device 102. Content services 712 can be provided as a
service over the Internet and/or through a subscriber network, such
as a cellular or Wi-Fi network.
[0055] The platform 710 may abstract resources and functions to
connect the computing device 102 with other computing devices. The
platform 710 may also serve to abstract scaling of resources to
provide a corresponding level of scale to encountered demand for
the content services 712 that are implemented via the platform 710.
Accordingly, in an interconnected device embodiment, implementation
of functionality described herein may be distributed throughout the
system 700. For example, the functionality may be implemented in
part on the computing device 102 as well as via the platform 710
that abstracts the functionality of the cloud 708. In other words,
the platform 710 may be utilized to implement all or a part of the
functionality of the immersive environment module 114, e.g., this
functionality may be distributed between the platform 710 and the
computing device 102
[0056] FIG. 8 illustrates various components of an example device
800 that can be implemented as any type of computing device as
described with reference to FIGS. 1, 2, and 16 to implement
embodiments of the techniques described herein. Device 800 includes
communication devices 802 that enable wired and/or wireless
communication of device data 804 (e.g., received data, data that is
being received, data scheduled for broadcast, data packets of the
data, etc.). The device data 804 or other device content can
include configuration settings of the device, media content stored
on the device, and/or information associated with a user of the
device. Media content stored on device 800 can include any type of
audio, video, and/or image data. Device 800 includes one or more
data inputs 806 via which any type of data, media content, and/or
inputs can be received, such as user-selectable inputs, messages,
music, television media content, recorded video content, and any
other type of audio, video, and/or image data received from any
content and/or data source.
[0057] Device 800 also includes communication interfaces 808 that
can be implemented as any one or more of a serial and/or parallel
interface, a wireless interface, any type of network interface, a
modem, and as any other type of communication interface. The
communication interfaces 808 provide a connection and/or
communication links between device 800 and a communication network
by which other electronic, computing, and communication devices
communicate data with device 800.
[0058] Device 800 includes one or more processors 810 (e.g., any of
microprocessors, controllers, and the like) which process various
computer-executable instructions to control the operation of device
800 and to implement embodiments of the techniques described
herein. Alternatively or in addition, device 800 can be implemented
with any one or combination of hardware, firmware, or fixed logic
circuitry that is implemented in connection with processing and
control circuits which are generally identified at 812. Although
not shown, device 800 can include a system bus or data transfer
system that couples the various components within the device. A
system bus can include any one or combination of different bus
structures, such as a memory bus or memory controller, a peripheral
bus, a universal serial bus, and/or a processor or local bus that
utilizes any of a variety of bus architectures.
[0059] Device 800 also includes computer-readable media 814, such
as one or more memory components, examples of which include random
access memory (RAM), non-volatile memory (e.g., any one or more of
a read-only memory (ROM), flash memory, EPROM, EEPROM, etc.), and a
disk storage device. A disk storage device may be implemented as
any type of magnetic or optical storage device, such as a hard disk
drive, a recordable and/or rewriteable compact disc (CD), any type
of a digital versatile disc (DVD), and the like. Device 800 can
also include a mass storage media device 816.
[0060] Computer-readable media 814 provides data storage mechanisms
to store the device data 804, as well as various device
applications 818 and any other types of information and/or data
related to operational aspects of device 800. For example, an
operating system 820 can be maintained as a computer application
with the computer-readable media 814 and executed on processors
810. The device applications 818 can include a device manager
(e.g., a control application, software application, signal
processing and control module, code that is native to a particular
device, a hardware abstraction layer for a particular device,
etc.). The device applications 818 also include any system
components or modules to implement embodiments of the techniques
described herein. In this example, the device applications 818
include an interface application 822 and an input/output module 824
(which may be the same or different as input/output module 114)
that are shown as software modules and/or computer applications.
The input/output module 824 is representative of software that is
used to provide an interface with a device configured to capture
inputs, such as a touchscreen, track pad, camera, microphone, and
so on. Alternatively or in addition, the interface application 822
and the input/output module 824 can be implemented as hardware,
software, firmware, or any combination thereof. Additionally, the
input/output module 824 may be configured to support multiple input
devices, such as separate devices to capture visual and audio
inputs, respectively.
[0061] Device 800 also includes an audio and/or video input-output
system 826 that provides audio data to an audio system 828 and/or
provides video data to a display system 830. The audio system 828
and/or the display system 830 can include any devices that process,
display, and/or otherwise render audio, video, and image data.
Video signals and audio signals can be communicated from device 800
to an audio device and/or to a display device via an RF (radio
frequency) link, S-video link, composite video link, component
video link, DVI (digital video interface), analog audio connection,
or other similar communication link. In an embodiment, the audio
system 828 and/or the display system 830 are implemented as
external components to device 800. Alternatively, the audio system
828 and/or the display system 830 are implemented as integrated
components of example device 800.
Conclusion
[0062] Although the invention has been described in language
specific to structural features and/or methodological acts, it is
to be understood that the invention defined in the appended claims
is not necessarily limited to the specific features or acts
described. Rather, the specific features and acts are disclosed as
example forms of implementing the claimed invention.
* * * * *