Sign up to receive free email alerts when patent applications with chosen keywords are publishedSIGN UP

Abstract:

A user can proof (e.g., view, review) an electronic publication on a
portable device. When the user finds errors in the electronic publication
on the portable device, the user can edit the electronic publication on
the editing device. The changes can be automatically synchronized with
the portable device and displayed so that the user can review the changes
and continue proofing the electronic publication on the portable device.
In some implementations, an editing device can monitor files associated
with an electronic publication for changes to the files and, when changes
are detected, the files can be automatically synchronized to a portable
device coupled to the editing device.

Claims:

1. A method comprising: receiving, at an editing device, input
identifying files associated with an electronic publication; monitoring,
at the editing device, file metadata associated with the electronic
publication files for data indicative of a modification to the electronic
publication files; identifying one or more modified files based on the
monitoring; transmitting file metadata associated with the modified files
to a portable device coupled to the editing device; receiving file
information from the portable device identifying at least one of the
modified files; and transmitting the at least one identified modified
file to the portable device.

2. The method of claim 1, further comprising: obtaining information
identifying a particular file that is currently displayed on the portable
device; and prioritizing the transmission of the at least one identified
modified file to the portable device based on the particular file.

3. A method comprising: displaying content of an electronic publication
on a portable device; receiving, from an editing device, electronic
publication file metadata corresponding to one or more files of the
electronic publication stored on the portable device; comparing the
received file metadata to local file metadata associated with the one or
more files; based on the comparison, identifying at least one changed
file; transmitting, to the editing device, information identifying the at
least one changed file; receiving the at least one changed file from the
editing device; and refreshing the display of the electronic publication
content on the portable device.

4. The method of claim 3, wherein refreshing the display includes
restarting an application used for displaying the electronic publication
content.

5. The method of claim 3, wherein refreshing the display includes
temporarily hiding the content.

6. The method of claim 3, wherein receiving the at least one changed file
from the editing device includes receiving a file associated with
currently displayed content before files not associated with the
currently displayed content.

7. The method of claim 3, wherein receiving the at least one changed file
from the editing device includes receiving text files before image files.

8. A non-transitory computer-readable medium including one or more
sequences of instructions which, when executed by one or more processors,
causes: receiving input identifying files associated with an electronic
publication; monitoring file metadata associated with the electronic
publication files for data indicative of a modification to the electronic
publication files; identifying one or more modified files based on the
monitoring; transmitting file metadata associated with the modified files
to a portable device; receiving file information from the portable device
identifying at least one of the modified files; and transmitting the at
least one identified modified file to the portable device.

9. The computer-readable medium of claim 8, wherein the instructions
cause: obtaining information identifying a particular file that is
currently displayed on the portable device; and prioritizing the
transmission of the at least one identified modified file to the portable
device based on the particular file.

10. A non-transitory computer-readable medium including one or more
sequences of instructions which, when executed by one or more processors,
causes: displaying content of an electronic publication on a portable
device; receiving, from an editing device, electronic publication file
metadata corresponding to one or more files of the electronic publication
stored on the portable device; comparing the received file metadata to
local file metadata associated with the one or more files; based on the
comparison, identifying at least one changed file; transmitting, to the
editing device, information identifying the at least one changed file;
receiving the at least one changed file from the editing device; and
refreshing the display of the electronic publication content on the
portable device.

11. The computer-readable medium of claim 10, wherein the instructions
that cause refreshing the display include instructions that cause
restarting an application used for displaying the electronic publication
content.

12. The computer-readable medium of claim 10, wherein the instructions
that cause refreshing the display include instructions that cause
temporarily hiding the content.

13. The computer-readable medium of claim 10, wherein the instructions
that cause receiving the at least one changed file from the editing
device include instructions that cause receiving a file associated with
currently displayed content before files not associated with the
currently displayed content.

14. The computer-readable medium of claim 10, wherein the instructions
that cause receiving the at least one changed file from the editing
device include instructions that cause receiving text files before image
files.

15. A system comprising: one or more processors; and a non-transitory
computer-readable medium including one or more sequences of instructions
which, when executed by the one or more processors, causes: receiving
input identifying files associated with an electronic publication;
monitoring file metadata associated with the electronic publication files
for data indicative of a modification to the electronic publication
files; identifying one or more modified files based on the monitoring;
transmitting file metadata associated with the modified files to a
portable device; receiving file information from the portable device
identifying at least one of the modified files; and transmitting the at
least one identified modified file to the portable device.

16. The system of claim 15, wherein the instructions cause: obtaining
information identifying a particular file that is currently displayed on
the portable device; and prioritizing the transmission of the at least
one identified modified file to the portable device based on the
particular file.

17. A system comprising: one or more processors; and a non-transitory
computer-readable medium including one or more sequences of instructions
which, when executed by the one or more processors, causes: displaying
content of an electronic publication on a portable device; receiving,
from an editing device, electronic publication file metadata
corresponding to one or more files of the electronic publication stored
on the portable device; comparing the received file metadata to local
file metadata associated with the one or more files; based on the
comparison, identifying at least one changed file; transmitting, to the
editing device, information identifying the at least one changed file;
receiving the at least one changed file from the editing device; and
refreshing the display of the electronic publication content on the
portable device.

18. The system of claim 17, wherein the instructions that cause
refreshing the display include instructions that cause restarting an
application used for displaying the electronic publication content.

