Systems and methods for generating and providing intelligent time-to-leave reminders

The system addresses the issue of inaccurate reminders by automatically determining departure times based on previously visited addresses, ensuring timely event arrivals and conserving battery life.

JP2025114594APending Publication Date: 2025-08-05APPLE INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2025067590
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2015-12-31
Filing Date
2025-04-16
Publication Date
2025-08-05

AI Technical Summary

Technical Problem

Existing electronic devices with touch-sensitive displays provide reminders based on default values or outdated information, failing to consider previously visited addresses, which can lead to inaccurate departure time calculations for calendar events.

Method used

The system automatically identifies calendar entries with unknown geographic locations, retrieves previously visited addresses associated with these entries, and determines a departure time based on the route to these addresses, providing intelligent time-to-leave reminders without user intervention.

Benefits of technology

This approach ensures users arrive at events on time by reducing cognitive burden and conserving battery life through efficient, automated reminder generation, leveraging previously visited addresses.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025114594000001_ABST
    Figure 2025114594000001_ABST
Patent Text Reader

Abstract

To provide systems and methods for generating and providing intelligent time-to-leave reminders on an electronic device.SOLUTION: The method includes automatically, without human intervention, identifying a first identifier (e.g., text in the title of a calendar entry that relates to a location, such as "go to dental checkup") corresponding to a geographic location that is unknown. The method further includes automatically, without human intervention, retrieving a previously-visited address (e.g., a street address or GPS coordinates for the street address) associated with the first identifier. The method also includes automatically, without human intervention, determining a departure time for the calendar entry based on the previously-visited address (e.g., based on a route from the current location of the device to the previously-visited address). The method additionally includes automatically, without human intervention, associating the determined departure time with the calendar entry.SELECTED DRAWING: Figure 1B
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] TECHNICAL FIELD Embodiments herein relate generally to electronic devices with touch-sensitive displays, and more particularly to systems and methods for generating and providing intelligent time-to-leave reminders. [Background technology]

[0002] Users of handheld electronic devices with touch-sensitive displays often create and receive numerous calendar entries to help remind them about upcoming events. These calendar entries often include reminders or alerts that are displayed to the user when each event is scheduled to occur some amount of time in the future (e.g., 15 minutes, 30 minutes, 1 hour, etc.). Users typically select the amount of time based on the lead time needed before the event or simply choose a default value without considering how long it will take to reach the event on time. Thus, reminders or alerts are provided solely based on default values or on inaccurate and / or outdated information from the user. Furthermore, in the case of calendar entries that do not include location information, the reminders or alerts do not take into account information about previously visited addresses (and that can be used to generate accurate reminders) that may be accessible on the handheld electronic device. Summary of the Invention

[0003] Thus, there is a need for electronic devices with faster, more efficient methods and interfaces for generating and providing intelligent reminders that allow a user sufficient time to depart and reach their destination before the event start time. Such methods and interfaces, optionally, complement or replace conventional methods for providing generic or default departure time reminders. Such methods and interfaces reduce the cognitive burden on the user, creating a more efficient human-machine interface. Furthermore, such methods and interfaces help extend the life of touch-sensitive displays by requiring fewer touch inputs (e.g., by eliminating the need for a user to repeatedly interact with the device to look up and review address / navigation details).

[0004] The above-mentioned deficiencies and other problems associated with user interfaces for electronic devices with touch-sensitive surfaces are reduced or eliminated by the devices disclosed herein. In some embodiments, the device is a desktop computer. In some embodiments, the device is portable (e.g., a notebook computer, a tablet computer, or a handheld device). In some embodiments, the device has a touchpad. In some embodiments, the device has a touch-sensitive display (also known as a "touch screen" or "touchscreen display"). In some embodiments, the device has a graphical user interface (GUI), one or more processors, memory, and one or more modules, programs, or instruction sets stored in the memory for performing a number of functions. In some embodiments, a user interacts with the GUI primarily through stylus and / or finger contacts and gestures on the touch-sensitive surface. In some embodiments, the functions optionally include image editing, drawing, presenting, word processing, website creation, disc authoring, spreadsheet creation, game playing, making phone calls, video conferencing, emailing, instant messaging, training support, digital photography, digital videography, web browsing, and digital music. Executable instructions to perform these functions are optionally contained on a non-transitory computer-readable storage medium or other computer program product configured to be executed by one or more processors.

[0005] (A1) According to some embodiments, a method is performed on an electronic device (e.g., portable multifunction device 100, FIG. 1A) with a touch-sensitive display (touch screen 112, FIG. 1C). The method includes automatically and without human intervention identifying a calendar entry including a first identifier corresponding to an unknown geographic location. The method further includes automatically and without human intervention retrieving a previously visited address associated with the first identifier. The method also includes automatically and without human intervention determining a departure time for the calendar entry based on the previously visited address. The method additionally includes automatically and without human intervention associating the determined departure time with the calendar entry. In other words, the method uses the first identifier to locate the previously visited address, and then determines (or determines) that the unknown geographic location is a previously visited address based on the presence of the first identifier in (i) an entry (e.g., a different calendar entry, a text message, an email message, etc.) associated with the previously visited address, and (ii) a calendar entry.

[0006] (A2) In some embodiments of the method of A1, the method further includes providing, on the electronic device, a reminder to the user of the determined departure time of the calendar item.

[0007] (A3) In some embodiments of the method of A2, the calendar item is associated with a default reminder that is separate from the determined departure time reminder of the calendar item provided to the user.

[0008] (A4) In some embodiments of the method according to any one of A2-A3, providing the reminder includes providing the reminder in accordance with a determination that the departure time is within a predetermined amount of time from the current time.

[0009] (A5) In some embodiments of the method described in any one of A1-A4, determining the departure time includes (i) determining a current address corresponding to the electronic device; (ii) determining a route from the current address to a previously visited address; and (iii) determining the departure time based on an amount of time to complete the route such that the user reaches the previously visited address within a predetermined amount of time from a start time associated with the calendar item.

[0010] (A6) In some embodiments of the method according to A5, the route is selected from a plurality of available routes from the current address to previously visited addresses according to route selection preferences associated with a user of the electronic device.

[0011] (A7) In some embodiments of the method described in any one of A2 to A6, associating the determined departure time with the calendar entry includes generating a reminder and updating the calendar entry to include the generated reminder.

[0012] (A8) In some embodiments of the method of any one of A1-A7, the method further includes, before determining the departure time, receiving a confirmation from a user of the electronic device on the touch-sensitive display that the previously visited address corresponds to the calendar entry. After receiving the confirmation, the method includes determining the departure time.

[0013] (A9) In some embodiments of the method according to any one of A1-A8, retrieving the previously visited address includes retrieving the previously visited address from a database of previously visited addresses associated with the user of the electronic device.

[0014] (A10) In some embodiments of the method described in A9, each previously visited address in the database of previously visited addresses corresponds to an address previously visited by a user of the electronic device.

[0015] (A11) In some embodiments of the method according to any one of A9-A10, retrieving the previously visited address includes performing a lookup in a database of previously visited addresses using the first identifier.

[0016] (A12) In some embodiments of the method of any one of A1-A11, the method further includes scanning a plurality of new calendar items during the calendar item creation process, and, in accordance with a determination that the first identifier is included in each new calendar item of the scanned plurality of new calendar items, presenting a previously visited address to a user of the electronic device for inclusion in each new calendar item.

[0017] (A13) In some embodiments of the method of any one of A1-A12, the method further includes determining whether the user has arrived at the previously visited address (e.g., after determining that the user is traveling to the previously visited address pursuant to receiving the provided reminder described in A2 above). The method includes updating location information associated with the previously visited address pursuant to determining that the user has arrived at the previously visited address. In some embodiments, determining whether the user has arrived at the previously visited address is performed after (or in response to) providing the reminder.

[0018] (A14) In another aspect, an electronic device is provided. In some embodiments, the electronic device includes a touch-sensitive display, one or more processors, and memory storing one or more programs that, when executed by the one or more processors, cause the electronic device to perform a method described in any one of A1-A13.

[0019] (A15) In yet another aspect, there is provided an electronic device, the electronic device including a touch-sensitive display and means for performing the method of any one of A1-A13.

[0020] (A16) In yet another aspect, there is provided a non-transitory computer-readable storage medium storing executable instructions that, when executed by an electronic device having a touch-sensitive display, cause the electronic device to perform a method according to any one of A1 to A13.

[0021] (A17) In yet another aspect, there is provided a graphical user interface on an electronic device having a touch-sensitive display. In some embodiments, the graphical user interface comprises a user interface displayed according to a method described in any one of A1-A13.

[0022] (A18) In one additional aspect, an electronic device is provided that includes a display unit (e.g., display unit 801, FIG. 8), a touch-sensitive surface unit (e.g., touch-sensitive surface unit 803, FIG. 8), and a processing unit (e.g., processing unit 805, FIG. 8) coupled to display unit 801 and touch-sensitive surface unit 803. In some embodiments, the display unit and the touch-sensitive surface unit are combined into a single touch-sensitive display unit (also referred to herein as a touch-sensitive display). In some embodiments, the processing units include an identification unit (e.g., identification unit 807), a retrieval unit (e.g., retrieval unit 809), a determination unit (e.g., determination unit 811), an association unit (e.g., association unit 813), a providing unit (e.g., providing unit 815), a selection unit (e.g., selection unit 817), a generation unit (e.g., generation unit 819), a receiving unit (e.g., receiving unit 821), an execution unit (e.g., execution unit 823), a scanning unit (e.g., scanning unit 825), a presentation unit (e.g., presentation unit 827), and an update unit (e.g., update unit 829). The processing unit is configured to automatically and without human intervention identify a calendar item including a first identifier corresponding to the unknown geographic location (e.g., using the identification unit 807), automatically and without human intervention retrieve a previously visited address associated with the first identifier (e.g., using the retrieval unit 809), automatically and without human intervention determine a departure time for the calendar item based on the previously visited address (e.g., using the determination unit 811), and automatically and without human intervention associate the determined departure time with the calendar item (e.g., using the association unit 813).

[0023] (A19) In some embodiments of the electronic device described in A18, the processing unit is further configured to provide to the user on the electronic device (e.g., using the providing unit 815 and the display unit 801 (or using the providing unit 815 in conjunction with the display unit 801) a reminder of the determined departure time of the calendar item.

[0024] (A20) In some embodiments of the electronic device described in A19, the calendar item is associated with a default reminder that is separate from the determined departure time reminder of the calendar item provided to the user.

[0025] (A21) In some embodiments of the electronic device described in any one of A19-A20, providing the reminder includes providing the reminder (e.g., using the providing unit 815 and the display unit 801 (or using the providing unit 815 in conjunction with the display unit 801)) in accordance with a determination (e.g., by the determining unit 811) that the departure time is within a predetermined amount of time from the current time).

[0026] (A22) In some embodiments of the electronic device described in any one of A18 to A21, determining the departure time includes: (i) determining (e.g., using the determining unit 811) a current address corresponding to the electronic device; (ii) determining (e.g., using the determining unit 811) a route from the current address to a previously visited address; and (iii) determining (e.g., using the determining unit 811) the departure time based on an amount of time to complete the route such that the user reaches the previously visited address within a predetermined amount of time from a start time associated with the calendar item.

[0027] (A23) In some embodiments of the electronic device described in A22, the route is selected from a plurality of available routes from the current address to a previously visited address according to route selection preferences associated with a user of the electronic device (e.g., using the selection unit 817).

[0028] (A24) In some embodiments of the electronic device described in any one of A19 to A23, associating the determined departure time with the calendar entry includes generating a reminder (e.g., using the generating unit 819) and updating the calendar entry to include the generated reminder.

[0029] (A25) In some embodiments of the electronic device described in any one of A18 to A24, the processing unit is further configured to, before determining the departure time, receive a confirmation on the touch-sensitive display unit from a user of the electronic device (e.g., using the receiving unit 821) that the previously visited address corresponds to the calendar entry. After receiving the confirmation, the processing unit is configured to determine the departure time (e.g., using the determining unit 811).

[0030] (A26) In some embodiments of the electronic device described in any one of A18 to A25, retrieving the previously visited address includes retrieving the previously visited address from a database of previously visited addresses associated with the user of the electronic device (e.g., using the retrieval unit 809).

[0031] (A27) In some embodiments of the electronic device described in A26, each previously visited address in the database of previously visited addresses corresponds to an address previously visited by a user of the electronic device.

[0032] (A28) In some embodiments of the electronic device described in any one of A26-A27, retrieving the previously visited address includes performing a lookup in a database of previously visited addresses using the first identifier (e.g., using the execution unit 823).

[0033] (A29) In some embodiments of the electronic device described in any one of A18 to A28, the processing unit is further configured to scan a plurality of new calendar items during the calendar item creation process (e.g., with the scanning unit 825). Following a determination (e.g., by the determining unit 811) that each new calendar item of the plurality of scanned new calendar items includes the first identifier, the processing unit is configured to present previously visited addresses to a user of the electronic device for inclusion in each new calendar item (e.g., with the presenting unit 827 and the display unit 801 (or with the presenting unit 827 in conjunction with the display unit 801)).

[0034] (A30) The electronic device of any one of A18 to A29. In some embodiments, the processing unit is further configured to, in response to providing the reminder, determine (e.g., with the determining unit 811) whether the user has arrived at the previously visited address. Pursuant to a determination (e.g., by the determining unit 811) that the user has arrived at the previously visited address, the processing unit is configured to update (e.g., with the updating unit 829) location information associated with the previously visited address. In some embodiments, determining whether the user has arrived at the previously visited address is performed after (or in response to) providing the reminder.

[0035] Thus, faster, more efficient methods and interfaces are provided for generating and providing intelligent time-to-leave reminders in electronic devices that include a display, a touch-sensitive surface, and optionally one or more sensors for detecting the intensity of contact with the touch-sensitive surface, thereby increasing the effectiveness, efficiency, and user satisfaction of such devices. Such methods and interfaces may complement or replace conventional methods for providing generic or default reminders.

[0036] It should be noted that the various embodiments described above can be combined with any other embodiment described herein. The features and advantages described herein are not exhaustive, and many additional features and advantages will become apparent to those skilled in the art, particularly in light of the drawings, specification, and claims. Furthermore, it should be noted that the language used herein has been selected solely for the purposes of readability and explanation, and not to define or limit the subject matter of the present invention. [Brief explanation of the drawings]

[0037] For a better understanding of the various described embodiments, please refer to the Detailed Description section below in conjunction with the following drawings, where like reference numerals refer to corresponding parts throughout the drawings, in which:

[0038] [Figure 1A] FIG. 1 is a block diagram illustrating a computing device with a touch-sensitive display in accordance with some embodiments.

[0039] [Figure 1B] FIG. 2 is a block diagram of exemplary components for event processing according to some embodiments.

[0040] [Figure 1C] 1 is a schematic diagram of a portable multifunction device having a touch-sensitive display in accordance with some embodiments.

[0041] [Figure 1D] FIG. 1 is a schematic diagram used to illustrate a computing device with a touch-sensitive surface that is separate from the display, in accordance with some embodiments.

[0042] [Figure 2] FIG. 2 is a schematic diagram of a touch screen used to present a user interface for a menu of applications, according to some embodiments.

[0043] [Figure 3A] FIG. 2 is a block diagram illustrating a data structure for storing calendar entries according to some embodiments. [Figure 3B] FIG. 2 is a block diagram illustrating a data structure for storing calendar entries according to some embodiments.

[0044] [Figure 4A] FIG. 1 is a block diagram illustrating a data structure for storing previously visited addresses, according to some embodiments. [Figure 4B] FIG. 1 is a block diagram illustrating a data structure for storing previously visited addresses, according to some embodiments.

[0045] [Figure 5] FIG. 1 is a block diagram illustrating an exemplary time-to-depart reminder generation system according to some embodiments.

[0046] [Figure 6] 1 is a flowchart illustrating a method for generating and providing intelligent time-to-depart reminders according to some embodiments.

