U.S. patent application number 13/489172 was filed with the patent office on 2013-08-01 for intelligent downloading and rendering of content.
The applicant listed for this patent is Michael Matas, Charles Melcher, Austin Sarner, Kimon Tsinteris. Invention is credited to Michael Matas, Charles Melcher, Austin Sarner, Kimon Tsinteris.
Application Number | 20130198261 13/489172 |
Document ID | / |
Family ID | 48869809 |
Filed Date | 2013-08-01 |
United States Patent
Application |
20130198261 |
Kind Code |
A1 |
Matas; Michael ; et
al. |
August 1, 2013 |
Intelligent Downloading and Rendering of Content
Abstract
In one embodiment, download a hierarchy of objects from one or
more first electronic devices to a second electronic device for
presentation to a user of the second electronic device. The objects
are presented to the user of the second electronic device according
to a structure of the hierarchy. The objects are downloaded to the
second electronic device in an order determined based on which
specific objects in the hierarchy are currently presented to the
user of the second electronic device.
Inventors: |
Matas; Michael; (San
Francisco, CA) ; Tsinteris; Kimon; (San Francisco,
CA) ; Sarner; Austin; (San Francisco, CA) ;
Melcher; Charles; (New York, NY) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Matas; Michael
Tsinteris; Kimon
Sarner; Austin
Melcher; Charles |
San Francisco
San Francisco
San Francisco
New York |
CA
CA
CA
NY |
US
US
US
US |
|
|
Family ID: |
48869809 |
Appl. No.: |
13/489172 |
Filed: |
June 5, 2012 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
61593841 |
Feb 1, 2012 |
|
|
|
Current U.S.
Class: |
709/203 |
Current CPC
Class: |
G06F 3/04815 20130101;
G06T 11/60 20130101; G06F 3/0485 20130101; H04L 67/06 20130101;
G06F 2203/04808 20130101; G06F 3/04847 20130101; G06F 3/0481
20130101; G06F 8/34 20130101; G06F 40/103 20200101; G06F 3/0484
20130101; G06T 15/60 20130101; G06F 3/0482 20130101; G06F 3/04845
20130101; G06F 40/137 20200101; H04L 67/18 20130101; G06F 3/04883
20130101; G06F 3/04817 20130101; G06F 3/017 20130101; G06F 3/04842
20130101 |
Class at
Publication: |
709/203 |
International
Class: |
H04L 29/08 20060101
H04L029/08 |
Claims
1. A method, performed by one or more first electronic devices,
comprising: downloading a hierarchy of objects to a second
electronic device for presentation to a user of the second
electronic device, the objects are presented to the user of the
second electronic device according to a structure of the hierarchy,
and the objects are downloaded to the second electronic device in
an order determined based on which specific objects in the
hierarchy are currently presented to the user of the second
electronic device.
2. The method of claim 1, wherein the objects are downloaded to the
second electronic device in the order determined based further on a
predicted order for presenting the objects to the user, such that
if a first object is likely to be presented to the user before a
second object, then the first object is downloaded to the second
electronic device before the second object.
3. The method of claim 2, wherein the predicted order for
presenting the objects to the user is determined based on positions
in the hierarchy of the specific objects that are currently
presented to the user.
4. The method of claim 2, wherein the predicted order for
presenting the objects to the user is determined based on movements
made by the user when interacting with the specific objects that
are currently presented to the user.
5. The method of claim 1, wherein one or more objects in the
hierarchy each has a plurality of versions suitable for a plurality
of types of electronic devices.
6. The method of claim 5, further comprising when downloading a
specific object to the second electronic device, if the specific
object has a plurality of versions, then: selecting a specific
version of the specific object based on a type of the second
electronic device; and downloading the specific version of the
specific object to the second electronic device.
7. The method of claim 6, wherein the specific version of the
specific object is selected based on a hardware configuration of
the second electronic device.
8. The method of claim 6, wherein the specific version of the
specific object is selected based on a software configuration of
the second electronic device.
9. The method of claim 1, further comprising rendering the objects
on the second electronic device in the order determined based on
which specific objects in the hierarchy are currently presented to
the user of the second electronic device.
10. The method of claim 9, wherein the objects are rendered on the
second electronic device in the order determined based further on
the predicted order for presenting the objects to the user, such
that if a first object is likely to be presented to the user before
a second object, then the first object is rendered on the second
electronic device before the second object.
11. A first apparatus comprising: a memory comprising instructions
executable by one or more processors; and the one or more
processors coupled to the memory and operable to execute the
instructions, the one or more processors being operable when
executing the instructions to: download a hierarchy of objects to a
second electronic device for presentation to a user of the second
electronic device, the objects are presented to the user of the
second electronic device according to a structure of the hierarchy,
and the objects are downloaded to the second electronic device in
an order determined based on which specific objects in the
hierarchy are currently presented to the user of the second
electronic device.
12. The apparatus of claim 11, wherein the objects are downloaded
to the second electronic device in the order determined based
further on a predicted order for presenting the objects to the
user, such that if a first object is likely to be presented to the
user before a second object, then the first object is downloaded to
the second electronic device before the second object.
13. The apparatus of claim 12, wherein the predicted order for
presenting the objects to the user is determined based on positions
in the hierarchy of the specific objects that are currently
presented to the user.
14. The apparatus of claim 12, wherein the predicted order for
presenting the objects to the user is determined based on movements
made by the user when interacting with the specific objects that
are currently presented to the user.
15. The apparatus of claim 11, wherein: one or more objects in the
hierarchy each has a plurality of versions suitable for a plurality
of types of electronic devices; and the processors are further
operable when executing the instructions to: when downloading a
specific object to the second electronic device, if the specific
object has a plurality of versions, then: select a specific version
of the specific object based on a type of the second electronic
device; and download the specific version of the specific object to
the second electronic device.
16. One or more computer-readable non-transitory storage media
embodying logic that is operable when executed to: download a
hierarchy of objects to a second electronic device for presentation
to a user of the second electronic device, the objects are
presented to the user of the second electronic device according to
a structure of the hierarchy, and the objects are downloaded to the
second electronic device in an order determined based on which
specific objects in the hierarchy are currently presented to the
user of the second electronic device.
17. The media of claim 16, wherein the objects are downloaded to
the second electronic device in the order determined based further
on a predicted order for presenting the objects to the user, such
that if a first object is likely to be presented to the user before
a second object, then the first object is downloaded to the second
electronic device before the second object.
18. The media of claim 17, wherein the predicted order for
presenting the objects to the user is determined based on positions
in the hierarchy of the specific objects that are currently
presented to the user.
19. The media of claim 17, wherein the predicted order for
presenting the objects to the user is determined based on movements
made by the user when interacting with the specific objects that
are currently presented to the user.
20. The media of claim 16, wherein: one or more objects in the
hierarchy each has a plurality of versions suitable for a plurality
of types of electronic devices; and the logic is further operable
when executed to: when downloading a specific object to the second
electronic device, if the specific object has a plurality of
versions, then: select a specific version of the specific object
based on a type of the second electronic device; and download the
specific version of the specific object to the second electronic
device.
Description
RELATED APPLICATION(S)
[0001] This application claims the benefit, under 35 U.S.C.
.sctn.119(e), of U.S. Provisional Patent Application No. 61/593841,
filed 1 Feb. 2012, which is incorporated herein by reference.
TECHNICAL FIELD
[0002] This disclosure generally relates to downloading to and
rendering on electronic devices user-consumable content.
BACKGROUND
[0003] Often, computing or electronic devices connected to computer
or communication networks, whether through wired or wireless
connections, may transmit data to one another over the networks.
Typically, for a specific data transmission, there is a sending
device and a receiving device, where the data are transmitted from
the sending device to the receiving device. Depending on which
device has initiated the data transmission, the data may be pushed
or pulled from the sending device to the receiving device. In the
"push" case, it is the sending device that has initiated the data
transmission. On the other hand, in the "pull" case, it is the
receiving device that has initiated the data transmission (e.g., by
requesting the data from the sending device).
BRIEF DESCRIPTION OF THE DRAWINGS
[0004] FIG. 1 illustrates an example system for transmitting data
from a first device to a second device.
[0005] FIG. 2 illustrates a portion of an example object
hierarchy.
[0006] FIG. 3 illustrates an example method for downloading a
hierarchy of objects.
[0007] FIG. 4 illustrates an example method for downloading a
hierarchy of objects.
[0008] FIG. 5 illustrates an example visual indicator that shows
the current status of downloading a hierarchy of objects.
[0009] FIG. 6 illustrates an example of downloading a specific
version of an object to a device.
[0010] FIG. 7 illustrates an example electronic device.
DESCRIPTION OF EXAMPLE EMBODIMENTS
[0011] In particular embodiments, data may be transmitted from a
first device (e.g., a data-sending device) to a second device
(e.g., a data-receiving device) over computer or communication
networks. Often, the process of transmitting data from a sending
device to a receiving device may be referred to as "downloading"
the data from the sending device to the receiving device. The
sending and receiving devices may be connected to the networks
through wired or wireless connections. In particular embodiments,
the data may represent user-consumable content (e.g., texts,
images, videos, audios, etc.). The content may be rendered on the
data-sending device and presented to a user of the device.
[0012] There are many types of electronic devices that may be used
to render content for user consumption. These devices have
different hardware configurations, resources, operating systems,
and capabilities. In particular embodiments, for a piece of
user-consumable content, there may be multiple versions of that
specific piece of content suitable for different types of
electronic devices. Different versions of a piece of content may be
downloaded to different types of electronic devices for user
consumption.
[0013] In particular embodiments, user-consumable content may be
organized into a hierarchy of objects, where each object in the
hierarchy corresponds to a specific piece of user-consumable
content. The objects may be downloaded to an electronic device in
an order determined based on their respective positions in the
hierarchy or based on what objects are currently being consumed or
likely to be consumed in the near future by a user of the device.
In addition, the structure of the hierarchy, or more specifically,
the positions of the objects within the hierarchy, indicate
relationships among the objects in the hierarchy. In particular
embodiments, transmitting data representing a hierarchy of objects
to an electronic device includes transmitting both the data
representing the objects themselves and the data representing the
hierarchical structure (e.g., data representing the positions of
the objects within the hierarchy or the relationships among the
objects) to the electronic device.
[0014] In particular embodiments, when presenting a hierarchy of
objects to a user for consumption, the objects are organized and
presented according to the structure of the hierarchy. The objects
may be presented in a user interface (UI) provided on the
electronic device. When doing so, the objects are organized and
presented in the UI according to the hierarchical structure so that
the UI itself becomes hierarchical as well. Consequently, the UI
may include a number of layers, respectively corresponding to the
levels in the hierarchy. The positions of the objects within the
hierarchy are preserved in the UI, such that a specific object at a
specific level in the hierarchy is presented in the corresponding
layer of the UI. The relationships among the objects within the
hierarchy are maintained in the UI. In particular embodiments, on
an electronic device, the downloaded objects may be rendered for
user consumption based on what objects are currently being consumed
or likely to be consumed in the near future by a user of the
device.
[0015] In particular embodiments, there may be any number of
computing or electronic devices connected to computer or
communication networks through wired or wireless network
connections. These devices may transmit data to one another over
the networks using any suitable network or communication protocols.
As an example, FIG. 1 illustrates a system for transmitting data
between two devices (e.g., from a first device to a second device).
To simplify the discussion, two devices 110A and 110B are connected
to a network 120, each by a link 130.
[0016] In particular embodiments, network 120 may be an intranet,
an extranet, a virtual private network (VPN), a local area network
(LAN), a wireless LAN (WLAN), a wide area network (WAN), a
metropolitan area network (MAN), a portion of the Internet, another
network 120, or a combination of two or more such networks 120.
This disclosure contemplates any suitable network 120. In
particular embodiments, a link 130 couples each device 110 to
network 120. In particular embodiments, link 130 may include one or
more wireline, wireless, or optical links. In particular
embodiments, link 130 may include an intranet, an extranet, a VPN,
a LAN, a WLAN, a WAN, a MAN, a portion of the Internet, another
link 130, or a combination of two or more such links 130. This
disclosure contemplates any suitable link 130.
[0017] In particular embodiments, devices 110 may transmit data to
each other over network 120. As an example, in a client-server
system, device 110A may be a server and device 110B may be a
client. Device 110A (e.g., the server) may transmit data to device
110B (e.g., the client). As another example, in a peer-to-peer
system, devices 110A and 110B may both be peer nodes. Device 110A
may transmit data to device 110B, and vice versa. Suppose that
device 110A transmits data to device 110B. In this case, device
110A may be referred to as the "data-sending" device, and device
110B may be referred to as the "data-receiving" device. Data may be
pushed or pulled from data-sending device 110A to data-receiving
device 110B, depending on which device has actually initiated the
data transmission. The process of transmitting data from
data-sending device 110A to data-receiving device 110B may also be
referred to as "downloading" the data from device 110A to device
110B.
[0018] In particular embodiments, the data downloaded from one
device (e.g., device 110A) to another device (e.g., device 110B)
may represent user-consumable content, such as, for example and
without limitations, texts, images, videos, audios, executables,
feeds, etc., that may be used or viewed or heard or interacted with
by a user of a device. In particular embodiments, such
user-consumable content may be presented to a user of a device in a
suitable user interface (UI) provided on the device. In particular
embodiments, the user-consumable content may be organized (e.g.,
based on how specific pieces of user-consumable content are related
to one another) so that the content may be presented to the user in
an organized or logical or user-friendly manner, as opposed to, for
example, randomly. In such cases, the data downloaded from one
device (e.g., device 110A) to another device (e.g., device 110B)
may also represent how the individual pieces of user-consumable
content are organized (e.g., their organizational structure).
[0019] One way to organize a group of objects is into a hierarchy.
As an example, objects may be organized into a hierarchy based on
how the individual objects are related to each other. The hierarchy
may have any number of levels, and at each level, there may be any
number of objects. Parent-child or sibling relationships may exist
between specific objects in the hierarchy. Within the hierarchy, a
parent object is one level above the level of its child objects.
Two sibling objects are at the same level and share the same parent
object. In addition, any portion of the hierarchy may also be
considered a hierarchy in itself As an example, FIG. 2 illustrates
a portion of an object hierarchy 200 that includes a number of
objects 210. In particular embodiments, an object in a hierarchy
may or may not have a parent. If an object does not have a parent,
it may be referred to as a "root" object (e.g., object 210A). In
particular embodiments, an object in a hierarchy may or may not
have any children. If an object does not have any children, it may
be referred to as a "leaf" object (e.g., object 210B). If an object
does have children (e.g., object 210C), it may have any number of
children. In addition, objects sharing the same parent may be
referred to as each other's "siblings". For example, in FIG. 2,
object 210C is the parent of objects 210D and 210B. Objects 210D
and 210B are the children of object 210C and are siblings to each
other. Thus, a hierarchy of objects (e.g., object hierarchy 200)
not only includes the individual objects themselves but also
indicates the relationships among the specific objects. Moreover,
the position of a specific object within the hierarchy may be used
to indicate its relationships with other objects in the
hierarchy.
[0020] Objects may be of any applicable types. In particular
embodiments, an object may correspond to a piece of user-consumable
content. In particular embodiments, an object may be consumed by a
user if the user may, for example and without limitation, interact
with, view, read, listen to, manipulate, or handle the object. For
example, some user-consumable objects may be text blocks, images,
videos, audios, feeds, executables (e.g., application programs or
games), websites, web pages, digital books, photo albums, posts, or
messages. In particular embodiments, user-consumable content, or
more specifically, user-consumable objects, may be organized into a
hierarchy based on, for example, the relationships among the
individual pieces of user-consumable content or objects.
Consequently, a hierarchy of user-consumable content may be
represented as a hierarchy of objects, where individual objects in
the hierarchy may correspond to specific pieces of user-consumable
content (e.g., texts, images, videos, audios, executables, etc.).
In addition, the structure of the hierarchy indicates the
relationships among the specific objects.
[0021] In some cases, the relationships among the objects may
correspond to how the objects are organized and presented to a
user. In particular embodiments, when presenting a hierarchy of
objects to a user of a device, the objects may be organized and
presented according to the structure of the hierarchy. The objects
may be presented in a user interface (UI) provided on the device.
The objects may be organized and presented in the UI according to
the structure of the hierarchy so that the UI itself becomes
hierarchical as well. Consequently, the UI may include a number of
layers, respectively corresponding to the levels in the hierarchy.
The positions of the objects within the hierarchy are preserved in
the UI, such that a specific object at a specific position in the
hierarchy is presented in the corresponding position in the UI. The
relationships among the objects within the hierarchy are maintained
in the UI.
[0022] As an example, in the context of the desktop of a computing
device, the desktop may be a parent object, and sometimes the root
object of a hierarchy, whose child objects are the individual
software applications available on the desktop. A software
application, while itself being one of the child objects of the
desktop, is also the parent object of the individual components of
that software application. Different software applications may
include different components. For example, for a software
application that manages digital books (e.g., a book reader
application), its components may include the digital books
available, the individual chapters of each book, the pages of each
chapter, and the texts, images, videos, audios, or any graphical
user interface (GUI) or content or media elements on each page.
Each of these also corresponds to an object in the hierarchy. More
specifically, when these objects are organized in a hierarchy, the
book application may be the parent object of the digital books. A
digital book may be the parent object of the individual chapters of
that book. A chapter, while itself being one of the child objects
of the book, is also the parent object of the pages in that
chapter. A page is the parent object of the texts, images, videos,
audios, or any GUI or content or media elements on that page. A
text block, image, video, audio, or GUI or content or media element
is one of the child objects of the page to which it belongs.
Similarly, for a software application that manages news feeds, its
components may include the individual news channels and the news
stories within each channel. Each of these may correspond to an
object. When these objects are arranged in a hierarchy, the
news-feed application, while itself being one of the child objects
of the desktop, is also the parent object of the news channels. A
news channel in turn is the parent object of the news stories
included in that channel.
[0023] As another example, in the context of the Internet or the
World Wide Web, the Internet may be a parent object whose child
objects are the individual websites. A website, while itself being
one of the child objects of the Internet, is also the parent object
of the individual web pages of that website. A web page, while
itself being one of the child objects of the website to which it
belongs, is the parent object of the texts, images, videos, audios,
or links (e.g., Uniform Resource Locators (URLs)) included in the
web page. Each text block, image, video, audio, or link may also
correspond to a specific object in the hierarchy.
[0024] As a third example, a website, such as a social-networking
website, may also be arranged in such a hierarchical structure for
navigating the content of the social-networking website. In this
context, the social-networking website may be a parent object whose
child objects are the components (e.g., photo albums, user profile
pages, etc.) of the website. For example, a photo album, while
itself being a child object of the social-networking website, may
in turn be a parent object, and the individual photos within the
album may be the child objects of the photo album. A user's profile
page may be structured in such a hierarchical fashion as well. The
profile page itself may be considered a parent object, and the
individual objects on the profile page may be the child objects of
the profile page. In particular embodiments, a profile page may be
considered and rendered (e.g., for presentation to a user) as a
linear timeline of objects, such as, for example and without
limitation, photos, photo albums, check-ins, comments from other
users, attended events, tags, etc. In particular embodiments, child
objects in the hierarchy may also include applications the user has
added to the profile page, such as a Spotify music sharing
application. Moreover, individual stories, songs the user has
listened to, and playlists may be child objects at a lower
hierarchical level. In particular embodiments, child objects in the
hierarchy may include particular sections of a user's profile, such
as the user's education and employment information, or the public
"wall" of the user's profile page. This disclosure contemplates
representing and addressing any collection of content in a
hierarchical object or nodal structure.
[0025] As these examples illustrate, an object may be of any type
and this disclosure contemplates any applicable types of objects.
For example and without limitation, the term "object" may refer to
any type of content, including but not limited to images, videos,
captions, text blocks or boxes, user interface elements, URLs,
newsfeed stories, references to other objects, advertisements,
calendar events, units for displaying open graph analysis that may
be graphically rendered, applications, websites, web pages, books,
chapters. In particular embodiments, given a hierarchy of objects,
which may be a portion of another, larger hierarchy of objects, the
hierarchical relationships (e.g., parent-child or sibling
relationships, positions of the objects within the hierarchy)
between specific objects may direct some aspects of how these
objects behave in the context of a user interface (UI) or how the
objects are presented to a user.
[0026] In particular embodiments, data representing a hierarchy of
objects, including the objects themselves and the structure of the
hierarchy, may be downloaded from one device (e.g., a server) to
another device (e.g., a client). In particular embodiments, the
individual objects in the hierarchy may be transmitted between
devices based on their positions in the hierarchy (i.e., the
structure of the hierarchy) and thus based on their relationships
to each other. In particular embodiments, data representing a
hierarchy of objects may be transmitted between two devices one
level of the hierarchy at a time. That is, objects at the first
level of the hierarchy are downloaded, followed by objects at the
second level of the hierarchy, followed by objects at the third
level of the hierarchy, and so on, until those objects at the last
level of the hierarchy are downloaded. In FIG. 3, which illustrates
an example method for downloading a hierarchy of objects from one
device to another device, the downloading process is iterative,
starting with the first level of the hierarchy and proceeding down
one level at a time. During each iteration, data representing the
objects at the current level of the hierarchy are downloaded (STEP
310). Then, if there are more levels left in the hierarchy (STEP
320, "YES"), the downloading process moves down to the next level
(STEP 330) and another iteration is repeated, until all objects at
all the levels have been downloaded.
[0027] As an example, a hierarchy of objects may represent a book.
The book may include any number of sections (e.g., chapters); each
section may include any number of pages; and each page may include
any number of texts, images, videos, audios, etc. Based on the
method illustrated in FIG. 3, the book hierarchy may be downloaded
one level at a time. First, the data representing the book (e.g.,
the book's title, cover page, author, publication information, and
table of content (TOC)) may be downloaded, followed by the data
representing the individual sections (e.g., each section's title,
summary, background page, and page index), following by the data
representing the pages of the sections, followed by the data
representing the content (e.g., texts, images, videos, audios,
etc.) of the pages. When a user first opens the book, the TOC of
the book, including the thumbnail versions of the pages, may be
downloaded first. This allows the user to browse the entire book
quickly and get an overview of the structure of the book. While the
user is browsing the book on a superficial level, objects at lower
levels of the hierarchy (e.g., the sections and pages) may be
downloaded so that they are available when the user is ready to
dive into specific sections of the book.
[0028] Alternatively or in addition, in particular embodiments,
data representing a hierarchy of objects may be transmitted between
two devices one section of the hierarchy at a time. That is, at a
particular level, a first object is downloaded, followed by all the
child objects of that first object. Then, a second object is
downloaded, following by all the child objects of that second
object. Then a third object is downloaded, following by all the
child objects of that third object. And so on, until all the
objects in the hierarchy are downloaded. In FIG. 4, which
illustrates another example method for downloading a hierarchy of
objects from one device to another device, the downloading process
is again iterative, starting with the first object at a particular
level of the hierarchy. During each iteration, data representing
the current object at the current level of the hierarchy are
downloaded (STEP 410). Then, if the current object has any child
objects that have not been downloaded (STEP 420, "YES"), data
representing those child objects are downloaded (STEP 430). If
there are more objects at the current level (STEP 440, "YES"), then
the downloading process moves over to the next object at the
current level (STEP 450) and another iteration is repeated, until
all the objects in the hierarchy are downloaded.
[0029] In particular embodiments, the two concepts illustrated in
FIGS. 3 and 4 may be combined. As an example, given a hierarchy of
objects, for the higher levels in the hierarchy, the objects may be
downloaded one level at a time (e.g., as illustrated in FIG. 3). On
the other hand, for the lower levels in the hierarchy, the objects
may be downloaded one section at a time, where a parent object is
downloaded, followed by downloading its child objects (e.g., as
illustrated in FIG. 4). With the example where a hierarchy of
objects representing a book, first, the objects at the higher
levels of the hierarchy, such as those corresponding to the book
and the sections in the book, may be downloaded one level at a time
(e.g., first downloading the book, then downloading the sections of
the book). This allows the user to browse through the entire book.
For example, a digital book may include introductory content (e.g.,
video, slideshow, audio clip, animation, etc.). While the user is
consuming (e.g., reading, viewing, or listening to) the
introductory content of the book, the rest of the sections of the
book may be downloaded. Then, when a user selects a specific
section to read in further detail, the pages and content of each
page in that section may be downloaded before the other sections,
if they have not already been downloaded. This way, even if the
user has selected a section in the middle or near the end of the
book, the content of the user-selected section becomes available to
the user quickly. The user does not need to wait for the content of
all the proceeding sections in the book to be downloaded before the
content of the user-selected section is downloaded. While the user
is reading one section, another section (e.g., a section
immediately before or after the currently user-selected section)
may be downloaded. In other words, data representing objects (e.g.,
user-consumable content) may be downloaded incrementally and
intelligently (e.g., based on what content the user is currently
consuming or is likely to consume soon).
[0030] In particular embodiments, objects in a hierarchy may be
downloaded to a device for user consumption based on what objects a
user of the device is currently consuming (e.g., viewing, listening
to, or interacting with). With the example where a hierarchy of
objects representing a book, suppose that the user is currently
reading Chapter 4 of the book. All the pages in Chapter 4, as well
as the content included in each page, may be downloaded first.
Thereafter, while the user is reading Chapter 4, the other chapters
may be downloaded. For example, the pages in Chapter 5 and their
content may be downloaded next, as it is likely that after Chapter
4, the user will read Chapter 5 next. The pages in Chapter 3 and
their content may be downloaded sooner rather than later as well,
as it is possible that the user may want to refer back to Chapter
3. In other words, those chapters in the book that are closer to
the chapter the user is currently reading may be downloaded first.
Then, the other chapters (e.g., chapters 10, 11, 12 . . . ) may be
downloaded.
[0031] In particular embodiments, the objects may be downloaded in
an order determined based on what objects are presented to the user
or the user is consuming now as well as what objects are likely to
be presented to the user or consumed by the user in the near
future. In other words, in particular embodiments, there is an
attempt to estimate or predict an order that the objects are to be
presented to the user in the future (e.g., predicting in what order
the user is likely to consume the objects). For example, the
prediction of what content the user is likely to consumer soon may
be based on the user's actions, including current actions and
recently-past actions, with respect to the objects (e.g., which
section of the book the user is currently reading or has just
finished reading). Those objects that the user is likely to consume
sooner may be downloaded first, before those object that the user
is likely to consumer later, so that the user does not need to wait
for the objects to be downloaded. In other words, the user's
interactions with objects at specific positions within the
hierarchical structure may help determines which objects are
downloaded sooner and which objects are downloaded later. The
objects are prioritized for downloading to the user's device. The
objects that are needed sooner (e.g., the user is likely to consume
these objects soon) may be downloaded first, and the objects that
are needed later may be downloaded second. For example, if a user
is currently viewing a parent object (e.g., a chapter's title
page), the current object's child objects (e.g., the pages in the
chapter) may be downloaded first.
[0032] When a user consumes objects (e.g., viewing, listening to,
or interacting with the objects), the user may interact with the
objects (e.g., manipulating, handling, or scrolling through the
objects) through various user input means using, for example, a
keyboard, a mouse, a stylus, or the user's fingers. As an example,
the user may scroll through a series of objects (e.g., a series of
images included in a photo album or a series of photo albums
included in the user's profile page) by sliding the user's finger
or fingers across a touch-sensitive display screen of the user's
device. This sliding motion, which is often referred to as a
"swipe", may result in a vector representing the direction and the
speed or acceleration of each sliding movement of the user's
fingers.
[0033] In particular embodiments, the vector of a user's touch
input (e.g., using the user's fingers or a stylus), or its
derivative vector, may be utilized to ascertain whether a user
wishes to browse other objects on the same hierarchical level as
the current object, or the child objects of the current object. As
an example, if a user is swiping through a series of photo album
objects on a profile page in a social-networking website, the touch
input vector may have a high velocity, or, even more tellingly, a
high acceleration. Such an input may signal to the application
(e.g., software implementing the social-networking website) that
the user wishes to browse other photo albums, and the application
may begin downloading photo album thumbnails based on the magnitude
of acceleration or velocity of the input vector. As an example, if
a user swipes from the ith album at a high velocity or
acceleration, the application may load thumbnails for the (i+10)th
album, whereas if the user swipes slowly from the ith album, the
application may load thumbnails for the (i+1)th album. Conversely,
if there is no velocity or acceleration to the input vector (i.e.,
no swiping input), the application may begin downloading the child
objects (e.g., the individual photos) of the currently-viewed album
cover to the user's device.
[0034] In particular embodiments, while a hierarchy of objects are
being downloaded to a user's device, a visual component (e.g.,
displayed on the user's device) may indicate the current status of
the downloading process. As an example, a progress bar 510, as
illustrated in FIG. 5, may indicate the current status of
downloading a chapter of a book.
[0035] Similar to prioritizing object downloading based on what
objects a user may be likely to consume sooner and what objects the
user may be likely to consume later, in particular embodiments,
after objects have been downloaded to a user's device, they may be
rendered (e.g., for presentation to the user) in an order
determined based on what objects the user may be likely to consume
sooner and what objects the user may be likely to consume later.
Those objects that the user is likely to consume sooner are
rendered first, before those the user is likely to consume later.
With the example where a hierarchy of objects representing a book,
the pages of the section the user is currently reading may be
rendered first. In particular embodiments, a rendered object may be
stored in a buffer (e.g., in cache) so that it is readily available
for presentation to the user. Consequently, the user does not need
to wait for objects to be rendered before the objects are presented
to the user.
[0036] As another example, in the context of a digital book,
content elements may be pre-drawn and loaded into a buffer based on
where the user has scrolled (e.g., which section or which page the
user is currently reading). The digital book application may
extrapolate from the user's screen size to determine the size and
contents of the buffer.
[0037] In particular embodiments, given a specific object (e.g.,
image, video, audio, etc.) in a hierarchy, there may be different
versions of the same object tailored to different types of
electronic devices. Different types of devices may have different
resources (e.g., processors, memories, network connections, etc.),
capabilities (e.g., hardware and software), or operational
environments (e.g., operating systems). For example, some devices
may have powerful processors, large amounts of cache, fast network
connections, big display screens, etc. Conversely, some devices may
have lesser capabilities. A specific object may have different
versions tailored to devices having different resources and
capabilities. As an example, an image may have different versions
with different resolutions, dimensions, or formats suitable for
different types of devices. The same image may be zoomable on some
types of devices but not others. As another example, a video may
have different versions with different qualities, compression
rates, or formats suitable for different types of devices. A
smartphone may receive a lower resolution version of the image
while a tablet may receive a higher resolution version of the
image, as the smartphone probably has a smaller display screen than
the tablet. A device with a faster network connection (e.g.,
Ethernet connection) may receive a higher quality version of the
video while another device with a slower network connection (e.g.,
cellular telephone connection) may receive a lower quality version
of the video, as the first device is able to download the video
data faster than the second device.
[0038] In particular embodiments, given a specific hierarchy of
objects, there may be different versions of the same object
hierarchy tailored to different types of electronic devices. The
structure of the hierarchy (e.g., in terms of object positions or
the specific objects in the hierarchy) may differ somewhat between
the versions. Alternatively or in addition, some of the objects in
the hierarchy may each have different versions. As an example,
there may be different versions of a book tailored to different
types of devices. For a device with more resources (e.g., fast
network connections, more memory), the version of the book may
include more multimedia content (e.g., videos, audios) or higher
quality multimedia content. For a device with less resources, the
version of the book may include more textual content or lower
quality multimedia content.
[0039] FIG. 6 illustrates an example method for downloading
different versions of an object to different types of devices. If
an object is to be downloaded to a device and there are multiple
versions of the object (STEP 610, "YES"), then in particular
embodiments, a specific version of the object is selected based on
the resources or capabilities (e.g., hardware or software
configurations) of the device (STEP 620). The selected version of
the object is more suitable for the device to which it is to be
downloaded. The selected version of the object is downloaded to the
device (STEP 630). On the other hand, if the object does not have
multiple versions (STEP 610, "NO), the object is downloaded to the
device (STEP 640).
[0040] Particular embodiments may be implemented on one or more
electronic devices or computer systems. FIG. 7 illustrates an
example electronic device 700. For example, computer system 700 may
be an embodiment for device 110A or device 110B illustrated in FIG.
1. In particular embodiments, one or more computer systems 700
perform one or more steps of one or more methods described or
illustrated herein. In particular embodiments, one or more computer
systems 700 provide functionality described or illustrated herein.
In particular embodiments, software running on one or more computer
systems 700 performs one or more steps of one or more methods
described or illustrated herein or provides functionality described
or illustrated herein. Particular embodiments include one or more
portions of one or more computer systems 700.
[0041] This disclosure contemplates any suitable number of computer
systems 700. This disclosure contemplates computer system 700
taking any suitable physical form. As example and not by way of
limitation, computer system 700 may be an embedded computer system,
a system-on-chip (SOC), a single-board computer system (SBC) (such
as, for example, a computer-on-module (COM) or system-on-module
(SOM)), a desktop computer system, a laptop or notebook computer
system, an interactive kiosk, a mainframe, a mesh of computer
systems, a mobile telephone, a personal digital assistant (PDA), a
server, or a combination of two or more of these. Where
appropriate, computer system 700 may include one or more computer
systems 700; be unitary or distributed; span multiple locations;
span multiple machines; or reside in a cloud, which may include one
or more cloud components in one or more networks. Where
appropriate, one or more computer systems 700 may perform without
substantial spatial or temporal limitation one or more steps of one
or more methods described or illustrated herein. As an example and
not by way of limitation, one or more computer systems 700 may
perform in real time or in batch mode one or more steps of one or
more methods described or illustrated herein. One or more computer
systems 700 may perform at different times or at different
locations one or more steps of one or more methods described or
illustrated herein, where appropriate.
[0042] In particular embodiments, computer system 700 includes a
processor 702, memory 704, storage 706, an input/output (I/O)
interface 708, a communication interface 710, and a bus 712.
Although this disclosure describes and illustrates a particular
computer system having a particular number of particular components
in a particular arrangement, this disclosure contemplates any
suitable computer system having any suitable number of any suitable
components in any suitable arrangement.
[0043] In particular embodiments, processor 702 includes hardware
for executing instructions, such as those making up a computer
program. As an example and not by way of limitation, to execute
instructions, processor 702 may retrieve (or fetch) the
instructions from an internal register, an internal cache, memory
704, or storage 706; decode and execute them; and then write one or
more results to an internal register, an internal cache, memory
704, or storage 706. In particular embodiments, processor 702 may
include one or more internal caches for data, instructions, or
addresses. This disclosure contemplates processor 702 including any
suitable number of any suitable internal caches, where appropriate.
As an example and not by way of limitation, processor 702 may
include one or more instruction caches, one or more data caches,
and one or more translation lookaside buffers (TLBs). Instructions
in the instruction caches may be copies of instructions in memory
704 or storage 706, and the instruction caches may speed up
retrieval of those instructions by processor 702. Data in the data
caches may be copies of data in memory 704 or storage 706 for
instructions executing at processor 702 to operate on; the results
of previous instructions executed at processor 702 for access by
subsequent instructions executing at processor 702 or for writing
to memory 704 or storage 706; or other suitable data. The data
caches may speed up read or write operations by processor 702. The
TLBs may speed up virtual-address translation for processor 702. In
particular embodiments, processor 702 may include one or more
internal registers for data, instructions, or addresses. This
disclosure contemplates processor 702 including any suitable number
of any suitable internal registers, where appropriate. Where
appropriate, processor 702 may include one or more arithmetic logic
units (ALUs); be a multi-core processor; or include one or more
processors 702. Although this disclosure describes and illustrates
a particular processor, this disclosure contemplates any suitable
processor.
[0044] In particular embodiments, memory 704 includes main memory
for storing instructions for processor 702 to execute or data for
processor 702 to operate on. As an example and not by way of
limitation, computer system 700 may load instructions from storage
706 or another source (such as, for example, another computer
system 700) to memory 704. Processor 702 may then load the
instructions from memory 704 to an internal register or internal
cache. To execute the instructions, processor 702 may retrieve the
instructions from the internal register or internal cache and
decode them. During or after execution of the instructions,
processor 702 may write one or more results (which may be
intermediate or final results) to the internal register or internal
cache. Processor 702 may then write one or more of those results to
memory 704. In particular embodiments, processor 702 executes only
instructions in one or more internal registers or internal caches
or in memory 704 (as opposed to storage 706 or elsewhere) and
operates only on data in one or more internal registers or internal
caches or in memory 704 (as opposed to storage 706 or elsewhere).
One or more memory buses (which may each include an address bus and
a data bus) may couple processor 702 to memory 704. Bus 712 may
include one or more memory buses, as described below. In particular
embodiments, one or more memory management units (MMUs) reside
between processor 702 and memory 704 and facilitate accesses to
memory 704 requested by processor 702. In particular embodiments,
memory 704 includes random access memory (RAM). This RAM may be
volatile memory, where appropriate. Where appropriate, this RAM may
be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, where
appropriate, this RAM may be single-ported or multi-ported RAM.
This disclosure contemplates any suitable RAM. Memory 704 may
include one or more memories 704, where appropriate. Although this
disclosure describes and illustrates particular memory, this
disclosure contemplates any suitable memory.
[0045] In particular embodiments, storage 706 includes mass storage
for data or instructions. As an example and not by way of
limitation, storage 706 may include an HDD, a floppy disk drive,
flash memory, an optical disc, a magneto-optical disc, magnetic
tape, or a Universal Serial Bus (USB) drive or a combination of two
or more of these. Storage 706 may include removable or
non-removable (or fixed) media, where appropriate. Storage 706 may
be internal or external to computer system 700, where appropriate.
In particular embodiments, storage 706 is non-volatile, solid-state
memory. In particular embodiments, storage 706 includes read-only
memory (ROM). Where appropriate, this ROM may be mask-programmed
ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically
erasable PROM (EEPROM), electrically alterable ROM (EAROM), or
flash memory or a combination of two or more of these. This
disclosure contemplates mass storage 706 taking any suitable
physical form. Storage 706 may include one or more storage control
units facilitating communication between processor 702 and storage
706, where appropriate. Where appropriate, storage 706 may include
one or more storages 706. Although this disclosure describes and
illustrates particular storage, this disclosure contemplates any
suitable storage.
[0046] In particular embodiments, I/O interface 708 includes
hardware, software, or both providing one or more interfaces for
communication between computer system 700 and one or more I/O
devices. Computer system 700 may include one or more of these I/O
devices, where appropriate. One or more of these I/O devices may
enable communication between a person and computer system 700. As
an example and not by way of limitation, an I/O device may include
a keyboard, keypad, microphone, monitor, mouse, printer, scanner,
speaker, still camera, stylus, tablet, touch screen, trackball,
video camera, another suitable I/O device or a combination of two
or more of these. An I/O device may include one or more sensors.
This disclosure contemplates any suitable I/O devices and any
suitable I/O interfaces 708 for them. Where appropriate, I/O
interface 708 may include one or more device or software drivers
enabling processor 702 to drive one or more of these I/O devices.
I/O interface 708 may include one or more I/O interfaces 708, where
appropriate. Although this disclosure describes and illustrates a
particular I/O interface, this disclosure contemplates any suitable
I/O interface.
[0047] In particular embodiments, communication interface 710
includes hardware, software, or both providing one or more
interfaces for communication (such as, for example, packet-based
communication) between computer system 700 and one or more other
computer systems 700 or one or more networks. As an example and not
by way of limitation, communication interface 710 may include a
network interface controller (NIC) or network adapter for
communicating with an Ethernet or other wire-based network or a
wireless NIC (WNIC) or wireless adapter for communicating with a
wireless network, such as a WI-FI network. This disclosure
contemplates any suitable network and any suitable communication
interface 710 for it. As an example and not by way of limitation,
computer system 700 may communicate with an ad hoc network, a
personal area network (PAN), a local area network (LAN), a wide
area network (WAN), a metropolitan area network (MAN), or one or
more portions of the Internet or a combination of two or more of
these. One or more portions of one or more of these networks may be
wired or wireless. As an example, computer system 700 may
communicate with a wireless PAN (WPAN) (such as, for example, a
BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular
telephone network (such as, for example, a Global System for Mobile
Communications (GSM) network), or other suitable wireless network
or a combination of two or more of these. Computer system 700 may
include any suitable communication interface 710 for any of these
networks, where appropriate. Communication interface 710 may
include one or more communication interfaces 710, where
appropriate. Although this disclosure describes and illustrates a
particular communication interface, this disclosure contemplates
any suitable communication interface.
[0048] In particular embodiments, bus 712 includes hardware,
software, or both coupling components of computer system 700 to
each other. As an example and not by way of limitation, bus 712 may
include an Accelerated Graphics Port (AGP) or other graphics bus,
an Enhanced Industry Standard Architecture (EISA) bus, a front-side
bus (FSB), a HYPERTRANSPORT (HT) interconnect, an Industry Standard
Architecture (ISA) bus, an INFINIBAND interconnect, a low-pin-count
(LPC) bus, a memory bus, a Micro Channel Architecture (MCA) bus, a
Peripheral Component Interconnect (PCI) bus, a PCI-Express (PCIe)
bus, a serial advanced technology attachment (SATA) bus, a Video
Electronics Standards Association local (VLB) bus, or another
suitable bus or a combination of two or more of these. Bus 712 may
include one or more buses 712, where appropriate. Although this
disclosure describes and illustrates a particular bus, this
disclosure contemplates any suitable bus or interconnect.
[0049] Herein, a computer-readable non-transitory storage medium or
media may include one or more semiconductor-based or other
integrated circuits (ICs) (such, as for example, field-programmable
gate arrays (FPGAs) or application-specific ICs (ASICs)), hard disk
drives (HDDs), hybrid hard drives (HHDs), optical discs, optical
disc drives (ODDs), magneto-optical discs, magneto-optical drives,
floppy diskettes, floppy disk drives (FDDs), magnetic tapes,
solid-state drives (SSDs), RAM-drives, SECURE DIGITAL cards or
drives, any other suitable computer-readable non-transitory storage
medium or media, or any suitable combination of two or more of
these, where appropriate. A computer-readable non-transitory
storage medium or media may be volatile, non-volatile, or a
combination of volatile and non-volatile, where appropriate.
[0050] Herein, "or" is inclusive and not exclusive, unless
expressly indicated otherwise or indicated otherwise by context.
Therefore, herein, "A or B" means "A, B, or both," unless expressly
indicated otherwise or indicated otherwise by context. Moreover,
"and" is both joint and several, unless expressly indicated
otherwise or indicated otherwise by context. Therefore, herein, "A
and B" means "A and B, jointly or severally," unless expressly
indicated otherwise or indicated otherwise by context.
[0051] This disclosure encompasses all changes, substitutions,
variations, alterations, and modifications to the example
embodiments herein that a person having ordinary skill in the art
would comprehend. Moreover, reference in the appended claims to an
apparatus or system or a component of an apparatus or system being
adapted to, arranged to, capable of, configured to, enabled to,
operable to, or operative to perform a particular function
encompasses that apparatus, system, component, whether or not it or
that particular function is activated, turned on, or unlocked, as
long as that apparatus, system, or component is so adapted,
arranged, capable, configured, enabled, operable, or operative.
* * * * *