19. The system of claim 17, wherein the instructions that cause
refreshing the display include instructions that cause temporarily hiding
the content.

20. The system of claim 17, wherein the instructions that cause receiving
the at least one changed file from the editing device include
instructions that cause receiving a file associated with currently
displayed content before files not associated with the currently
displayed content.

21. The system of claim 17, wherein the instructions that cause receiving
the at least one changed file from the editing device include
instructions that cause receiving text files before image files.

Description:

[0002] Users often read electronic publications on portable devices.
Electronic books, magazines, websites and newspapers, for example, can be
read on tablet computers, smartphones, text readers and other handheld
devices. Consistently displaying electronic publication content on
heterogeneous devices can be problematic. For example, due to differences
in device capabilities and characteristics, the content may display
properly on one device while another device may display the content with
various display errors. Thus, an electronic publisher may need to proof
the electronic publication on a variety of devices and edit the
electronic publication to accommodate the characteristics of each device
before publishing the electronic publication.

SUMMARY OF THE DISCLOSURE

[0003] A user can proof (e.g., proofread, view, review) an electronic
publication on a portable device. When the user finds errors in the
electronic publication on the portable device, the user can edit the
electronic publication on an editing device. The changes can be
automatically synchronized with the portable device and displayed so that
the user can review the changes and continue proofing the electronic
publication on the portable device. In some implementations, the editing
device can monitor files associated with an electronic publication for
changes to the files and, when changes are detected, the files can be
automatically synchronized to a portable device coupled to the editing
device.

[0004] Particular implementations provide at least the following
advantages: A user can quickly proof an electronic publication on a
portable device without having to manually synchronize or update the
electronic publication when changes are made to the electronic
publication on an editing device. Multiple portable devices can be
synchronized and proofed concurrently. Synchronization of files can be
prioritized based on which portion of the electronic document is
currently displayed on the portable device allowing the user to quickly
view changes made to currently displayed portions of the electronic
publication.

[0005] Details of one or more implementations are set forth in the
accompanying drawings and the description below. Other features, aspects,
and potential advantages will be apparent from the description and
drawings, and from the claims.

BRIEF DESCRIPTION OF DRAWINGS

[0006]FIG. 1 illustrates an example system for proofing electronic
publications on portable devices.

[0011]FIG. 6 illustrates an interface for presenting synchronization
information on a portable device.

[0012]FIG. 7 is flow diagram of an example process for synchronizing
electronic publication changes on an editing device.

[0013]FIG. 8 is flow diagram of an example process for synchronizing
electronic publications on a portable device.

[0014]FIG. 9 is a block diagram of an exemplary system architecture
implementing the features and processes of FIGS. 1-8.

[0015] Like reference symbols in the various drawings indicate like
elements.

DETAILED DESCRIPTION

Proofing System

[0016]FIG. 1 illustrates an example system 100 for proofing electronic
publications on portable devices. In some implementations, editing device
102 can identify changes made to an electronic publication 110 and
transmit the changes to portable devices 104, 106 and/or 108 while the
electronic publication is being proofed (e.g., reviewed, proofread) on
the portable devices. For example, electronic publication 110 can be an
electronic book, an electronic magazine, a webpage, an electronic
newspaper or a software application. The electronic publication can be a
bundle of files that includes many files of many different types. The
electronic publication files can be text files corresponding to pages,
chapters, sections, etc. of the electronic publication. The electronic
publication files can be image, sound, video or other media files that
can be presented when electronic publication 110 is presented to a
reader. For example, images, sound, video, etc. can be embedded in the
pages of an electronic book along with text and presented to a user as
the user is reading the electronic book. The files can have different
formats (e.g., text, HTML, PDF, MP3, MP4, JPEG. etc.).

[0017] In some implementations, editing device 102 can include
synchronization application 112. For example, synchronization application
112 can be a software application that runs on editing device 102. In
some implementations, synchronization application 112 can be configured
to monitor the electronic publication files associated with electronic
publication 110 for changes to the files. For example, changes to the
electronic publication files can be detected by detecting a change in
file metadata (e.g., timestamp, file size, hash values, etc.) associated
with the file. For example, a file that has been edited can have a
changed timestamp indicating when the file was last edited. A file that
has been edited will change in size according to what has been added to
or deleted from the file, for example. In some implementations, changes
to electronic publication files can be detected by comparing hash data
associated with the file. For example, the contents of a file can be
hashed to generate a hash value for the file and the hash value can be
stored. Later, the contents of the file can be hashed again to generate a
new hash value. The new hash value can be compared with the stored hash
value to determine if the file has changed.

[0020] In some implementations, if a user finds an error in the
presentation of electronic publication 110 on a portable device (e.g.,
portable device 104), the user can edit electronic publication 110 on
editing device 102 using any appropriate editor (e.g., text editor,
graphics editor, etc.) and save the changes to electronic publication
110. Once the changes to electronic publication 110 are saved,
synchronization application 112 can detect that changes have been made to
the files associated with electronic publication 110 and synchronize the
changed files to portable devices 104, 106 and/or 108.

Synchronization Application Interfaces