[0047] [Figure 7A] FIG. 1 is a schematic diagram of a touch-sensitive display used to illustrate the generation and provision of intelligent time-to-leave reminders in accordance with some embodiments. [Figure 7B] FIG. 1 is a schematic diagram of a touch-sensitive display used to illustrate the generation and provision of intelligent time-to-leave reminders in accordance with some embodiments. [Figure 7C] FIG. 1 is a schematic diagram of a touch-sensitive display used to illustrate the generation and provision of intelligent time-to-leave reminders in accordance with some embodiments. [Figure 7D] FIG. 1 is a schematic diagram of a touch-sensitive display used to illustrate the generation and provision of intelligent time-to-leave reminders in accordance with some embodiments. [Figure 7E] FIG. 1 is a schematic diagram of a touch-sensitive display used to illustrate the generation and provision of intelligent time-to-leave reminders in accordance with some embodiments. [Figure 7F] FIG. 1 is a schematic diagram of a touch-sensitive display used to illustrate the generation and provision of intelligent time-to-leave reminders in accordance with some embodiments.

[0048] [Figure 8] 1 is a functional block diagram of an electronic device according to some embodiments.

[0049] As discussed above and in more detail below, there is a need for electronic devices with faster, more efficient methods and interfaces for generating and providing intelligent time-to-leave reminders. In particular, there is a need for generating and providing time-to-leave reminders based on previously visited addresses (e.g., if a calendar item includes a title with the text "Visit the dentist," a time-to-leave reminder can be generated based on the previously visited address corresponding to the dentist). Disclosed herein are novel methods and interfaces that address these needs. Such methods and interfaces optionally complement or replace conventional methods for generating time-to-leave reminders. Such methods and interfaces streamline the process for generating time-to-leave reminders by allowing a user to quickly generate calendar items with minimal text input and then automatically, and without human intervention, determine the geographic destination corresponding to the calendar item based only on the minimal amount of text input. Thus, a user can continue to quickly generate calendar items on their electronic device, and by utilizing the methods and interfaces disclosed herein, the electronic device seamlessly generates intelligent time-to-leave reminders for the calendar items. In this way, such methods and interfaces help ensure that users arrive at events in a timely manner. Accordingly, the methods and interfaces disclosed herein reduce the cognitive burden and time a user must spend creating calendar entries, thereby creating a more efficient human-machine interface. For battery-operated electronic devices, generating and providing intelligent time-to-leave reminders faster and more efficiently (e.g., by automatically performing tasks that traditionally require extensive user interaction, such as automatically identifying previously visited addresses as destinations for calendar entries created without specific location details) not only conserves power but also increases the time between battery charges.

[0050] FIGS. 1A-1B and 2 below provide a description of an exemplary device. FIG. 8 provides a functional block diagram of an exemplary electronic device. FIGS. 3A-3B and 4A-4B are block diagrams of exemplary data structures used to generate and provide intelligent time-to-leave reminders (these data structures are used in the method described below with respect to FIG. 6). FIG. 5 is a block diagram of an exemplary system for generating and providing intelligent time-to-leave reminders (this exemplary system is used in the method described below with respect to FIG. 6). FIG. 5 is a flowchart illustrating a method for generating and providing intelligent time-to-leave reminders. FIGS. 7A-7F are schematic diagrams of touch-sensitive displays used to illustrate exemplary user interfaces for generating and providing intelligent time-to-leave reminders. FIGS. 3A-3B, 4A-4B, 5, and 7A-7E are used to illustrate the method and / or process of FIG. 5.

[0051] Reference will now be made in detail to the embodiments, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the various embodiments being described. However, it will be apparent to those skilled in the art that the various embodiments being described may be practiced without these specific details. In other instances, well-known methods, procedures, components, circuits, and networks have not been described in detail as not to unnecessarily obscure aspects of the embodiments.

[0052] As used herein, terms such as first, second, etc., are used to describe various elements in some examples, but it will be understood that these elements should not be limited by these terms. These terms are used only to distinguish one element from another. For example, a first contact can be referred to as a second contact, and similarly, a second contact can be referred to as a first contact, without departing from the scope of the various embodiments being described. Although a first contact and a second contact are both contacts, they are not the same contact.

[0053] The terminology used in the description of the various embodiments set forth herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used in the various described embodiments and in the appended claims, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. As used herein, the term "and / or" should also be understood to refer to and include any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms "includes," "including," "comprises," and / or "comprising," as used herein, specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.

[0054] As used herein, the term "if" is optionally interpreted to mean "when," "upon," "in response to determining," or "in response to detecting," depending on the context. Similarly, the phrases "if it is determined" or "if (a stated condition or event) is detected" are optionally interpreted to mean "upon determining," or "in response to determining," or "upon detecting (the stated condition or event)," or "in response to detecting (the stated condition or event)," depending on the context.

[0055] The disclosures herein relate interchangeably to detecting touch input on, at, over, on top of, or substantially within a particular user interface element or portion of a touch-sensitive display. As used herein, a touch input detected at a particular user interface element may also be detected on, over, on top of, or substantially within the same user interface element, depending on the context. In some embodiments, as discussed in more detail below, the desired sensitivity level for detecting touch input is configured by a user of the electronic device (e.g., the user may decide (and configure the electronic device to operate) that touch input shall be detected only when the touch input is entirely within a user interface element).

[0056] Embodiments of electronic devices, user interfaces for such devices, and associated processes for using such devices are described. In some embodiments, the device is a portable communication device, such as a mobile telephone, that also includes other functions, such as PDA and / or music player functions. Exemplary embodiments of portable multifunction devices include, but are not limited to, IPHONE®, IPOD TOUCH®, and IPAD® devices from Apple Inc. of Cupertino, California. Other portable electronic devices, such as laptops or tablet computers with touch-sensitive surfaces (e.g., touch-sensitive displays and / or touchpads), are also optionally used. It should also be understood that in some embodiments, the device is not a portable communication device, but rather a desktop computer with a touch-sensitive surface (e.g., touch-sensitive displays and / or touchpads).

[0057] In the following description, we describe an electronic device that includes a display and a touch-sensitive surface, but it should be understood that the electronic device optionally includes one or more other physical user-interface devices, such as a physical keyboard, a mouse, and / or a joystick.

[0058] The device typically supports a variety of applications such as one or more of a drawing application, a presentation application, a word processing application, a website creation application, a disc authoring application, a spreadsheet application, a gaming application, a phone application, a video conferencing application, an email application, an instant messaging application, a fitness application, a photo management application, a digital camera application, a digital video camera application, a web browsing application, a digital music playback application, and / or a digital video playback application.

[0059] Various applications running on the device optionally use at least one common physical user interface device, such as a touch-sensitive surface. One or more features of the touch-sensitive surface and corresponding information displayed on the device are optionally adjusted and / or changed for each application and / or within the corresponding application. In this way, the common physical architecture of the device (such as the touch-sensitive surface) optionally supports various applications with user interfaces that are intuitive and transparent to the user.

[0060] Attention is now directed to embodiments of portable electronic devices with touch-sensitive displays. FIG. 1A is a block diagram illustrating a portable multifunction device 100 (also referred to interchangeably herein as electronic device 100 or device 100) with a touch-sensitive display 112, according to some embodiments. Touch-sensitive display 112 may conveniently be referred to as a "touchscreen" and may also be known or referred to as a touch-sensitive display system. Device 100 includes memory 102 (optionally including one or more computer-readable storage media), controller 120, one or more processing units (CPUs) 122, peripherals interface 118, RF circuitry 108, audio circuitry 110, speaker 111, microphone 113, input / output (I / O) subsystem 106, other input or control devices 116, and external port 124. Device 100 optionally includes one or more light sensors 164. Device 100 optionally includes one or more intensity sensors 165 for detecting the intensity of a contact on device 100 (e.g., a touch-sensitive surface such as touch-sensitive display system 112 of device 100). Device 100 optionally includes one or more tactile output generators 167 for generating a tactile output on device 100 (e.g., generating a tactile output on a touch-sensitive surface such as touch-sensitive display system 112 of device 100 or a touchpad of device 100). These components optionally communicate via one or more communication buses or signal lines 103.

[0061] As used in this specification and claims, the term “intensity” of a contact on a touch-sensitive surface refers to the force or pressure (force per unit area) of a contact (e.g., a finger contact) on the touch-sensitive surface, or a surrogate (proxy) for the force or pressure of a contact on the touch-sensitive surface. The intensity of a contact has a range of values that includes at least four distinct values and more typically includes hundreds of different values (e.g., at least 256). The intensity of a contact is optionally determined (or measured) using various methods and various sensors or combinations of sensors. For example, one or more force sensors positioned beneath or adjacent to the touch-sensitive surface are optionally used to measure force at various points on the touch-sensitive surface. In some implementations, the force measurements of multiple force sensors are combined (e.g., weighted average) to determine an estimate of the contact force. Similarly, the pressure-sensitive tip of a stylus is optionally used to determine the pressure of the stylus on the touch-sensitive surface. Alternatively, the size and / or change in the contact area detected on the touch-sensitive surface, the capacitance and / or change in the capacitance of the touch-sensitive surface proximate the contact, and / or the resistance and / or change in the capacitance of the touch-sensitive surface proximate the contact are optionally used as a surrogate for the force or pressure of the contact on the touch-sensitive surface. In some implementations, the surrogate measure of the force or pressure of the contact is used directly to determine whether an intensity threshold has been exceeded (e.g., the intensity threshold is stated in units corresponding to the surrogate measure). In some implementations, the surrogate measure of the force or pressure of the contact is converted to an estimated force or pressure, and this estimated force or pressure is used to determine whether an intensity threshold has been exceeded (e.g., the intensity threshold is a pressure threshold measured in units of pressure).

[0062] As used herein and in the claims, the term “tactile output” refers to a physical displacement of a device relative to its previous position, a physical displacement of a component of the device (e.g., a touch-sensitive surface) relative to another component of the device (e.g., a housing), or a displacement of a component relative to the center of mass of the device, that is detected by a user with the user's sense of touch. For example, in a situation where a device or a component of the device is in contact with a touch-sensitive user surface (e.g., a user's finger, palm, or other part of the hand), the tactile output produced by the physical displacement is interpreted by the user as a tactile sensation corresponding to a perceived change in a physical property of the device or a component of the device. For example, movement of a touch-sensitive surface (e.g., a touch-sensitive display or trackpad) is optionally interpreted by the user as a “downclick” or “upclick” of a physical actuator button. In some cases, a user will feel a tactile sensation such as a “downclick” or “upclick” even when no movement of a physical actuator button associated with the touch-sensitive surface has been physically pressed (e.g., displaced) by the user's action. As another example, movement of the touch-sensitive surface is optionally interpreted or perceived by a user as "roughness" of the touch-sensitive surface, even when there is no change in the smoothness of the touch-sensitive surface. While a user's interpretation of touch will depend on the user's personal sensory perception, there are many sensory perceptions of touch that are common to most users. Thus, when a tactile output is described as corresponding to a particular sensory perception of a user (e.g., "upclick," "downclick," "roughness"), unless otherwise specified, the generated tactile output corresponds to a physical displacement of the device, or a component of the device, that produces the described sensory perception for a typical (or average) user.

[0063] It should be understood that device 100 is only one example of a portable multifunction device, and that device 100 optionally has more or fewer components than those shown, optionally combines two or more components, or optionally has a different configuration or arrangement of components. The various components shown in Figure 1A are implemented in hardware, software, or a combination of both hardware and software, including one or more signal processing circuits and / or application specific integrated circuits.

[0064] Memory 102 optionally includes high-speed random-access memory (e.g., DRAM, SRAM, DDR RAM, or other random-access solid-state memory devices), and optionally includes non-volatile memory, such as one or more magnetic disk storage devices, flash memory devices, or other non-volatile solid-state storage devices. Memory 102 optionally includes one or more storage devices located remotely from processor(s) 122. Access to memory 102 by other components of device 100, such as CPU 122 and peripherals interface 118, is optionally controlled by controller 120.

[0065] A peripheral interface 118 can be used to couple input and output peripherals of the device to the CPU 122 and memory 102. The one or more processors 122 operate or execute various software programs and / or instruction sets stored in the memory 102 to perform various functions and process data for the device 100.

[0066] In some embodiments, peripheral interface 118, CPU 122, and controller 120 are optionally implemented on a single chip, such as chip 104. In some embodiments, they are optionally implemented on separate chips.

[0067] RF (radio frequency) circuitry 108 transmits and receives RF signals, also known as electromagnetic signals. RF circuitry 108 converts electrical signals to electromagnetic signals or electromagnetic signals to electrical signals and communicates with communication networks and other communication devices via electromagnetic signals. RF circuitry 108 optionally includes well-known circuitry for performing these functions, including, but not limited to, an antenna system, an RF transceiver, one or more amplifiers, a tuner, one or more oscillators, a digital signal processor, a CODEC chipset, a subscriber identity module (SIM) card, memory, etc. RF circuitry 108 optionally communicates via wireless communication with networks and other devices, such as the Internet, also known as the World Wide Web (WWW), an intranet, and / or wireless networks, such as cellular telephone networks, wireless local area networks (LANs), and / or metropolitan area networks (MANs). Wireless communication optionally uses any of a number of communication standards, protocols, and technologies, including, but not limited to, Global System for Mobile Communications (GSM)®, Enhanced Data GSM Environment (EDGE)®, High Speed Downlink Packet Access (HSDPA), High Speed Uplink Packet Access (HSUPA), Evolution, Data-Only (EV-DO), HSPA, HSPA+, Dual-Cell HSPA (DC-HSPA), Long Term Evolution (LTE), Near Field Communication (NFC), Wideband Code Division Multiple Access (W-CDMA), Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Bluetooth®, Wireless Fidelity (Wi-Fi)® (e.g., IEEE 802.11a, IEEE 802.1lb, IEEE 802.1lg, and / or IEEE 802.1ln).

[0068] Audio circuit 110, speaker 111, and microphone 113 provide an audio interface between a user and device 100. Audio circuit 110 receives audio data from peripherals interface 118, converts the audio data into electrical signals, and transmits the electrical signals to speaker 111. Speaker 111 converts the electrical signals into sound waves audible to humans. Audio circuit 110 also receives electrical signals converted from sound waves by microphone 113. Audio circuit 110 converts the electrical signals into audio data and transmits the audio data to peripherals interface 118 for processing. Audio data is optionally retrieved from and / or transmitted to memory 102 and / or RF circuit 108 by peripherals interface 118. In some embodiments, audio circuit 110 also includes a headset jack. The headset jack provides an interface between audio circuitry 110 and a removable audio input / output peripheral, such as an output-only headphone or a headset with both an output (e.g., single or double ear headphones) and an input (e.g., a microphone).

[0069] I / O subsystem 106 connects input / output peripherals of device 100, such as touchscreen 112 and other input control devices 116, to peripheral interface 118. I / O subsystem 106 optionally includes one or more input controllers 160 for display controller 156, light sensor controller 158, intensity sensor controller 159, haptic feedback controller 161, and other input or control devices. One or more input controllers 160 receive electrical signals from and send electrical signals to other input or control devices 116. Other input control devices 116 optionally include physical buttons (e.g., push buttons, rocker buttons, etc.), dials, slider switches, joysticks, click wheels, etc. In some other embodiments, input controller(s) 160 are optionally coupled to any (or none) of a keyboard, infrared port, USB port, and pointer device such as a mouse. The one or more buttons optionally include up / down buttons for adjusting the volume of the speaker 111 and / or microphone 113. The one or more buttons optionally include push buttons.

[0070] Touch-sensitive display 112 provides an input and output interface between the device and a user. Display controller 156 receives and / or sends electrical signals to touchscreen 112. Touchscreen 112 displays visual output to the user. The visual output optionally includes graphics, text, icons, video, and any combination thereof (collectively referred to as "graphics"). In some embodiments, some or all of the visual output corresponds to user interface objects.

[0071] Touchscreen 112 has a touch-sensitive surface, sensor, or set of sensors that accepts input from a user based on haptic and / or tactile contact. Touchscreen 112 and display controller 156 (along with any associated modules and / or instruction sets in memory 102) detects contacts (and any movement or cessation of contact) on touchscreen 112 and translates the detected contacts into interactions with user interface objects (e.g., one or more softkeys, icons, web pages, or images) displayed on touchscreen 112. In an exemplary embodiment, the point of contact between touchscreen 112 and the user corresponds to the area under the user's finger.