[0021]FIG. 2 illustrates an interface 200 for managing synchronization of
electronic publications. For example, interface 200 can be a graphical
user interface for synchronization application 112. When synchronization
application 112 is executed on editing device 102, interface 200 can be
displayed. In some implementations, a user can drag an electronic
publication into area 202 in interface 200 in order to synchronize
electronic publication 110 with other devices (e.g., portable devices
104, 106 and 108). For example, a user of editing device 102 can identify
an electronic publication for synchronizing by dragging and dropping an
icon representing electronic publication 110 into area 202.

[0023]FIG. 3 illustrates an interface 300 for managing synchronization of
an identified electronic publication. For example, an electronic
publication can be identified to the synchronization application by
dragging and dropping the electronic publication onto interface 300. An
electronic publication can be identified to the synchronization
application through the use of menu items as well. For example, a user
can invoke a file open menu item or dialog box to identify or select an
electronic publication.

[0024] In some implementations, when electronic publication 110 has been
identified to synchronization application 112, an image representing
electronic publication 110 can be displayed on interface 300. For
example, when a user selects electronic publication 110 by dragging and
dropping electronic publication 110 onto area 202, image 302 representing
electronic publication 110 can be displayed. In some implementations,
image 302 can be a custom image associated with the electronic
publication. For example, image 302 can be a book cover image designed
for a particular book. In some implementations, image 302 can be a
default image. For example, a generic image of a book can be used and
information (e.g., an identifier, name, filename, etc.) associated with
the electronic publication can be presented on the generic image.

[0025] In some implementations, a user can select which devices get
synchronized with electronic publication updates. For example, a user can
select one or more of checkboxes 304, 306 and 308 to identify which
devices (e.g., portable devices 104, 106, 108) will receive
synchronization updates from editing device 102 (e.g., synchronization
application 112). In some implementations, only selected client devices
will be synchronized. For example, only devices having a checked box
(e.g., checkboxes 304, 306) will receive synchronization updates when
changes to electronic publication 110 are detected by synchronization
application 112. Devices having an unchecked box (e.g., 308) will not
receive electronic publication synchronization updates, for example.

[0026] In some implementations, interface 300 can include graphical
element 310 for displaying the location of an electronic publication. For
example, if a user selects graphical element 310, a window can be
presented that shows the contents of the operating system file directory
in which the currently selected electronic publication is stored on
editing device 102. In some implementations, interface 300 can include
electronic publication location information 312. For example, location
information 312 can include a character string that identifies a
directory location in which the currently selected electronic publication
is stored on editing device 102.

[0027] In some implementations, a user can cancel the monitoring and
synchronization of an electronic publication with other devices. In some
implementations, a user can provide input over image 302 to cause
graphical element 314 to be displayed. For example, a user can hover a
cursor over image 302 using an input device (e.g., mouse, touch pad,
etc.). A user can hold a finger over image 302 if editing device 102 is
configured for touch input (e.g., device 102 has a touch sensitive
display). For example, after the touch input is received for a
predetermined period of time (e.g., a second), graphical element 314 can
be displayed.

[0028] In some implementations, a user can cancel the synchronization of
the electronic publication by selecting graphical element 314. For
example, the user can select graphical element 314 by cursor input (e.g.
clicking a mouse button) or by touch input (e.g., touching a touch
sensitive display over the location of graphical element 314). When the
user selects graphical element 314, image 302 can be removed from display
on interface 300 and synchronization application 112 will no longer
synchronize the electronic publication. In some implementations, a user
can cancel synchronization of a current electronic publication by
identifying a different electronic publication to synchronize. For
example, a user can drag and drop a new electronic publication into
interface 300 to cause synchronization application 112 to synchronize the
new electronic publication and to stop synchronizing the previous
electronic publication.

[0029] In some implementations, interface 300 can present portable device
status information. For example, information items 316, 318 and 320 can
indicate the status of the portable device (e.g., available, busy,
non-responsive, etc.) and/or the status of synchronization operations
(e.g., percent complete, successful completion, errors, etc.). In some
implementations, interface 300 can present error information. For
example, interface 300 can present error information item 322 indicating
the number of errors raised while processing an electronic publication.
In some implementations, a user can select information item 322 to
display descriptions of the errors. For example, a user can select
information item 322 to cause a window to appear containing a description
of errors raised during the processing (e.g., synchronization,
validation, etc.) of an electronic publication.

Electronic Publication Client Interfaces

[0030]FIG. 4 illustrates an interface 400 for accessing an electronic
publication on a portable device. For example, interface 400 can be a
graphical interface associated with electronic publication clients 114,
116 and 118 of FIG. 1. In some implementations, interface 400 can present
a bookcase metaphor. For example, interface 400 can appear to be a
bookcase having one or more books, magazines, documents or other
electronic publications on the shelves of the bookcase. In some
implementations, image 402 can be displayed. Image 402 can be an image
that represents an electronic publication available for selection and
viewing through interface 400. In some implementations, image 402 can
represent an electronic publication that is being downloaded or
synchronized to the portable device.

[0031] In some implementations, image 402 can be displayed on interface
400 when electronic publication 110 is being synchronized with a portable
device displaying interface 400. For example, image 402 can be displayed
in interface 400 once the synchronization process between editing device
102 and portable device 104, 106 or 108 has started. For example, at the
beginning of the synchronization process, editing device 102 can transmit
electronic publication metadata to portable device 104 identifying an
author and title for the electronic publication. Once the electronic
publication metadata is received, image 402 can be displayed along with
author and title information. In some implementations, image 402 can
include information item 404. Information item 404 can include
information identifying electronic publication 110 as a work in progress
as opposed to a completed, published work. For example, information item
404 can include a "Proof" label indicating that electronic publication
110 is being proofread on the device and is not a completed work. In some
implementations, image 402 can be overlaid with status indicator 406. For
example, status indicator 406 can represent the current state of
synchronization of electronic publication 110 and can be displayed when
electronic publication files are being uploaded or synchronized with the
portable device.

[0032] In some implementations, a user can select an electronic
publication from the shelves of the bookcase by selecting an icon or
other image representing the electronic publication. For example, a user
can select image 402 to cause the content of electronic publication 110
to be displayed.

[0033] FIG. 5 illustrates interface 500 for presenting electronic
publication content on a portable device. In some implementations, when a
user selects image 402 of FIG. 4, the contents of the electronic
publication can be displayed on interface 500. In some implementations,
synchronization updates can be received while a user is viewing
electronic publication content in interface 500.

[0034]FIG. 6 illustrates interface 600 for presenting synchronization
information on a portable device. In some implementations, when
synchronization updates are received while electronic publication content
is displayed, interface 600 can be presented. For example, when a
synchronization update is received while interface 500 is displayed, the
content displayed on interface 500 can be temporarily hidden or veiled.
In some implementations, an opaque or semi-transparent sheet 602 (e.g.,
veil) can be placed over the content displayed by interface 500 while
synchronization updates are received by the portable device. For example,
sheet 602 can appear to slide into view from an edge of interface 500
until sheet 602 covers the electronic publication content.

[0035] In some implementations, sheet 602 can present information about
the current synchronization update. For example, sheet 602 can display a
spinning status indicator 604 that indicates to the user that a
synchronization update is on-going. Sheet 602 can display informational
text 606 that provides the user with additional information about the
current synchronization. For example, informational text 602 can include
version information, source information, timestamps and/or filenames
associated with the current synchronization update of the electronic
publication. In some implementations, once the synchronization update is
complete, sheet 602 can be removed (e.g., slid off screen) and interface
500 can be displayed. For example, when sheet 602 is removed, interface
500 can display the newly updated and synchronized content received for
the electronic publication.

Example Processes

[0036]FIG. 7 is flow diagram of an example process 700 for synchronizing
electronic publication changes on an editing device. In some
implementations, changes (e.g., edits) made to an electronic publication
on an editing device (e.g., editing device 102) are automatically
synchronized to one or more portable devices. For example, automatically
synchronizing the changes to the portable devices can allow a user to
proof (e.g., proofread) the electronic publication on the portable
devices while editing the electronic publication on the editing device to
fix errors found during the proofing without requiring the user to take
extra steps to synchronize or upload the changes to the portable devices.

[0037] At step 702, one or more portable devices are detected. In some
implementations, an editing device can detect when one or more portable
devices are connected to the editing device. For example, synchronization
application 112 on the editing device 102 can detect corresponding
electronic publication client applications 114, 116, 118 running on
portable devices 104, 106 and/or 108 when the portable devices are
connected to the editing device.

[0038] At step 704, selection of at least one portable device is received.
In some implementations, a list of the connected portable devices can be
displayed. For example, the server application on the editing device can
present a graphical user interface (FIG. 2) that displays a list of the
portable devices that are connected to the editing device and that also
are running the client electronic publication application. In some
implementations, a user can select one or more of the connected portable
devices to identify which of the connected portable devices will receive
electronic publication synchronization updates.

[0039] At step 704, identification of an electronic publication is
received. In some implementations, a user can identify an electronic
publication by dragging and dropping an icon or image associated with an
electronic publication one interface 200 of FIG. 2. For example, if the
electronic publication is stored on the desktop of a device, the user can
drag the electronic publication files from the desktop onto interface 200
and drop the electronic publication files into area 202. In some
implementations, a user can identify an electronic publication by
selecting menu items associated with the server application. For example,
a user can interact with a file open menu item or user interface to
identify or select the electronic publication.

[0040] At step 706, initial synchronization is performed. In some
implementations, once the electronic publication is identified and at
least one portable device is connected and selected, an initial
synchronization of the electronic publication to the portable device is
performed. In some implementations, the synchronization application sends
metadata associated with the electronic publication to the electronic
publication client application. For example, the electronic publication
metadata can include author and title information for the electronic
publication. In some implementations, metadata associated with each file
in the electronic publication can be sent to the electronic publication
client application. The metadata can include a file identifier (e.g.,
file name), timestamp, file size and/or hash values. The timestamp can
correspond to the date and time of the last file change, for example. The
metadata can include a description of the change to the file. For
example, the metadata can indicate that a file has been changed, added or
deleted. In some implementations, the synchronization server will receive
from the electronic publication client application a list of electronic
publication files on the portable device that have different metadata
(e.g., timestamps, file sizes, hash values) than the electronic
publication file metadata sent to the electronic publication client
application. The synchronization server will then synchronize the files
identified in the received list to a storage location on the client
device. For example, the synchronization server can copy, overwrite or
delete files on the portable device while performing the synchronization.
Once the initial synchronization is performed, the electronic publication
files on the editing device are monitored for changes.