[0072] Touchscreen 112 optionally uses LCD (liquid crystal display), LPD (light emitting polymer display), or LED (light emitting diode) or OLED (organic light emitting diode) technology, although other display technologies are used in other embodiments. Touchscreen 112 and display controller 156 optionally detect contact and any movement or disruption of contact using any of a number of now known or later developed touch sensing 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 touchscreen 112. In an exemplary embodiment, projected mutual capacitance sensing technology is used, such as that found in the IPHONE®, IPOD TOUCH®, and IPAD® from APPLE Inc. of Cupertino, California.

[0073] Touchscreen 112 optionally has a video resolution greater than 400 dpi. In some embodiments, touchscreen 112 has a video resolution of at least 600 dpi. In other embodiments, touchscreen 112 has a video resolution of at least 1000 dpi. A user optionally contacts touchscreen 112 using any suitable object or digit, such as a stylus, a finger, etc. In some embodiments, the user interface is designed to work primarily with finger contacts and gestures. In some embodiments, the device translates finger-based input into precise pointer / cursor position or commands to perform the user's desired action.

[0074] In some embodiments, in addition to the touchscreen, device 100 optionally includes a touchpad (not shown) for activating or deactivating certain functions. In some embodiments, the touchpad is a touch-sensitive area of the device that, unlike the touchscreen, does not display visual output. The touchpad is optionally a touch-sensitive surface separate from touchscreen 112 or an extension of the touch-sensitive surface formed by the touchscreen.

[0075] Device 100 also includes a power system 162 for providing power to the various components. Power system 162 optionally includes a power management system, one or more power sources (e.g., battery, alternating current (AC)), a recharging system, power failure detection circuitry, power converters or inverters, power status indicators (e.g., light emitting diodes (LEDs)), and any other components associated with generating, managing, and distributing electrical power within a portable device.

[0076] Device 100 also optionally includes one or more light sensors 164. FIG. 1A shows a light sensor coupled to light sensor controller 158 in I / O subsystem 106. Light sensor 164 optionally includes a charge-coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) phototransistor. Light sensor 164 receives light from the environment, projected through one or more lenses, and converts the light into data representing an image. In conjunction with imaging module 143 (also referred to as a camera module), light sensor 164 optionally captures still images or video. In some embodiments, a light sensor is located on the back of device 100, opposite touchscreen 112 on the front of the device, to enable the touch-sensitive display as a viewfinder for still and / or video image acquisition. In some embodiments, another light sensor is located on the front of the device to optionally obtain an image of the user for video conferencing while the user views other video conference participants on the touch-sensitive display.

[0077] Device 100 also optionally includes one or more contact intensity sensors 165. FIG. 1A shows contact intensity sensors coupled to intensity sensor controller 159 in I / O subsystem 106. Contact intensity sensors 165 optionally include one or more piezoresistive strain gauges, capacitive force sensors, electric force sensors, piezoelectric force sensors, optical force sensors, capacitive touch-sensitive surfaces, or other intensity sensors (e.g., sensors used to measure the force (or pressure) of a contact on a touch-sensitive surface). Contact intensity sensors 165 receive contact intensity information (e.g., pressure information or a proxy for pressure information) from the environment. In some embodiments, at least one contact intensity sensor is co-located with or proximate to the touch-sensitive surface (e.g., touch-sensitive display system 112). In some embodiments, at least one contact intensity sensor is located on the back of device 100, opposite touchscreen 112, which is located on the front of device 100.

[0078] Device 100 also optionally includes one or more proximity sensors 166. FIG. 1A shows proximity sensor 166 coupled to peripherals interface 118. Alternatively, proximity sensor 166 is coupled to input controller 160 in I / O subsystem 106. In some embodiments, when the multifunction device is placed near a user's ear (e.g., when the user is making a phone call), the proximity sensor is turned off and touchscreen 112 is disabled.

[0079] Device 100 also optionally includes one or more tactile output generators 167. FIG. 1A shows tactile output generators coupled to haptic feedback controller 161 in I / O subsystem 106. Tactile output generator 167 optionally includes one or more electroacoustic devices, such as speakers or other audio components, and / or electromechanical devices that convert energy into linear motion, such as motors, solenoids, electroactive polymers, piezoelectric actuators, electrostatic actuators, or other tactile output generating components (e.g., components that convert electrical signals into tactile output on the device). Contact intensity sensor 165 receives haptic feedback generation instructions from haptic feedback module 133 and generates a tactile output on device 100 that can be sensed by a user of device 100. In some embodiments, at least one tactile output generator is located on or proximate to a touch-sensitive surface (e.g., touch-sensitive display system 112) and, optionally, generates a tactile output by moving the touch-sensitive surface vertically (e.g., in / out of the surface of device 100) or laterally (e.g., back and forth in the same plane as the surface of device 100). In some embodiments, at least one tactile output generator sensor is located on the back of device 100, opposite touch-sensitive display 112, which is located on the front of device 100.

[0080] Device 100 also optionally includes one or more accelerometers 168. FIG. 1A shows accelerometer 168 coupled to peripherals interface 118. Alternatively, accelerometer 168 is optionally coupled to input controller 160 in I / O subsystem 106. In some embodiments, information is displayed on the touch-sensitive display in portrait or landscape orientation based on analysis of data received from the one or more accelerometers. In addition to accelerometer(s) 168, device 100 optionally includes a magnetometer (not shown) and a GPS (or GLONASS or other global navigation system) receiver (not shown) for obtaining information regarding the location and orientation (e.g., portrait or landscape) of device 100.

[0081] In some embodiments, software components stored in memory 102 include an operating system 126, a communications module (or instruction set) 128, a touch / motion module (or instruction set) 130, a graphics module (or instruction set) 132, a text input module (or instruction set) 134, a global positioning system (GPS) module (or instruction set) 135, and applications (or instruction sets) 136. Additionally, in some embodiments, as shown in FIG. 1A , memory 102 stores device / global internal state 157, a destination determination module 163 (optionally including one or more of previously visited addresses 402, a calendar item data structure 302, a destination prediction module 163-1, a route determination module 163-2, and / or a departure reminder module 163-3). Device / global internal state 157 includes one or more of the following: active application state, which indicates which application, if any, is currently active; display state, which indicates which applications, views, or other information are occupying various areas of touch-sensitive display 112; sensor state, which includes information obtained from the device's various sensors and input control devices 116; and position information regarding the device's position and / or attitude (e.g., the device's orientation).

[0082] Operating system 126 (e.g., an embedded operating system such as Darwin®, RTXC®, LINUX®, UNIX®, OS X®, WINDOWS®, or VxWorks®) includes various software components and / or drivers for controlling and managing common system tasks (e.g., memory management, storage device control, power management, etc.) and facilitating communication between various hardware and software components.

[0083] Communications module 128 facilitates communication with other devices via one or more external ports 124 and includes various software components for processing data received by RF circuitry 108 and / or external port 124. External port 124 (e.g., Universal Serial Bus (USB), FIREWIRE®, etc.) is adapted to connect to other devices directly or indirectly through a network (e.g., the Internet, wireless LAN, etc.). In some embodiments, the external port is a multi-pin (e.g., 30-pin) connector that is the same as, similar to, and / or compatible with the 30-pin connector used in some embodiments of APPLE Inc.'s IPOD® devices. In other embodiments, the external port is a multi-pin (e.g., 8-pin) connector that is the same as, similar to, and / or compatible with the 8-pin connector used in APPLE Inc.'s LIGHTNING® connector.

[0084] Contact / motion module 130, optionally in cooperation with display controller 156, detects contact with touch screen 112 and other touch-sensing devices (e.g., a touchpad or physical click wheel). Contact / motion module 130 includes various software components for performing various operations related to contact detection, such as determining whether contact occurs (e.g., detecting a finger-down event), determining the intensity of the contact (e.g., the force or pressure of the contact, or a surrogate for the force or pressure of the contact), determining whether there is contact movement and tracking the movement across the touch-sensitive surface (e.g., detecting one or more finger-drag events), and determining whether the contact has stopped (e.g., detecting a finger-up event or an interruption of the contact). Contact / motion module 130 receives contact data from the touch-sensitive surface. Determining the movement of the contact point represented by the set of contact data optionally includes determining the speed (magnitude), velocity (magnitude and direction), and / or acceleration (change in magnitude and / or direction) of the contact point. These actions are optionally applied to a single contact (e.g., one finger contact) or multiple simultaneous contacts (e.g., "multi-touch" / multiple finger contacts). In some embodiments, contact / motion module 130 and display controller 156 detect contacts on the touchpad.

[0085] In some embodiments, contact / motion module 130 uses a set of one or more intensity thresholds to determine whether an action has been performed by the user (e.g., whether the user has selected or “clicked” on an affordance). In some embodiments, at least a subset of the intensity thresholds are determined according to software parameters (e.g., the intensity thresholds are not determined by the activation threshold of a particular physical actuator and may be adjusted without modifying the physical hardware of device 100). For example, the mouse “click” threshold of a trackpad or touch-sensitive display can be set to any of a wide range of predetermined thresholds without modifying the trackpad or touch-sensitive display hardware. Furthermore, in some implementations, a user of the device is provided with a software setting to adjust one or more of the set of intensity thresholds (e.g., by adjusting individual intensity thresholds and / or by adjusting multiple intensity thresholds at once via a system-level click “intensity” parameter).

[0086] Contact / motion module 130 optionally detects gesture input by a user. Different gestures on the touch-sensitive surface have different contact patterns (e.g., different movements, timing, and / or intensity of detected contact). Thus, a gesture is optionally detected by detecting a particular contact pattern. For example, detecting a finger tap gesture includes detecting a finger down event (e.g., at an icon location), followed by detecting a finger lift (lift-off) event at the same location (or substantially the same location) as the finger down event. As another example, detecting a finger swipe gesture on the touch-sensitive surface includes detecting a finger down event, followed by one or more finger drag events, and in some embodiments, then detecting a finger lift (lift-off) event.

[0087] Graphics module 132 includes various known software components for rendering and displaying graphics on touchscreen 112 or other display, including components for modifying the visual effects (e.g., brightness, transparency, saturation, contrast, or other visual characteristics) of the displayed graphics. As used herein, the term "graphics" includes any object that can be displayed to a user, including, but not limited to, text, web pages, icons (such as user interface objects including soft keys), digital images, video, animation, etc.

[0088] In some embodiments, graphics module 132 stores data representing the graphics to be used. Each graphic is optionally assigned a corresponding code. Graphics module 132 receives one or more codes specifying the graphics to be displayed, including coordinate data and other graphic characteristic data, as needed, from an application or the like, and then generates screen image data to output to display controller 156.

[0089] The tactile feedback module 133 includes various software components for generating instructions used by the tactile output generator(s) 167 to generate tactile outputs at one or more locations on the device 100 in response to user interaction with the device 100.

[0090] Text input module 134 is optionally a component of graphics module 132 and provides a soft keyboard for entering text in various applications (e.g., contacts module 137, email client module 140, IM module 141, browser module 147, and any other application requiring text input).

[0091] The GPS module 135 determines the location of the device and provides this information for use in various applications (e.g., to the phone 138 for use in location-based dialing calls, to the camera 143 as picture / video metadata, and to applications that provide location-based services such as weather widgets, local yellow pages widgets, and map / navigation widgets).

[0092] Application (“app”) 136 optionally includes the following modules (or sets of instructions), or a subset or superset thereof: • a contacts module 137 (sometimes called an address book or contact list); ●Telephone module 138, ●Videoconferencing module 139, ● an email client module 140; ● Instant messaging (IM) module 141; ●Fitness module 142, a camera module 143 for still and / or video images, ● Image management module 144; ● Browser module 147, ●Calendar module 148, a widget module 149, optionally including one or more of a weather widget 149-1, a stock price widget 149-2, a calculator widget 149-3, an alarm clock widget 149-4, a dictionary widget 149-5, and other widgets obtained by the user, as well as user-created widgets 149-6; ● Search module 151, • a video and music player module 152, optionally consisting of a video playback module and a music playback module; ● Memo module 153, Map module 154, and / or ●Online video module 155.

[0093] Examples of other applications 136 optionally stored in memory 102 include other word processing applications, other image editing applications, drawing applications, presentation applications, website creation applications, disk authoring applications, spreadsheet applications, JAVA® enabled applications, encryption, digital rights management, voice recognition, widget creator modules for creating user created widgets 149-6, and voice duplication.

[0094] Contacts module 137, along with touch screen 112, display controller 156, touch module 130, graphics module 132, and text input module 134, is optionally used to manage an address book or contact list (e.g., stored in contacts module 137 in memory 102), including adding name(s) to the address book, removing name(s) from the address book, associating phone number(s), email address(es), street address(es), or other information with names, associating images with names, categorizing and sorting names, providing phone numbers or email addresses to initiate and / or facilitate communication via telephone module 138, videoconferencing module 139, email client module 140, or IM module 141, etc.

[0095] Telephone module 138, in conjunction with RF circuitry 108, audio circuitry 110, speaker 111, microphone 113, touch screen 112, display controller 156, contact module 130, graphics module 132, and text input module 134, is optionally used to enter a series of characters corresponding to a telephone number, access one or more telephone numbers in address book 137, modify an entered telephone number, dial each telephone number, conduct a conversation, and disconnect or hang up when the conversation is completed. As noted above, wireless communication optionally uses any of a number of communication standards, protocols, and technologies.

[0096] In conjunction with RF circuitry 108, audio circuitry 110, speaker 111, microphone 113, touch screen 112, display controller 156, light sensor 164, light sensor controller 158, contact module 130, graphics module 132, text input module 134, contact list 137, and telephone module 138, videoconferencing module 139 includes executable instructions for initiating, conducting, and terminating videoconferences between a user and one or more other participants in accordance with the user's instructions.

[0097] In conjunction with RF circuitry 108, touch screen 112, display controller 156, contact module 130, graphics module 132, and text input module 134, email client module 140 contains executable instructions for composing, sending, receiving, and managing emails in response to user instructions. In conjunction with image management module 144, email client module 140 greatly facilitates composing and sending emails with still or video images captured by camera module 143.

[0098] In conjunction with RF circuitry 108, touchscreen 112, display controller 156, contact module 130, graphics module 132, and text input module 134, instant message module 141 includes executable instructions for entering characters corresponding to an instant message, modifying previously entered characters, sending the corresponding instant message (e.g., using Short Message Service (SMS) or Multimedia Message Service (MMS) protocols for telephone-based instant messaging, or using XMPP, SIMPLE, or IMPS for Internet-based instant messaging), receiving instant messages, and displaying the received instant messages. In some embodiments, sent and / or received instant messages optionally include graphics, photos, audio files, video files, and / or other attachments, such as those supported by MMS and / or Enhanced Messaging Service (EMS). As used herein, "instant message" refers to both telephone-based messages (e.g., messages sent using SMS or MMS) and Internet-based messages (e.g., messages sent using XMPP, SIMPLE, or IMPS).

[0099] In conjunction with the RF circuitry 108, touchscreen 112, display controller 156, contact module 130, graphics module 132, text input module 134, GPS module 135, map module 154, and video and music player module 152, fitness module 142 includes executable instructions for creating workouts (e.g., in terms of time, distance, and / or calorie burn goals), communicating with workout sensors (such as a watch or sports device such as a pedometer), receiving workout sensor data, calibrating sensors used to monitor workouts, selecting and playing music for workouts, and displaying, storing, and transmitting workout data.

[0100] In conjunction with touch screen 112, display controller 156, light sensor(s) 164, light sensor controller 158, contact module 130, graphics module 132, and image management module 144, camera module 143 includes executable instructions for capturing still images or video (including video streams) and storing them in memory 102, modifying characteristics of the still images or video, or deleting the still images or video from memory 102.

[0101] In conjunction with touch screen 112, display controller 156, contact module 130, graphics module 132, text input module 134, and camera module 143, image management module 144 includes executable instructions for arranging, modifying (e.g., editing) or otherwise manipulating, labeling, deleting, presenting (e.g., in a digital slide show or album), and storing still and / or video images.

[0102] In conjunction with RF circuitry 108, touch screen 112, display system controller 156, contact module 130, graphics module 132, and text input module 134, browser module 147 contains executable instructions for browsing the Internet in accordance with user instructions, including navigating through, linking to, receiving, and displaying web pages or portions thereof, as well as attachments and other files linked to web pages.

[0103] Calendar module 148, along with RF circuitry 108, touch screen 112, display system controller 156, contact module 130, graphics module 132, text input module 134, email client module 140, and browser module 147, contains executable instructions for creating, displaying, modifying, and storing calendars and data associated with calendars (e.g., calendar entries, to-do lists, etc.) in accordance with user instructions.

[0104] Widget modules 149, along with RF circuitry 108, touchscreen 112, display system controller 156, contact module 130, graphics module 132, text input module 134, and browser module 147, are mini-applications (e.g., weather widget 149-1, stock price widget 149-2, calculator widget 149-3, alarm clock widget 149-4, and dictionary widget 149-5) that are optionally downloaded and used by a user, or mini-applications (e.g., user-created widget 149-6) that are created by a user. In some embodiments, a widget includes an HTML (HyperText Markup Language) file, a CSS (Cascading Style Sheets) file, and a JavaScript file. In some embodiments, a widget includes an XML (Extensible Markup Language) file and a JavaScript file (e.g., Yahoo! Widget).

[0105] A widget creator module (not shown), in conjunction with RF circuitry 108, touch screen 112, display system controller 156, contact module 130, graphics module 132, text input module 134, and browser module 147, is optionally used by a user to create widgets (e.g., turn user-specified portions of a web page into widgets).

[0106] In association with touch screen 112, display system controller 156, contact module 130, graphics module 132, and text input module 134, search module 151 contains executable instructions for searching memory 102 for text, music, sound, images, video, and / or other files that match one or more search criteria (e.g., one or more user-specified search terms) in accordance with user instructions.

[0107] In conjunction with touchscreen 112, display system controller 156, contact module 130, graphics module 132, audio circuitry 110, speaker 111, RF circuitry 108, and browser module 147, video and music player module 152 includes executable instructions that enable a user to download and play pre-recorded music or other sound files stored in one or more file formats, such as MP3 or AAC files, as well as executable instructions for displaying, presenting, or otherwise playing videos (e.g., on touchscreen 112 or on an external display connected via external port 124). In some embodiments, device 100 optionally includes the functionality of an MP3 player, such as an IPOD® from APPLE Inc.

[0108] In conjunction with touch screen 112, display controller 156, contact module 130, graphics module 132, and text input module 134, notes module 153 contains executable instructions for creating and managing notes, to-do lists, and the like, in accordance with user instructions.

[0109] In conjunction with RF circuitry 108, touch screen 112, display system controller 156, contact module 130, graphics module 132, text input module 134, GPS module 135, and browser module 147, map module 154 can optionally be used to receive, display, modify, and store maps and data associated with maps (e.g., driving directions, data about businesses and other points of interest at or near a particular location, and other location-based data) in accordance with user instructions.

[0110] In conjunction with touchscreen 112, display system controller 156, contact module 130, graphics module 132, audio circuitry 110, speaker 111, RF circuitry 108, text input module 134, email client module 140, and browser module 147, online video module 155 contains instructions that enable a user to access, browse, receive (e.g., by streaming and / or downloading), and play (e.g., on the touchscreen or on an external display connected via external port 124) online videos in one or more file formats, such as H.264, and send and otherwise manage emails containing links to particular online videos. In some embodiments, instant messaging module 141 is used to send links to particular online videos, rather than email client module 140.

[0111] 1A , portable multifunction device 100 also includes destination determination module 163 for coordinating destination determination operations on device 100 (e.g., retrieving data from previously visited addresses 402 or calendar entry data structure 302 and using the retrieved data to generate a time-to-leave reminder). Destination determination module 163 optionally includes the following modules (or sets of instructions), or a subset or superset: • Previously visited addresses 402 for storing information about addresses (or GPS coordinates corresponding to addresses) that a user of device 100 has previously visited; ● a calendar item data structure 302 for storing information about calendar items associated with a user of the device 100; ● Destination prediction module 163-1; ● Route determination module 163-2; ●Departure reminder module 163-3.

[0112] In conjunction with GPS module 135, operating system 126, I / O subsystem 106, previously visited addresses 402, calendar item data structure 302, map module 154, and calendar module 148, destination prediction module 163-1 includes executable instructions to scan calendar items (e.g., one or more records stored in calendar item data structure 302) and predict a destination for the corresponding calendar item based on previously visited addresses (e.g., previously visited addresses stored in previously visited addresses 402).

[0113] In conjunction with GPS module 135, operating system 126, I / O subsystem 106, previously visited addresses 402, calendar item data structure 302, map module 154, and calendar module 148, route determination module 163-2 includes executable instructions for determining one or more possible routes (e.g., walking, cycling, driving, public transportation routes, etc.) to a particular destination.

[0114] In conjunction with GPS module 135, operating system 126, I / O subsystem 106, previously visited addresses 402, calendar item data structure 302, map module 154, and calendar module 148, departure reminder module 163-3 includes executable instructions to provide a reminder to a user of device 100 that it is time to leave for an upcoming event (e.g., an exemplary user interface object 702 with an exemplary reminder is shown in FIG. 7B).

[0115] Each of the above-identified modules and applications corresponds to an executable instruction set that performs one or more of the functions described above and methods described herein (e.g., computer-implemented methods and other information processing methods described herein). These modules (i.e., instruction sets) need not be implemented as separate software programs, procedures, or modules; thus, various subsets of these modules are optionally combined or rearranged in various embodiments. In some embodiments, memory 102 optionally stores a subset of the above-identified modules and data structures. Additionally, memory 102 optionally stores additional modules and data structures not described above.

[0116] In some embodiments, device 100 is a device in which operation of a predetermined set of functions on the device is performed exclusively via a touchscreen and / or touchpad. Using the touchscreen and / or touchpad as the primary input control device for operation of device 100 optionally reduces the number of physical input control devices (pushbuttons, dials, etc.) on device 100.

[0117] The predetermined set of functions performed exclusively via the touchscreen and / or touchpad optionally includes navigation between user interfaces. In some embodiments, the touchpad, when touched by a user, navigates device 100 to a main menu, home menu, or root menu from any user interface displayed on device 100. In such embodiments, a "menu button" is implemented using the touchpad. In some other embodiments, the menu button is a physical push button or other physical input control device instead of a touchpad.

[0118] 1B is a block diagram illustrating exemplary components for event processing, according to some embodiments. In some embodiments, memory 102 (of FIG. 1A) includes event sorter 170 (e.g., of operating system 126) and a corresponding application 136-1 selected from among applications 136 of portable multifunction device 100 (FIG. 1A) (e.g., any of the applications described above stored in memory 102 that comprise application 136).

[0119] Event sorter 170 receives the event information and determines the application 136-1 and application view 191 of application 136-1 to which the event information should be delivered. Event sorter 170 includes an event monitor 171 and an event dispatcher module 174. In some embodiments, application 136-1 includes application internal state 192 that indicates the current application view(s) that are displayed on touch-sensitive display 112 when the application is active or running. In some embodiments, device / global internal state 157 is used by event sorter 170 to determine which application(s) are currently active, and application internal state 192 is used by event sorter 170 to determine the application view 191 to which the event information should be delivered.

[0120] In some embodiments, application internal state 192 includes additional information such as one or more of resume information used when application 136-1 resumes execution, user interface state information indicating information being displayed or ready to be displayed by application 136-1, a state queue to allow the user to return to a previous state or view of application 136-1, and a redo / undo queue of actions previously performed by the user.

[0121] Event monitor 171 receives event information from peripherals interface 118. The event information includes information about sub-events (e.g., a user touch on touch-sensitive display 112 as part of a multi-touch gesture). Peripherals interface 118 transmits information it receives from I / O subsystem 106 or sensors such as proximity sensor 166, accelerometer(s) 168, and / or microphone 113 (via audio circuitry 110). Information that peripherals interface 118 receives from I / O subsystem 106 includes information from touch-sensitive display 112 or the touch-sensitive surface.

[0122] In some embodiments, event monitor 171 sends requests to peripherals interface 118 at predetermined intervals. In response, peripherals interface 118 transmits event information. In other embodiments, peripherals interface 118 transmits event information only when there is a significant event (e.g., receiving an input above a predetermined noise threshold and / or for a predetermined duration).

[0123] In some embodiments, the event sorter 170 also includes a hit view determination module 172 and / or an active event recognizer determination module 173 .

[0124] Hit view determination module 172 provides software procedures for determining where a sub-event occurred within one or more views when touch-sensitive display 112 displays more than one view. A view consists of controls and other elements that a user can see on the display.

[0125] Another aspect of a user interface associated with an application is the set of views, sometimes referred to herein as application views or user interface windows, in which information is displayed and touch-based gestures are made. The application view (of the respective application) in which a touch is detected optionally corresponds to a programmatic level within the application's programmatic or view hierarchy. For example, the lowest-level view in which a touch is detected is optionally referred to as the hit view, and the set of events that are recognized as suitable inputs is optionally determined based, at least in part, on the hit view of the initial touch that initiates the touch-based gesture.

[0126] Hit view determination module 172 receives information associated with sub-events of a touch-based gesture. If an application has multiple views organized as a hierarchy, hit view determination module 172 identifies the hit view as the lowest view in the hierarchy that should process the sub-event. In most situations, the hit view is the lowest-level view in which the contributing sub-event occurs (i.e., the first sub-event in the sequence of sub-events that form the event or potential event). Once a hit view is identified by the hit view determination module, the hit view typically receives all sub-events related to the same touch or input source for which it was identified as the hit view.

[0127] Active event recognizer determination module 173 determines which view(s) in the view hierarchy should receive the particular sequence of sub-events. In some embodiments, active event recognizer determination module 173 determines that only the hit view should receive the particular sequence of sub-events. In other embodiments, active event recognizer determination module 173 determines that all views that contain the physical location of the sub-event are actively participating views, and therefore, all actively participating views should receive the particular sequence of sub-events. In other embodiments, even if the touch sub-event is completely confined to the region associated with a particular view, views higher in the hierarchy remain actively participating views.

[0128] Event dispatcher module 174 sends the event information to an event recognizer (e.g., event recognizer 180). In embodiments that include active event recognizer determination module 173, event dispatcher module 174 delivers the event information to the event recognizer determined by active event recognizer determination module 173. In some embodiments, event dispatcher module 174 stores event information obtained by a corresponding event receiver 182 in an event queue.

[0129] In some embodiments, operating system 126 includes event sorter 170. Alternatively, application 136-1 includes event sorter 170. In still other embodiments, event sorter 170 is a stand-alone module or part of another module stored in memory 102, such as contact / motion module 130.

[0130] In some embodiments, application 136-1 includes multiple event handlers 190 and one or more application views 191, each containing instructions for processing touch events that occur within a respective view of the application's user interface. Each application view 191 of application 136-1 includes one or more event recognizers 180. Typically, each application view 191 includes multiple event recognizers 180. In other embodiments, one or more of the event recognizers 180 are part of a separate module, such as a user interface kit (not shown) or a higher-level object from which application 136-1 inherits methods and other properties. In some embodiments, each event handler 190 includes one or more of a data updater 176, an object updater 177, a GUI updater 178, and / or event data 179 received from event sorter 170. Event handler 190 optionally utilizes or calls data updater 176, object updater 177, or GUI updater 178 to update application internal state 192. Alternatively, one or more of the application views 191 includes one or more corresponding event handlers 190. Also, in some embodiments, one or more of the data updater 176, the object updater 177, and the GUI updater 178 are included in the corresponding application view 191.

[0131] A corresponding event recognizer 180 receives event information (e.g., event data 179) from event sorter 170 and identifies an event from the event information. Event recognizer 180 includes an event receiver 182 and an event comparator 184. In some embodiments, event recognizer 180 further includes metadata 183 and at least a subset of event delivery instructions 188 (optionally including sub-event delivery instructions).

[0132] The event receiver 182 receives event information from the event sorter 170. This event information includes information about a sub-event, for example, information about a touch or touch movement. Depending on the sub-event, the event information also includes additional information, such as the location of the sub-event. When the sub-event involves a touch movement, the event information optionally further includes the speed and direction of the sub-event. In some embodiments, the event includes a rotation of the device from one orientation to another (e.g., from portrait to landscape or vice versa), and the event information includes corresponding information about the device's current orientation (also called the device's attitude).

[0133] The event comparator 184 compares the event information to predefined event or sub-event definitions and determines the event or sub-event, or determines or updates the state of the event or sub-event, based on the comparison. In some embodiments, the event comparator 184 includes an event definition 186. The event definition 186 includes a definition of an event (e.g., a predefined sequence of sub-events), such as, for example, Event 1 (187-1), Event 2 (187-2), etc. In some embodiments, sub-events within Event 187 include, for example, touch start, touch end, touch movement, touch cancellation, and multiple touches. In one example, the definition of Event 1 (187-1) is a double tap on a displayed object. The double tap includes, for example, a first touch (touch start) for a predetermined stage on the displayed object, a first lift-off (touch end) for the predetermined stage, a second touch (touch start) for the predetermined stage on the displayed object, and a second lift-off (touch end) for the predetermined stage. In another example, the definition of Event 2 (187-2) is a drag operation on the displayed object. A drag includes, for example, a touch (or contact) to a predetermined stage on a displayed object, movement of the touch across the touch-sensitive display 112, and lift-off of the touch (touch end). In some embodiments, the event also includes information about one or more associated event handlers 190.

[0134] In some embodiments, event definition 186 includes a definition of the event for each user interface object. In some embodiments, event comparator 184 performs a hit test to determine which user interface object is associated with the sub-event. For example, in an application view in which three user interface objects are displayed on touch-sensitive display 112, if a touch is detected on touch-sensitive display 112, event comparator 184 performs a hit test to determine which of the three user interface objects is associated with the touch (sub-event). If each displayed object is associated with a corresponding event handler 190, event comparator 184 uses the results of the hit test to determine which event handler 190 to activate. For example, event comparator 184 selects the event handler associated with the sub-event and the object that triggers the hit test.

[0135] In some embodiments, the definition of each event 187 also includes a delay action that delays delivery of the event information until it is determined whether the sequence of sub-events corresponds or does not correspond to the event type of the event recognizer.

[0136] If the respective event recognizer 180 determines that the sequence of sub-events does not match any of the events in the event definition 186, the respective event recognizer 180 enters an event-disabled, event-failed, or event-ended state and thereafter ignores the next sub-event of the touch-based gesture. In this situation, any other event recognizers that remain active for the hit view continue to track and process sub-events of the ongoing touch-based gesture.

[0137] In some embodiments, each event recognizer 180 includes metadata 183 with configurable properties, flags, and / or lists that indicate how the event delivery system performs sub-event delivery to actively participating event recognizers. In some embodiments, metadata 183 includes configurable properties, flags, and / or lists that indicate how event recognizers may or are enabled to interact with each other. In some embodiments, metadata 183 includes configurable properties, flags, and / or lists that indicate whether sub-events are delivered to various levels in the view or programmatic hierarchy.

[0138] In some embodiments, each event recognizer 180 activates an event handler 190 associated with an event when one or more specific sub-events of the event are recognized. In some embodiments, each event recognizer 180 delivers event information associated with the event to the event handler 190. Activating an event handler 190 is distinct from sending (and postponing sending) the sub-events to the corresponding hit view. In some embodiments, the event recognizer 180 throws a flag associated with the recognized event, and the event handler 190 associated with the flag catches the flag and performs predetermined processing.

[0139] In some embodiments, the event delivery instructions 188 include sub-event delivery instructions that deliver event information about a sub-event without activating an event handler. Instead, the sub-event delivery instructions deliver the event information to an event handler associated with a set of sub-events or an actively participating view. The event handler associated with the set of sub-events or an actively participating view receives the event information and performs predetermined processing.