[0041] At step 708, the electronic publication is monitored for changes.
In some implementations, the synchronization application monitors the
electronic publication files for changes. For example, the
synchronization application can collect metadata associated with
electronic publication files. The file metadata can include timestamps
(e.g., time of last access), file size, checksums, or any other data that
can be used to determine whether a file has been modified. In some
implementations, the synchronization application can store the file
metadata and later compare the stored file metadata to current file
metadata to determine if the file has been modified. For example, if the
current timestamp is different than the previous timestamp, the file has
been changed. If the current file size is larger or smaller than the
previous file size, the file has changed. In some implementations, an
electronic publication includes a plurality of files. Thus, when
monitoring the electronic publication for changes, the synchronization
application will monitor all of the files that are included in the
electronic publication.

[0042] At step 712, a synchronization update is performed when file
changes are detected. In some implementations, once a changed electronic
publication file is detected, an electronic publication synchronization
update is performed. For example, the electronic publication
synchronization update can be performed immediately upon detecting a
changed file. The electronic publication synchronization update can be
performed after a predetermined delay (e.g., 2 seconds), for example.
Once the changed file (or files) is detected a synchronization update can
be performed. For example, the synchronization application can send
metadata associated with the changed files to the electronic publication
client application. The file metadata can include a file identifier
(e.g., file name), a timestamp (e.g., corresponding to when the change
was made) and a file size for each file. The file metadata can include
information describing the change made to the file (e.g., file modified,
added or deleted). The synchronization application can receive from the
electronic publication client a list of electronic publication files that
are on the client device and that do not match the sent electronic
publication file metadata. The synchronization server can then copy (or
delete) the files to a storage location on the client device. For
example, the synchronization server can write, overwrite or delete the
files directly in the storage location of the electronic publication on
the portable device.

[0043]FIG. 8 is flow diagram of an example process 800 for synchronizing
electronic publications on a portable device. In some implementations, a
client device can display the contents of an electronic publication while
receiving updates to the electronic publication. For example, a user can
proofread an electronic publication on the client device, discover an
error in how the content is displayed on the client device, edit the
electronic publication on an editing device coupled to the client device,
the edits to the electronic publication can be automatically synchronized
with the client device, and the user can review the changes and continue
proofing the electronic publication.

[0044] At step 802, an initial synchronization is performed. For example,
a portable device can be coupled to an editing device. The portable
device can be running an electronic publication client application. The
editing device can be running an electronic publication synchronization
application. The electronic publication client application can receive
metadata associated with an electronic publication from the electronic
publication synchronization application. The electronic publication
metadata can include author and title information so that the electronic
publication client application can display information for the electronic
publication. For example, the electronic publication client application
can display an electronic publication image with author and title
information, as described with reference to FIG. 4.

[0045] In some implementations, electronic publication file metadata be
received by the electronic publication client application and can include
an identifier, timestamp file size and/or hash values for each file in
the electronic publication. The electronic publication client application
can compare the file metadata to file metadata associated with locally
stored (e.g., on the portable device) electronic publication files,
identify which locally stored electronic publication files do not match
the received electronic publication file metadata and send a list of the
identified files to the electronic publication synchronization
application. The electronic publication synchronization application can
then access the local storage (e.g., hard disk, flash memory, etc.) on
the portable device to synchronize the identified files on the editing
device to the electronic publication files on the portable device. For
example, the electronic publication synchronization application can
overwrite, copy and delete files on the portable device using direct
storage access while performing the synchronization. In some
implementations, while initial synchronization is performed, a progress
indicator (e.g., 406 of FIG. 4) can be displayed that indicates the
progress made during the synchronization process. For example, progress
can be determined as a number of files processed, estimated amount of
time remaining, percentage of files processed, etc.

[0046] At step 804, the electronic publication content is displayed. For
example, a user can select electronic publication image 402 of FIG. 4 to
cause the content of the electronic publication to be displayed on the
portable device, as illustrated by FIG. 5.

[0047] At step 806, a synchronization update is performed. For example,
one or more electronic publication files can be edited on the editing
device. When changes to the electronic publication files are made, the
electronic publication client application can receive file metadata
associated with the changed files from the synchronization application on
the editing device. The file metadata can include electronic publication
file identifiers, timestamps file sizes and/or hash values associated
with each of the changed files. The electronic publication client
application can compare the received file metadata to file metadata
associated with corresponding local electronic publication files (e.g.,
electronic publication files on the portable device), identify which
corresponding files have mismatched file metadata, and send a list of the
identified files to the synchronization application. The synchronization
application can then synchronize the identified (changed) files on the
editing device with the corresponding files on the portable device. For
example, the synchronization application can copy, overwrite, and delete
electronic publication files on the portable device so that the portable
device electronic publication files match the newly edited electronic
publication files on the editing device.

[0048] At step 808, the electronic publication content display is
refreshed. In some implementations, the electronic publication client
application can detect when electronic publication files have been
changed in local storage on the portable device and reload the files for
display. For example, once a synchronization has occurred, the electronic
publication client can reload content from the changed files and present
the content on a user interface (e.g., interface 500) so that a user can
view the content. In some implementations, when the electronic
publication client application reloads the content from the changed
files, the electronic publication client can drop a veil over the
currently displayed content until the reloading is complete, as
illustrated by FIG. 6. For example, the electronic publication client
application can reload or refresh partial content updates without closing
the electronic publication. In some implementations, the electronic
publication client application must close and reload the entire
electronic publication. For example, when the electronic publication
client application detects that a particular file has changed (e.g., a
table of contents file), the electronic publication client will close the
electronic publication and perform a complete reload of the contents.
When the updated content has been reloaded, the veil can be removed and
the updated content can displayed on the portable device.