[0140] In some embodiments, data updater 176 creates and updates data used by application 136-1. For example, data updater 176 updates phone numbers used by contacts module 137 or stores video files used by video and music player module 152. In some embodiments, object updater 177 creates and updates objects used by application 136-1. For example, object updater 176 creates new user interface objects or updates the positions of user interface objects. GUI updater 178 updates the GUI. For example, GUI updater 178 prepares display information and sends the display information to graphics module 132 for display on the touch-sensitive display.

[0141] In some embodiments, event handler(s) 190 include or have access to data updater 176, object updater 177, and GUI updater 178. In some embodiments, data updater 176, object updater 177, and GUI updater 178 are included in a single module of the respective application 136-1 or application view 191. In other embodiments, they are included in two or more software modules.

[0142] It should be understood that the foregoing description of event processing of a user's touch on a touch-sensitive display also applies to other forms of user input for operating multifunction device 100 using input devices, not all of which are initiated on the touchscreen. For example, mouse movements and mouse button presses, optionally coupled with single or multiple keyboard presses or holds, touch movements such as tapping, dragging, scrolling, etc. on a touchpad, pen stylus input, device movement, verbal commands, detected eye movements, biometric input, and / or any combination thereof are optionally utilized as inputs corresponding to sub-events that define the event to be recognized.

[0143] FIG. 1C is a schematic diagram of a portable multifunction device (e.g., portable multifunction device 100) having a touch-sensitive display (e.g., touch screen 112) according to some embodiments. In some embodiments, as well as other embodiments described below, a user can select one or more graphics displayed on the touch-sensitive display by making a gesture on the screen, for example, with one or more fingers or one or more styluses. In some embodiments, selection of the one or more graphics occurs when the user loses contact with the one or more graphics (e.g., by lifting a finger off the screen). In some embodiments, the gesture optionally includes one or more tap gestures (e.g., a series of touches on the screen followed by a lift-off), one or more swipe gestures (e.g., successive contacts between gestures along the surface of the screen from left to right, right to left, upward and / or downward), and / or rolling (e.g., from right to left, left to right, upward and / or downward) a finger in contact with device 100. In some implementations or situations, accidental contact with a graphic does not select that graphic. For example, if the gesture for launching an application is a tap gesture, a swipe gesture that sweeps over an application affordance (e.g., an icon) optionally does not launch (e.g., open) the corresponding application.

[0144] Device 100 also optionally includes one or more physical buttons, such as a "home" or menu button 204. As mentioned above, menu button 204 is optionally used for navigation to any application 136 within a set of applications optionally running on device 100. Alternatively, in some embodiments, the menu button is implemented as a soft key in a GUI displayed on touchscreen 112.

[0145] In one embodiment, device 100 includes touchscreen 112, menu button 204, pushbutton 206 for powering the device on / off and locking the device, volume control button(s) 208, subscriber identity module (SIM) card slot 210, headset jack 212, and external docking / charging port 124. Pushbutton 206 turns power on / off on the device by pressing and holding the button down for a predetermined time, locks the device by pressing and releasing the button before the predetermined time has elapsed, and / or unlocks the device or initiates an unlocking process. In an alternative embodiment, device 100 also receives verbal input through microphone 113 for activating or deactivating certain functions. Device 100 also optionally includes one or more contact intensity sensors 165 for detecting the intensity of a contact on touchscreen 112 and / or one or more tactile output generators 167 for generating a tactile output for a user of device 100.

[0146] 1D shows a user interface on a device (e.g., device 100 of FIG. 1A ) that includes touch-sensitive surface 195 (e.g., a tablet or touchpad) that is separate from display 194 (e.g., touchscreen 112). In some embodiments, touch-sensitive surface 195 optionally includes one or more contact intensity sensors (e.g., one or more of contact intensity sensors 359) for detecting the intensity of a contact on touch-sensitive surface 195 and / or one or more tactile output generators 357 for generating a tactile output for a user of touch-sensitive surface 195.

[0147] Although some of the following examples are described with reference to input on touch screen 112 (when the touch-sensitive surface and display are combined), in some embodiments, the device detects input on a touch-sensitive surface that is separate from the display, as shown in FIG. 1D . In some embodiments, this touch-sensitive surface (e.g., 195 in FIG. 1D ) has a major axis (e.g., 199 in FIG. 1D ) that corresponds to a major axis (e.g., 198 in FIG. 1D ) on the display (e.g., 194). According to these embodiments, the device detects contact with touch-sensitive surface 195 (e.g., 197-1 and 197-2 in FIG. 1D ) at locations that correspond to respective locations on the display (e.g., in FIG. 1D , 197-1 corresponds to 196-1 and 197-2 corresponds to 196-2). In this manner, when the touch-sensitive surface is separate from the display, user input (e.g., contacts 197-1 and 197-2, and their movement) detected by the device on the touch-sensitive surface (e.g., 195 in FIG. 1D ) is used by the device to operate a user interface on the display (e.g., 194 in FIG. 1D ) of the multifunction device. It should be understood that similar methods are optionally used for the other user interfaces described herein.

[0148] Additionally, while the following examples are described primarily with reference to finger input (e.g., finger contacts, finger tap gestures, finger swipe gestures), it should be understood that in some embodiments, one or more of those finger inputs are replaced with input from another input device (e.g., mouse-based input or stylus input). For example, a swipe gesture is optionally replaced with a mouse click (e.g., instead of a contact), followed by cursor movement along the path of the swipe (e.g., instead of moving the contact). As another example, a tap gesture is optionally replaced with a mouse click while the cursor is positioned over the location of the tap gesture (e.g., instead of detecting a contact and then ceasing contact detection). Similarly, when multiple user inputs are detected simultaneously, it will be understood that multiple computer mice are optionally being used simultaneously, or that a mouse and a finger contact are optionally being used simultaneously.

[0149] As used herein, the term “focus selector” refers to an input element that indicates the current portion of a user interface with which a user is interacting. In some implementations involving a cursor or other position marker, when input (e.g., a press input) is detected on a touch-sensitive surface (e.g., touch-sensitive surface 195 of FIG. 1D (in some embodiments, touch-sensitive surface 195 is a touchpad)), the cursor acts as a “focus selector” when the cursor is over a particular user interface element (e.g., a button, window, slider, or other user interface element), and the particular user interface element is adjusted according to the detected input. In some implementations involving a touchscreen display (e.g., touch-sensitive display system 112 or touchscreen 112 of FIG. 1A ) that allows direct interaction with user interface elements on the touchscreen display, contact detected on the touchscreen acts as a “focus selector,” such that when input (e.g., a press input by contact) is detected at the location of a particular user interface element (e.g., a button, window, slider, or other user interface element) on the touchscreen display, the particular user interface element is adjusted according to the detected input. In some implementations, focus is moved from one region of the user interface to another region of the user interface (e.g., by using the tab or arrow keys to move focus from one button to another) without a corresponding cursor movement or contact movement on the touchscreen display. In these implementations, the focus selector moves to follow the movement of focus between different regions of the user interface. Regardless of the specific form the focus selector takes, the focus selector is generally a user interface element (or a contact on a touchscreen display) that is controlled by the user to communicate the user's intended interaction with the user interface (e.g., by indicating to the device the user interface element with which the user intends to interact).For example, when a pressure input is detected on a touch-sensitive surface (e.g., a touchpad or touch-sensitive display), the position of the focus selector (e.g., cursor, contact, or selection box) over a corresponding button indicates that the user intends to activate the corresponding button (rather than other user interface elements shown on the device's display).

[0150] Attention is now directed to user interface (“UI”) embodiments and associated processes that may be implemented in an electronic device with a display and a touch-sensitive surface, such as device 100.

[0151] 2 is a schematic diagram of a touch screen used to present a user interface for a menu of applications, according to some embodiments. Optionally, a similar user interface is implemented on device 100 (FIG. 1A). In some embodiments, the user interface for a menu of applications includes the following elements, or a subset or superset thereof: signal strength indicator(s) 202 for wireless communication(s), such as cellular and Wi-Fi signals; ●Time 203, ●Bluetooth (registered trademark) indicator 205, ● Battery status indicator 206, A tray 209 with icons for frequently used applications, such as: an icon 216 for the phone module 138, labeled "Phone," optionally including an indicator 214 of the number of missed calls or voicemail messages; An icon 218 for the email client module 140, labeled "Mail," optionally including an indicator 210 of the number of unread emails; ○ An icon 220 for the browser module 147, labeled "Browser", and ○ An icon 222 for the video and music player module 152, also referred to as the IPOD® (trademark of APPLE Inc.) module 152, labeled "iPod®", and ●Icons for other applications, such as: ○ Icon 224 for IM module 141, labeled "Messages"; ○ Icon 226 for the calendar module 148, labeled "Calendar" ○ Icon 228 for the image management module 144, labeled "Photos"; ○ An icon 230 for the camera module 143, labeled "camera"; ○ An icon 232 for the online video module 155, labeled "Online Video"; Icon 234 for stock price widget 149-2, labeled "Stock Price" ○ Icon 236 for map module 154, labeled "Map"; ○ Icon 238 for weather widget 149-1, labeled "Weather" ○ Icon 240 for alarm clock widget 149-4, labeled "Clock" ○ An icon 242 for the fitness module 142, labeled "Fitness"; ○ Icon 244 for the Notes module 153, labeled "Notes"; ○ An icon 246 for a settings application or module that provides access to settings related to the device 100 and its various applications; and Other icons for additional applications, such as App Store, iTunes®, Voice Memos, and Utilities.

[0152] 2 are merely exemplary. Other labels are optionally used for various application icons. For example, icon 242 for fitness module 142 is alternatively labeled "Fitness Support," "Training," "Training Support," "Exercise," "Exercise Support," or "Health." In some embodiments, the label for each application icon includes the name of the application corresponding to each application icon. In some embodiments, the label for a particular application icon differs from the name of the application corresponding to the particular application icon.

[0153] 3A-3B are block diagrams illustrating data structures for storing calendar entries (e.g., for particular users of device 100) according to some embodiments. As shown in FIG. 3A, calendar item data structure 302 includes a collection of data structures 302, each storing calendar entries associated with a particular user of device 100, optionally implemented as a collection of tables for each particular user of device 100 (e.g., calendar item data structure 302-1 stores calendar entries for user 1 of device 100, calendar item data structure 302-2 stores calendar entries for user 2 of device 100). In some embodiments, each table in the collection of calendar item data structures (e.g., tables 302-1, 302-2, 302-3...302-N) stores calendar entries for more than one user of the device.

[0154] In some embodiments, one or more calendar item data structures 302 (e.g., calendar item data structure 302-1, FIG. 3B) are used to store calendar items associated with a user of device 100. As shown in FIG. 3B, calendar item data structure 302-1 contains data associated with user 1's calendar items (e.g., calendar item ID, title, location, date and time, time-to-leave reminder, and alert). In some embodiments, the data is stored in individual records 312-1, 312-2, 312-3, through 312-N. In some embodiments, header field 312-0 is used to describe each field of information associated with each corresponding record. Header 312-0, in some embodiments, contains a summary of each field of information stored in a table (e.g., each field associated with each record). As shown in FIG. 3B, header 312-0 indicates that each record 312-1, 312-2, 312-3, through 312-N stores the following information and data structures, or a subset or superset thereof: ● The value of the "Calendar Item ID" field that uniquely identifies each particular record (e.g., records 312-1 to 312-N); ● A value in the "Title" field that corresponds to descriptive text about the calendar item (e.g., descriptive text provided by the user at the time of creating the calendar item, such as the text provided in field 770 of FIG. 7E). In some circumstances, the title includes an identifier that corresponds to a geographic location (e.g., "Go to the Dentist" in record 312-3 includes the identifier "Dentist" that corresponds to the geographic location of the dental clinic (e.g., the previously visited address of the "Dental Clinic" associated with / identified by record 412-1 in previously visited addresses data structure 402-1); a value in the "Location" field that corresponds to information about the location associated with the calendar item (e.g., information provided by the user at the time of creating the calendar item (e.g., provided in field 771 of FIG. 7E)). ●In some situations, a user creates a calendar item without providing any information about the location (or providing only incomplete information about the location) (e.g., record 312-1 has a NULL value in the location field indicating that the user did not provide any information about the location of the calendar item associated with record 312-1). ● The value of the "Date Time" field corresponding to information regarding the start and end times of the calendar item (e.g., information provided by the user at the time of creating the calendar item (e.g., provided in the "All Day," "Start," "End," and "Repeating" sections shown in Figures 7E-7F)); ● the value of the "time to leave reminder" field automatically and without human intervention by device 100 (or a component thereof, such as destination determination module 163) based on a previously visited address associated with the user (e.g., because records 312-1 and 312-2 each contain the same identifier ("dentist") in a portion of the title field, the previously visited address associated with record 312-3 (e.g., record 412-1 of FIG. 4B (as discussed in more detail below with reference to FIG. 6)) can be automatically used to generate a time to leave reminder). In some embodiments or situations, the time to leave reminder value further includes information regarding an optimal route for arriving at the previously visited address (e.g., as determined by route determination module 163-2); and • The value of the "Alert" field corresponding to information about the alert or reminder for the calendar item (e.g., information provided by the user at the time the calendar item was created, such as "30 minutes ago," as illustrated for record 312-1).

[0155] In some embodiments, calendar item data structure 302-1 includes, in addition to the fields described above, fields such as a timestamp field that identifies when each calendar item was created and / or stored in table 302-1, and / or an associated address field that includes one or more address ID values (FIG. 4B) corresponding to previously visited addresses associated with each calendar item.

[0156] As shown in FIG. 3B, calendar item data structure 302-1 includes records 312-1, 312-2, 312-3, through 312-N. As an example of information stored in an exemplary record in calendar item data structure 302-1, record 312-1 stores a value of "1" in the calendar item ID field, a value of "Visit the Dentist" in the title field, a NULL value in the location field, a value of "6 / 12 / 15 12 PM - 2 PM" in the date and time field, a value of "30 minutes before" in the alert field, and a NULL value in the leave time reminder field. In some embodiments, a NULL value in the leave time reminder field provides an indication to the device (or to a component thereof, such as destination determination module 163) that a leave time reminder has not yet been generated (as described below with reference to operation 602 in FIG. 6 ).

[0157] Although shown as particular implementations of data structures (e.g., tables), in some embodiments, the data structures of FIGS. 3A-3B are implemented as XML files, tables in a relational database, text files, and / or any other suitable format for storing data.

[0158] 4A-4B are block diagrams illustrating data structures for storing previously visited addresses (e.g., for a particular user of device 100), according to some embodiments. As shown in FIG. 4A, previously visited addresses data structure 402 includes a collection of data structures 402, each storing previously visited addresses associated with a particular user of device 100, optionally implemented as a collection of tables for each particular user of device 100 (e.g., previously visited addresses data structure 402-1 stores previously visited addresses for user 1 of device 100, and previously visited addresses data structure 402-2 stores previously visited addresses for user 2 of device 100). In some embodiments, each table in the collection of calendar item data structures (e.g., tables 402-1, 402-2, 402-3...402-N) stores previously visited addresses for more than one user of the device.

[0159] In some embodiments, one or more previously visited addresses data structures 402 (e.g., previously visited addresses data structure 402-1, FIG. 4B ) are used to store previously visited addresses associated with a user of device 100. As shown in FIG. 4B , previously visited addresses data structure 402-1 contains data associated with addresses previously visited by user 1 (e.g., address ID, name, arrival address, departure address, associated items, and arrival time). In some embodiments, this data is used to generate precise departure time reminders for upcoming events that do not include location details (e.g., calendar items, events referenced in text messages, etc.) by identifying the previously visited addresses that correspond to the upcoming events. In some embodiments, data is stored in individual records 412-1, 412-2, 412-3 through 412-N. In some embodiments, header field 412-0 is used to describe each field of information associated with each corresponding record. Header 412-0, in some embodiments, contains a summary of each field of information stored in a table (e.g., each field associated with each record). As shown in FIG. 4B, header 412-0 indicates that each record 412-1, 412-2, 412-3 to 412-N stores the following information and data structures, or a subset or superset thereof: • The value of the "Address ID" field that uniquely identifies each record associated with a particular previously visited address (e.g., "1" is the value stored in the Address ID field of record 412-1); ● a value in the "Name" field that corresponds to a text description of a particular previously visited address (e.g., "dentist's office" is the value stored in the Name field of record 412-1). In some embodiments or situations, the value of the Name field is determined automatically and without human intervention based on an identifier associated with the record (e.g., record 412-1 is associated with calendar item 3, and calendar item 3 (record 312-3 in calendar item data structure 302-1) contains the identifier "dentist," so the device uses the same identifier when generating the value of the Name field of record 412-1). In some embodiments, the value in the Name field is a term related to the identifier (if the identifier is "dentist," related terms include, for example, tooth (singular), teeth (plural), teeth cleaning, dental hygienist, orthodontist, periodontist, etc.); ● a value in the “arrival address” field that contains information identifying an address (e.g., street address, GPS coordinates, etc.) corresponding to the geographic destination the user is reaching (e.g., if the user has a calendar entry for a dental clinic but does not have any location data identifying the dentist's address, upon arriving at the particular address at the time identified in the calendar entry, update the record in the previously visited addresses data structure 402-1 to store the particular address as the arrival address); ● A value in the optional "Departure Address" field containing information identifying an address (e.g., street address, GPS coordinates, etc.) corresponding to the user's geographic location at the time they departed to reach a particular arrival address (e.g., if a user has a calendar entry for a dentist appointment and departs from a particular address at a time indicating they are heading to the dentist appointment, upon arriving at the appointment at the time identified in the calendar entry, the record in data structure 402-1 for previously visited addresses will be updated to store the particular address as the departure address); ● A value in a "Related Items" field containing information identifying one or more related items (e.g., a content item containing an identifier (e.g., "dentist") associated with the respective record), such as a related message (e.g., email) containing an identifier ("I'm on my way to the dentist now"), a related calendar item (e.g., a "Calendar Item" with a title field value of "Dentist Checkup" as shown for record 312-3 in Figure 3B), etc.); and • A value for the optional "Arrival Time" field that contains information identifying the time the user will arrive at the geographic location corresponding to the arrival address.