Synchronization Priority

[0049] In some implementations, synchronization of electronic publication
files can be prioritized. For example, as a user is proofing an
electronic publication on a portable device, the user may find an error
in the display on the electronic publication content. The user can edit
the electronic publication on an editing device, the changes to the
electronic publication can be automatically synchronized to the portable
device, and the user can review the changes on the portable device to
determine if the changes fixed the error.

[0050] In some implementations, electronic publication files associated
with an electronic publication page currently displayed on the portable
device can be synchronized before other electronic publication files. For
example, the electronic publication client application can send the
electronic publication synchronization application information
identifying the currently displayed page of the electronic publication.
electronic publication files associated with currently viewed page can be
given synchronization priority. For example, if the user is proofing page
forty (40) of chapter two (2), the electronic publication file that
includes page forty will by synched first, the electronic publication
files that include chapter two will be synched second, and then the
remaining electronic publication file changes will be synched. Thus, a
user can quickly see the changes most relevant to the page of the
electronic publication that the user is currently proofing.

[0051] In some implementations, the content veil can be lifted once the
current page is synchronized. For example, if synchronization
prioritization is used, the electronic publication files associated with
the currently displayed page of the electronic publication are
synchronized first. Once the current page is synchronized, the veil can
be lifted allowing the user to continue proofing the current page. In
some implementations, synchronization of the remaining changed electronic
publication pages can be performed in the background while the user is
proofing the currently displayed page.

[0052] Other prioritization mechanisms can be implemented. In some
implementations, synchronization of electronic publication files can be
prioritized based on file type. For example, text files can be synched
before image files, image files synched before audio files, audio files
synched before video files.

Synchronization On Demand

[0053] In some implementations, synchronization of changed electronic
publication files can be performed on demand. For example, instead of
forcing a user to wait for a full synchronization before viewing
electronic publication content, synchronization of content can be
performed as needed thereby allowing the user to continue proofing the
electronic publication content without having to wait for all changes to
be synchronized. For example, if changes have been made to pages 4, 20
and 35 of an electronic publication and the user is proofing page 4, only
page 4 may be immediately synchronized. The user will only have to wait
for changes to page 4 to synchronize. As the user continues proofing the
electronic publication and approaches page 20 (e.g., the user is on page
19), page 20 can be synchronized in the background as the user proofs
page 19. Thus, when the user reaches page 20, the updates have already
been synchronized and the user does not have to wait for the
synchronization process to complete.

Electronic Publication Validation

[0054] In some implementations, synchronization application can validate
an electronic publication before synchronizing the electronic publication
to a portable device. For example, if an electronic publication file is
an HTML file, the synchronization application can validate the HTML by
checking for errors (e.g., misplaced bracket, misspelled tags, etc.) in
the HTML. If validation fails (e.g., errors are found) the
synchronization application can notify the user of the error. For
example, the synchronization application can display a message indicating
the type of error found.

Electronic Publication Submission

[0055] In some implementations, the synchronization application can
facilitate submission of the electronic publication to a distributor for
approval. For example, an electronic media distributor (e.g., online
store) may perform steps to validate and approve an electronic
publication for distribution. The synchronization application can provide
an interface that allows a user to upload the electronic publication to
the distributor. For example, once the user is satisfied with the proofed
electronic publication, the user can select a `submit` button on the
interface of the synchronization application to cause the synchronization
application to transmit the electronic publication to the distributor.

Debugging

[0056] In some implementations, the synchronization application can
provide debugging features to aid a user in debugging electronic
publication content. For example, the synchronization application can
provide a console for displaying diagnostic messages. The synchronization
application can display graphics and data for conveying information, such
as memory usage, frame rate or any other diagnostic information. For
example, the synchronization application can display an error message if
the portable device with which the synchronization application is
attempting to synchronize is busy. The synchronization application can
display an error message if the portable device does not have the
electronic publication client installed or if the electronic publication
client is not currently running on the portable device. The
synchronization application can display an error message if the portable
device has an old, incompatible or outdated version of the electronic
publication client.

Example Mobile Device Architecture

[0057]FIG. 9 is a block diagram 900 of an example implementation of the
devices 102, 104, 106 and/or 108 of FIG. 1. The devices 102, 104, 106
and/or 108 can include a memory interface 902, one or more data
processors, image processors and/or central processing units 904, and a
peripherals interface 906. The memory interface 902, the one or more
processors 904 and/or the peripherals interface 906 can be separate
components or can be integrated in one or more integrated circuits. The
various components in the mobile device 100 can be coupled by one or more
communication buses or signal lines.

[0058] Sensors, devices, and subsystems can be coupled to the peripherals
interface 906 to facilitate multiple functionalities. For example, a
motion sensor 910, a light sensor 912, and a proximity sensor 914 can be
coupled to the peripherals interface 906 to facilitate orientation,
lighting, and proximity functions. Other sensors 916 can also be
connected to the peripherals interface 906, such as a global navigation
satellite system (GNSS) (e.g., GPS receiver), a temperature sensor, a
biometric sensor, or other sensing device, to facilitate related
functionalities.

[0059] A camera subsystem 920 and an optical sensor 922, e.g., a charged
coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS)
optical sensor, can be utilized to facilitate camera functions, such as
recording photographs and video clips. The camera subsystem 920 and the
optical sensor 922 can be used to collect images of a user to be used
during authentication of a user, e.g., by performing facial recognition
analysis.

[0060] Communication functions can be facilitated through one or more
wireless communication subsystems 924, which can include radio frequency
receivers and transmitters and/or optical (e.g., infrared) receivers and
transmitters. The specific design and implementation of the communication
subsystem 924 can depend on the communication network(s) over which the
mobile device 100 is intended to operate. For example, a mobile device
100 can include communication subsystems 924 designed to operate over a
GSM network, a GPRS network, an EDGE network, a Wi-Fi or WiMax network,
and a Bluetooth® network. In particular, the wireless communication
subsystems 924 can include hosting protocols such that the device 100 can
be configured as a base station for other wireless devices.

[0061] An audio subsystem 926 can be coupled to a speaker 928 and a
microphone 930 to facilitate voice-enabled functions, such as speaker
recognition, voice replication, digital recording, and telephony
functions.

[0062] The I/O subsystem 940 can include a touch-surface controller 942
and/or other input controller(s) 944. The touch-surface controller 942
can be coupled to a touch surface 946. The touch surface 946 and
touch-surface controller 942 can, for example, detect contact and
movement or break thereof using any of a plurality of touch sensitivity
technologies, including but not limited to capacitive, resistive,
infrared, and surface acoustic wave technologies, as well as other
proximity sensor arrays or other elements for determining one or more
points of contact with the touch surface 946.

[0063] The other input controller(s) 944 can be coupled to other
input/control devices 948, such as one or more buttons, rocker switches,
thumb-wheel, infrared port, USB port, and/or a pointer device such as a
stylus. The one or more buttons (not shown) can include an up/down button
for volume control of the speaker 928 and/or the microphone 930.

[0064] In one implementation, a pressing of the button for a first
duration can disengage a lock of the touch surface 946; and a pressing of
the button for a second duration that is longer than the first duration
can turn power to the mobile device 100 on or off Pressing the button for
a third duration can activate a voice control, or voice command, module
that enables the user to speak commands into the microphone 930 to cause
the device to execute the spoken command. The user can customize a
functionality of one or more of the buttons. The touch surface 946 can,
for example, also be used to implement virtual or soft buttons and/or a
keyboard.

[0065] In some implementations, the mobile device 100 can present recorded
audio and/or video files, such as MP3, AAC, and MPEG files. In some
implementations, the mobile device 100 can include the functionality of
an MP3 player, such as an iPod®. The mobile device 100 can, therefore,
include a 36-pin connector that is compatible with the iPod. Other
input/output and control devices can also be used.

[0066] The memory interface 902 can be coupled to memory 950. The memory
950 can include high-speed random access memory and/or non-volatile
memory, such as one or more magnetic disk storage devices, one or more
optical storage devices, and/or flash memory (e.g., NAND, NOR). The
memory 950 can store an operating system 952, such as Darwin, RTXC,
LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as
VxWorks.

[0067] The operating system 952 can include instructions for handling
basic system services and for performing hardware dependent tasks. In
some implementations, the operating system 952 can be a kernel (e.g.,
UNIX kernel). In some implementations, the operating system 952 can
include instructions for performing voice authentication. For example,
operating system 952 can implement the one or more of the electronic
publication synchronization features as described with reference to FIGS.
1-8.

[0069] The memory 950 can store electronic publication synchronization
software instructions 972 to facilitate the electronic publication
synchronization and proofing processes and functions as described with
reference to FIGS. 1-8. For example, software instructions 972 can
include instructions for performing server-side electronic publication
monitoring and synchronization processes. Software instructions 972 can
include instructions for performing client-side electronic publication
synchronization and content presentation processes.

[0070] The memory 950 can also store other software instructions (not
shown), such as web video instructions to facilitate web video-related
processes and functions; and/or web shopping instructions to facilitate
web shopping-related processes and functions. In some implementations,
the media processing instructions 966 are divided into audio processing
instructions and video processing instructions to facilitate audio
processing related processes and functions and video processing-related
processes and functions, respectively. An activation record and
International Mobile Equipment Identity (IMEI) 974 or similar hardware
identifier can also be stored in memory 950.

[0071] Each of the above identified instructions and applications can
correspond to a set of instructions for performing one or more functions
described above. These instructions need not be implemented as separate
software programs, procedures, or modules. The memory 950 can include
additional instructions or fewer instructions. Furthermore, various
functions of the mobile device 100 can be implemented in hardware and/or
in software, including in one or more signal processing and/or
application specific integrated circuits.

[0072] Therefore, according to the above, some examples of the disclosure
are directed to a method comprising: receiving, at an editing device,
input identifying files associated with an electronic publication;
monitoring, at the editing device, file metadata associated with the
electronic publication files for data indicative of a modification to the
electronic publication files; identifying one or more modified files
based on the monitoring; transmitting file metadata associated with the
modified files to a portable device coupled to the editing device;
receiving file information from the portable device identifying at least
one of the modified files; and transmitting the at least one identified
modified file to the portable device. Additionally or alternatively to
one or more of the examples disclosed above, in some examples the method
further comprises: obtaining information identifying a particular file
that is currently displayed on the portable device; and prioritizing the
transmission of the at least one identified modified file to the portable
device based on the particular file.