[0160] In some embodiments, previously used addresses data structure 402-1 includes fields, in addition to those described above, such as a "departure time" field containing information identifying when the user departed for the arrival address, and / or a "route used" field containing information identifying the route the user traveled between the departure address and the arrival address. In some embodiments, these additional fields are used to help the device predict patterns associated with the user (e.g., to identify and predict the user's most frequently used route or most common departure time).

[0161] As shown in FIG. 4B, previously visited addresses data structure 402-1 includes records 412-1 through 412-N. As an example of information stored in an exemplary record in previously visited addresses data structure 402-1, record 412-1 stores a value of "1" in the Address ID field, a value of "Dentist" in the Title field, a value of "123N.12345, State, City, Dentist Street" in the Arrival Address field, a value of "88W.12345, State, City, Street 2" in the Departure Address field, a value of "Calendar Item 3, Message 23" in the Related Items field, and a value of "5 / 12 / 14, 11:15 AM" in the Arrival Time field. In some embodiments, records in previously visited addresses data structure 402-1 are generated at predetermined time intervals (e.g., hourly, four hourly, daily, or when the device is idle).

[0162] In some embodiments, previously visited addresses data structure 402 is pre-populated during a background process running on device 100 (as described below with respect to operations 620 and 622 of FIG. 6).

[0163] In some embodiments, previously visited addresses 402 also store information regarding privacy settings associated with a user of device 100. For example, a user of device 100 can configure privacy settings associated with previously visited address storage. In some embodiments, a user can configure data collection settings for all information contained within each record in previously visited addresses data structure 402 (e.g., name, arrival address, departure address, associated items, arrival time, etc.). For example, a user can configure privacy settings for a first application such that device 100 (or a component thereof, such as map module 154) collects information regarding associated items, arrival address, and arrival time without collecting the departure address. As another example, for a second application (separate from the first application described above), a user can configure privacy settings such that device 100 (or a component thereof, such as map module 154) does not collect any information regarding previously visited addresses. In this way, the user can control the collection of previously visited addresses on device 100 and can select appropriate privacy settings for each application available on device 100 (e.g., each of applications 136, FIG. 1A ) based on personal preferences regarding the collection of previously visited addresses.

[0164] Although shown as particular implementations of data structures (e.g., tables), in some embodiments, the data structures of FIGS. 4A-4B are implemented as XML files, tables in a relational database, text files, and / or any other suitable format for storing data.

[0165] FIG. 5 is a block diagram illustrating an exemplary departure time reminder generation system according to some embodiments. As shown in FIG. 5, departure time reminder generation system 500 includes portable multifunction device 100 and further includes one or more servers 502. Portable multifunction device 100 communicates with one or more servers 502 over one or more networks. One or more networks (e.g., network(s) 520) communicatively connect each component of departure time reminder generation system 500 to other components of departure time reminder generation system 500. In some embodiments, one or more networks 520 include a public communication network, a private communication network, or a combination of both public and private communication networks. For example, one or more networks 520 can be any network (or combination of networks), such as the Internet, another wide area network (WAN), a local area network (LAN), a virtual private network (VPN), a metropolitan area network (MAN), a peer-to-peer network, and / or an ad hoc connection.

[0166] In some embodiments, one or more previously visited address data structures 402 are stored on portable multifunction device 100, and one or more other previously visited address data structures 402 are stored on one or more servers 502. In some embodiments, portable multifunction device 100 stores previously visited address data structure 402, while in other embodiments, one or more servers 502 store previously visited address data structure 402. Similarly, in some embodiments, one or more calendar item data structures 302 are stored on portable multifunction device 100, and one or more other calendar item data structures 302 are stored on one or more servers 502. In some embodiments, portable multifunction device 100 stores calendar item data structure 302, while in other embodiments, one or more servers 502 store calendar item data structure 302.

[0167] In embodiments in which the table of one or more previously visited addresses 402 or the data structure 302 of one or more calendar items is stored on one or more servers 502, some of the functions performed by destination determination module 163 (and its components, such as destination prediction module 163-1, route determination module 163-2, and departure reminder module 163-3) are performed on one or more servers 502. In these embodiments, information is exchanged between one or more servers 502 and device 100 via network 520. For example, if one or more servers 502 store a data structure 402 of previously visited addresses of a first user, in some embodiments, device 100 transmits data associated with the first user (e.g., location data collected by GPS module 135; FIG. 1A ) to one or more servers 502. In some embodiments, one or more servers 502 then mine the received data to predict destinations for the calendar items (as discussed above with respect to FIGS. 4A-4B ) and generate departure time reminders for the calendar items. The one or more servers 502 also transmit the generated time-to-leave reminders to the device 100 (or alternatively, transmit information associated with the generated reminders for presentation at the device). In this manner, the calculations regarding when to leave can be handled by the one or more servers 502, and only occasional GPS pings from the device 100 are required to maintain the accuracy of the calculations (thus, the time-to-leave reminder generation system 500 can extend the battery life of the device 100). In some embodiments, the data transmitted to the one or more servers 502 is limited in scope, and thus includes only information related to addresses visited by the first user (as described above, the user also configures privacy settings covering the collection of this data, and these privacy settings, in some embodiments, allow the user to control, limit, or eliminate the exchange of data with the one or more servers 502).

[0168] Figure 6 is a flowchart illustrating a method 600 for generating and providing intelligent time-to-leave reminders according to some embodiments. Figures 3A-3B, 4A-4B, 5, and 7A-7F are used to illustrate the method and / or process of Figure 6. Although some of the examples below are described with reference to input on a touchscreen (combining the touch-sensitive surface and display), in some embodiments, the device detects input on touch-sensitive surface 195 that is separate from display 194, as shown in Figure 1D.

[0169] In some embodiments, method 600 is performed by an electronic device (e.g., portable multifunction device 100, FIG. 1A ) and / or one or more components of the electronic device (e.g., I / O subsystem 106, operating system 126, etc.). In some embodiments, method 600 is governed by instructions stored on a non-transitory computer-readable storage medium and executed by one or more processors of the device, such as one or more processors 122 of device 100 ( FIG. 1A ). For ease of explanation, the following describes method 600 as being performed by device 100. 1A , the operations of method 600 are performed, at least in part, by or use a destination determination module (e.g., destination determination module 163), a previously visited address (e.g., previously visited addresses 402), a calendar item data structure (e.g., calendar item data structure 302), a destination prediction module (e.g., destination prediction module 163-1), a route determination module (e.g., route determination module 163-2), a departure reminder module (e.g., departure reminder module 163-3), a graphics module (e.g., graphics module 132), and a touch-sensitive display (e.g., touch-sensitive display system 112). Some operations of method 600 are optionally combined, and / or the order of some operations is optionally changed.

[0170] As described below, method 600 (and an associated interface) provides an intuitive way to generate and provide intelligent time-to-leave reminders on an electronic device with a touch-sensitive display. Method 600 streamlines the process for generating time-to-leave reminders by allowing a user to quickly create calendar items with minimal text input and then automatically, and without human intervention, determine the geographic destination corresponding to the calendar item based only on the minimal amount of text input. Thus, a user can continue to quickly create calendar items on the electronic device, and by utilizing method 600, the electronic device can seamlessly generate intelligent time-to-leave reminders for the calendar items. In this way, method 600 helps ensure that a user arrives at an event in a timely manner. Thus, method 600 reduces the cognitive burden and the time a user must spend creating calendar items, thereby creating a more efficient human-machine interface. For battery-operated electronic devices, generating and providing intelligent time-to-leave reminders faster and more efficiently (e.g., by automatically performing tasks that traditionally require extensive user interaction, such as automatically identifying previously visited addresses as destinations for calendar entries created without specific location details) not only saves power but also increases the time between battery charges.

[0171] In some embodiments, the device identifies (620) a next event that has a start time and an unknown location. For example, the device receives a text message that reads, "Remember my appointment with the dentist today at 2:30 PM." The content of the text message includes the next event that the device can identify: a next event that has a start time of 2:30 PM today and an unknown location (i.e., in the context of this one text message, the content of this message is unknown because it does not include the location where the dental clinic is located). After identifying the next event, in some embodiments, the device monitors (e.g., using a process running in the background on device 100) the device's current location (e.g., using GPS module 135), and when the device is moving (e.g., as indicated by accelerometer 168 and / or GPS module 135), the device checks whether the current location is near any dental clinic. Upon determining that the device is no longer moving and has arrived at or near the dental clinic (e.g., movement has stopped) (e.g., by comparing the device's current location with information about the dental clinic's location determined by map module 154), the device associates 622 the next event with the geographic location. In other embodiments, at the appointment or event time, GPS module 135 determines the device's location, and the device associates 622 the next event with that location. In some embodiments, associating the next event with the geographic location includes adding a record to data structure 402 of previously visited addresses (e.g., record 412-1 indicates that it is associated with message 23).

[0172] In some embodiments, the device continuously monitors for upcoming events (e.g., as determined by destination determination module 163) based on content associated with one or more items on the device (e.g., text messages, email messages, voice messages, calendar entries, notes, and any other items containing information about upcoming events). By continuously monitoring for upcoming events and associating the upcoming events with corresponding geographic locations, the device can pre-build a comprehensive database (e.g., previously visited addresses data structure 402-1, FIG. 4B) of previously visited addresses associated with particular identifiers (e.g., dentists), and the device uses that comprehensive database to generate intelligent time-to-leave reminders (e.g., calendar entries) for events that may not yet contain any information about the event's location.

[0173] In some embodiments, the device automatically and without human intervention identifies (602) a calendar item that includes the first identifier. For example, the calendar item is identified based on text in the title of the calendar item that generally describes a location (e.g., the title includes the first identifier), such as a calendar item with the title "Go to the Dentist" (e.g., the calendar item associated with record 312-1 includes the first identifier "Dentist"; FIG. 3B ). In some embodiments, the first identifier corresponds to an unknown geographic location (e.g., unknown to the calendar item, as indicated by a NULL value stored in the location field of the calendar item's data structure 302-1). In some embodiments, the geographic location may be known to the device as a previously visited address (e.g., a geographic location discussed above with respect to operations 620-622) even if the calendar item is not (initially) aware of the previously visited address. In some embodiments, the device determines the unknown location by searching for previously visited addresses using the first identifier (as described below) and identifying the previously visited address that corresponds to the first identifier.

[0174] In some embodiments, the device automatically and without human intervention retrieves (604) a previously visited address (e.g., a street address and / or GPS coordinates corresponding to the street address) associated with the first identifier (e.g., by performing a lookup in the previously visited addresses 402 data structure using the identifier (e.g., dentist or related terms such as tooth(s), tooth(s), periodontist, orthodontist, etc.). For example, the association between the previously visited address and the first identifier may be due to the first identifier previously appearing in an associated item (e.g., another calendar item, a particular text message, a conversation including a particular text message, or an email message). One exemplary associated item is the text message "Remember my dental checkup at 3 PM." Continuing with this example, the user then leaves the first address and subsequently arrives at the second address (e.g., the user then arrives at the dentist's address at 2:55 PM, and a new record is created in previously visited addresses data structure 402 for identifier "dentist" based on the identifier from the text message, as illustrated for record 412-1 in previously visited addresses data structure 402, FIG. 4B). Additionally, the new record in this example includes an association with a related item (e.g., the value of the related item field of record 412-1 includes information identifying the related item, such as "Message 23").

[0175] In some embodiments, the previously visited addresses are retrieved (e.g., by destination determination module 163) from a previously visited addresses database associated with the device user (e.g., from each previously visited address data structure 402 associated with the user, such as previously visited addresses data structure 402-1 corresponding to User 1; FIG. 4B ). In some embodiments, each previously visited address in the previously visited addresses database corresponds to an address previously visited by a user of the electronic device (e.g., each record contained in data structure 402-1 corresponds to an address visited by User 1). In some embodiments, retrieving the previously visited addresses includes performing a lookup in the previously visited addresses database using a first identifier (e.g., submitting a query to previously visited addresses data structure 402-1 for all records with a value “dentist” in the name field). Alternatively, in some embodiments, the lookup is performed using a second identifier related to the first identifier (e.g., a category that includes the first identifier, such as “healthcare professional”). In some of these embodiments, the second identifier is used to perform a lookup when a database query using the first identifier returns an empty or null record set.

[0176] In some embodiments, the device receives confirmation from the user that the previously visited address corresponds to the calendar item (606). As shown in FIG. 7A , the device presents the user with a user interface object that allows the user to confirm that the previously visited address corresponds to the calendar item. For example, the presented user interface object is displayed within upper notification portion 710 (or alternatively, lower notification portion 712) and includes an optional icon 750, a confirmation dialog 758 with selectable affordances for confirming or rejecting the correspondence between the previously visited address and the calendar item, and a suggested reason 714 that provides the user with an indication as to why the user interface object was presented (e.g., based on the identifier “dentist” appearing in the title of the calendar item and the user having previously visited the dentist's address). In some embodiments, icon 750 corresponds to an icon associated with a calendar application (e.g., calendar module 148, FIG. 1A ), and in response to detecting selection of icon 750, the device displays the calendar item within the calendar application. In some embodiments, confirmation dialog 758 includes a text statement requesting confirmation, such as "Confirm 123N. Dentist as the address for your next "Dental Checkup" event at 12 PM?" In response to detecting selection of the "Yes" button displayed within confirmation dialog 758, the device stops displaying confirmation dialog 758 and updates the calendar item to include an association with the previously visited address (e.g., updates record 312-1, FIG. 3B to have a value of "Address 1" in the Location field instead of NULL).

[0177] In response to detecting selection of a "No" button displayed within confirmation dialog 758, the device ceases displaying confirmation dialog 758 and cancels updating the calendar item (e.g., does not update the value of the location field of record 312-1, FIG. 3B ). Alternatively, in some embodiments, in response to detecting selection of the "No" button, the device returns to retrieval operation 604 to determine whether it can identify a different previously visited address for the calendar item. In some embodiments, in response to detecting selection of suggestion reason affordance 714, the device displays a user interface that allows the user to configure privacy settings associated with the collection of previously visited addresses (discussed above with respect to FIGS. 4A-4B ). In some embodiments, the user interface object also includes an affordance (e.g., an "x" or "close" affordance) that allows the user to dismiss the user interface object (similar to dismiss affordance 713, as discussed with reference to FIG. 7C ).

[0178] In some embodiments, as shown in FIG. 7A , the device receives confirmation from a user that a departure time should be determined for a calendar item (e.g., before retrieving previously visited addresses and / or before determining a departure time). As shown in FIG. 7A , the device presents a user interface object that allows the user to confirm that a departure time should be automatically determined. For example, the presented user interface object is displayed within lower notification portion 712 (or alternatively, upper notification portion 710) and includes an optional icon 750, a confirmation dialog 772 with selectable affordances for confirming or rejecting the generation of a departure time for the calendar item, and a suggested reason 714 that provides the user with an indication as to why the user interface object was presented (e.g., based on the calendar item being generated without any location information, for example, by indicating the presence of a NULL value in the location field of a record in calendar item data structure 302, as illustrated for record 312-1 in FIG. 3B ). In some embodiments, icon 750 corresponds to an icon associated with a calendar application (e.g., calendar module 148, FIG. 1A ), and in response to detecting selection of icon 750, the device displays the calendar item within the calendar application. In some embodiments, the confirmation dialog 772 includes a text statement requesting confirmation, such as "Do you want an automatic departure reminder for your next 'Dental Checkup' event?" In response to detecting selection of a "Yes" button displayed within the confirmation dialog 772, the device ceases displaying the confirmation dialog 772 and proceeds with the retrieve operation 604 discussed above. In response to detecting selection of a "No" button displayed within the confirmation dialog 772, the device ceases displaying the confirmation dialog 772 and, optionally, flags the record corresponding to the calendar item (e.g., record 312-1, FIG. 3B) as not requiring a departure time (e.g., updating the value of the location field to be dropped instead of NULL).In some embodiments, in response to detecting selection of suggestion reason affordance 714, the device displays a user interface that allows the user to configure privacy settings associated with a set of previously visited addresses (discussed above with respect to FIGS. 4A-4B). In some embodiments, the user interface object also includes an affordance (e.g., an "x" or "close" affordance) that allows the user to dismiss the user interface object (similar to dismiss affordance 713, as discussed with reference to FIG. 7C).

[0179] In some embodiments, the device automatically and without human intervention determines 608 a departure time for the calendar item based on a previously visited address (e.g., based on a route from the device's current location to the previously visited address). In some embodiments, determining the departure time includes (i) determining a current address corresponding to the electronic device (e.g., the device's current GPS coordinates or a corresponding address), (ii) determining a route from the current address to the previously visited address, and (iii) determining the departure time based on an amount of time for the user to complete the route to arrive at the previously visited address within a predetermined amount of time (e.g., 5 minutes, 10 minutes, 15 minutes, etc.) from the start time associated with the calendar item (e.g., the start time is retrieved from the calendar item data structure 302 based on a value stored in a date and time field).

[0180] In some embodiments, the departure time is initially determined at a first point in time based on a default departure address associated with the user (e.g., the user's home address, work address, or some other most frequently used address). In some embodiments, the first point in time is the time when a previously visited address is retrieved, while in other embodiments, the first point in time is determined based on the start time of the calendar item (e.g., the initial departure time is determined when the calendar item's start time is scheduled to start in two hours). In some embodiments, the device subsequently (at a second point in time) checks whether the initial departure time needs to be recalculated / redetermined (e.g., because the user has traveled a threshold distance away from the default departure address or because the calendar item's start time is scheduled to start in 30 minutes). Following a determination that the user has traveled a threshold distance away from the default departure address or the calendar item's start time is within a predetermined amount of time, the device determines a new departure time for the calendar item based on the device's current location (i.e., the device's current location is the current departure address, not the default departure address).

[0181] In some embodiments, the route is selected from multiple available routes from the current address to a previously visited address according to route selection preferences associated with the device user. Exemplary route selection preferences include road type preferences (e.g., avoid highways), timing preferences (e.g., arrive at an address within 15 minutes of the calendar item's start time), and transportation preferences (e.g., prefer walking if the previously visited address is within 3 miles of the current address and / or the weather is good). In some embodiments, the current address is stored in a starting address field of the previously visited addresses data structure 402. In some embodiments, determining operations (i)-(iii) are performed at a predetermined time interval relative to the calendar item's start time (e.g., one day before the start time). In some embodiments, determining operations (i)-(iii) are performed at a first time and then repeated at a later time (e.g., a second time closer to the calendar item's start time) to confirm the route is still an optimal route based on current traffic conditions.

[0182] In some embodiments, the device associates (610) the determined departure time with the calendar item (e.g., updates the record in calendar item data structure 302 to include an association with the determined departure time, as shown for record 312-3 of calendar item data structure 302-1, where the departure time reminder field contains the value "5 / 12 / 14, 11:25 AM," which is the determined departure time for the calendar item corresponding to record 312-3). In some embodiments, associating the determined departure time with the calendar item includes generating (612) a reminder (e.g., a visual reminder, a tactile reminder (vibration), and / or an audio reminder) and updating the calendar item to include the generated reminder. In some embodiments, the generated reminder is separate from a default reminder associated with the calendar item (e.g., a value in the alert field of calendar item data structure 302-1, FIG. 3B ).

[0183] In some embodiments, the device provides (614) a generated reminder to the user on the electronic device of the determined departure time for the calendar item (e.g., by displaying a visual reminder on a touch-sensitive display such as user interface object 702 of FIG. 7B , by causing the device to output a tactile reminder, and / or by causing the device to generate an audio output corresponding to the reminder). In some embodiments, providing the reminder includes providing the reminder (e.g., by displaying user interface object 702 of FIG. 7B on lock screen 701) pursuant to a determination that the departure time is within a predetermined amount of time from the current time. For example, the predetermined amount of time may be a default amount of time, such as 5 minutes, 10 minutes, 15 minutes, or the like, or may be an amount of time calculated based on current predictions regarding changes in traffic and other factors that affect the amount of time required to reach a previously visited address corresponding to the calendar item (e.g., the time it takes to walk from the office building to where the user parked their car). In some embodiments, the device monitors device motion data (e.g., data from accelerometer 168 and / or GPS module 135) and uses the motion data to determine an estimated amount of time it will take for the user to reach their car (e.g., if the device is not moving (at a first time), is moving at a pedestrian speed (at a second time), and is moving at a car speed (at a third time), the device can use the difference between the third time and the first time as an estimate of the amount of time it will take for the user to reach their car). In some embodiments, the device uses the estimated amount of time (or an average of many estimates) to determine when to provide the generated reminder to the user. In other embodiments, the device adds the estimated amount of time (or an average of many estimates) to add a buffer to the departure time, and then simply provides the generated reminder at the departure time.

[0184] 7B , in some embodiments, the provided reminder is displayed in user interface object 702, or in alternative embodiments, in user interface object 722 (as discussed below) on the device's lock screen 701. In some embodiments, user interface object 702 is displayed in a central region of lock screen 701 and includes an optional first icon 750, an optional second icon 767, and reminder 742. In some embodiments, first icon 750 corresponds to an icon associated with a calendar application (e.g., calendar module 148, FIG. 1A ), and in response to detecting selection of first icon 750, the device displays a calendar item in the calendar application (e.g., after unlocking the device). In some embodiments, second icon 767 corresponds to an icon associated with a map application (e.g., map module 154, FIG. 1A ), and in response to detecting selection of second icon 767, the device displays a map interface including turn instructions for reaching a previously visited address (e.g., after unlocking the device).

[0185] In some embodiments, the reminder (or alert) 742 includes a text description including, for example, a departure time (e.g., 11:15 AM) and a description of the calendar item (e.g., a title such as "Dental Checkup"). In some embodiments, the reminder 742 allows the user to use gestures to display affordances for performing actions associated with the reminder (e.g., initiating a turn signal, dismissing the reminder, snoozing the reminder, etc.). 7B-7C , in response to detecting a swipe gesture (e.g., gesture 782, FIG. 7B ) moving in a first direction (e.g., leftward) over reminder 742, the textual description of the reminder moves in the first direction so that only a portion of the textual description is now visible on touch screen 112, and reminder 742 is updated (e.g., by graphics module 132) to display one or more affordances for performing an action (e.g., one or more of start pointing affordance 746, snooze affordance 744, and dismiss affordance 713, FIG. 7C ). In some embodiments, the one or more affordances include snooze affordance 744 and start pointing affordance 746, while in other embodiments, the one or more affordances include start pointing affordance 746 and dismiss affordance 713. In other embodiments, the one or more affordances include a pointing start affordance 746, a snooze affordance 744, or a dismiss affordance 713.

[0186] 7C , in some embodiments, dismiss affordance 713, when selected, causes the device to stop displaying reminder 742. In some embodiments, initiating direction affordance 746 (also referred to herein as turn-direction affordance 746), when selected, causes the device to display a map interface (e.g., map module 154) with previously visited addresses pre-populated as destinations and turn-direction instructions to reach the destination already initiated. In some embodiments, before the map interface is displayed, the user performs an action to unlock device 100 (e.g., enter a series of characters to unlock the device, provide a verbal password, perform fingerprint authentication, etc.). In other embodiments, initiating direction affordance 746 includes text that indicates to the user that selecting initiating direction affordance 746 will cause the device to begin route selection and providing turn-direction instructions (e.g., providing audio output corresponding to the instructions) without exiting lock screen 701.

[0187] In some embodiments, snooze affordance 744, when selected, causes the device to cease displaying UI object 702 and redisplay UI object 702 after a user-selected or preconfigured time period or after a default time period. In some embodiments, snooze affordance 744 allows a user to select a time period for snoozing the reminder (e.g., snooze affordance 744 includes selectable options such as 15 minutes, 30 minutes, 1 hour, until time is free, etc.). For example, a user selects an option to snooze UI object 702 for 5 minutes, and after 5 minutes, the device redisplays UI object 702. As another example, a user selects to snooze UI object 702 until it becomes available (e.g., "snooze until time is free"), and in some embodiments, device 100 searches calendar module 148 to identify the next open slot in the user's schedule and redisplays UI object 702 during the identified next open slot.

[0188] In some embodiments, the user can also use an additional gesture (e.g., gesture 783 in FIG. 7B ) to quickly access turn instructions. In some embodiments, the additional gesture is a swipe gesture moving in a second direction (e.g., rightward) over the reminder 742 opposite the first direction. In response to detecting the second gesture moving in the second direction, the device displays a map interface (e.g., map module 154) with previously visited addresses pre-populated as destinations and turn instructions already initiated to reach the destinations. In some embodiments, before displaying the map interface, the user performs an action to unlock device 100 (e.g., enter a series of characters to unlock the device, provide a verbal password, perform fingerprint authentication, etc.).

[0189] 7B , alternative embodiments of providing the generated reminder are illustrated with respect to user interface object 722. In some of the alternative embodiments, the provided reminder is displayed in user interface object 722 on the device's lock screen 701. In some of the alternative embodiments, user interface object 722 is displayed substantially in a central region of lock screen 701 and includes first icon 750(a), second icon 767(a), reminder 742(a), snooze option 744(a), and turn-by-turn affordance 746(a). In some of the alternative embodiments, first icon 750(a) corresponds to an icon associated with a calendar application (e.g., calendar module 148, FIG. 1A ), and in response to detecting selection of first icon 750(a), the device displays a calendar item within the calendar application (e.g., after unlocking the device). In some alternative embodiments, the second icon 767(a) corresponds to an icon associated with a map application (e.g., map module 154, FIG. 1A ), and in response to detecting selection of the second icon 767(a), the device displays (e.g., after unlocking the device) a map interface including turn instructions for reaching a previously visited address. In some embodiments, the reminder 742(a) includes a text description such as, "Time to leave for dental appointment!" In response to detecting selection of the reminder 742(a), the device ceases displaying the reminder 742(a) and displays the calendar item in a calendar application (e.g., after unlocking the device).

[0190] In some alternative embodiments, snooze option 744(a) includes one or more selectable options for ceasing display of UI object 722 and redisplaying UI object 722 after a user-selected or pre-configured time period. For example, a user may select an option to snooze UI object 722 for two hours, after which the device redisplays UI object 722. As another example, a user may select to snooze UI object 722 until it is available (e.g., "snooze until available"), and in some alternative embodiments, device 100 may search calendar module 148 to identify the next open slot in the user's schedule and redisplay UI object 722 during the identified next open slot.

[0191] In some alternative embodiments, the turn-direction affordance 746(a) includes text that indicates to the user that selecting the turn-direction affordance 746(a) will cause the device to begin route selection and providing turn-direction instructions (e.g., provide audio output corresponding to instructions (e.g., instructions based on the selected route) without exiting the lock screen 701).

[0192] Some embodiments combine aspects of both user interface object 702 and user interface object 722. For example, turn-by-turn affordance 746 or 746(a) is displayed below a reminder (e.g., reminder 742 or reminder 742(a)), and snooze option 744 and dismiss 713 are available through a first gesture (e.g., in response to detecting the first gesture).

[0193] In some embodiments, in response to (or after) providing the reminder, the device determines (616) whether the user has arrived at a previously visited address (e.g., after determining that the user has stopped moving (e.g., based on data provided by accelerometer 168, FIG. 1A ), the device compares the device's current GPS coordinates with GPS coordinates associated with the previously visited address). Following a determination that the user has arrived at the previously visited address, the device updates location information associated with the previously visited address. In some embodiments, updating the location information includes refining the GPS coordinates associated with the previously visited address (e.g., if the device determines that upon arrival at (or within a first predetermined distance of) the arrival address of the previously visited address associated with record 412-1, the device determines that the signal strength corresponding to GPS 135 is greater than the signal strength when the arrival address was previously established, the device replaces the arrival address with the device's current GPS coordinates). In some embodiments, pursuant to a determination that the current GPS coordinate is more than a second predetermined distance from the previously visited address, the device adds a new record to the previously visited addresses data structure 402-1 that includes the arrival address (or corresponding physical street address) value that corresponds to the current GPS coordinate, e.g., the new record corresponds to a new parking location near the previously visited address.

[0194] In some embodiments, the device requests feedback from the user before refining or updating the arrival address (as discussed above). In some embodiments, as shown in FIG. 7D , the device presents the user with a user interface object that allows the user to decide whether to update or not update the arrival address. For example, the presented user interface object is displayed within upper notification portion 710 (or alternatively, lower notification portion 712) and includes an optional icon 767, a confirmation dialog 752 with selectable affordances for confirming or rejecting the arrival address update, and a suggested reason 714 that provides the user with an indication as to why the user interface object was presented. In some embodiments, optional icon 767 corresponds to an icon associated with a map application (e.g., map module 154, FIG. 1A ), and in response to detecting selection of icon 767, the device displays a map interface that includes identifiers of both the currently stored arrival address and the potentially updated arrival address (i.e., the device's current location). In some embodiments, confirmation dialog 752 includes a confirmation requesting a textual description such as, "Do you want to update your stored dentist address based on your current location?" In response to detecting selection of a "No" button displayed within the confirmation dialog 752, the device discontinues displaying the confirmation dialog 752 and updates the records associated with the previously visited addresses to include the updated arrival address field value. In response to detecting selection of a "No" button displayed within the confirmation dialog 752, the device discontinues displaying the confirmation dialog 752 and cancels updating the records associated with the previously visited addresses. In some embodiments, in response to detecting selection of the suggestion reason affordance 714, the device displays a user interface that enables the user to configure privacy settings associated with the location data and collection of previously visited addresses (discussed above with respect to FIGS. 4A-4B ).In some embodiments, the user interface object also includes an affordance that allows the user to dismiss the user interface object (eg, an "x" or "close" affordance).

[0195] In some embodiments, the device scans (618) multiple new calendar items during a calendar item creation process (e.g., the calendar item creation process illustrated in FIGS. 7E-7F ). Pursuant to determining that a first identifier is included in each of the multiple scanned new calendar items (e.g., field 770 includes the identifier “dentist”), the device presents a previously visited address to the device user for inclusion in each new calendar item (e.g., the device presents user interface object 772 comprising the text “123N. 12345, State, City, Dentist Street (tap to confirm)”). In response to detecting selection of user interface object 772, the device associates the new calendar item with the previously visited address.

[0196] It should be understood that the particular order described for the operations in Figure 6 is merely exemplary, and that the described order is not intended to represent the only order in which the operations may be performed. Those skilled in the art will recognize various ways to reorder the operations described herein.

[0197] According to some embodiments, FIG. 8 illustrates a functional block diagram of electronic device 800 configured in accordance with the principles of the various described embodiments. The functional blocks of this device are optionally implemented by hardware, software, firmware, or a combination thereof to carry out the principles of the various described embodiments. Those skilled in the art will understand that the functional blocks described in FIG. 8 are optionally combined or separated into sub-blocks to implement the principles of the various described embodiments. Thus, the description herein optionally supports any possible combination or division or further definition of the functional blocks described herein. For ease of discussion, electronic device 800 is implemented as portable multifunction device 100 ( FIG. 1A ).

[0198] As shown in FIG. 8, electronic device 800 includes a display unit 801 (e.g., touch-sensitive display system 112, FIG. 1A , also referred to as a touch screen, touch-sensitive display, and touch screen display) configured to display information, a touch-sensitive surface unit 803 (e.g., display controller 156 and touch-sensitive display system 112, FIG. 1A ) configured to receive touches, gestures, and other user inputs on the touch-sensitive display, and a processing unit 805 coupled to display unit 801 and touch-sensitive surface unit 803. In some embodiments, the processing units include an identification unit (e.g., identification unit 807), a retrieval unit (e.g., retrieval unit 809), a determination unit (e.g., determination unit 811), an association unit (e.g., association unit 813), a providing unit (e.g., providing unit 815), a selection unit (e.g., selection unit 817), a generation unit (e.g., generation unit 819), a receiving unit (e.g., receiving unit 821), an execution unit (e.g., execution unit 823), a scanning unit (e.g., scanning unit 825), a presentation unit (e.g., presentation unit 827), and an update unit (e.g., update unit 829). The processing unit is configured to automatically and without human intervention identify a calendar item including a first identifier corresponding to the unknown geographic location (e.g., using the identification unit 807), automatically and without human intervention retrieve a previously visited address associated with the first identifier (e.g., using the retrieval unit 809), automatically and without human intervention determine a departure time for the calendar item based on the previously visited address (e.g., using the determination unit 811), and automatically and without human intervention associate the determined departure time with the calendar item (e.g., using the association unit 813).

[0199] In some embodiments of the electronic device 800, the processing unit is further configured to provide to the user on the electronic device (e.g., using the providing unit 815 and the display unit 801 (or using the providing unit 815 in conjunction with the display unit 801) a reminder of the determined departure time of the calendar item. In some embodiments of the electronic device 800, the calendar item is associated with a default reminder that is separate from the reminder of the determined departure time of the calendar item provided to the user. In some embodiments of the electronic device 800, providing the reminder includes providing the reminder (e.g., using the providing unit 815 and the display unit 801 (or using the providing unit 815 in conjunction with the display unit 801)) in accordance with a determination (e.g., by the determining unit 811) that the departure time is within a predetermined amount of time from the current time). In some embodiments of the electronic device 800, associating the determined departure time with the calendar item includes generating a reminder (e.g., using the generating unit 819) and updating the calendar item to include the generated reminder.

[0200] In some embodiments of electronic device 800, determining the departure time includes (i) determining (e.g., with determining unit 811) a current address corresponding to the electronic device, (ii) determining (e.g., with determining unit 811) a route from the current address to a previously visited address, and (iii) determining (e.g., with determining unit 811) the departure time based on an amount of time to complete the route such that the user reaches the previously visited address within a predetermined amount of time from a start time associated with the calendar item. In some embodiments of electronic device 800, the route is selected from multiple available routes from the current address to the previously visited address according to route selection preferences associated with the user of the electronic device (e.g., with selecting unit 817).

[0201] In some embodiments of electronic device 800, the processing unit is further configured to receive a confirmation from a user of the electronic device (e.g., using receiving unit 821) on the touch-sensitive display that the previously visited address corresponds to the calendar entry before determining the departure time. After receiving the confirmation, the processing unit is configured to determine the departure time (e.g., using determining unit 811).

[0202] In some embodiments of electronic device 800, retrieving the previously visited addresses includes retrieving the previously visited addresses from a database of previously visited addresses associated with the user of the electronic device (e.g., with retrieval unit 809). In some embodiments of electronic device 800, each previously visited address in the database of previously visited addresses corresponds to an address previously visited by the user of the electronic device. In some embodiments of electronic device 800, retrieving the previously visited addresses includes performing a lookup in the database of previously visited addresses using the first identifier (e.g., with execution unit 823).

[0203] In some embodiments of the electronic device 800, the processing unit is further configured to scan a plurality of new calendar items during the calendar item creation process (e.g., with the scanning unit 825). Pursuant to a determination (e.g., by the determining unit 811) that each new calendar item of the plurality of scanned new calendar items includes the first identifier, the processing unit is configured to present previously visited addresses to a user of the electronic device for inclusion in each new calendar item (e.g., with the presenting unit 827 and the display unit 801 (or with the presenting unit 827 in conjunction with the display unit 801)).

[0204] In some embodiments of electronic device 800, the processing unit is further configured to, in response to providing the reminder, determine (e.g., with the determining unit 811) whether the user has arrived at the previously visited address. Pursuant to a determination (e.g., by the determining unit 811) that the user has arrived at the previously visited address, the processing unit is configured to update (e.g., with the updating unit 829) location information associated with the previously visited address.

[0205] The operations in the information processing methods described above are optionally performed by operating one or more functional modules within an information processing device, such as a general-purpose processor (e.g., as described above in connection with FIG. 1A) or an application-specific chip.

[0206] 5 are optionally performed by components shown in FIGS. 1A-1B or 8. For example, receiving operation 606 and providing operation 614 are optionally performed by event sorter 170, event recognizer 180, and event handler 190. Event monitor 171 of event sorter 170 detects a contact on touch-sensitive display 112, and event dispatcher module 174 delivers the event information to application 136-1. A corresponding event recognizer 180 of application 136-1 compares the event information to a corresponding event definition 186 to determine whether a first contact at a first location on the touch-sensitive surface (or rotation of the device) corresponds to a predefined event or sub-event, such as selecting an object on a user interface or rotating the device from one orientation to another. When a corresponding predefined event or sub-event is detected, event recognizer 180 activates event handler 190 associated with detecting the event or sub-event. Event handler 190 optionally uses or calls data updater 176 or object updater 177 to update application internal state 192. In some embodiments, event handler 190 accesses a corresponding GUI updater 178 to update what is displayed by the application. Similarly, it will be clear to one skilled in the art how other processes may be implemented based on the components shown in Figures 1A-1B.

[0207] The foregoing description has been set forth with reference to specific embodiments for purposes of explanation. However, the exemplary discussion above is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teachings. These embodiments were chosen and described in order to best explain the principles of the invention and its practical application, and thereby enable others skilled in the art to best utilize the invention and its various embodiments with various modifications suitable for the particular uses contemplated.

Claims

1. When executed by an electronic device having a touch-sensitive display, the electronic device: automatically and without human intervention, identifying a calendar entry including a first identifier corresponding to the unknown geographic location; retrieving a previously visited address associated with said first identifier; determining a departure time for the calendar item based on the previously visited address; associating the determined departure time with the calendar entry; A non-transitory computer-readable storage medium that stores executable instructions.

2. 10. The non-transitory computer-readable storage medium of claim 1, wherein the executable instructions further cause the electronic device to provide, on the electronic device, to the user, a reminder of the determined departure time for the calendar entry.

3. The non-transitory computer-readable storage medium of claim 2 , wherein the calendar entry is associated with a default reminder that is separate from the reminder of the determined departure time of the calendar entry provided to the user.

4. 4. The non-transitory computer-readable storage medium of claim 2, wherein providing the reminder comprises providing the reminder in accordance with a determination that the departure time is within a predetermined amount of time from a current time.

5. determining the departure time, determining a current address corresponding to the electronic device; determining a route from the current address to the previously visited address; determining the departure time based on an amount of time to complete the route such that the user arrives at the previously visited address within a predetermined amount of time from a start time associated with the calendar item; 5. The non-transitory computer-readable storage medium of claim 1, comprising:

6. 6. The non-transitory computer-readable storage medium of claim 5, wherein the route is selected from a plurality of available routes from the current address to the previously visited address according to route selection preferences associated with the user of the electronic device.

7. 7. The non-transitory computer-readable storage medium of claim 2, wherein associating the determined departure time with the calendar entry includes generating the reminder and updating the calendar entry to include the generated reminder.

8. The executable instructions may further cause the electronic device to: receiving, on the touch-sensitive display, a confirmation from a user of the electronic device that the previously visited address corresponds to the calendar entry before determining the departure time; determining the departure time after receiving the confirmation; The non-transitory computer-readable storage medium according to any one of claims 1 to 7.

9. 9. The non-transitory computer-readable storage medium of claim 1, wherein retrieving the previously visited addresses comprises retrieving the previously visited addresses from a database of previously visited addresses associated with the user of the electronic device.

10. 10. The non-transitory computer-readable storage medium of claim 9, wherein each previously visited address in the database of previously visited addresses corresponds to an address previously visited by the user of the electronic device.

11. 11. The non-transitory computer-readable storage medium of claim 9, wherein retrieving the previously visited address comprises performing a lookup in a database of the previously visited addresses using the first identifier.

12. The executable instructions may further cause the electronic device to: During the calendar entry creation process, let it scan for multiple new calendar entries, pursuant to a determination that the first identifier is included in each new calendar item of the scanned plurality of new calendar items, causing the user of the electronic device to submit the previously visited address for inclusion in the each new calendar item.

12. The non-transitory computer readable storage medium of any one of claims 1 to 11, wherein the non-transitory computer readable storage medium stores a plurality of scanned new calendar entries.

13. The executable instructions may further cause the electronic device to: determining whether the user has arrived at the previously visited address in response to providing the reminder; updating location information associated with the previously visited address in accordance with a determination that the user has arrived at the previously visited address; The non-transitory computer-readable storage medium according to any one of claims 1 to 12.

14. 1. A method comprising: In an electronic device having a touch-sensitive display, automatically and without human intervention, identifying a calendar entry including a first identifier corresponding to the unknown geographic location; Retrieving a previously visited address associated with the first identifier; and determining a departure time for the calendar item based on the previously visited address; associating the determined departure time with the calendar entry; A method comprising:

15. 15. The method of claim 14, further comprising providing, on the electronic device, to the user a reminder of the determined departure time for the calendar entry.

16. The method of claim 15 , wherein the calendar entry is associated with a default reminder that is separate from the reminder for the determined departure time of the calendar entry provided to the user.

17. The method of any one of claims 15 to 16, wherein providing the reminder comprises providing the reminder in accordance with a determination that the departure time is within a predetermined amount of time from a current time.

18. Determining the departure time includes: determining a current address corresponding to the electronic device; determining a route from the current address to the previously visited address; determining the departure time based on an amount of time to complete the route such that the user arrives at the previously visited address within a predetermined amount of time from a start time associated with the calendar item; The method according to any one of claims 14 to 17, comprising:

19. 20. The method of claim 18, wherein the route is selected from a plurality of available routes from the current address to the previously visited address according to route selection preferences associated with the user of the electronic device.

20. 20. The method of any one of claims 15 to 19, wherein associating the determined departure time with the calendar entry comprises generating the reminder and updating the calendar entry to include the generated reminder.

21. receiving, on the touch-sensitive display, a confirmation from a user of the electronic device that the previously visited address corresponds to the calendar entry before determining the departure time; determining the departure time after receiving the confirmation; The method of any one of claims 14 to 20, further comprising:

22. 22. The method of any one of claims 14 to 21, wherein retrieving the previously visited addresses comprises retrieving the previously visited addresses from a database of previously visited addresses associated with the user of the electronic device.

23. 23. The method of claim 22, wherein each previously visited address in the database of previously visited addresses corresponds to an address previously visited by the user of the electronic device.

24. A method according to any one of claims 22 to 23, wherein retrieving the previously visited address comprises performing a lookup in a database of previously visited addresses using the first identifier.

25. scanning for new calendar items during the calendar item creation process; pursuant to a determination that the first identifier is included in each new calendar item of the scanned plurality of new calendar items, presenting the previously visited address to the user of the electronic device for inclusion in the each new calendar item; The method of any one of claims 14 to 24, further comprising:

26. determining whether the user has arrived at the previously visited address in response to providing the reminder; updating location information associated with the previously visited address in accordance with a determination that the user has arrived at the previously visited address; The method of any one of claims 14 to 25, further comprising:

27. 1. An electronic device comprising: a touch-sensitive display; one or more processors; a memory storing one or more programs that, when executed by the one or more processors, cause the electronic device to perform the method of any one of claims 14 to 26; An electronic device comprising:

28. 1. An electronic device comprising: a touch-sensitive display; means for carrying out the method according to any one of claims 14 to 26; An electronic device comprising:

29. A graphical user interface on an electronic device with a touch-sensitive display, comprising a user interface according to a method according to any one of claims 14 to 26.

30. 1. An electronic device comprising: a touch-sensitive display unit configured to display a user interface and to receive contact from a user; a processing unit coupled to the touch-sensitive display unit; wherein the processing unit automatically and without human intervention, identifying a calendar entry that includes a first identifier that corresponds to the unknown geographic location; automatically and without human intervention, retrieving previously visited addresses associated with said first identifier; automatically and without human intervention, determining a departure time for said calendar item based on said previously visited addresses; automatically and without human intervention, associating the determined departure time with the calendar entry; 1. An electronic device configured to:

31. The processing unit and further configured to provide, on the electronic device, a reminder to the user of the determined departure time of the calendar entry.

31. The electronic device of claim 30.

32. 32. The electronic device of claim 31, wherein the calendar entry is associated with a default reminder that is separate from the reminder for the determined departure time of the calendar entry provided to the user.

33. 33. The electronic device of any one of claims 31 to 32, wherein providing the reminder comprises providing the reminder in accordance with a determination that the departure time is within a predetermined amount of time from a current time.

34. Determining the departure time includes: (i) determining a current address corresponding to the electronic device; (ii) determining a route from the current address to the previously visited address; (iii) determining the departure time based on an amount of time to complete the route such that the user arrives at the previously visited address within a predetermined amount of time from a start time associated with the calendar item; 34. The electronic device according to any one of claims 30 to 33, comprising:

35. 35. The electronic device of claim 34, wherein the route is selected from a plurality of available routes from the current address to the previously visited address according to route selection preferences associated with the user of the electronic device.

36. 36. The electronic device of claim 31, wherein associating the determined departure time with the calendar entry comprises generating the reminder and updating the calendar entry to include the generated reminder.

37. The processing unit receiving, on the touch-sensitive display unit, a confirmation from a user of the electronic device that the previously visited address corresponds to the calendar entry before determining the departure time; determining the departure time after receiving the confirmation; 37. The electronic device according to any one of claims 30 to 36, further configured as follows:

38. 38. The electronic device of any one of claims 30 to 37, wherein retrieving the previously visited addresses comprises retrieving the previously visited addresses from a database of previously visited addresses associated with the user of the electronic device.

39. 39. The electronic device of claim 38, wherein each previously visited address in the database of previously visited addresses corresponds to an address previously visited by the user of the electronic device.

40. 40. The electronic device of claim 38, wherein retrieving the previously visited address comprises performing a lookup in a database of previously visited addresses using the first identifier.

41. The processing unit During the calendar item creation process, it scans for multiple new calendar items and pursuant to a determination that the first identifier is included in each new calendar item of the scanned plurality of new calendar items, presenting the previously visited address to the user of the electronic device for inclusion in the each new calendar item.

41. The electronic device according to any one of claims 30 to 40, further configured as follows:

42. The processing unit In response to providing the reminder, determining whether the user has arrived at the previously visited address; updating location information associated with the previously visited address in accordance with a determination that the user has arrived at the previously visited address; 42. The electronic device according to any one of claims 30 to 41, further configured as follows:

Citation Information

Patent Citations

  • Memory aid device and system

    JP2004102175A

  • Method and apparatus for facilitating position selection

    JP2013521553A