[0073] Some examples of the disclosure are directed to a method
comprising: displaying content of an electronic publication on a portable
device; receiving, from an editing device, electronic publication file
metadata corresponding to one or more files of the electronic publication
stored on the portable device; comparing the received file metadata to
local file metadata associated with the one or more files; based on the
comparison, identifying at least one changed file; transmitting, to the
editing device, information identifying the at least one changed file;
receiving the at least one changed file from the editing device; and
refreshing the display of the electronic publication content on the
portable device. Additionally or alternatively to one or more of the
examples disclosed above, in some examples refreshing the display
includes restarting an application used for displaying the electronic
publication content. Additionally or alternatively to one or more of the
examples disclosed above, in some examples refreshing the display
includes temporarily hiding the content. Additionally or alternatively to
one or more of the examples disclosed above, in some examples receiving
the at least one changed file from the editing device includes receiving
a file associated with currently displayed content before files not
associated with the currently displayed content. Additionally or
alternatively to one or more of the examples disclosed above, in some
examples receiving the at least one changed file from the editing device
includes receiving text files before image files.

[0074] Some examples of the disclosure are directed to a non-transitory
computer-readable medium including one or more sequences of instructions
which, when executed by one or more processors, causes: receiving input
identifying files associated with an electronic publication; monitoring
file metadata associated with the electronic publication files for data
indicative of a modification to the electronic publication files;
identifying one or more modified files based on the monitoring;
transmitting file metadata associated with the modified files to a
portable device; receiving file information from the portable device
identifying at least one of the modified files; and transmitting the at
least one identified modified file to the portable device. Additionally
or alternatively to one or more of the examples disclosed above, in some
examples the instructions cause: obtaining information identifying a
particular file that is currently displayed on the portable device; and
prioritizing the transmission of the at least one identified modified
file to the portable device based on the particular file.

[0075] Some examples of the disclosure are directed to a non-transitory
computer-readable medium including one or more sequences of instructions
which, when executed by one or more processors, causes: displaying
content of an electronic publication on a portable device; receiving,
from an editing device, electronic publication file metadata
corresponding to one or more files of the electronic publication stored
on the portable device; comparing the received file metadata to local
file metadata associated with the one or more files; based on the
comparison, identifying at least one changed file; transmitting, to the
editing device, information identifying the at least one changed file;
receiving the at least one changed file from the editing device; and
refreshing the display of the electronic publication content on the
portable device. Additionally or alternatively to one or more of the
examples disclosed above, in some examples the instructions that cause
refreshing the display include instructions that cause restarting an
application used for displaying the electronic publication content.
Additionally or alternatively to one or more of the examples disclosed
above, in some examples the instructions that cause refreshing the
display include instructions that cause temporarily hiding the content.
Additionally or alternatively to one or more of the examples disclosed
above, in some examples the instructions that cause receiving the at
least one changed file from the editing device include instructions that
cause receiving a file associated with currently displayed content before
files not associated with the currently displayed content. Additionally
or alternatively to one or more of the examples disclosed above, in some
examples the instructions that cause receiving the at least one changed
file from the editing device include instructions that cause receiving
text files before image files.

[0076] Some examples of the disclosure are directed to a system
comprising: one or more processors; and a non-transitory
computer-readable medium including one or more sequences of instructions
which, when executed by the one or more processors, causes: receiving
input identifying files associated with an electronic publication;
monitoring file metadata associated with the electronic publication files
for data indicative of a modification to the electronic publication
files; identifying one or more modified files based on the monitoring;
transmitting file metadata associated with the modified files to a
portable device; receiving file information from the portable device
identifying at least one of the modified files; and transmitting the at
least one identified modified file to the portable device. Additionally
or alternatively to one or more of the examples disclosed above, in some
examples the instructions cause: obtaining information identifying a
particular file that is currently displayed on the portable device; and
prioritizing the transmission of the at least one identified modified
file to the portable device based on the particular file.

[0077] Some examples of the disclosure are directed to a system
comprising: one or more processors; and a non-transitory
computer-readable medium including one or more sequences of instructions
which, when executed by the one or more processors, causes: displaying
content of an electronic publication on a portable device; receiving,
from an editing device, electronic publication file metadata
corresponding to one or more files of the electronic publication stored
on the portable device; comparing the received file metadata to local
file metadata associated with the one or more files; based on the
comparison, identifying at least one changed file; transmitting, to the
editing device, information identifying the at least one changed file;
receiving the at least one changed file from the editing device; and
refreshing the display of the electronic publication content on the
portable device. Additionally or alternatively to one or more of the
examples disclosed above, in some examples the instructions that cause
refreshing the display include instructions that cause restarting an
application used for displaying the electronic publication content.
Additionally or alternatively to one or more of the examples disclosed
above, in some examples the instructions that cause refreshing the
display include instructions that cause temporarily hiding the content.
Additionally or alternatively to one or more of the examples disclosed
above, in some examples the instructions that cause receiving the at
least one changed file from the editing device include instructions that
cause receiving a file associated with currently displayed content before
files not associated with the currently displayed content. Additionally
or alternatively to one or more of the examples disclosed above, in some
examples the instructions that cause receiving the at least one changed
file from the editing device include instructions that cause receiving
text files before image files.