Structured proposal
The electronic device automatically proposes and updates contacts and calendar events based on message analysis, addressing the inefficiencies of manual management and enhancing user productivity.
Patent Information
- Application Number
- JP2025036607
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2015-05-20
- Filing Date
- 2025-03-07
- Publication Date
- 2025-07-01
- Estimated Expiration
- 2035-05-28
AI Technical Summary
Managing contacts and calendar events on electronic devices is cumbersome, requiring multiple manual steps that many users neglect, leading to outdated information and inefficient searches, resulting in productivity loss.
An electronic device analyzes user messages to automatically propose and update contacts and calendar events, allowing users to easily add or ignore these suggestions, maintaining information with minimal effort.
Saves user time and improves productivity by automatically updating contacts and calendar events, providing a more efficient human-machine interface.
Smart Images

Figure 2025098066000001_ABST
Abstract
Description
Cross - Reference to Related Applications
[0001] This application claims priority to U.S. Provisional Patent Application No. 62 / 005,839, filed May 30, 2014, entitled "STRUCTURED SUGGETIONS", and U.S. Patent Application No. 14 / 718,049, filed May 20, 2015, entitled "STRUCTURED SUGGETIONS". The entire contents of each of these applications are hereby incorporated by reference for all purposes. BACKGROUND OF THE INVENTION
[0002] 1. Technical Field The present disclosure generally relates to context - aware computing, and more specifically, to identifying proposed contact information and event information and providing this information to a user. 2. Background Art
[0003] Users can be more connected to friends, colleagues, and activities than ever before with modern electronic devices. However, managing contacts and calendar events on an electronic device can be cumbersome. For example, adding or updating a contact or calendar event typically requires several manual steps. As a result, many users neglect to keep their address books and calendars updated and, when a user needs to find information about a person or event, instead choose to rely on inadequate searches of stored messages and other content on the device. This can lead to a frustrating experience for the user and result in a loss of productivity. SUMMARY OF THE INVENTION
[0004] In some embodiments, a method of proposing a contact includes, in an electronic device, receiving a message, identifying, in the received message, an entity and contact information associated with the entity, determining that a contact associated with the identified entity does not exist among a plurality of contacts in a database, and generating, in response to the determination, a contact associated with the entity, the generated contact including contact information and an indication that the generated contact is the proposed contact.
[0005] In some embodiments, a method of proposing a contact includes, in an electronic device, receiving a message, identifying, in the received message, an entity and an item of contact information associated with the entity, determining that a contact associated with the identified entity exists among a plurality of contacts in a database and that the contact does not include the identified item of contact information, and updating the contact to include the item of contact information and an indication that the item of contact information is the proposed item of contact information, in response to the determination.
[0006] In some embodiments, a method of proposing a contact includes, in an electronic device including a display, receiving a message, identifying, in the received message, an entity and contact information associated with the entity, generating an indication that the identified contact information is the proposed contact information, and displaying a first user interface corresponding to a contact associated with the entity, the first user interface including a first user interface object indicating, based on the generated indication, that the identified contact information is the proposed contact information.
[0007] In some embodiments, a method of suggesting a contact includes receiving a message on an electronic device having a display, identifying an entity and contact information associated with the entity in the received message, and displaying a first user interface corresponding to the received message. The first user interface includes a first portion including the content of the message as received by the electronic device, and a second portion including a first user interface object corresponding to the identified entity, a second user interface object corresponding to the identified contact information, and a third user interface object associated with the identified contact information that, when selected, causes the electronic device to add the identified contact information to a database.
[0008] In some embodiments, a method of suggesting a calendar event includes receiving a message on an electronic device, identifying event information in the received message, and generating a calendar event associated with the identified event information. The generated calendar event includes the event information and an indication that the generated calendar event is a suggested calendar event.
[0009] In some embodiments, a method of suggesting a calendar event includes receiving a message on an electronic device having a display, identifying event information in the received message, and displaying a first user interface corresponding to the received message. The first user interface includes a first portion including the content of the message as received by the electronic device, and a second portion including a first user interface object corresponding to the identified event information and a second user interface object associated with the identified event information that, when selected, causes the electronic device to add the identified event information to a database including a plurality of calendar events.
[0010] In some embodiments, a method for proposing a plurality of contacts and / or calendar events in an electronic device with a display includes receiving a message, identifying a plurality of instances of contact or event information in the received message, and displaying a first user interface corresponding to the received message, where the first user interface includes a first portion that includes the content of the message as received by the electronic device, and a second portion that, when selected, causes the electronic device to display a second user interface that includes a list of the identified plurality of instances of contact or event information. BRIEF DESCRIPTION OF THE DRAWINGS
[0011]
Figure 1A
Figure 1B
Figure 2
Figure 3
Figure 4A
Figure 4B
Figure 5A
Figure 5B
Figure 6A
Figure 6B
Figure 6C
Figure 6D
Figure 6E
Figure 6F
Figure 6G
Figure 7A
Figure 7B
Figure 8A
Figure 8B
Figure 9A
Figure 9B
Figure 10
Figure 11A
Figure 11B
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18
Figure 19
Figure 20
Figure 21
Figure 22
Best Mode for Carrying Out the Invention
[0012] In the following disclosure and description of embodiments, reference is made to the accompanying drawings which show, by way of illustration, specific embodiments that can be implemented. It should be understood that other embodiments and examples can be implemented and changes can be made without departing from the scope of the present disclosure.
[0013] As described above, managing contacts and calendar events on an electronic device can be cumbersome for the user because adding or updating a contact or calendar event requires several manual steps that are time-consuming. For this reason, many users tend to neglect to keep their address books and calendars up to date, and when the user needs to manually search their device for specific contact or event information, it can take much more time later. This can result in a frustrating experience for the user and a loss of productivity.
[0014] The present disclosure addresses this problem by providing an electronic device that automatically proposes contacts and calendar events for a user based on the user's messages. This device can analyze the user's messages with respect to contact and event information and automatically generate or update proposed contacts and calendar events for the user based on this information. The proposed contacts and calendar events are searchable as if they were manually entered by the user, and the user can choose to add or ignore the proposed contacts and calendar events. In this way, the user's contacts and calendar events can be maintained with no or minimal effort on the user's part. This can save the user's time, improve productivity, and generate a more efficient human-machine interface. 1. Exemplary Device
[0015] In the following, FIGS. 1A, 1B, 2, and 3 provide an illustration of an exemplary device for performing techniques for proposing contact and event information. FIGS. 4A, 4B, and 6A-6G show exemplary user interfaces for proposing contact and event information. The user interfaces of these figures are used to illustrate the processes described below, including the processes of FIGS. 7A-13.
[0016] In the following description, terms such as "first", "second", etc. are used to describe various elements, but these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, without departing from the scope of the various embodiments described, a first touch can be referred to as a second touch, and similarly, a second touch can be referred to as a first touch. The first touch and the second touch are both touches, but they are not the same touch.
[0017] The terminology used in the description of the various embodiments described herein is for the purpose of describing particular embodiments only and is not intended to be limiting. When used in the description of the various embodiments described and the appended claims, the singular forms "a", "an", and "the" are intended to include the plural form as well, unless the context clearly indicates otherwise. As used herein, the term "and / or" is also to be understood to refer to and include any and all possible combinations of one or more of the associated listed items. Further, the terms "includes", "including", "comprises", and / or "comprising", when used herein, specify the presence of the described features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.
[0018] The term "if (in the case of)" can be interpreted to mean "when (at the time of)", "upon (at the time of)", "in response to determining (in response to the determination that)", or "in response to detecting (in response to detecting) depending on the context. Similarly, the phrase "if it is determined (in the case where it is determined that)" or "if [a stated condition or event] is detected (in the case where [the stated condition or event] is detected)" can be interpreted to mean "upon determining (at the time when it is determined that)", "in response to determining (in response to the determination of)", "upon detecting [the stated condition or event] (at the time of detecting [the stated condition or event])", or "in response to detecting [the stated condition or event] (in response to detecting [the stated condition or event])" depending on the context.
[0019] Embodiments of an electronic device, a user interface for such a device, and related processes for using such a device are described. In some embodiments, the device is a portable communication device such as a mobile phone that also includes other functions such as PDA functionality and / or music playback functionality. Exemplary embodiments of portable multifunctional devices include, without limitation, the iPhone (registered trademark), iPod Touch (registered trademark), and iPad (registered trademark) devices of Apple Inc. of Cupertino, California. Other portable electronic devices such as laptop or tablet computers having a touch-sensitive surface (e.g., a touch screen display and / or a touch pad) can also optionally be used. It will also be understood that in some embodiments, the device is a desktop computer having a touch-sensitive surface (e.g., a touch screen display and / or a touch pad) rather than a portable communication device.
[0020] In the following discussion, an electronic device having a display and a touch sensing surface will be described. However, it should be understood that this electronic device optionally includes one or more other physical user interface devices such as a physical keyboard, a mouse, and / or a joystick.
[0021] The device can support various applications such as one or more of a drawing application, a presentation application, a word processing application, a website creation application, a disk authoring application, a spreadsheet application, a game application, a telephone application, a video conferencing application, an e-mail application, an instant messaging application, a training support 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.
[0022] The various applications executed on this device optionally use at least one common physical user interface device such as a touch sensing surface. One or more functions of the touch sensing surface and the corresponding information displayed on the device are optionally adjusted and / or changed from one application to the next and / or within the corresponding application. In this manner, the common (such as a touch sensing surface) physical architecture of the device optionally supports various applications having a user interface that is intuitive and transparent to the user.
[0023] Attention is now directed to an embodiment of a portable device equipped with a touch-sensing display. FIG. 1A is a block diagram showing a portable multifunctional device 100 equipped with a touch-sensing display system 112 according to some embodiments. The touch-sensing display 112 may be referred to as a "touch screen" for convenience and is known as or may be referred to as a "touch-sensing display system". The device 100 includes a memory 102 (optionally including one or more computer-readable storage media), a memory controller 122, one or more processing units (CPUs) 120, a peripheral device interface 118, an RF circuit 108, an audio circuit 110, a speaker 111, a microphone 113, an input / output (I / O) subsystem 106, other input control devices 116, and an external port 124. The device 100 optionally includes one or more light sensors 164. The device 100 optionally includes one or more contact intensity sensors 165 for detecting the intensity of contact on the device 100 (e.g., a touch-sensing surface such as the touch-sensing display system 112 of the device 100). The device 100 optionally includes one or more haptic output generators 167 for generating haptic output on the device 100 (e.g., generating haptic output on a touch-sensing surface such as the touch-sensing display system 112 of the device 100 or the touch pad 355 of the device 300). These components optionally communicate via one or more communication buses or signal lines 103.
[0024] As used in this specification and the claims, the term "intensity" of a contact on a touch sensing surface refers to the force or pressure (force per unit area) of a contact (e.g., a finger contact) on the touch sensing surface, or an alternative (substitute) for the force or pressure of a contact on the touch sensing surface. The intensity of a contact has a range of numerical values that includes at least four different numerical values, and more typically includes hundreds or more different numerical values (e.g., at least 256). The intensity of a contact is optionally determined (or measured) using a variety of methods and a variety of sensors, or combinations of sensors. For example, one or more sensors disposed under or adjacent to the touch sensing surface are optionally used to measure the force at various points on the touch sensing surface. In some implementations, the force measurements of multiple force sensors are combined (e.g., weighted average) to determine an estimated force of the contact. Similarly, a pressure-sensitive tip of a stylus is optionally used to determine the pressure of the stylus on the touch sensing surface. As another method, the size and / or change thereof of the contact area detected on the touch sensing surface, the capacitance and / or change thereof of the touch sensing surface proximate to the contact, and / or the resistance and / or change thereof of the touch sensing surface proximate to the contact are optionally used as a substitute for the force or pressure of a contact on the touch sensing surface. In some embodiments, the alternative measurement of the force or pressure of a contact is used directly to determine whether it exceeds an intensity threshold (e.g., the intensity threshold is described in units corresponding to the alternative measurement). In some embodiments, the alternative measurement of the force or pressure of a contact is converted to an estimated force or pressure, and this estimated force or pressure is used to determine whether it exceeds an intensity threshold (e.g., the intensity threshold is a pressure threshold measured in units of pressure). Using the intensity of a contact as an attribute of user input enables user access to additional device functions that might otherwise be inaccessible to the user in a device of reduced size with a limited area for displaying affordances (e.g., on a touch sensing display) and / or receiving user input (e.g., via a touch sensing display, a touch sensing surface, or a physical / mechanical control such as a knob or button).
[0025] As used in this specification and the claims, the term "haptic 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-sensing surface) relative to another component of the device (e.g., the housing), or a displacement of a component relative to the center of mass of the device that is to be detected by 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 surface of the user that is sensitive to touch (e.g., a finger, palm, or other part of the user's hand), the haptic output generated by the physical displacement is interpreted by the user as a tactile sensation corresponding to a perceived change in the physical characteristics of the device or the component of the device. For example, the movement of a touch-sensing surface (e.g., a touch-sensing display or a trackpad) is optionally interpreted by the user as a "down click" or "up click" of a physical actuator button. In some cases, even when there is no movement of a physical actuator button associated with a touch-sensing surface that has been physically pushed (e.g., displaced) by the movement of the user, the user feels a tactile sensation such as a "down click" or "up click". As another example, the movement of a touch-sensing surface is optionally interpreted or felt by the user as "roughness" of the touch-sensing surface, even when there is no change in the smoothness of the touch-sensing surface. Such interpretation of touch by the user depends on the individual sensory perception of the user, but there are many touch sensory perceptions common to most users. Thus, when a haptic output is described as corresponding to a particular sensory perception of the user (e.g., "up click", "down click", "roughness"), unless otherwise specified, the generated haptic output corresponds to a physical displacement of a device or a component of the device that generates the described sensory perception of a typical (or average) user.
[0026] Device 100 is merely an example of a portable multifunctional device, and it should be understood that Device 100 may optionally have more or fewer components than shown, may optionally combine two or more components, or may optionally have different configurations or arrangements of components. The various components shown in FIG. 1A are implemented in the form of hardware, software, or a combination of both hardware and software, including one or more signal processing circuits and / or application-specific integrated circuits.
[0027] Memory 102 may include one or more computer-readable storage media. The computer-readable storage media may be tangible and non-transitory. Memory 102 may include high-speed random access memory and may also include non-volatile memory, such as one or more magnetic disk storage devices, flash memory devices, or other non-volatile solid-state memory devices. Memory controller 122 may control access to memory 102 by other components of device 100.
[0028] The input and output peripheral devices of this device can be connected to CPU 120 and memory 102 using peripheral device interface 118. One or more processors 120 run or execute various software programs and / or instruction sets stored in memory 102 to perform various functions for device 100 and to process data. In some embodiments, peripheral device interface 118, CPU 120, and memory controller 122 may be implemented on a single chip, such as chip 104. In some other embodiments, they can be implemented on separate chips.
[0029] The RF (radio frequency) circuit 108 transmits and receives RF signals, also called electromagnetic signals. The RF circuit 108 converts electrical signals into electromagnetic signals or vice versa and communicates with a communication network and other communication devices via electromagnetic signals. The RF circuit 108 optionally includes well-known circuits for performing the above 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. The RF circuit 108 optionally communicates wirelessly with networks such as the Internet, also called the World Wide Web (WWW), intranets such as cellular phone networks, and / or wireless networks, wireless local area networks (LANs) and / or metropolitan area networks (MANs), and other devices. The RF circuit 108 optionally includes well-known circuits for detecting near field communication (NFC), for example, by short-range wireless. The wireless communication optionally uses any of a plurality of communication standards, communication protocols, and communication technologies, including Global System for Mobile Communications (GSM®) for mobile communication, 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-HSPDA), long term evolution (LTE), near field communication (NFC), wideband code division multipleaccess, W-CDMA), code division multiple access (CDMA), time division multiple access (TDMA), Bluetooth (registered trademark), Bluetooth Low Energy (BTLE), Wireless Fidelity (Wi-Fi) (registered trademark) (e.g., IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, IEEE 802.11n, and / or IEEE 802.11ac), voice over Internet Protocol (VoIP), Wi-MAX, protocols for e-mail (e.g., Internet message access protocol (IMAP) and / or post office protocol (POP)), instant messaging (e.g., extensible messaging and presence protocol (XMPP), Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions (SIMPLE), Instant Messaging and Presence Service (IMPS)), and / or Short Message Service (SMS), or any other suitable communication protocol including communication protocols not yet developed as of the filing date of this document, but not limited thereto.
[0030] The audio circuit 110, speaker 111, and microphone 113 provide an audio interface between the user and the device 100. The audio circuit 110 receives audio data from the peripheral interface 118, converts the audio data into an electrical signal, and transmits the electrical signal to the speaker 111. The speaker 111 converts the electrical signal into human audible sound waves. The audio circuit 110 also receives the electrical signal converted from sound waves by the microphone 113. The audio circuit 110 converts the electrical signal into audio data and sends the audio data to the peripheral interface 118 for processing. The audio data may be obtained from and / or transmitted to the memory 102 and / or the RF circuitry 108 by the peripheral interface 118. In some embodiments, the audio circuit 110 further comprises a headset jack (e.g., 212 of FIG. 2). The headset jack provides an interface between the audio circuit 110 and a removable audio input / output peripheral device such as an output-only headset or a headset having both outputs (e.g., headphones for one or both ears) and inputs (e.g., a microphone).
[0031] The I / O subsystem 106 couples the input / output peripheral devices of the device 100, such as the touch screen 112 and other input control devices 116, to the peripheral device interface 118. The I / O subsystem 106 optionally includes a display controller 156, a light sensor controller 158, an intensity sensor controller 159, a haptic feedback controller 161, and one or more input controllers 160 for other input or control devices. The one or more input controllers 160 receive / send electrical signals from / to the other input control devices 116. The 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 alternative embodiments, the input controller(s) 160 are optionally coupled to (or not coupled to any of) a keyboard, an infrared port, a USB port, and a pointer device such as a mouse. One or more buttons (e.g., 208 in FIG. 2) optionally include up / down buttons for volume adjustment of the speaker 111 and / or the microphone 113. One or more buttons optionally include a push button (e.g., 206 in FIG. 2).
[0032] As described in U.S. Patent Application No. 11 / 322,549, "Unlocking a Device by Performing Gestures on an Unlock Image," U.S. Patent No. 7,657,849, filed on December 23, 2005, which is hereby incorporated by reference in its entirety, pressing a push button quickly may unlock the touch screen 112 or initiate a process for unlocking the device using gestures on the touch screen. Pressing a push button (e.g., 206) for a longer time may turn the power to the device 100 on or off. The user may be able to customize the functionality of one or more buttons. The touch screen 112 is used to implement virtual or soft buttons as well as one or more soft keyboards.
[0033] The touch-sensitive display 112 provides an input interface and an output interface between the device and the user. The display controller 156 receives and / or transmits electrical signals to / from the touch screen 112. The touch screen 112 displays visual output to the user. This visual output may include graphics, text, icons, video, and any combination thereof (collectively referred to as "graphics"). In some embodiments, some or all of these visual outputs may correspond to user interface objects.
[0034] The touch screen 112 has a touch-sensitive surface, sensor, or set of sensors that receive input from the user based on tactile and / or haptic contact. The touch screen 112 and the display controller 156 (along with any associated modules and / or instruction sets in the memory 102) detect contact (and any movement or interruption of the contact) on the touch screen 112 and convert the detected contact into an interaction with user interface objects (e.g., one or more soft keys, icons, web pages, or images) displayed on the touch screen 112. In one exemplary embodiment, the contact between the touch screen 112 and the user corresponds to the user's finger.
[0035] The touch screen 112 may use LCD (liquid crystal display) technology, LPD (light emitting polymer display) technology, or LED (light emitting diode) technology. However, in other embodiments, other display technologies may be used. The touch screen 112 and the display controller 156 may use, but are not limited to, capacitance technology, resistive technology, infrared technology, and surface acoustic wave technology, as well as any of a plurality of touch sensing technologies currently known or later developed that include other proximity sensor arrays or other elements for determining one or more contact points with the touch screen 112 to detect contact and any movement or interruption thereof. In an exemplary embodiment, a projected capacitive sensing technology such as that found in the iPhone and iPod Touch from Apple Inc. of Cupertino, California is used.
[0036] The touch sensing display in some embodiments of the touch screen 112 may be similar to the multi-touch sensing touch pads described in the following U.S. Patents: U.S. Pat. No. 6,323,846 (Westerman et al.), U.S. Pat. No. 6,570,557 (Westerman et al.), and / or U.S. Pat. No. 6,677,932 (Westerman), and / or U.S. Patent Application Publication No. 2002 / 0015024 (A1). Each of these documents is hereby incorporated by reference in its entirety. However, while the touch screen 112 displays the visual output from the device 100, the touch sensing touch pad does not provide a visual output.
[0037] The touch sensing display in some embodiments of touch screen 112 may be as described in the following applications, all of which are hereby incorporated by reference in their entirety: (1) U.S. Patent Application No. 11 / 381,313, "Multipoint Touch Surface Controller," filed May 2, 2006; (2) U.S. Patent Application No. 10 / 840,862, "Multipoint Touchscreen," filed May 6, 2004; (3) U.S. Patent Application No. 10 / 903,964, "Gestures For Touch Sensitive Input Devices," filed Jul. 30, 2004; (4) U.S. Patent Application No. 11 / 048,264, "Gestures For Touch Sensitive Input Devices," filed Jan. 31, 2005; (5) U.S. Patent Application No. 11 / 038,590, "Mode-Based Graphical User Interfaces For Touch Sensitive Input Devices," filed Jan. 18, 2005; (6) U.S. Patent Application No. 11 / 228,758, "Virtual Input Device Placement On A Touch Screen User Interface," filed Sep. 16, 2005; (7) U.S. Patent Application No. 11 / 228,700, "Operation Of A Computer With A Touch Screen Interface," filed Sep. 16, 2005; (8) U.S. Patent Application No. 11 / 228,737, "Activating Virtual Keys Of A Touch-Screen Virtual Keyboard," filed Sep. 16, 2005; and (9) U.S. Patent Application No. 11 / 367,749, "Multi-Functional Hand-Held Device," filed Mar. 3, 2006.
[0038] The touch screen 112 may have a video resolution exceeding 100 dpi. In some embodiments, the touch screen has a video resolution of about 160 dpi. The user may touch the touch screen 112 using any suitable object or appendage such as a stylus, finger, etc. In some embodiments, the user interface is designed to function primarily based on finger-based contacts and gestures, and due to the large contact area of the finger on the touch screen, it may be less accurate than stylus-based input. In some embodiments, the device converts rough finger-based input into an accurate pointer / cursor position or a command for performing the user's desired action.
[0039] In some embodiments, in addition to the touch screen, the device 100 may include a touch pad (not shown) for activating or deactivating certain functions. In some embodiments, the touch pad, unlike the touch screen, is a touch-sensitive area of the device that does not display visual output. The touch pad may be a separate touch-sensitive surface from the touch screen 112, or an extension of the touch-sensitive surface formed by the touch screen.
[0040] The device 100 also includes a power system 162 for supplying power to various components. The power system 162 may include a power management system, one or more power sources (e.g., battery, alternating current (AC)), a recharge system, a power outage detection circuit, a power converter or inverter, a power status indicator (e.g., light-emitting diode (LED)), and any other components associated with the generation, management, and distribution of power in a portable device.
[0041] Device 100 may also include one or more optical sensors 164. FIG. 1A shows an optical sensor coupled to an optical sensor controller 158 within I / O subsystem 106. Optical sensor 164 may include a charge-coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) phototransistor. Optical sensor 164 receives light from the environment projected through one or more lenses and converts that light into data representing an image. In conjunction with imaging module 143 (also referred to as a camera module), optical sensor 164 may capture still images or video. In some embodiments, an optical sensor is disposed on the back of device 100, opposite touch screen display 112 on the front of the device, so that the touch screen display can be used as a viewfinder for obtaining still and / or video images. In some embodiments, an optical sensor is disposed on the front of the device so that an image of the user can be obtained for a video conference at the same time the user views other video conference participants on the touch screen display. In some embodiments, the position of optical sensor 164 can be changed by the user (e.g., by rotating lenses and sensors within the device housing), thereby enabling a single optical sensor 164 to be used for both video conferencing and for obtaining still and / or video images in conjunction with the touch screen display.
[0042] Device 100 also optionally includes one or more contact intensity sensors 165. FIG. 1A shows a contact intensity sensor coupled to an intensity sensor controller 159 within I / O subsystem 106. The contact intensity sensor 165 optionally includes one or more piezoresistive strain gauges, capacitive force sensors, electro-force sensors, piezoelectric force sensors, optical force sensors, capacitive touch sensing surfaces, or other intensity sensors (e.g., sensors used to measure the force (or pressure) of contact on a touch sensing surface). The contact intensity sensor 165 receives 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 collocated with or proximate to a touch sensing surface (e.g., touch sensing display system 112). In some embodiments, at least one contact intensity sensor is disposed on the back of device 100, on the opposite side of touch screen display 112 disposed on the front of device 100.
[0043] Device 100 may include one or more proximity sensors 166. FIG. 1A shows a proximity sensor 166 coupled to the peripheral device interface 118. Alternatively, the proximity sensor 166 may be coupled to an input controller 160 within the I / O subsystem 106. The proximity sensor 166 may operate as described in U.S. Patent Application Nos. 11 / 241,839, "Proximity Detector In Handheld Device", 11 / 240,788, "Proximity Detector In Handheld Device", 11 / 620,702, "Using Ambient Light Sensor To Augment Proximity Sensor Output", 11 / 586,862, "Automated Response To And Sensing Of User Activity In Portable Devices", and 11 / 638,251, "Methods And Systems For Automatic Configuration Of Peripherals", which are hereby incorporated by reference in their entirety. In some embodiments, when this multifunctional device is placed near the user's ear (e.g., when the user is on a phone call), the proximity sensor turns off and disables the touch screen 112.
[0044] Device 100 also optionally includes one or more haptic output generators 167. FIG. 1A shows a haptic output generator coupled to a haptic feedback controller 161 within I / O subsystem 106. The haptic output generator 167 optionally includes one or more electroacoustic devices, such as a speaker or other audio components, and / or electromechanical devices that convert energy into linear motion, such as a motor, solenoid, electroactive polymer, piezoelectric actuator, electrostatic actuator, or other haptic output components (e.g., components that convert an electrical signal into a haptic output on the device). The contact intensity sensor 165 receives haptic feedback generation instructions from the haptic feedback module 133 and generates a haptic output on device 100 that can be sensed by a user of device 100. In some embodiments, at least one haptic output generator is collocated with or proximate to a touch sensing surface (e.g., touch sensing display system 112) and optionally generates a haptic output by moving the touch sensing surface in a vertical direction (e.g., in / out of the surface of device 100) or a lateral direction (e.g., back and forth in the same plane as the surface of device 100). In some embodiments, at least one haptic output generator sensor is disposed on the back of device 100, which is opposite the touch screen display 112 disposed on the front of device 100.
[0045] Device 100 may further include one or more accelerometers 168. FIG. 1A shows an accelerometer 168 coupled to the peripheral device interface 118. Alternatively, the accelerometer 168 may be coupled to the input controller 160 within the I / O subsystem 106. The accelerometer 168 may operate as described in U.S. Patent Application Publication No. 20050190059, "Acceleration-based Theft Detection System for Portable Electronic Devices," and U.S. Patent Application Publication No. 20060017692, "Methods And Apparatuses For Operating A Portable Device Based On An Accelerometer," both of which are hereby incorporated by reference in their entirety. In some embodiments, information is displayed on the touch screen display in portrait or landscape view based on analysis of data received from one or more accelerometers. Device 100 may optionally include, in addition to the accelerometer(s) 168, as needed, a magnetometer (not shown) and a GPS (or GLONASS or other global navigation system) receiver (not shown) for obtaining information regarding the position and orientation of device 100 (e.g., portrait or landscape).
[0046] In some embodiments, the software components stored in the memory 102 include an operating system 126, a communication 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 an application (instruction set) 136. Further, in some embodiments, as shown in FIGS. 1A and 3, the memory 102 (FIG. 1A) or 370 (FIG. 3) stores a device / global internal state 157. The device / global internal state 157 includes one or more of the following: an active application state indicating which application, if any, is active; a display state indicating which application, view, or other information occupies various regions of the touch screen display 112; a sensor state including information obtained from various sensors of the device and input control devices 116; and position information regarding the position and / or orientation of the device.
[0047] The operating system 126 (e.g., an embedded operating system such as Darwin®, RTXC, Linux®, Unix®, OS X®, iOS, Windows®, or VxWorks®) includes various software components and / or drivers for controlling and managing general system tasks (e.g., memory management, storage device control, power management, etc.) and facilitating communication between various hardware and software components.
[0048] The communication module 128 facilitates communication with other devices via one or more external ports 124 and includes various software components for processing data received by the RF circuit 108 and / or the external port 124. The external port 124 (e.g., Universal Serial Bus (USB), FIREWIRE (registered trademark), etc.) is adapted to connect directly or indirectly via a network (e.g., the Internet, wireless LAN, etc.) to other devices. 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 on iPod (registered trademark) devices (a trademark of Apple Inc.).
[0049] The contact / motion module 130 optionally detects contact with the touch screen 112 (in relation to the display controller 156) and contact with other touch-sensing devices (e.g., a touch pad or a physical click wheel). The contact / motion module 130 includes various software components for performing various operations related to the detection of contact, such as determining whether contact has occurred (e.g., detecting a finger-down event), determining the intensity of the contact (e.g., the force or pressure of the contact, or a proxy for the force or pressure of the contact), determining whether there is movement of the contact and tracking movement across the touch-sensing surface (e.g., detecting one or more finger-drag events), and determining whether the contact has ended (e.g., detecting a finger-up event or an interruption of the contact). The contact / motion module 130 receives contact data from the touch-sensing surface. Determining the movement of the contact point represented by a series 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 operations are optionally applied to a single contact (e.g., contact with one finger) or multiple simultaneous contacts (e.g., "multi-touch" / contact with multiple fingers). In some embodiments, the contact / motion module 130 and the display controller 156 detect contact on the touch pad.
[0050] In some embodiments, the contact / movement module 130 uses a set of one or more intensity thresholds to determine whether an action has been performed by the user (e.g., to determine whether the user has "clicked" on an icon). 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 can be adjusted without changing the physical hardware of the device 100). For example, the mouse "click" threshold of a trackpad or touch screen display can be set to any of a wide range of default thresholds without changing the trackpad or touch screen display hardware. Additionally, in some implementations, the user of the device is provided with software settings for adjusting one or more of the set of intensity thresholds (e.g., by adjusting individual intensity thresholds and / or by adjusting multiple intensity thresholds immediately after a system-level click of the "intensity" parameter).
[0051] The contact / movement module 130 optionally detects gesture inputs by the user. Different gestures on the touch-sensing surface have different contact patterns (e.g., different movements, timings, and / or intensities of detected contacts). Thus, gestures are optionally detected by detecting a particular contact pattern. For example, detecting a finger tap gesture includes detecting a finger down event and subsequently detecting a finger up (lift off) event at the same position (or substantially the same position) as that finger down event (e.g., at the position of an icon). As another example, detecting a finger swipe gesture on the touch-sensing surface includes detecting a finger down event, subsequently detecting one or more finger drag events, and then detecting a finger up (lift off) event.
[0052] The graphic module 132 includes various known software components for rendering and displaying graphics on the touch screen 112 or other display, including components for changing the visual effects of the displayed graphics (e.g., brightness, transparency, saturation, contrast, or other visual characteristics). As used herein, the term "graphic" includes any object that can be displayed to the user, such objects including, but not limited to, text, web pages, icons (such as user interface objects including soft keys), digital images, videos, animations, and the like.
[0053] In some embodiments, the graphic module 132 stores data representing the graphics used. Each graphic is optionally assigned a corresponding code. The graphic module 132 receives one or more codes specifying the graphics to be displayed, along with coordinate data and other graphic property data as needed from an application or the like, and generates screen image data for output to the display controller 156.
[0054] The haptic feedback module 133 includes various software components for generating instructions for use by the haptic output generator(s) 167 to generate haptic output at one or more locations on the device 100 in response to user interaction with the device 100.
[0055] The text input module 134 may be a component of the graphic module 132 and provides a soft keyboard for entering text in various applications (e.g., contacts 137, email 140, IM 141, browser 147, and any other application that requires text input).
[0056] 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 location-based dialing, to the camera 143 as metadata for photos / videos, and to applications that provide location-based services such as weather widgets, local yellow page widgets, and map / navigation widgets).
[0057] The application 136 may include the following modules (or sets of instructions), or subsets or supersets thereof. ● Contact module 137 (sometimes also called an address book or contact list), ● Phone module 138, ● Video conferencing module 139, ● Email client module 140, ● Instant messaging (IM) module 141, ● Training support module 142, ● Camera module 143 for still and / or video images, ● Image management module 144, ● Video player module ● Music player module ● Browser module 147, ● Calendar module 148, ● Widget module 149 that can include one or more of weather widget 149-1, stock widget 149-2, calculator widget 149-3, alarm clock widget 149-4, dictionary widget 149-5, and other widgets acquired by the user, as well as user-created widget 149-6, ● Widget creation module 150 for creating user-created widget 149-6, ● Search module 151, ● Video and music player module 152 that integrates the video player module and the music player module, ● Memo module 153, ● Map module 154, and / or ● Online video module 155
[0058] Examples of other applications 136 that may be stored in memory 102 include other word processing applications, other image editing applications, drawing applications, presentation applications, JAVA (registered trademark)-compatible applications, encryption, digital rights management, speech recognition, and speech reproduction.
[0059] Together with touch screen 112, display controller 156, contact / motion module 130, graphic module 132, and text input module 134, contact module 137 may be used to manage an address book or contact list (e.g., stored in the application internal state 192 of contact module 137 in memory 102 or memory 370). This management includes adding a name(s) to the address book, deleting a name(s) from the address book, associating a phone number(s), email address(es), address(es), or other information with a name, associating an image with a name, classifying and sorting names, providing a phone number or email address to initiate and / or facilitate communication by phone 138, video conference module 139, email 140, or IM 141, etc.
[0060] Together with the RF circuit mechanism 108, audio circuit 110, speaker 111, microphone 113, touch screen 112, display controller 156, contact / motion module 130, graphic module 132, and text input module 134, the telephone module 138 may be used to input a series of characters corresponding to a telephone number, access one or more telephone numbers in the contact module 137, modify the input telephone number, dial each telephone number, conduct a conversation, and disconnect the connection or hang up the phone when the conversation is completed. As described above, the wireless communication may use any of a plurality of communication standards, communication protocols, and communication technologies.
[0061] Together with the RF circuit 108, audio circuit 110, speaker 111, microphone 113, touch screen 112, display controller 156, optical sensor 164, optical sensor controller 158, contact / motion module 130, graphic module 132, text input module 134, contact module 137, and telephone module 138, the video conferencing module 139 includes executable instructions for starting, conducting, and ending a video conference between the user and one or more other participants according to the user's instructions.
[0062] In relation to the RF circuit 108, touch screen 112, display controller 156, contact / motion module 130, graphic module 132, and text input module 134, the email client module 140 includes executable instructions for creating, sending, receiving, and managing emails in response to the user's instructions. In relation to the image management module 144, the email client module 140 makes it very easy to create and send emails with still or video images captured by the camera module 143.
[0063] In relation to RF circuit 108, touch screen 112, display controller 156, contact / motion module 130, graphic module 132, and text input module 134, instant messaging module 141 includes executable instructions for inputting a sequence of characters corresponding to an instant message, modifying the input characters, transmitting each instant message (e.g., using the Short Message Service (SMS) or Multimedia Messaging Service (MMS) protocol for phone-based instant messages or using XMPP, SIMPLE, or IMPS for Internet-based instant messages), receiving an instant message, and displaying the received instant message. In some embodiments, the instant messages transmitted and / or received may include graphics, photos, audio files, video files, and / or other attached files, such as those supported by MMS and / or Enhanced Messaging Service (EMS). As used herein, "instant messaging" refers to both phone-based messages (e.g., messages transmitted using SMS or MMS) and Internet-based messages (e.g., messages transmitted using XMPP, SIMPLE, or IMPS).
[0064] In relation to RF circuit 108, touch screen 112, display controller 156, contact / motion module 130, graphic module 132, text input module 134, GPS module 135, map module 154, and music playback module, training support module 142 includes executable instructions for generating a training (e.g., having time, distance, and / or calorie consumption goals), communicating with a training sensor (sports device), receiving training sensor data, calibrating sensors used to monitor the training, selecting and playing music for the training, and displaying, storing, and transmitting training data.
[0065] In relation to the touch screen 112, the display controller 156, the light sensor(s) 164, the light sensor controller 158, the touch / motion module 130, the graphic module 132, and the image management module 144, the camera module 143 includes executable instructions for capturing still images or videos (including video streams), storing them in the memory 102, modifying the characteristics of the still images or videos, or deleting the still images or videos from the memory 102.
[0066] In relation to the touch screen 112, the display controller 156, the touch / motion module 130, the graphic module 132, the text input module 134, and the camera module 143, the image management module 144 includes executable instructions for arranging, modifying (e.g., editing) or otherwise manipulating, labeling, deleting, presenting (e.g., within a digital slide show or album), and storing still images and / or video images.
[0067] In relation to the RF circuit 108, the touch screen 112, the display controller 156, the touch / motion module 130, the graphic module 132, and the text input module 134, the browser module 147 includes executable instructions for browsing the Internet in accordance with user instructions including searching for, linking to, receiving, and displaying web pages or portions thereof, and attached and other files linked to the web pages.
[0068] In connection with RF circuit 108, touch screen 112, display controller 156, contact / motion module 130, graphic module 132, text input module 134, email client module 140, and browser module 147, calendar module 148 includes executable instructions for creating, displaying, modifying, and storing a calendar and data associated with the calendar (e.g., calendar items, to-do lists, etc.) in accordance with user instructions.
[0069] In connection with RF circuit 108, touch screen 112, display controller 156, contact / motion module 130, graphic module 132, text input module 134, and browser module 147, widget module 149 is a mini-application (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 can be downloaded and used by the user, or a mini-application (e.g., user-created widget 149-6) that can be created by the user. In some embodiments, the widget includes an HTML (HyperText Markup Language) file, a CSS (Cascading Style Sheets) file, and a JavaScript file. In some embodiments, the widget includes an XML (Extensible Markup Language) file and a JavaScript® file (e.g., Yahoo!(®) widget).
[0070] In connection with RF circuit 108, touch screen 112, display controller 156, contact / motion module 130, graphic module 132, text input module 134, and browser module 147, widget creation module 150 may be used by the user to create a widget (e.g., change a user-specified portion of a web page into a widget).
[0071] In relation to the touch screen 112, the display controller 156, the contact / motion module 130, the graphics module 132, and the text input module 134, the search module 151 includes executable instructions for searching the text, music, sounds, images, videos, and / or other files in the memory 102 that match one or more search criteria (e.g., one or more user-specified search phrases) according to the user's instructions.
[0072] In relation to the touch screen 112, the display controller 156, the contact / motion module 130, the graphics module 132, the audio circuit 110, the speaker 111, the RF circuit 108, and the browser module 147, the video and music playback module 152 includes executable instructions for enabling the user to download and play recorded music or other sound files stored in one or more file formats such as MP3 or AAC files, and for displaying, presenting, or otherwise playing videos (on the touch screen 112 or on an external display connected via the external port 124). In some embodiments, the device 100 optionally includes the functionality of an MP3 player such as an iPod (a trademark of Apple Inc.).
[0073] In relation to the touch screen 112, the display controller 156, the contact / motion module 130, the graphic module 132, and the text input module 134, the memo module 153 includes executable instructions for creating and managing memos, ToDo lists, etc. according to the user's instructions.
[0074] In relation to the RF circuit 108, touch screen 112, display controller 156, contact / motion module 130, graphic module 132, text input module 134, GPS module 135, and browser module 147, the map module 154 can be used to receive, display, modify, and store maps and data associated with the maps (e.g., driving directions, data of stores near a specific location or its vicinity and other attractions, and other location-based data) according to the user's instructions.
[0075] In connection with touch screen 112, display controller 156, contact / motion module 130, graphics module 132, audio circuit 110, speaker 111, RF circuit 108, text input module 134, email client module 140, and browser module 147, online video module 155 includes instructions that enable a user to access, browse, receive (e.g., by streaming and / or downloading), play (e.g., on the touch screen or on an external display connected via external port 124), send an email including a link to a particular online video, and otherwise manage online videos in one or more file formats such as H.264. In some embodiments, instead of email client module 140, instant message module 141 is used to send a link to a particular online video. Additional description of the online video application can be found in U.S. Provisional Patent Application No. 60 / 936,562, filed Jun. 20, 2007, "Portable Multifunction Device, Method, and Graphical User Interface for Playing Online Videos", and U.S. Patent Application No. 11 / 968,067, filed Dec. 31, 2007, "Portable Multifunction Device, Method, and Graphical User Interface for Playing Online Videos". The contents of these applications are hereby incorporated by reference in their entirety.
[0076] Each of the modules and applications identified above corresponds to a set of executable instructions that perform one or more of the above functions and to the methods described in this application (e.g., methods executed by a computer and other information processing methods described herein). These modules (e.g., sets of instructions) need not be implemented as separate software programs, procedures, or modules, and thus, in various embodiments, various subsets of these modules can be combined or otherwise reorganized. For example, a video playback module may be combined with a music playback module into a single module (e.g., a video and music playback module 152, FIG. 1A). In some embodiments, memory 102 can store a subset of the modules and data structures identified above. Further, memory 102 may store additional modules and data structures not described above.
[0077] In some embodiments, device 100 is a device in which the operation of a default set of functions on the device is performed exclusively via a touch screen and / or a touch pad. By using a touch screen and / or a touch pad as the primary input control device for the operation of device 100, the number of physical input control devices (such as push buttons, dials, and the like) on device 100 can be reduced.
[0078] The default set of functions that are performed exclusively via a touch screen and / or a touch pad optionally includes navigation between user interfaces. In some embodiments, when touched by a user, the touch pad navigates device 100 from any user interface displayed on device 100 to a main menu, a home menu, or a root menu. In such embodiments, the "menu button" is implemented using the touch pad. In some other embodiments, the menu button is a physical push button or other physical input control device instead of the touch pad.
[0079] FIG. 1B is a block diagram showing exemplary components for event processing according to some embodiments. In some embodiments, memory 102 (FIG. 1A) or 370 (FIG. 3) includes an event sorter 170 (e.g., within operating system 126) and corresponding application 136-1 (e.g., any of applications 137-151, 155, 380-390 described above).
[0080] The event sorter 170 receives event information and determines an application 136-1 that distributes the event information and an application view 191 of the application 136-1. The event sorter 170 includes an event monitor 171 and an event dispatcher module 174. In some embodiments, the application 136-1 includes an application internal state 192 that indicates the current application view(s) displayed on the touch-sensitive display 112 when the application is active or running. In some embodiments, the device / global internal state 157 is used by the event sorter 170 to determine which application is currently active, and the application internal state 192 is used by the event sorter 170 to determine the application view 191 to which the event information is to be delivered.
[0081] In some embodiments, the application internal state 192 includes additional information such as resume information used when the application 136-1 resumes execution, user interface state information indicating whether information is being displayed or is ready to be displayed by the application 136-1, a state queue for enabling the user to return to a previous state or view of the application 136-1, and one or more of a redo / undo queue of previous actions performed by the user.
[0082] The event monitor 171 receives event information from the peripheral device interface 118. The event information includes information about sub-events (e.g., a user's touch on the touch-sensitive display 112 as part of a multi-touch gesture). The peripheral device interface 118 transmits information received from sensors such as the I / O subsystem 106 or the proximity sensor 166, the accelerometer(s) 168, and / or the microphone 113 (via the audio circuitry 110). The information that the peripheral device interface 118 receives from the I / O subsystem 106 includes information from the touch-sensitive display 112 or the touch-sensitive surface.
[0083] In some embodiments, the event monitor 171 sends requests to the peripheral device interface 118 at predetermined intervals. In response, the peripheral device interface 118 sends out event information. In other embodiments, the peripheral device interface 118 sends out event information only when there is an important event (e.g., receiving an input that exceeds a predetermined noise threshold and / or is longer than a predetermined time). In some embodiments, the event sorter 170 also includes the hit view determination module 172 and / or the active event recognition unit determination module 173.
[0084] The hit view determination module 172 provides a software procedure for determining where within one or more views a sub-event has occurred when the touch-sensitive display 112 displays two or more views. A view is composed of a control unit and other elements that a user can view on the display.
[0085] Another aspect of the user interface associated with an application is, in this specification, a set of views, sometimes referred to as an application view or a user interface window, within which information is displayed and touch-based gestures are performed. The application view (for each respective application) where a touch is detected may correspond to a program level within the program hierarchy or view hierarchy of the application. For example, the lowest level view where a touch is detected may be referred to as the hit view, and the set of events recognized as appropriate input may be determined, at least in part, based on the hit view of the first touch that initiates a touch-based gesture.
[0086] The hit view determination module 172 receives information associated with sub-events of a touch-based gesture. When an application has a plurality of views organized as a hierarchy, the hit view determination module 172 identifies the hit view as the lowest level view within the hierarchy where the sub-event is to be processed. In most situations, the hit view is the lowest level view where the first sub-event (e.g., the first sub-event in a sequence of sub-events that form an event or potential event) occurs. Once the hit view is identified by the hit view determination module 172, the hit view typically receives all sub-events associated with the same touch or input source for which it was identified as the hit view.
[0087] The active event recognition unit determination module 173 determines which view(s) within the view hierarchy should receive a particular sequence of sub-events. In some embodiments, the active event recognition unit determination module 173 determines that only the hit view should receive a particular sequence of sub-events. In other embodiments, the active event recognition unit determination module 173 determines that all views including the physical location of the sub-event are views that are actively involved, and thus, all views that are actively involved should receive a particular sequence of sub-events. In other embodiments, even if a touch sub-event is completely limited to a region associated with a particular view, the upper-level views in the hierarchy will remain views that are actively involved.
[0088] The event dispatcher module 174 sends event information to the event recognition unit (e.g., event recognition unit 180). In embodiments that include the active event recognition unit determination module 173, the event dispatcher module 174 distributes the event information to the event recognition unit determined by the active event recognition unit determination module 173. In some embodiments, the event dispatcher module 174 stores the event information obtained by each event receiver 182 in the event waiting queue.
[0089] In some embodiments, the operating system 126 includes the event sorter 170. Alternatively, the application 136-1 includes the event sorter 170. In still other embodiments, the event sorter 170 is a stand-alone module or part of another module stored in the memory 102 such as the contact / motion module 130.
[0090] In some embodiments, application 136-1 includes a plurality of event handlers 190 and one or more application views 191, each including instructions to process touch events occurring within each view of the user interface of that application. Each application view 191 of application 136-1 includes one or more event recognition units 180. Typically, each application view 191 includes a plurality of event recognition units 180. In other embodiments, one or more of the event recognition units 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 data update data 176, object update data 177, GUI update data 178, and / or event data 179 received from event sorter 170. Event handler 190 may utilize or call data update data 176, object update data 177, or GUI update data 178 to update the application internal state 192. Alternatively, one or more of the application views 191 include one or more respective event handlers 190. Also, in some embodiments, one or more of data update data 176, object update data 177, and GUI update data 178 are included within each application view 191.
[0091] Each event recognition unit 180 receives event information (e.g., event data 179) from event sorter 170 and identifies an event from that event information. Event recognition unit 180 includes an event receiving unit 182 and an event comparing unit 184. In some embodiments, event recognition unit 180 further includes at least a subset of metadata 183 and event distribution instructions 188 (which may include sub-event distribution instructions).
[0092] The event receiving unit 182 receives event information from the event sorter 170. The event information includes information on sub-events such as a touch or a movement of the touch, for example. Depending on the sub-event, the event information may also include additional information such as the position of the sub-event. When the sub-event is related to the movement of a touch, the event information may further include the speed and direction of the sub-event. In some embodiments, the event includes a rotation of the device from one direction to another (e.g., from portrait orientation to landscape orientation, or vice versa), and the event information includes corresponding information about the current orientation of the device (also referred to as the posture of the device).
[0093] The event comparison unit 184 compares the event information with the definitions of predefined events or sub-events, and based on this comparison, determines an event or sub-event, or determines or updates the state of an event or sub-event. In some embodiments, the event comparison unit 184 includes an event definition 186. The event definition 186 includes, for example, definitions of events such as event 1 (187-1), event 2 (187-2), etc. (e.g., a predefined sequence of sub-events). In some embodiments, the sub-events within an 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) at a predefined stage on the displayed object, a first lift-off (touch end) at a predefined stage, a second touch (touch start) at a predefined stage on the displayed object, and a second lift-off (touch end) at a predefined stage. In another example, the definition of event 2 (187-2) is a drag on a displayed object. The drag includes, for example, a touch (or contact) at a predefined stage on the displayed object, movement of the touch across the touch-sensitive display 112, and lift-off of the touch (touch end). In some embodiments, an event also includes information about one or more associated event handlers 190.
[0094] In some embodiments, the event definition 186 includes definitions of events for each user interface object. In some embodiments, the event comparator 184 performs a hit test to determine the user interface object associated with the sub - event. For example, in an application view where three user interface objects are displayed on the touch - sensitive display 112, when a touch is detected on the touch - sensitive display 112, the 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 of the displayed objects is associated with a respective event handler 190, the event comparison unit uses the result of the hit test to determine the event handler 190 that needs to be activated. For example, the event comparison unit 184 selects the event handler associated with the sub - event and the object that triggers the hit test.
[0095] In some embodiments, the definition for each event (187) also includes a delaying action that delays the sending of event information until it is determined whether the sequence of sub - events corresponds to the event type of the event recognition unit.
[0096] If each event recognition unit 180 determines that a series of sub - events does not match any of the events in the event definition 186, each event recognition unit 180 enters a state of event - impossible, event - failed, or event - ended, and then ignores the next sub - event of the touch - based gesture. In this situation, if any, other event recognition units that remain active for the hit view continue to track and process the sub - events of the ongoing touch - based gesture.
[0097] In some embodiments, each event recognition unit 180 includes metadata 183 having configurable properties, flags, and / or lists indicating how the event distribution system executes sub-event distribution to the event recognition units involved actively. In some embodiments, the metadata 183 includes configurable properties, flags, and / or lists indicating how the event recognition units can interact with each other. In some embodiments, the metadata 183 includes a list indicating whether the configurable properties, flags, and / or sub-events are distributed to various levels within the view hierarchy or program hierarchy.
[0098] In some embodiments, each event recognition unit 180 activates an event handler 190 associated with the event when one or more specific sub-events of the event are recognized. In some embodiments, each event recognition unit 180 distributes event information associated with the event to the event handler 190. Activating the event handler 190 is distinguished from sending (and deferring sending) sub-events to each hit view. In some embodiments, the event recognition unit 180 throws a flag associated with the recognized event, and the event handler 190 associated with the flag catches the flag and executes default processing.
[0099] In some embodiments, the event distribution instruction 188 includes a sub-event distribution instruction that distributes event information regarding sub-events without activating an event handler. Instead, the sub-event distribution instruction distributes event information to an event handler associated with a series of sub-events or to a view actively involved. The event handler associated with the series of sub-events or the view actively involved receives the event information and executes predetermined processing.
[0100] In some embodiments, data update data 176 creates and updates data used in application 136-1. For example, data update data 176 updates the phone numbers used in contact module 137 or stores video files used in the video player module. In some embodiments, object update data 177 creates and updates objects used in application 136-1. For example, object update data 177 creates a new user interface object or updates the position of a user interface object. GUI update data 178 updates the GUI. For example, GUI update data 178 prepares display information and sends the display information to graphics module 132 for display on the touch-sensitive display.
[0101] In some embodiments, event handler(s) 190 includes or has access to data update data 176, object update data 177, and GUI update data 178. In some embodiments, data update data 176, object update data 177, and GUI update data 178 are included in one module of their respective application 136-1 or application view 191. In other embodiments, they are included in two or more software modules.
[0102] The foregoing discussion regarding event handling of a user's touch on a touch-sensitive display also applies to other forms of user input for operating the multifunctional device 100 using an input device, although it will be understood that not all of them are initiated on the touch screen. For example, movement of a mouse and pressing of a mouse button optionally in conjunction with pressing or holding of a single or multiple keyboards, contact movements such as tapping, dragging, scrolling, etc. on a touch pad, pen stylus input, movement of the device, verbal instructions, detected eye movements, biometric input, and / or any combination thereof may be optionally utilized as input corresponding to sub-events that define the event to be recognized.
[0103] FIG. 2 shows a portable multifunctional device 100 having a touch screen 112 according to some embodiments. The touch screen optionally displays one or more graphics within a user interface (UI) 200. In the embodiments described below as well as in this embodiment, the user can select one or more of the graphics by performing a gesture on the graphics using, for example, one or more fingers 202 (not drawn to an exact scale in the figure) or one or more styli 203 (not drawn to an exact scale in the figure). In some embodiments, selection of one or more graphics occurs when the user breaks contact with the one or more graphics. In some embodiments, the gesture optionally includes one or more taps, one or more swipes (from left to right, from right to left, upward, and / or downward), and / or rolling of a finger in contact with the device 100 (from right to left, from left to right, upward, and / or downward). In some implementations or situations, an accidental contact with a graphic does not select the graphic. For example, a swipe gesture that swipes over an application icon does not optionally select the corresponding application if the gesture corresponding to selection is a tap.
[0104] Device 100 may also include one or more physical buttons, such as a "home" or menu button 204. As described above, menu button 204 may be used to navigate to any application 136 within a set of applications that can be executed on device 100. Alternatively, in some embodiments, the menu button is implemented as a soft key in a GUI displayed on touch screen 112.
[0105] In some embodiments, device 100 includes touch screen 112, menu button 204, a push button 206 for turning the device on / off and locking the device, volume adjustment button(s) 208, a Subscriber Identity Module (SIM) card slot 210, a headset jack 212, and a docking / charging external port 124. Push button 206 is optionally used to turn the device on / off by pressing the button and holding it in the pressed state for a predetermined time interval, lock the device by pressing the button and releasing it before the predetermined time interval has elapsed, and / or unlock the device or initiate an unlock process. In an alternative embodiment, device 100 also receives verbal input through microphone 113 to activate or deactivate some functions. Additionally, device 100 optionally includes one or more contact intensity sensors 165 for detecting the intensity of contact with touch screen 112 and / or one or more tactile output generators 167 for generating a tactile output for a user of device 100.
[0106] Figure 3 is a block diagram of an exemplary multifunctional device that includes a display and a touch sensing surface, according to some embodiments. Device 300 may not be portable. In some embodiments, device 300 is a laptop computer, a desktop computer, a tablet computer, a multimedia player device, a navigation device, an educational device (such as a child's learning toy), a gaming system, or a control device (e.g., a home or industrial controller). Device 300 typically includes one or more processing units (CPUs) 310, one or more networks or other communication interfaces 360, memory 370, and one or more communication buses 320 for interconnecting these components. Communication bus 320 optionally includes circuitry (sometimes called a chipset) that interconnects and controls communications between system components. Device 300 includes an input / output (I / O) interface 330 that includes a display 340, which is typically a touch screen display. I / O interface 330 also optionally includes a keyboard and / or mouse (or other pointing device) 350, a touch pad 355, a touch output generator 357 (similar to, e.g., touch output generator(s) 167 described above with reference to FIG. 1A) for generating a touch output on device 300, and a sensor 359 (e.g., a light sensor, an acceleration sensor, a proximity sensor, a touch sensing sensor, and / or a contact intensity sensor similar to contact intensity sensor(s) 165 described above with reference to FIG. 1A). Memory 370 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM, or other random access solid state memory devices, and also optionally includes non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile semiconductor memory devices. Memory 370 optionally includes one or more storage devices located remotely from the CPU(s) 310.In some embodiments, the memory 370 stores programs, modules, and data structures similar to, or subsets of, the programs, modules, and data structures stored in the memory 102 of the portable multifunctional device 100 (FIG. 1A). Further, the memory 370 may store additional programs, modules, and data structures that do not exist within the memory 102 of the portable multifunctional device 100. For example, the memory 370 of the device 300 optionally stores a drawing module 380, a presentation module 382, a document creation module 384, a website creation module 386, a disk authoring module 388, and / or a spreadsheet module 390, while the memory 102 of the portable multifunctional device 100 (FIG. 1) does not optionally store these modules.
[0107] Each of the elements identified above in FIG. 3 may be stored in one or more of the aforementioned memory devices. Each of the modules identified above corresponds to a set of instructions for performing the functions described above. The modules or programs (e.g., sets of instructions) identified above need not be implemented as separate software programs, procedures, or modules, and thus, in various embodiments, various subsets of these modules may be combined or otherwise rearranged. In some embodiments, the memory 370 can store a subset of the modules and data structures identified above. Further, the memory 370 may store additional modules and data structures not described above.
[0108] For example, consider an embodiment of a user interface that can be implemented on the portable multifunctional device 100.
[0109] Figure 4A shows an exemplary user interface for a menu of applications on the portable multifunctional device 100, according to some embodiments. A similar user interface may be implemented on the device 300. In some embodiments, the user interface 400 includes the following elements, or a subset or superset thereof. ● One or more signal strength indicators (1 or more) 402 for wireless communication(s) such as cellular and Wi-Fi signals, ● Time 404, ● Bluetooth indicator 405, ● Battery status indicator 406, ● A tray 408 that includes icons for frequently used applications such as the following, ○ An icon 416 labeled "Phone" for the phone module 138, optionally including an indicator 414 of the number of missed calls or voicemail messages, ○ An icon 418 labeled "Mail" for the email client module 140, optionally including an indicator 410 of the number of unread emails, ○ An icon 420 labeled "Browser" for the browser module 147, and ○ An icon 422 labeled "iPod" for the video and music playback module 152, also referred to as the iPod (trademark of Apple Inc.) module 152, and ● Icons for other applications such as the following, ○ An icon 424 labeled "Message" for the IM module 141, ○ An icon 426 labeled "Calendar" for the calendar module 148, ○ An icon 428 labeled "Photos" for the image management module 144, ○ An icon 430 labeled "Camera" for the camera module 143, ○ An icon 432 labeled "Online Video" for the online video module 155, ○ An icon 434 for the stock widget 149-2 labeled "Stock". ○ An icon 436 for the map module 154 labeled "Map". ○ An icon 438 for the weather widget 149-1 labeled "Weather". ○ An icon 440 for the alarm clock widget 149-4 labeled "Clock". ○ An icon 442 for the training support module 142 labeled "Training Support". ○ An icon 444 for the memo module 153 labeled "Memo", and ○ An icon 446 for the settings application or module labeled "Settings" that provides access to the settings related to the device 100 and its various applications 136.
[0110] Note that the labels of the icons shown in FIG. 4A are merely illustrative. For example, the icon 422 for the video and music playback module 152 may optionally be labeled "Music" or "Music Player". Other labels may optionally be used for the various application icons. In some embodiments, the label for each application icon includes the name of the application corresponding to the application icon. In some embodiments, the label of a particular application icon is different from the name of the application corresponding to the particular application icon.
[0111] FIG. 4B shows an exemplary user interface on a device (e.g., device 300 of FIG. 3) having a touch sensing surface 451 (e.g., tablet or touch pad 355 of FIG. 3) separate from a display 450 (e.g., touch screen display 112). The device 300 also includes one or more contact intensity sensors (e.g., one or more of sensors 357) for detecting the intensity of contact on the touch sensing surface 451, and / or one or more haptic output generators 359 for generating haptic output to the user of the device 300.
[0112] Some of the following examples are described with reference to inputs on touch screen display 112 (when the touch sensing surface and the display are combined), but in some embodiments, the device detects inputs on a touch sensing surface separate from the display, as shown in FIG. 4B. In some embodiments, this touch sensing surface (e.g., 451 in FIG. 4B) has a major axis (e.g., 452 in FIG. 4B) corresponding to a major axis (e.g., 453 in FIG. 4B) on the display (e.g., 450). According to these embodiments, the device detects contacts (e.g., 460 and 462 in FIG. 4B) with the touch sensing surface 451 at locations (e.g., in FIG. 4B, 460 corresponds to 468 and 462 corresponds to 470) corresponding to respective locations on the display. In this way, when the touch sensing surface is separate from the display, user inputs (e.g., contacts 460 and 462 and their movement) detected by the device on the touch sensing surface (e.g., 451 in FIG. 4B) are used by the device to operate the user interface on the display (e.g., 450 in FIG. 4B) of the multifunctional device. It should be understood that a similar method is optionally used for other user interfaces described herein.
[0113] In addition, although the following description mainly refers to finger inputs (e.g., finger contact, finger tap gesture, finger swipe gesture), in some embodiments, one or more of those finger inputs may be replaced by inputs from another input device (e.g., mouse-based input or stylus input). For example, a swipe gesture may optionally be replaced by a mouse click (e.g., instead of contact), and then the cursor is moved along the path of the swipe (e.g., instead of the movement of the contact). As another example, a tap gesture may optionally be replaced by a mouse click while the cursor is positioned over the location of the tap gesture (e.g., instead of stopping detecting contact following the detection of contact). Similarly, it will be understood that when multiple user inputs are detected simultaneously, multiple computer mice may be used simultaneously, optionally, or a mouse and finger contact may be used simultaneously.
[0114] As used herein, the term "affordance" refers to user-interactive graphical user interface objects that may be displayed on the display screens of devices 100, 300, and / or 500 (Figs. 1, 3, and 5). For example, images (e.g., icons), buttons, and text (e.g., hyperlinks) may each constitute an affordance.
[0115] As used herein, the term "focus selector" refers to an input element that indicates the current part of the user interface with which the user is interacting. In some implementations that include a cursor or other location marker, the cursor functions as a "focus selector" while it is over a particular user interface element (e.g., a button, window, slider, or other user interface element) when an input (e.g., a press-down input) is detected on a touch-sensitive surface (e.g., the touchpad 355 of FIG. 3, or the touch-sensitive surface 451 of FIG. 4B), and the particular user interface element is adjusted according to the detected input. In some implementations that include a touch screen display (e.g., the touch-sensitive display system 112 of FIG. 1A, or the touch screen 112 of FIG. 4A) that enables direct interaction with user interface elements on the touch screen display, a detected contact on the touch screen functions as a "focus selector" when the input (e.g., a press-down input by the contact) is detected on the touch screen at the location of 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, the focus is moved from one area of the user interface to another area of the user interface without a corresponding movement of the cursor or movement of the contact on the touch screen display (e.g., by moving the focus from one button to another button using a tab key or arrow keys). In these implementations, the focus selector moves according to the movement of the focus between different areas of the user interface. Regardless of the particular form the focus selector takes, the focus selector is, generally, a user interface element (or a contact on the touch screen display) that is controlled by the user to convey the user's intended (e.g., by indicating to the device the user interface element with which the user wishes to interact) interaction with the user interface of the user.For example, when a press-and-hold input is detected on a touch-sensing surface (e.g., a touchpad or a touch screen), the position of a focus selector (e.g., a cursor, a contact, or a selection box) over each button indicates that the user is attempting to activate each button (as opposed to other user interface elements shown on the device's display).
[0116] As used in the specification and claims, the term "characteristic strength" of a contact refers to a characteristic of the contact based on one or more strengths of the contact. In some embodiments, the characteristic strength is based on a plurality of strength samples. The characteristic strength is optionally based on a set of strength samples collected within a predetermined time period (e.g., 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10 seconds) for a predetermined number of strength samples, or a predetermined event (e.g., after detecting the contact, before detecting the lift-off of the contact, before or after detecting the start of movement of the contact, before detecting the end of the contact, before or after detecting an increase in the strength of the contact, and / or before or after detecting a decrease in the strength of the contact). The characteristic strength of the contact is optionally based on one or more of the maximum value of the strength of the contact, the median value (mean) of the strength of the contact, the average value (average) of the strength of the contact, the top 10 percentile values of the strength of the contact, the value that is half of the maximum value of the strength of the contact, the value that is 90 percent of the maximum value of the strength of the contact, etc. In some embodiments, the duration of the contact is used to determine the characteristic strength (e.g., when the characteristic strength is the average of the strength of the contact over time). In some embodiments, the characteristic strength is compared to a set of one or more strength thresholds to determine whether an operation has been performed by a user. For example, the set of one or more strength thresholds may include a first strength threshold and a second strength threshold. In this example, a first operation is performed as a result of a contact having a characteristic strength that does not exceed the first threshold, a second operation is performed as a result of a contact having a characteristic strength that exceeds the first threshold and does not exceed the second threshold, and a third operation is performed as a result of a contact having a characteristic strength that exceeds the second threshold. In some embodiments, the comparison between the characteristic strength and one or more thresholds is not used to determine whether to perform a first operation or a second operation, but is used to determine whether to perform one or more operations (e.g., whether to perform each operation, or to omit the performance of each operation).
[0117] In some embodiments, for the purpose of determining characteristic intensity, a portion of the gesture is identified. For example, the touch sensing surface may receive a continuous swipe contact that transitions from a starting position to an ending position where the intensity of the contact increases. In this example, the characteristic intensity of the contact at the ending position may be based only on a portion of the swipe contact (e.g., only the portion of the swipe contact at the ending position), rather than the entire continuous swipe contact. In some embodiments, a smoothing algorithm may be applied to the intensity of the swipe contact before determining the characteristic intensity of the contact. For example, the smoothing algorithm may optionally include one or more of a non - weighted moving average smoothing algorithm, a triangular smoothing algorithm, a median filter smoothing algorithm, and / or an exponential smoothing algorithm. In some situations, these smoothing algorithms exclude minor increases or decreases in the intensity of the swipe contact for the purpose of determining the characteristic intensity.
[0118] The intensity of a contact on the touch sensing surface may be characterized relative to one or more intensity thresholds, such as a contact detection intensity threshold, a light press intensity threshold, a deep press intensity threshold, and / or one or more other intensity thresholds. In some embodiments, the light press intensity threshold corresponds to the intensity at which the device will perform an operation typically associated with pressing a button on a physical mouse or clicking a trackpad. In some embodiments, the deep press intensity threshold corresponds to the intensity at which the device will perform an operation different from that typically associated with pressing a button on a physical mouse or clicking a trackpad. In some embodiments, if a contact is detected with a characteristic intensity below the light press intensity threshold (e.g., and above a slight contact detection intensity threshold below which the contact is no longer detected), the device will move the focus selector in accordance with the movement of the contact on the touch sensing surface without performing an operation associated with the light press intensity threshold or the deep press intensity threshold. Generally, unless otherwise specified, these intensity thresholds are consistent across different sets of user interface diagrams.
[0119] An increase in the characteristic strength of a contact from a strength below a light pressing strength threshold to a strength between the light pressing strength threshold and a deep pressing strength threshold may be referred to as a "light press" input. An increase in the characteristic strength of a contact from a strength below a deep pressing strength threshold to a strength above the deep pressing strength threshold may be referred to as a "deep press" input. An increase in the characteristic strength of a contact from a strength below a contact detection strength threshold to a strength between the contact detection strength threshold and the light pressing strength threshold may be referred to as the detection of a contact on the touch surface. A decrease in the characteristic strength of a contact from a strength above the contact detection strength threshold to a strength below the contact detection strength threshold may be referred to as the detection of a lift-off of the contact from the touch surface. In some embodiments, the contact detection strength threshold is zero. In some embodiments, the contact detection strength threshold is greater than zero.
[0120] In some embodiments described herein, one or more operations are performed in response to the detection of a gesture including respective pressing inputs, or in response to the detection of respective pressing inputs performed with respective contacts (or multiple contacts), and those respective pressing inputs are detected based at least in part on the detection of an increase in the strength of a contact (or multiple contacts) above a pressing input strength threshold. In some embodiments, each operation is performed in response to the detection of an increase in the strength of each contact (e.g., the "downstroke" of each pressing input) above the pressing input strength threshold. In some embodiments, a pressing input includes an increase in the strength of each contact above a pressing input strength threshold and a subsequent decrease in the strength of the contact below the pressing input strength threshold, and each operation is performed in response to the detection of a subsequent decrease in the strength of each contact below the pressing input threshold (e.g., the "upstroke" of each pressing input).
[0121] In some embodiments, the device employs intensity hysteresis to avoid spurious inputs sometimes referred to as "jitter", and the device defines or selects a hysteresis intensity threshold having a predefined relationship to the pressing input intensity threshold (e.g., the hysteresis intensity threshold is X intensity units lower than the pressing input intensity threshold, or the hysteresis intensity threshold is 75%, 90%, or some reasonable ratio of the pressing input intensity threshold). Thus, in some embodiments, a pressing input includes an increase in the intensity of each contact that exceeds the pressing input intensity threshold and a subsequent decrease in the intensity of the contact that falls below the hysteresis intensity threshold corresponding to the pressing input intensity threshold, and each operation is performed in response to detecting a subsequent decrease in the intensity of each contact that falls below its hysteresis intensity threshold (e.g., the "upstroke" of each pressing input). Similarly, in some embodiments, a pressing input is detected only when the device detects an increase in the intensity of a contact from an intensity below the hysteresis intensity threshold to an intensity above the pressing input intensity threshold and optionally a subsequent decrease in the intensity of the contact to an intensity below the hysteresis intensity, and each operation is performed in response to detecting that pressing input (e.g., an increase in the intensity of the contact or a decrease in the intensity of the contact, depending on the situation).
[0122] For ease of explanation, the description of an operation performed in response to or including a pressing input associated with a pressing input intensity threshold is optionally triggered in response to detecting any of an increase in the intensity of a contact that exceeds the pressing input intensity threshold, an increase in the intensity of a contact from an intensity below the hysteresis intensity threshold to an intensity above the pressing input intensity threshold, a decrease in the intensity of a contact that falls below the pressing input intensity threshold, and / or a decrease in the intensity of a contact that falls below the hysteresis intensity threshold corresponding to the pressing input intensity threshold. Additionally, in the examples described where an operation is described as being performed in response to detecting a decrease in the intensity of a contact that falls below the pressing input intensity threshold, the operation is optionally performed in response to detecting a decrease in the intensity of a contact that falls below a hysteresis intensity threshold that corresponds to the pressing input intensity threshold and is lower than the pressing input intensity threshold. 2. Structured Proposal
[0123] In embodiments of the present disclosure, an electronic device can structure contact information and calendar events proposed to a user from the user's messages. The proposed contact information and calendar events are searchable as if manually entered by the user, and the user can choose to add or ignore (e.g., reject) the proposed contact information and calendar events. In this way, the user's contact information and calendar events can be maintained with no or minimal effort on the user's part. Thereby, the user's time can be saved, productivity can be improved, and a more efficient human-machine interface can be generated. 2.1 Proposed Contact Information
[0124] FIG. 5A shows an exemplary data structure 502A for proposed contacts according to some embodiments. As shown in FIG. 5A, an electronic device 500 can associate (e.g., store) contact information 520A from a message 510 with a corresponding contact 530A. The message 510 can be any type of message that can be sent or received by a user of the device 500, such as, for example, an email, an instant message, a message via an application on the device 500, and can include any attachments to the message 510.
[0125] Contact information 520A can include information typically associated with a contact entry in an address book database, such as the name of an entity, a phone number, an address, a handle name of a business network or a social network, etc. Contact entries are typically systematized or indexed by an entity. Entities can include individuals, groups, organizations, enterprises, etc. Contact information 520A can be stored in any suitable format that can be recognized by an application such as contact module 137 to process the contact information 520A. Contact information 520 may also be formatted according to a standard protocol such as the CardDAV protocol. Thereby, on a network, updates or synchronization with other clients are possible.
[0126] In some embodiments, the specified contact information 520A can be associated with contact 530A in any one of three mutually exclusive states - a proposed state 540, an added state 550, and a rejected state 560. The proposed state 540 can indicate a state where the user has not yet confirmed or approved the addition of the contact information 520A to the contact. The added state 550 can indicate a state where the user has confirmed or approved the addition of the contact information 520A to the contact. The rejected state 560 can indicate a state where the user has rejected the addition of the contact information 520A to the contact. Contact 530A can also be associated with any one of these three states if all the associated contact information belongs to the same state.
[0127] In some embodiments, the added state 550 can be processed as a default state by device 500. The default state means that in order to indicate being in the added state 550, no additional data needs to be associated with such a contact. For example, a contact added by a user on device 500 can be defaulted to the added state 550.
[0128] In an embodiment where the additional state 550 is processed as the default state, the device 500 can associate data with the contact information 520A and indicate that the contact information 520A belongs to either the proposed state 540 or the rejected state 560. This data can take any suitable form such as metadata, and the metadata can be used by an application that processes the contact information 520A to recognize that the contact information 520A is in either the proposed state 540 or the rejected state 560. The device 500 can also associate data with the contact 530A and indicate that the contact 530A and all associated contact information belong to either the proposed state 540 or the rejected state 560.
[0129] By storing the contact information 520A in the proposed state 540, the device 500 can include the contact information proposed in the contact search (e.g., via an application operating on the device 500). To avoid user confusion, the device 500 can also indicate to the user that the contact information 520A is in the proposed state 540 by providing a visual indication (e.g., by labeling or highlighting) and / or by preventing the user from directly acting on the contact information 520A (e.g., by requiring additional input from the user before allowing the user to act on the contact information 520A). The input can refer to any suitable method of input such as touch, mouse, speech, etc.
[0130] By storing the contact information 520A in the rejected state 560, the device 500 can remember the previously proposed contact information that the user has rejected so as not to propose the contact information to the user again. The contact information 520A in the rejected state 560 can be ignored by an application that processes the contact information in the additional state 550 and the proposed state 540.
[0131] Device 500 can locally store contact information 520A on device 500 and refrain from synchronizing contact information 520A with a remote database until the contact information 520A is changed from the proposed state 540 to the added state 550. In other embodiments, the contact information 520A may be updated in the remote database while in the proposed state 540.
[0132] Device 500 can identify contact information 520A from structured or unstructured content in message 510. Structured content refers to content that has a formal system or structure arranged according to a predetermined format, such as an automated email provided by an online travel agency that lays out flight, hotel, and / or car reservation information in the same predetermined way (e.g., using the same HTML structure). In some embodiments, to identify contact information 520A from structured content, device 500 can use templates configured to recognize contact information in a specific format provided by such messages. In some embodiments, device 500 can add and / or update these templates on the network.
[0133] Unstructured content refers to content that does not have a formal system or structure, such as natural language content (e.g., someone stating in a message that they have a new number) and email signatures. To identify contact information 520A from unstructured content, device 500 can use a data detector configured to identify a predetermined reference to the contact information, such as a specific phrase, e.g., "I have obtained a new number. The number is <number>". Device 500 can also add and / or update these data detectors on the network. Device 500 can improve the predetermined reference relied upon by the data detector by cross-correlating the contact information on device 500 (e.g., within an address book database) with the language associated with that contact information on device 500 (e.g., within a message). Next, the correlated language can be used to increase the accuracy of the predetermined reference for subsequent use. The message content analyzed by device 500 can include any information, including message metadata, recognizable by device 500.
[0134] In some embodiments, the device receives an instruction (e.g., a user request) to initiate communication (e.g., a phone call, instant message, email) with a contact (e.g., an individual or business). The device determines that the contact is not in the device's address book. In response, the device identifies the location of contact information (e.g., a phone number, username, email address) based on one or more communications (e.g., instant messages, emails, calendar entries). That is, the device searches a database of possible contacts to distinguish the requested contact referenced in the instruction. Optionally, the device presents a ranked list of possible matching contacts and receives user input to select the intended contact. In response to the user input selecting the intended contact, the device may initiate communication (e.g., a phone call, instant message, email) with the intended contact. 2.2 Proposed Event Information
[0135] Figure 5B shows an exemplary data structure 502B for a proposed calendar event according to some embodiments. As shown in Figure 5B, the electronic device 500 can associate (e.g., store) event information 520B from a message 510 with a corresponding calendar event 530B. The message 510 can be any type of message that can be sent or received by a user of the device 500, such as, for example, an email, an instant message, a message via an application on the device, etc., and can include any attachments to the message.
[0136] The event information 520B can include information typically associated with calendar entries in a calendar database, such as time, date, location, etc. The event information 520B can be stored in any suitable format that can be recognized by an application, such as the calendar module 148, to process the event information 520B. The event information 520B may also be formatted according to a standard protocol, such as the CalDAV protocol. This allows for updates or synchronization with other clients over the network.
[0137] In some embodiments, the specified event information 520B can be associated with the calendar event 530B in any one of three mutually exclusive states - a proposed state 540, an added state 550, and a rejected state 560. The proposed state 540 can indicate a state where the user has not yet confirmed or approved the addition of the event information 520B to the calendar event. The added state 550 can indicate a state where the user has confirmed or approved the addition of the event information 520B to the calendar event. The rejected state 560 can indicate a state where the user has rejected the addition of the event information 520B to the calendar event. The calendar event 530B can also be associated with any one of these three states if all the associated calendar event information belongs to the same state.
[0138] In some embodiments, the additional state 550 can be processed as the default state by the device 500. The default state means that no additional data needs to be associated with such calendar events to indicate that it is in the additional state 550. For example, a calendar event added by a user on the device 500 can be defaulted to the additional state 550.
[0139] In embodiments where the additional state 550 is processed as the default state, the device 500 can associate data with the event information 520B to indicate that the event information 520B belongs to either the proposed state 540 or the rejected state 560. This data can take any suitable form such as metadata, which can be used by an application that processes the event information 520B to recognize that the event information 520B is in either the proposed state 540 or the rejected state 560. The device 500 can also associate data with the calendar event 530B to indicate that the calendar event 530B and all associated event information belong to either the proposed state 540 or the rejected state 560.
[0140] By storing the event information 520B in the proposed state 540, the device 500 can include the proposed event information in the search for calendar events (e.g., via an application operating on the device 500). To avoid confusing the user, the device 500 can also indicate to the user that the event information 520B is in the proposed state 540 by providing a visual indication to the user (e.g., by labeling or highlighting) and / or by preventing the user from directly acting on the event information 520B (e.g., by requiring additional input from the user before the user can act on the event information 520B). Input can refer to any suitable method of input such as touch, mouse, speech, etc.
[0141] By storing event information 520B in the rejection state 560, the device 500 can store the event information previously proposed and rejected by the user so as not to propose the event information to the user again. The event information 520B in the rejection state 560 can be ignored by the application that processes the event information in the addition state 550 and the proposal state 540.
[0142] The device 500 can store the event information 520B locally on the device 500 and refrain from synchronizing the event information 520B with the remote database until the event information 520B is changed from the proposal state 540 to the addition state 550. In other embodiments, the event information 520B may be updated in the remote database while in the proposal state 540.
[0143] The device 500 can identify the event information 520B from the structured or unstructured content in the message 510. Structured content refers to content that has a formal system or structure arranged according to a predetermined format, such as an automated email provided by an online travel agency that layouts flight, hotel, and / or car reservation information in the same predetermined way (e.g., using the same HTML structure). In some embodiments, to identify the event information 520B from the structured content, the device 500 can use templates configured to recognize event information in a specific format provided by such messages. In some embodiments, the device 500 can add and / or update these templates on the network.
[0144] Unstructured content refers to content that has no formal system or structure, such as natural language content (e.g., someone saying in a message that they plan to meet you somewhere at a certain time) and the signature of an email. To identify event information 520B from unstructured content, device 500 can use a data detector configured to identify a predetermined reference to event information, such as a specific phrase, e.g., "Meet me at <location> at <time>". Device 500 can also add and / or update these data detectors on the network. Device 500 can improve the predetermined reference relied upon by the data detector by cross-correlating the event information on device 500 (e.g., in a calendar database) with the language associated with that event information on device 500 (e.g., in a message). Next, the correlated language can be used to increase the accuracy of the predetermined reference for subsequent use. The content of the message analyzed by device 500 can include any information recognizable by device 500, including message metadata.
[0145] In some embodiments, the device identifies one or more communications (e.g., an email or other content) associated with a calendar event (e.g., a calendar event added by the user or an invitation to a received meeting accepted by the user). For example, the device may determine that a communication is associated with a calendar event if the communication describes an event with the same or a similar name, an event with the same or a similar date / time and / or duration, and / or an event at the same location. For another example, the device may determine that a communication is associated with a calendar event based on a calendar event that includes the same or a similar language used in the communication. The one or more communications and associated calendar events are analyzed and / or compared to more accurately identify candidate communications for which future calendar entries should be created or proposed. For example, machine learning techniques can be used to learn patterns of event creation by training / analyzing email messages (using support vector machines and corpora of email messages used to create calendar events) from the email messages underlying the events.
[0146] For example, the device can receive an email communication from an auto parts store that includes the language "Hello. Can you come to the parts store tomorrow to pick up the replacement part?" The email may also include an email signature that includes the location address of the parts store. Next, the user may manually create a calendar event that includes the language "Stop by the parts store to pick up the replacement part." The calendar event may also include the location address of the parts store as the location of the calendar event. Based on the email communication and the calendar event, the device can use machine learning to determine that this type of email communication requires a proposal for a calendar entry. The determination may be based on the similarity between "Stop by the parts store to pick up the replacement part" in the email communication and the calendar event, the similarity between the location address in the email communication and the calendar event, the similarity of the date / time specified in the email communication and the calendar event, or a combination of two or more of these.
[0147] In some examples, the device identifies event information from an instant message conversation (e.g., a conversation in SMS or text message), e.g., during the conversation. During the conversation, the device collects information related to the event. After the relevant part of the conversation (e.g., after a predetermined set of information has been collected), the device generates a proposed calendar event. In some embodiments, the proposed calendar event is updated based on messages in the conversation that are sent or received after the first proposed calendar event is generated. This conversation event creation technique enables the user to quickly and efficiently add events to the calendar based on messages in an instant message conversation.
[0148] For example, the device may display a conversation in an instant message between the user of the device and a representative of an auto parts store. The conversation may include a message from the representative that includes the language "Hello. Can you come to the parts store tomorrow to pick up replacement parts?" The conversation may also include a message from the representative that includes the location address of the parts store. The user may respond with "Yes. I'll come!" In response to the relevant part of the conversation (e.g., confirmation of the visit such as "Yes. I'll come!" or receipt of the time and place (location address) such as "tomorrow"), the device generates the proposed calendar information. If the device subsequently receives a message from the representative indicating an updated time (e.g., "Actually, we're closed tomorrow, but we're open this Friday"), location, or other event component, the device may update the proposed calendar event.
[0149] It should be recognized that the exemplary data structures 520A and 520B may be the same or different. For example, a single data structure may be used for the proposed contact as well as for the proposed calendar event. Alternatively, one data structure may be used for the proposed contact while a different data structure may be used for the proposed calendar event.
[0150] Also, it should be recognized that message 510 may be processed for only the proposed contact, only for the proposed calendar event, or for both the proposed contact and the proposed calendar event. When processed for both the proposed contact and the proposed calendar event, message 510 may be processed sequentially or in parallel for the proposed contact and the proposed calendar event. For example, message 510 may first be processed for the proposed contact and then for the proposed calendar event. Alternatively, message 510 and a copy of message 510 may be processed in parallel for the proposed contact and the proposed calendar event.
[0151] In some embodiments, a notification or reminder may be presented to the user (by visual notification, tactile notification, audible notification, or a combination of one or more notifications on device 500) based on event information identified from structured or unstructured content within a message or other media. In some embodiments, the notification or reminder may be presented to the user even if the event information is not associated with an added state. For example, the device may be able to remind the user to prepare luggage based on an email received about an upcoming camping trip, even if the camping trip is not added to the user's calendar. Thus, reminders may be presented for calendar entries, events, etc. in a proposed state (e.g., not explicitly approved or rejected). 3. User Interface and Related Processes
[0152] Figures 6A - 13 illustrate embodiments of a user interface ("UI") and related processes that may be implemented on device 500. In some embodiments, device 500 corresponds to device 100 or 300.
[0153] FIG. 6A and FIG. 6G illustrate exemplary user interfaces for providing proposed contacts and calendar events according to some embodiments.
[0154] In particular, FIG. 6A shows, for example, a display by the contact module 137 of the user interface corresponding to a contact that includes proposed contact information (i.e., contact information in the proposed state 540) after processing a message as described above. In this example, the contact is associated with the personal name John Appleseed and includes a company name ("Any Company Inc."), a work number ("405-555-1234"), and a mobile phone number ("405-123-6633"). The company name and the work number are confirmed items of the contact information and belong to the added state 550. The mobile phone number is a proposed item of the contact information and belongs to the proposed state 540.
[0155] The device 500 can provide a user interface object 600 (e.g., the word "Proposed") in the user interface to indicate to the user that the mobile phone number is a proposed item of the contact information and has not been approved by the user. Any suitable user interface object can be used for this purpose, and examples of the user interface object include a label, an icon, or other visual indication that the mobile phone number is a proposed item of the contact information. When the same contact includes items of contact information in the proposed state 540 and items of contact information in the added state 550, as in the case of FIG. 6A, the device 500 can display the item in the proposed state 540 below all the items in the added state 550 or at a lower priority position relative to the same item.
[0156] Device 500 can also prevent the user from directly invoking an application (e.g., phone module 138) that calls John Appleseed at the proposed number from this first user interface. For example, device 500 can provide text and / or a region associated with the proposed number having a visual appearance (e.g., a grayed-out appearance (not shown)) that is different from the approved items of contact information in order to indicate that selection by the user of the proposed number will not result in directly calling that number. Instead, when the user selects the proposed number, device 500 may replace the current user interface with a second user interface where the user can review the proposed number and place a call.
[0157] As shown in FIG. 6B, the second user interface (labeled "Review Proposal") includes a proposal portion 606 in the form of a banner that includes a user interface object 602 (labeled "Add to Contact") associated with the proposed number. Selecting the user interface object 602 by the user can cause the device 500 to add the proposed number to the contacts in the added state 550 (e.g., change the state of the proposed number from the proposed state 540 to the added state 550). Based on the user's selection of a mobile phone number or a similar display, such as the phone icon that appears next to the mobile phone number in the subsequent user interface, the device 500 can call an application (e.g., the phone module 138) to call John Appleseed with the proposed number. In some embodiments, the device 500 can maintain the mobile phone number in the proposed state 540 if the user does not select the user interface object 602 but selects the mobile phone number and a similar display (e.g., the user making a call to the proposed number is not treated as an implicit approval of the proposed number for the contact). In other embodiments, the device 500 can change the state of the mobile phone number to the added state 550 when the user selects the mobile phone number, even if the user did not select the user interface object 602 (e.g., the user making a call to the proposed number is treated as an implicit approval of the proposed number for the contact).
[0158] The second user interface in FIG. 6B also includes a user interface object 604 associated with the proposed number (labeled "Ignore"). Selection of the user interface object 604 by the user can cause the device 500 to stop displaying the user interface object 602. This cancellation of the display can eliminate the option to add the number to the contact. When the user interface object 604 is selected, the device 500 can change the status of the proposed number from the proposed state 540 to the rejected state 560. In the rejected state 560, the device 500 may be configured to no longer display or propose the proposed number in relation to this contact.
[0159] In addition, the second user interface in FIG. 6B includes a message portion 608 (labeled "Related Email") where the proposed number includes a portion of a message identified by the device 500. Thus, when providing an interface for reviewing the proposed contact information, the user interface of FIG. 6B can provide the user with the message context associated with the proposed contact information. As shown in FIG. 6B, the device 500 can display a limited portion of the email related to the portion containing the mobile phone number. When the user selects the displayed portion of the message, the device 500 can cause the message application (e.g., the email client module 140) to open the entire email to the user. In some embodiments, the entire email may be displayed along with the proposed contact information in a user interface corresponding to that shown in FIG. 6D.
[0160] FIG. 6C shows a user interface that is displayed in response to a user selecting the "Edit" user interface object in FIG. 6A. In this Edit user interface object, the user can also directly call the proposed number represented by the user interface object 610. The user interface object 610 is emphasized (i.e., bolded) to indicate that the number is in the proposed state 540. Any suitable visual display can be used to indicate that the user interface object 610 is in the proposed state 540.
[0161] FIG. 6D shows a screen that a user can view when a message (e.g., an email displayed by the email client module 140) is opened on device 500 by device 500 having the proposed contact information specified within the message. The user interface of FIG. 6D includes a proposal portion 612 and a message portion 614. The message portion 614 includes the content of the message received by device 500. The proposal portion 612 includes a user interface object corresponding to the specified entity (“John Appleseed”), a user interface object corresponding to the specified contact information (“405-123-6633”), and a user interface object 618 associated with the specified contact information (labeled “Add to Contacts”). The user interface object 618, when selected, causes the device to add the proposed number to the contacts in the added state 550. The proposal portion 612 includes a user interface object 620 associated with the specified contact information (labeled “Ignore”). The user interface object 620, when selected, causes device 500 to change the state of the specified contact information from the proposed state 540 to the rejected state 560. In the rejected state 560, device 500 may be configured to no longer display or propose the proposed contact information in relation to this contact. Selecting the specified contact information 616 of the proposal portion 612 above the “Ignore” and “Add to Contacts” tiles can result in a user interface corresponding to the contacts associated with the specified entity. For example, in this embodiment, device 500 can present contact information for “John Appleseed” within a user interface corresponding to that shown in FIG. 6A.
[0162] FIG. 6E shows a screen that a user can view when a device 500 having proposed event information specified within a message opens the message (e.g., an email displayed by the email client module 140) on the device 500. The user interface of FIG. 6E includes a proposal portion 620 and a message portion 622. The message portion 622 includes the content of the message received by the device 500. The proposal portion 620 includes a user interface object corresponding to the specified event information ("dinner", "sushi restaurant", "Friday, March 7", or "9:50 PM"), and a user interface object 626 (labeled "Add to Calendar") associated with the specified event information. When selected, the user interface object 626 causes the device 500 to add the proposed event information to a calendar event in the added state 550. The proposal portion 620 includes a user interface object 628 (labeled "Ignore") that, when selected, causes the device 500 to change the state of the specified event information from the proposed state 540 to the rejected state 560. In the rejected state 560, the device 500 may be configured to no longer display or propose the proposed event information in connection with this calendar event. Selecting the specified event information 624 of the proposal portion 620 above the "Ignore" and "Add to Calendar" tiles can result in a user interface (not shown) corresponding to a calendar event associated with the specified event information (e.g., displayed by the contact module 137) for the user to select a user interface object to add the proposed event information to a calendar event in the added state 550.
[0163] In some examples, the device may display a calendar event on the device's calendar. In this case, the calendar event corresponds to the event information in the proposed state 540. The calendar events in the proposed state 540 displayed on the device's calendar may optionally be grayed out to indicate that they are in the proposed state 540. The device may display details of the calendar event (e.g., when the user activates an affordance associated with the calendar event). The details of the calendar event may include at least a portion of the source of the event information (e.g., a portion of a communication such as an email that underlies the proposed event information). Alternatively or additionally, the device may, when activated, display an affordance that causes the device to display at least a portion of the communication (e.g., an email) that underlies the proposed event information. The displayed details of the proposed calendar event may also optionally include an affordance to ignore (or reject) the proposed calendar event or to accept the proposed calendar event. Thus, the user can view the proposed calendar events on the device's calendar, and the user can quickly and efficiently reject or accept the proposed calendar events.
[0164] Figure 6F shows a screen that a user can view when a message (e.g., an email displayed by the email client module 140) is opened on device 500 by the device 500 having a plurality of proposed contacts and / or calendar events identified within the message. The user interface of Figure 6F includes a proposal portion 630 and a message portion 632. The message portion 632 includes the content of the message as received by the device 500. The proposal portion 630 further includes an area selectable by the user that, when selected, causes the device 500 to display a subsequent user interface having a list of a plurality of instances of the identified contact or event information shown in Figure 6G. By restricting the proposal portion 630 of Figure 6F to a single banner rather than incorporating all of the proposals of Figure 6G within the user interface of Figure 6F, it can be prevented that the proposal portion of Figure 6F prevents the user from viewing and reading the message in the message portion.
[0165] Figure 6G shows a subsequent user interface having a list of proposed contact or event information identified within a message associated with the user interface of Figure 6F. As shown in Figure 6G, the proposals are organized by type (e.g., the proposed calendar events are grouped and the proposed contacts are grouped). Each proposal includes the functionality of "ignore" as well as "add to contact" and "add to calendar" described above. The user interface of Figure 6G also includes a user interface object 634 ("add all") that, when selected, causes the device 500 to add each of the groupings of the plurality of instances of the identified contact or event information to the corresponding contact or calendar event in the added state 550 (e.g., the two proposed calendar events shown in Figure 6G).
[0166] Figures 7A and 7B are flow diagrams of an exemplary process for generating proposed contacts according to some embodiments. The process may be executed in an electronic device (e.g., device 500).
[0167] The electronic device receives (702) a message (e.g., an e-mail in message portion 614 of FIG. 6D), and in the received message, can identify an entity (e.g., “John Appleseed” in FIG. 6D) and contact information associated with the entity (e.g., “405-123-6633” in FIG. 6D) (704). The device can determine (722) that a contact (e.g., contact 530A in FIG. 5A) associated with the identified entity does not exist among a plurality of contacts in a database (e.g., storage on device 500 such as an address book database). In response to this determination (724), the device can generate a contact associated with the entity. The generated contact includes the contact information and an indication (e.g., metadata) that the generated contact is a proposed contact (e.g., in proposed state 540). It should be noted that when the device generates a contact with the name “John Appleseed” as the proposed contact, each item of the contact information in the contact is shown as a proposed item of the contact information, stored in proposed state 540, or the entire contact as a whole is shown as the proposed contact and stored in proposed state 540. It should also be noted that any message on the device, such as a transmitted or received message, can be analyzed using the disclosed process.
[0168] In some embodiments, the identified entity is a name and the identified contact information is a phone number, an address, a handle name of a business network or a social network (706).
[0169] In some embodiments, the device can identify unstructured content in a message by recognizing a signature block in the message. For example, to identify entities and associated contact information in a message, the device can identify the signature block of the message and analyze the identified signature block for entities and contact information (708). The message may include an email, and the signature block may be the signature of the email (710). The email can include one or more previous emails in an email thread, and identifying the signature of the email can include analyzing one or more previous emails in the email thread (712). By expanding the citation layer of the email, the device can avoid misassociating the location of contact information in various emails in the email thread.
[0170] In some embodiments, the device can identify unstructured content in a message by searching for definitive phrases with a data detector. For example, to identify entities and associated contact information in a message, the device can identify one or more phrases in the message based on a collection of predetermined phrases and analyze the one or more identified phrases for entities and contact information (714). The device can update the collection of predetermined phrases across the network (716), which allows the device to continue using accurate phrases. The device can also downgrade one or more of the predetermined phrases as a result of a request to reject a proposed contact (718). That is, if a user continues to reject proposals identified by the use of certain phrases, those phrases may indicate inaccuracy. The device can also generate one or more of the predetermined phrases by correlating contact information in a database with a language associated with contact information on an electronic device (e.g., a message, a calendar event, etc.) (720). In this way, the device can determine which exact language within a message containing contact information, for example, causes a user to create or update a contact with the contact information.
[0171] In some embodiments, proposed contacts are searchable from the perspective of the data structure of FIG. 5A. For example, the device can receive a request for a contact (e.g., by a user searching for a contact via an application on the device) and search for the proposed contact in response to the request for the contact (726).
[0172] In some embodiments, the device can refrain from storing a proposed contact in a remote database on the network in response to the generation of the contact (728). For example, if the proposed contact is in the proposed state 540, the device can refrain from recommending the contact to an update or synchronization service (e.g., an application on the device) that enables the device to update the contact for multiple clients on the network.
[0173] In some embodiments, the device can receive a request to add a proposed contact to a database (e.g., FIG. 6D, "Add to Contact" 618) and, in response to the request, store the generated contact in the database without displaying that the generated contact is the proposed contact (e.g., change the state of the contact from the proposed state 540 to the added state 550) (730). In response to a request to add a proposed contact to a database, the device can store the generated contact in a remote database on the network without displaying that the generated contact is the proposed contact, e.g., by recommending the contact to an update or synchronization service (732).
[0174] In some embodiments, the device can receive a request to reject a proposed contact (e.g., FIG. 6D, "Ignore" 620) and, in response to the request to reject the proposed contact, prevent the proposed contact from being generated in the future as a result of the entity and contact information being identified in future messages (734). This is achieved by storing the rejected contact in the rejected state 560, and the device can know what has already been rejected.
[0175] FIGS. 8A and 8B are flow diagrams of an exemplary process for updating an existing contact with a proposed item of contact information, according to some embodiments. The process can be executed on an electronic device (e.g., device 500).
[0176] The electronic device receives (802) a message (e.g., an email within message portion 614 in FIG. 6D), and in the received message, identifies (804) an entity (e.g., “John Appleseed” in FIG. 6D) and an item of contact information associated with the entity (e.g., “405-123-6633” in FIG. 6D). The device can determine (822) that a contact (e.g., contact 530A in FIG. 5A) associated with the identified entity exists among a plurality of contacts in the database and that the contact does not include the identified item of contact information. In response to this determination (824), the device can update the contact to include a display (e.g., metadata) of the item of contact information and that the item of contact information is a proposed item of contact information (e.g., in proposed state 540). Note also that any message on the device, such as a sent or received message, can be analyzed using the disclosed process.
[0177] In some embodiments, the identified entity is a name and the identified item of contact information is a phone number, an address, a business network or a handle name of a social network (806).
[0178] In some embodiments, the device can identify unstructured content in a message by recognizing the signature in the message. For example, to identify associated items of entities and contact information in the message, the device can identify the signature block of the message and analyze the identified signature block for items of entities and contact information (808). The message may include an email, and the signature block may be the signature of the email (810). The email can include one or more previous emails in an email thread, and identifying the signature of the email can include analyzing one or more previous emails in the email thread (812). By expanding the citation layer of the email, the device can avoid misassociating the location of contact information in various emails in the email thread.
[0179] In some embodiments, the device can identify unstructured content in a message by searching for definitive phrases with a data detector. For example, to identify associated items of entities and contact information in a message, the device can identify one or more phrases in the message based on a collection of predetermined phrases and analyze the one or more identified phrases for items of entities and contact information (814). The device can update the collection of predetermined phrases across the network (816), which allows the device to continue using accurate phrases. The device can also downgrade one or more of the predetermined phrases as a result of a request to reject a proposed item of contact information (818). That is, if a user continues to reject proposals identified by the use of certain phrases, those phrases may indicate inaccuracy. The device can also generate one or more of the predetermined phrases by correlating contact information in a database with the language associated with the contact information on the electronic device (e.g., messages, calendar events, etc.) (820). In this way, the device can determine which exact language in a message containing contact information, for example, causes a user to create or update a contact with the contact information.
[0180] In some embodiments, proposed contacts are searchable from the perspective of the data structure of FIG. 5A. For example, the device can receive a request for a contact (e.g., by a user searching for a contact via an application on the device) and search for proposed items of contact information in response to the request for the contact (826).
[0181] In some embodiments, the device can refrain from storing proposed items of contact information in a remote database on the network in response to an update of the contact (828). When the proposed items of contact information are in a proposed state 540, the device can refrain from recommending the items of contact information to an update or synchronization service (e.g., an application on the device) that enables the device to update the contact for multiple clients on the network.
[0182] In some embodiments, the device receives a request to add a proposed item of contact information to the database (e.g., FIG. 6B, "Add to Contact" 602) and, in response to the request, can store the updated contact in the database without indicating that the item of contact information is the proposed item of contact information (e.g., change the state of the contact information from the proposed state 540 to the added state 550) (830). In response to a request to add a proposed item of contact information to the database, the device can store the updated contact in a remote database on the network without indicating that the item of contact information is the proposed item of contact information, e.g., by recommending the contact information to the update / synchronization service (832).
[0183] In some embodiments, the device receives a request to reject a proposed item of contact information (e.g., FIG. 6B, "Ignore" 604) and, in response to the request to reject the proposed item of contact information, can prevent the contact from being updated by the proposed item of contact information in the future as a result of the entity and the item of contact information being identified in a future message (834). This is achieved by storing the rejected contact information in a rejected state 560, and the device can know what has already been rejected.
[0184] FIGS. 9A and 9B are flow diagrams of an exemplary process for displaying contact information proposed as a contact, according to some embodiments. The process may be executed on an electronic device (e.g., device 500) having a display.
[0185] The electronic device receives (902) a message (e.g., an email within message portion 614 of FIG. 6D), and in the received message, can identify (904) an entity (e.g., “John Appleseed” of FIG. 6D) and contact information associated with the entity (e.g., “405-123-6633” of FIG. 6D). The device generates (906) a display (e.g., metadata) that the identified contact information is the proposed contact information, and can display (908) a first user interface (e.g., FIG. 6A) corresponding to the contact associated with the entity. The first user interface can include a first user interface object (e.g., “Proposed”) indicating that the identified contact information is the proposed contact information, based on the generated display.
[0186] In some embodiments, the device can prevent calling an application to contact the entity by an input corresponding to selection of the proposed contact information (e.g., in FIG. 6A, by selecting the proposed number, not making a call to that number) (910).
[0187] In some embodiments, the device detects an input corresponding to the selection of the proposed contact information in the first user interface, and in response to the detection, if selected, causes the electronic device to add the identified contact information to the database, and displays a second user interface (e.g., FIG. 6B) including a second user interface object (e.g., FIG. 6B, "Add to Contacts" 602) associated with the identified contact information (912). The second user interface can include a third user interface object (e.g., FIG. 6B, "Ignore" 604) associated with the identified contact information that, if selected, causes the electronic device to stop displaying the second user interface object (914). By displaying the second user interface, the device can stop displaying the first user interface (916). The device can stop displaying the first user interface object in response to the addition of the identified contact information to the database (918).
[0188] In some embodiments, the second user interface can display at least a portion of a message (e.g., FIG. 6B, "Related Email") (920). The device detects an input corresponding to the selection of the displayed message, and in response to the detection, can call an application (e.g., email client module 140) to open the message (e.g., FIG. 6D) (922). The message can be an email, and the application can be an email application (924).
[0189] In some embodiments, the device can detect an input corresponding to a selection of proposed contact information in a second user interface, and in response to the detection, call an application (e.g., the phone module 138) that contacts the entity using the identified contact information (926). In response to detecting an input corresponding to a selection of proposed contact information in the second user interface, the device can add the identified contact information to a database (e.g., change the status of the contact information from the proposed status 540 to the added status 550) (928). The device can stop displaying the first user interface object in response to adding the identified contact information to the database (918).
[0190] FIG. 10 shows a flowchart of an exemplary process for displaying proposed contact information with a message, according to some embodiments. The process can be executed on an electronic device (e.g., device 500) having a display.
[0191] The electronic device receives a message (e.g., an email in message portion 614 of FIG. 6D) (1002) and can identify an entity (e.g., "John Appleseed" in FIG. 6D) and contact information associated with the entity (e.g., "405-123-6633" in FIG. 6D) in the received message (1004). The message can be an email (1006). The identified entity can be a name, and the identified contact information can be a phone number, an address, a handle name of a business network or a social network (1008).
[0192] The device can display a first user interface corresponding to the received message (e.g., FIG. 6D) (1010). The first user interface includes a first portion (e.g., FIG. 6D, message portion 614) that includes the content of the message received by the electronic device, and a second portion that includes a first user interface object corresponding to the identified entity (e.g., FIG. 6D, "John Appleseed"), a second user interface object corresponding to the identified contact information (e.g., FIG. 6D, "405-123-6633"), and, when selected, causes the electronic device to add the identified contact information to a database (e.g., store the contact information as a contact), a third user interface object associated with the identified contact information (e.g., FIG. 6D, "Add to Contacts" 618). The second portion can include, when selected, a fourth user interface object associated with the identified contact information that causes the electronic device to stop displaying the third user interface object (e.g., FIG. 6D, "Ignore" 620) (1012).
[0193] FIGS. 11A and 11B are flow diagrams of an exemplary process for generating a proposed calendar event, according to some embodiments. The process can be executed on an electronic device (e.g., device 500).
[0194] The electronic device receives (1102) a message (e.g., an email in message portion 622 of FIG. 6E), and in the received message, can identify (1104) event information (e.g., “dinner”, “sushi restaurant”, “Friday, March 7th”, or “9:50 PM” in FIG. 6E). The device can generate (1122) a calendar event (e.g., calendar event 530B in FIG. 5B) associated with the identified event information, and the generated calendar event includes the event information and an indication (e.g., metadata) that the generated calendar event is a proposed calendar event (e.g., in proposed state 540).
[0195] In some embodiments, the identified event information is a date and time (1106).
[0196] In some embodiments, the device can identify structured content in a message by using a template configured to recognize contact information in a particular format provided by such a message. For example, to identify event information in a message, the device can identify the format of the content in the message, identify a template from a collection of predetermined templates configured to recognize event information in the format of the content in the message, and analyze the content with the identified template to determine event information (1108). The message may include an email, and the content may include a reservation (e.g., in FIG. 6E) (1110). The device can update (1112) the collection of predetermined templates on a network, and by this update, the device can continue to use accurate templates.
[0197] In some embodiments, the device can identify unstructured content in a message by searching the event information for references in the data detector. For example, to identify event information in a message, the device can identify one or more references to dates and times in the message based on a collection of predetermined references to dates and times, and analyze the one or more identified references to dates and times for event information (1114). The device can update the collection of predetermined references to dates and times on the network (1116), and by this update, the device can continue to use accurate references. The device can downgrade one or more of the predetermined references to dates and times as a result of a request to reject a proposed calendar event (1118). That is, if the user continues to reject proposals identified by the use of specific references to dates and times, these references may indicate that they are inaccurate. The device can generate one or more of the predetermined references to dates and times by correlating event information in a database containing multiple calendar events with the language associated with the event information on the electronic device (1120). In this way, the device can more accurately determine which language in a message containing event information, for example, causes the user to create or update a calendar event with the event information.
[0198] In some embodiments, proposed calendar events are searchable from the perspective of the data structure of FIG. 5. For example, the device can receive a request for a calendar event (e.g., by the user searching for a calendar event via an application on the device), and can search for the proposed calendar event in response to the request for the calendar event (1124).
[0199] In some embodiments, the device can refrain from storing a proposed calendar event in a remote database on the network in response to the generation of the calendar event (1126). For example, if the proposed calendar event is in the proposed state 540, the device can refrain from recommending the calendar event to an update or synchronization service (e.g., an application on the device) that enables the device to update the calendar event for a plurality of clients on the network.
[0200] In some embodiments, the device receives a request to add a proposed calendar event to a database that includes a plurality of calendar events (e.g., FIG. 6E, "Add to Calendar" 626) and, in response to the request, stores the generated calendar event in the database without indicating that the generated calendar event is the proposed calendar event (e.g., changes the state of the calendar event from the proposed state 540 to the added state 550) (1128). In response to a request to add a proposed calendar event to the database, the device can store the generated calendar event in a remote database on the network without indicating that the generated calendar event is the proposed calendar event, e.g., by recommending the calendar event to an update or synchronization service (1130).
[0201] In some embodiments, the device receives a request to reject a proposed calendar event (e.g., FIG. 6E, "Ignore" 628) and, in response to the rejection request, can prevent the proposed calendar event from being generated in the future as a result of the event information being specified in a future message (1132). This is achieved by storing the rejected event in the rejected state 560, and the device can know what has already been rejected.
[0202] FIG. 12 shows a flowchart of an exemplary process for displaying proposed event information along with a message, according to some embodiments. The process may be executed on an electronic device (e.g., device 500) having a display.
[0203] The electronic device receives (1202) a message (e.g., an email in FIG. 6E, message portion 622), and in the received message, can identify (1204) event information (e.g., “dinner,” “sushi restaurant,” “Friday, March 7,” or “9:50 PM” in FIG. 6E). The message may be an email (1206). The identified event information may be a date and time (1208).
[0204] The device can display (1210) a first user interface (e.g., FIG. 6E) corresponding to the received message. The first user interface includes a first portion (e.g., FIG. 6E, message portion 622) that includes the content of the message received by the electronic device, and a second portion that includes a first user interface object (e.g., “dinner,” “sushi restaurant,” “Friday, March 7,” or “9:50 PM” in FIG. 6E) corresponding to the identified event information, and a second user interface object (e.g., “Add to Calendar” 626 in FIG. 6E) associated with the identified event information that, when selected, causes the electronic device to add the identified event information to a database including a plurality of calendar events (e.g., store the event information as a calendar event). The second portion can include a third user interface object (e.g., “Ignore” 628 in FIG. 6E) associated with the identified event information that, when selected, causes the electronic device to stop displaying the second user interface object (1212).
[0205] FIG. 13 is a flow diagram of an exemplary process for displaying a plurality of proposed contacts or event information along with a message, according to some embodiments. The process may be executed on an electronic device (e.g., device 500) having a display.
[0206] The electronic device receives (1302) a message (e.g., an email in message portion 632 of FIG. 6F), and can identify (1304) a plurality of instances of contact or event information in the received message (e.g., “2 events, 1 contact” in the attached travel plan of FIG. 6F).
[0207] The device can display (1306) a first user interface (e.g., FIG. 6F) corresponding to the received message. The first user interface can include a first portion (e.g., message portion 632 of FIG. 6F) that includes the content of the message received by the electronic device, and a second portion (e.g., proposal portion 630 of FIG. 6F) that, when selected, causes the electronic device to display a second user interface (FIG. 6G) that includes a list of the plurality of instances of the identified contact or event information.
[0208] In some embodiments, the device can detect an input corresponding to a selection of the second portion of the first user interface, and in response to the detection, display a second user interface that includes a list of the plurality of instances of the identified contact or event information and a first user interface object (e.g., “Add to Calendar” or “Add to Contacts” in FIG. 6G) that, when selected, causes the electronic device to add the identified information to a database (e.g., store the event information as a calendar event or the contact information as a contact) (1308). The second user interface can include a second user interface object (e.g., FIG. 6G, “Ignore”) that, when selected for each of a plurality of instances of specified contact or event information, causes the electronic device to stop displaying a first user interface object (1310). The second user interface can include a third user interface object (e.g., FIG. 6G, “Add All” 634) that, when selected, causes the electronic device to add each of a plurality of groupings (e.g., calendar events or contacts) of the specified contact or event information to a database (1312). By displaying the second user interface, the display of the first user interface can be stopped (1314).
[0209] It should be understood that the particular order described for the operations in FIGS. 7A-13 is illustrative and is not intended to indicate that the described order is the only order in which the operations can be performed. One of ordinary skill in the art will recognize various ways to reorder the operations described herein. For the sake of brevity, these details are not repeated here. Further, note that aspects of processes 700-1300 (FIGS. 7-13) may be incorporated into each other.
[0210] The operations of the information processing process described above can be implemented by causing one or more functional modules of an information processing device such as a general-purpose processor or an application-specific chip to execute. All of these modules, combinations of these modules, and / or their combinations with general hardware (such as those described above with respect to FIGS. 1A, 1B, and 3) are included within the scope of protection of the present invention.
[0211] FIG. 14 shows exemplary functional blocks of an electronic device 1400 that, in some embodiments, implements the features described above. As shown in FIG. 14, the electronic device 1400 includes a display unit 1402 configured to display graphical objects, a touch sensing surface unit 1404 configured to receive user gestures, one or more RF units 1406 configured to detect an external electronic device and communicate with the device, and a processing unit 1408 coupled to the display unit 1402, the touch sensing surface unit 1404, and the RF units 1406.
[0212] In some embodiments, the processing unit 1408 is configured to support an operating system 1410 that executes one or more applications 1412. In some embodiments, the processing unit 1408 receives data from the RF unit 1406 representing an external device within range of the wireless communication, displays graphical user interface affordances on the touch sensing surface unit 1404, and launches an application on the device 1400 corresponding to an application running on the external device in response to detecting a contact on the displayed affordances.
[0213] The functional blocks of the device 1400 are optionally implemented by hardware, software, or a combination of hardware and software to execute the principles of the various embodiments described. It will be understood by those skilled in the art that the functional blocks described in FIG. 14 may optionally be combined or separated into sub-blocks to implement the principles of the various embodiments described. Accordingly, the description herein optionally supports any possible combination or division, or further definition, of the functional blocks described herein.
[0214] FIG. 15 shows, in some embodiments, an exemplary functional block of another electronic device 1500 that implements the features described above. As shown in FIG. 14, the electronic device 1500 includes a display unit 1402 configured to display graphical objects, a touch sensing surface unit 1504 configured to receive user gestures, one or more RF units 1506 configured to detect an external electronic device and communicate with that device, and a processing unit 1508 coupled to the display unit 1502, the touch sensing surface unit 1504, and the RF unit 1506.
[0215] In some embodiments, the processing unit 1508 is configured to support one or more units 1510 - 1520 that perform the various functions described above. For example, the receiving unit 1510 is configured to perform one or more of the receiving functions (e.g., receiving messages) described above. The identifying unit 1512 is configured to perform one or more of the identifying functions described above (e.g., identifying an entity and associated contact information in a received message, identifying event information in a received message, or identifying multiple instances of contact or event information in a received message). The determining unit 1514 is configured to perform one or more of the determining functions described above (e.g., determining that a contact associated with an identified entity does not exist among multiple contacts in a database, determining that a contact associated with an identified entity exists among multiple contacts in a database, and determining that a contact does not include a specified item of contact information). The generating unit 1516 is configured to perform one or more of the generating functions described above (e.g., generating a contact associated with an entity in response to a determination, generating a display indicating that specified contact information is proposed contact information, and generating a calendar event associated with specified event information). The updating unit 1518 is configured to perform one or more of the updating functions described above (e.g., updating a contact to include an item of contact information and a display indicating that the item of contact information is the proposed item of contact information in response to a determination). The display unit 1520 is configured to perform one or more of the displaying functions described above (e.g., displaying a first user interface corresponding to a contact associated with an entity or a received message on, for example, the display unit 1502).
[0216] The functional blocks of device 1500 are optionally implemented by hardware, software, or a combination of hardware and software to execute the principles of the various embodiments described. It will be understood by those skilled in the art that the functional blocks described in FIG. 15 may optionally be combined or separated into sub-blocks to implement the principles of the various embodiments described. Thus, the description herein optionally supports any possible combination or division of, or further definition for, the functional blocks described herein.
[0217] According to some embodiments, FIG. 16 shows a functional block diagram of an electronic device 1600 configured in accordance with the principles of the various embodiments described. The functional blocks of this device are optionally implemented by hardware, software, or a combination of hardware and software to perform the principles of the various embodiments described. It will be understood by those skilled in the art that the functional blocks described in FIG. 16 may optionally be combined or separated into sub-blocks to execute the principles of the various embodiments described. Thus, the description herein optionally supports any possible combination or division of, or further definition for, the functional blocks described herein.
[0218] As shown in FIG. 16, the electronic device 1600 includes one or more RF units 1606 configured to communicate with an external electronic device, and a processing unit 1608 coupled to the RF unit 1606. In some embodiments, the processing unit 1608 includes a receiving unit 1610, an identifying unit 1612, a determining unit 1614, a generating unit 1616, an analyzing unit 1618, an updating unit 1620, a downgrading unit 1622, a searching unit 1624, a memory suspension unit 1626, a memory unit 1628, and a preventing unit 1630.
[0219] The processing unit 1608 is configured to receive a message (e.g., by the receiving unit 1610), identify in the received message an entity and contact information associated with the entity (e.g., by the identifying unit 1612), determine (e.g., by the determining unit 1614) that the contact associated with the identified entity does not exist among a plurality of contacts in the database, and generate, in response to the determination, a contact associated with the entity (e.g., by the generating unit 1616), where the generated contact includes contact information and an indication that the generated contact is a proposed contact.
[0220] In some embodiments, the identified entity includes a name and the identified contact information includes a phone number, an address, a business, or a handle name of a social network.
[0221] In some embodiments, to identify, the processing unit 1608 is further configured to identify a signature block of the message (e.g., by the identifying unit 1612). The processing unit 1608 is further configured to analyze the identified signature block for the entity and the contact information (e.g., by the analyzing unit 1618).
[0222] In some embodiments, the message includes an email and the signature block includes an email signature.
[0223] In some embodiments, the email includes one or more previous emails in an email thread, and to identify the email signature, the processing unit 1608 is further configured to analyze one or more previous emails in the email thread (e.g., by the analyzing unit 1618).
[0224] In some embodiments, to identify, the processing unit 1608 is further configured to identify, in a message, one or more phrases based on the collection of predetermined phrases (e.g., by the identification unit 1612), and analyze the one or more identified phrases for entity and contact information (e.g., by the analysis unit 1618).
[0225] In some embodiments, the processing unit 1608 is further configured to update the collection of predetermined phrases on the network (e.g., by the update unit 1620).
[0226] In some embodiments, the processing unit 1608 is further configured to downgrade one or more of the predetermined phrases (e.g., by the downgrade unit 1622) as a result of a request to reject a proposed contact.
[0227] In some embodiments, the processing unit 1608 is further configured to generate one or more of the predetermined phrases (e.g., by the generation unit 1616) by cross-correlating the contact information in the database with the language associated with the contact information on the electronic device.
[0228] In some embodiments, the processing unit 1608 is further configured to receive a request for a contact (e.g., by the receiving unit 1610) and search for a proposed contact in response to the request for the contact (e.g., by the search unit 1624).
[0229] In some embodiments, the processing unit 1608 is further configured to refrain from storing a proposed contact in a remote database on the network (e.g., by the storage suspension unit 1626) in response to the generation of the contact.
[0230] In some embodiments, the processing unit 1608 receives a request to add a proposed contact to the database (e.g., by the receiving unit 1610), and in response to the request to add the proposed contact to the database, further configured to store the generated contact (e.g., by the storage unit 1628) in the database without indicating that the generated contact is the proposed contact.
[0231] In some embodiments, the processing unit 1608 is further configured to store the generated contact (e.g., by the storage unit 1628) in a remote database on the network without indicating that the generated contact is the proposed contact, in response to the request to add the proposed contact to the database.
[0232] In some embodiments, the processing unit 1608 receives a request to reject a proposed contact (e.g., by the receiving unit 1610), and in response to the request to reject the proposed contact, further configured to prevent the proposed contact from being generated in the future as a result of the entity and contact information being identified in future messages (e.g., by the prevention unit 1630).
[0233] The operations described above with reference to FIGS. 7A and 7B are optionally performed by the components shown in FIGS. 1A and 1B, or FIG. 16. For example, the receiving operation at block 702, the identifying operation at block 704, the determining operation at block 722, the generating operation at block 724, the receiving operation at block 726, and the memory self-control operation at block 728 can be performed by the event sorter 170, the event recognizer 180, and the event handler 190. The event monitor 171 within the event sorter 170 detects contacts on the touch-sensing display 112, and the event dispatcher module 174 distributes the event information to the application 136-1. Each event recognizer 180 of the application 136-1 compares the event information with its respective event definition 186 to determine whether a first contact at a first position on the touch-sensing surface corresponds to a predefined event or sub-event, such as the activation of an affordance on the user interface. When each predefined event or sub-event is detected, the event recognizer 180 activates the event handler 190 associated with the detection of the event or sub-event. The event handler 190 may utilize or call the data update 176 or the object update 177 to update the application internal state 192. In some embodiments, the event handler 190 accesses each GUI update 178 for updating what is displayed by the application. Similarly, it will be apparent to those skilled in the art how other processes can be performed based on the components shown in FIGS. 1A and 1B.
[0234] According to some embodiments, FIG. 17 shows a functional block diagram of an electronic device 1700 configured in accordance with the principles of the various embodiments described. The functional blocks of this device are optionally implemented by hardware, software, or a combination of hardware and software to perform the principles of the various embodiments described. It will be understood by those skilled in the art that the functional blocks described in FIG. 17 may optionally be combined or separated into sub-blocks to execute the principles of the various embodiments described. Thus, the description herein optionally supports any possible combination or division, or further definition, of the functional blocks described herein.
[0235] As shown in FIG. 17, the electronic device 1700 includes one or more RF units 1706 configured to communicate with an external electronic device, and a processing unit 1708 coupled to the one or more RF units 1706. In some embodiments, the processing unit 1708 includes a receiving unit 1710, an identifying unit 1712, a determining unit 1714, a generating unit 1716, an analyzing unit 1718, an updating unit 1720, a downgrading unit 1722, a searching unit 1724, a memory suspension unit 1726, a memory unit 1728, and a preventing unit 1730.
[0236] The processing unit 1780 is configured to receive a message (e.g., by the receiving unit 1710), identify, in the received message, an entity and an item of contact information associated with the entity (e.g., by the identifying unit 1712), determine (e.g., by the determining unit 1714) that a contact associated with the identified entity exists among a plurality of contacts in a database and that the contact does not include the identified item of contact information, and update the contact (e.g., by the updating unit 1720) in response to the determination to include a display of the item of contact information and that the item of contact information is a proposed item of contact information.
[0237] In some embodiments, the identified entity includes a name, and the identified items of contact information include a phone number, an address, a handle name of a business network or a social network.
[0238] In some embodiments, for identification, the processing unit 1708 is further configured to identify a signature block of the message (e.g., by the identification unit 1712), and analyze the identified signature block for the entity and the items of contact information (e.g., by the analysis unit 1718).
[0239] In some embodiments, the message includes an email, and the signature block includes the signature of the email.
[0240] In some embodiments, the email includes one or more previous emails in an email thread, and for identifying the signature of the email, the processing unit 1708 is further configured to analyze one or more previous emails in the email thread (e.g., by the analysis unit 1718).
[0241] In some embodiments, for identification, the processing unit 1708 is further configured to identify one or more phrases in the message based on the collection of predetermined phrases (e.g., by the identification unit 1712), and analyze the one or more identified phrases for the entity and the items of contact information (e.g., by the analysis unit 1718).
[0242] In some embodiments, the processing unit 1708 is further configured to update the collection of predetermined phrases on the network (e.g., by the update unit 1720).
[0243] In some embodiments, the processing unit 1708 is further configured to downgrade one or more of a predetermined set of phrases (e.g., by the downgrading unit 1722) as a result of a request to reject a proposed item of contact information.
[0244] In some embodiments, the processing unit 1708 is further configured to generate one or more of a predetermined set of phrases (e.g., by the generating unit 1716) by cross-correlating contact information in a database with a language associated with contact information on an electronic device.
[0245] In some embodiments, the processing unit 1708 is further configured to receive a request for a contact (e.g., by the receiving unit 1710) and, in response to the request for the contact, search for a proposed item of contact information (e.g., by the searching unit 1724).
[0246] In some embodiments, the processing unit 1708 is further configured to refrain from storing a proposed item of contact information in a remote database on a network (e.g., by the memory suspension unit 1726) in response to an update of the contact.
[0247] In some embodiments, the processing unit 1708 is further configured to receive a request to add a proposed item of contact information to a database (e.g., by the receiving unit 1710) and, in response to the request to add a proposed item of contact information to the database, store an updated contact (e.g., by the storing unit 1728) without displaying that the item of contact information is the proposed item of contact information in the database.
[0248] In some embodiments, the processing unit 1708 is further configured to store the updated contact in a remote database on the network (e.g., by the storage unit 1728) in response to a request to add the proposed item of contact information to the database, without displaying that the item of contact information is the proposed item of contact information.
[0249] In some embodiments, the processing unit 1708 receives (e.g., by the receiving unit 1710) a request to reject the proposed item of contact information, and in response to the request to reject the proposed item of contact information, further configured to prevent (e.g., by the prevention unit 1730) the contact from being updated in the future by the proposed item of contact information as a result of the entity and the item of contact information being identified in a future message.
[0250] The operations described above with reference to FIGS. 8A and 8B are optionally performed by the components shown in FIGS. 1A and 1B, or FIG. 17. For example, the receiving operation at block 802, the identifying operation at block 804, the determining operation at block 822, and the updating operation at block 824 can be performed by the event sorter 170, the event recognizer 180, and the event handler 190. The event monitor 171 within the event sorter 170 detects a contact on the touch sensing display 112, and the event dispatcher module 174 distributes event information to the application 136-1. Each event recognizer 180 of the application 136-1 compares the event information with its respective event definition 186 and determines whether the first contact at the first position on the touch sensing surface corresponds to a predefined event or sub-event, such as the activation of an affordance on the user interface. When each predefined event or sub-event is detected, the event recognizer 180 activates the event handler 190 associated with the detection of the event or sub-event. The event handler 190 may utilize or call the data update 176 or the object update 177 to update the application internal state 192. In some embodiments, the event handler 190 accesses each GUI update 178 for updating what is displayed by the application. Similarly, it will be apparent to those skilled in the art how other processes can be performed based on the components shown in FIGS. 1A and 1B.
[0251] According to some embodiments, FIG. 18 shows a functional block diagram of an electronic device 1800 configured in accordance with the principles of the various embodiments described. The functional blocks of this device are optionally implemented by hardware, software, or a combination of hardware and software to perform the principles of the various embodiments described. It will be understood by those skilled in the art that the functional blocks described in FIG. 18 may optionally be combined or separated into sub-blocks to execute the principles of the various embodiments described. Thus, the description herein optionally supports any possible combination or division, or further definition, of the functional blocks described herein.
[0252] As shown in FIG. 18, the electronic device 1800 includes a display unit 1802 configured to display graphical objects, one or more RF units 1806 configured to communicate with external electronic devices, and a processing unit 1808 coupled to the display unit 1802 and the one or more RF units 1806. In some embodiments, the processing unit 1808 includes a receiving unit 1810, an identifying unit 1812, a generating unit 1814, a displayable unit 1816, a preventing unit 1818, a detecting unit 1820, a calling unit 1822, and an additional unit 1824.
[0253] The processing unit 1808 is configured to receive a message (e.g., by the receiving unit 1810), identify an entity and contact information associated with the entity in the received message (e.g., by the identifying unit 1812), generate a display that the identified contact information is the proposed contact information (e.g., by the generating unit 1814), and enable the display of a first user interface corresponding to the contact associated with the entity (e.g., by the displayable unit 1816), where the first user interface includes a first user interface object indicating that the identified contact information is the proposed contact information based on the generated display.
[0254] In some embodiments, the processing unit 1808 is further configured to prevent (e.g., by the prevention unit 1818) an application that contacts an entity from being called with an input corresponding to the selection of the proposed contact information.
[0255] In some embodiments, the processing unit 1808 detects (e.g., by the detection unit 1820) an input corresponding to the selection of the proposed contact information in the first user interface, and in response to the detection of the input corresponding to the selection of the proposed contact information in the first user interface, if selected, causes the electronic device to add the identified contact information to the database and enables (e.g., by the display enabling unit 1816) the display of a second user interface including a second user interface object associated with the identified contact information.
[0256] In some embodiments, the second user interface includes a third user interface object associated with the identified contact information that, if selected, causes the electronic device to stop displaying the second user interface object.
[0257] In some embodiments, the display of the second user interface stops the display of the first user interface.
[0258] In some embodiments, the second user interface displays at least a portion of a message.
[0259] In some embodiments, the processing unit 1808 detects (e.g., by the detection unit 1820) an input corresponding to the selection of the displayed message, and in response to the detection of the input corresponding to the selection of the displayed message, is further configured to call (e.g., by the calling unit 1822) an application to open the message.
[0260] In some embodiments, the message includes an email, and the application includes an email application.
[0261] In some embodiments, the processing unit 1808 detects an input corresponding to the selection of the proposed contact information in the second user interface (e.g., by the detection unit 1820), and in response to the detection of the input corresponding to the selection of the proposed contact information in the second user interface, is further configured to call (e.g., by the calling unit 1822) an application that contacts the entity using the identified contact information.
[0262] In some embodiments, the processing unit 1808 is further configured to add the identified contact information to a database (e.g., by the adding unit 1824) in response to the detection of an input corresponding to the selection of the proposed contact information in the second user interface.
[0263] In some embodiments, the processing unit 1808 is further configured to abort the display of the first user interface object in response to the addition of the identified contact information to the database.
[0264] The operations described above with reference to FIGS. 9A and 9B are optionally performed by the components shown in FIGS. 1A and 1B, or FIG. 18. For example, the receiving operation at block 902, the identifying operation at block 904, the generating operation at block 906, and the displaying operation at block 908 may be performed by the event sorter 170, the event recognizer 180, and the event handler 190. The event monitor 171 of the event sorter 170 detects a contact on the touch-sensitive display 112, and the event dispatcher module 174 distributes the event information to the application 136-1. Each event recognizer 180 of the application 136-1 compares the event information with its respective event definition 186 and determines whether the first contact at the first position on the touch-sensitive surface corresponds to a predefined event or sub-event, such as the activation of an affordance on the user interface. When each predefined event or sub-event is detected, the event recognizer 180 activates the event handler 190 associated with the detection of the event or sub-event. The event handler 190 may utilize or call the data update 176 or the object update 177 to update the application internal state 192. In some embodiments, the event handler 190 accesses each GUI update 178 for updating what is displayed by the application. Similarly, it will be apparent to those skilled in the art how other processes can be performed based on the components shown in FIGS. 1A and 1B.
[0265] According to some embodiments, FIG. 19 shows a functional block diagram of an electronic device 1900 configured in accordance with the principles of the various embodiments described. The functional blocks of this device may optionally be implemented by hardware, software, or a combination of hardware and software to perform the principles of the various embodiments described. It will be understood by those skilled in the art that the functional blocks described in FIG. 19 may optionally be combined or separated into sub-blocks to execute the principles of the various embodiments described. Thus, the description herein optionally supports any possible combination or division, or further definition, of the functional blocks described herein.
[0266] As shown in FIG. 19, the electronic device 1900 includes a display unit 1902 configured to display graphical objects, one or more RF units 1906 configured to communicate with external electronic devices, and a processing unit 1908 coupled to the display unit 1902 and the one or more RF units 1906. In some embodiments, the processing unit 1908 includes a receiving unit 1910, an identifying unit 1912, and a display enabling unit 1914.
[0267] The processing unit 1908 is configured to receive a message (e.g., by the receiving unit 1910), identify an entity and contact information associated with the entity in the received message (e.g., by the identifying unit 1912), and enable the display of a first user interface corresponding to the received message (e.g., by the display enabling unit 1914). The first user interface includes a first part that includes the content of the message received by the electronic device, and a second part that includes a first user interface object corresponding to the identified entity, a second user interface object corresponding to the identified contact information, and a third user interface object associated with the identified contact information that, when selected, causes the electronic device to add the identified contact information to the database.
[0268] In some embodiments, the second part includes a fourth user interface object associated with the identified contact information that, when selected, causes the electronic device to stop displaying the third user interface object.
[0269] In some embodiments, the message includes an email.
[0270] In some embodiments, the identified entity includes a name, and the identified contact information includes a phone number, an address, a handle name of a business network or a social network.
[0271] The operations described above with reference to FIG. 10 are optionally executed by the components shown in FIGS. 1A and 1B, or FIG. 19. For example, the receiving operation at block 1002, the specifying operation at block 1004, and the displaying operation at block 1010 may be executed by the event sorter 170, the event recognizer 180, and the event handler 190. The event monitor 171 of the event sorter 170 detects a contact on the touch-sensing display 112, and the event dispatcher module 174 distributes the event information to the application 136-1. Each event recognizer 180 of the application 136-1 compares the event information with the respective event definition 186 and determines whether the first contact at the first position on the touch-sensing surface corresponds to a predefined event or sub-event, such as the activation of an affordance on the user interface. When each predefined event or sub-event is detected, the event recognizer 180 activates the event handler 190 associated with the detection of the event or sub-event. The event handler 190 may utilize or call the data update 176 or the object update 177 to update the application internal state 192. In some embodiments, the event handler 190 accesses the respective GUI update 178 for updating what is displayed by the application. Similarly, it will be apparent to those skilled in the art how other processes can be executed based on the components shown in FIGS. 1A and 1B.
[0272] According to some embodiments, FIG. 20 shows a functional block diagram of an electronic device 2000 configured in accordance with the principles of the various embodiments described. The functional blocks of this device are optionally implemented by hardware, software, or a combination of hardware and software to perform the principles of the various embodiments described. It will be understood by those skilled in the art that the functional blocks described in FIG. 20 may optionally be combined or separated into sub-blocks to execute the principles of the various embodiments described. Accordingly, the description herein optionally supports any possible combination or division, or further definition, of the functional blocks described herein.
[0273] As shown in FIG. 20, the electronic device 2000 includes one or more RF units 2006 configured to communicate with an external electronic device, and a processing unit 2008 coupled to the one or more RF units 2006. In some embodiments, the processing unit 2008 includes a receiving unit 2010, an identifying unit 2012, a generating unit 2014, an analyzing unit 2016, an updating unit 2018, a downgrading unit 2020, a searching unit 2022, a memory control unit 2024, a memory unit 2026, and a preventing unit 2028.
[0274] The processing unit 2008 is configured to receive a message (e.g., by the receiving unit 2010), identify event information in the received message (e.g., by the identifying unit 2012), and generate a calendar event associated with the identified event information (e.g., by the generating unit 2014), and the generated calendar event includes the event information and an indication that the generated calendar event is a proposed calendar event.
[0275] In some embodiments, the identified event information includes a date and a time.
[0276] In some embodiments, to identify, the processing unit 2008 identifies the format of the content in the message (e.g., by the identification unit 2012), and from the collection of predetermined templates configured to recognize event information in the format of the content in the message, identifies a template (e.g., by the identification unit 2012), and is further configured to analyze the event information about the content by the identified template (e.g., by the analysis unit 2016).
[0277] In some embodiments, the message includes an email and the content includes a reservation.
[0278] In some embodiments, the processing unit 2008 is further configured to update the collection of predetermined templates on the network (e.g., by the update unit 2018).
[0279] In some embodiments, to identify, the processing unit 2008 identifies one or more references to a date and time in the message (e.g., by the identification unit 2012) based on the collection of predetermined references to the date and time, and is further configured to analyze the one or more identified references to the date and time against the event information (e.g., by the analysis unit 2016).
[0280] In some embodiments, the processing unit 2008 is further configured to update the collection of predetermined references to the date and time on the network (e.g., by the update unit 2018).
[0281] In some embodiments, as a result of a request to reject a proposed calendar event, the processing unit 2008 is further configured to downgrade one or more of the predetermined references to the date and time (e.g., by the downgrade unit 2020).
[0282] In some embodiments, the processing unit 2008 is further configured to generate one or more of a predetermined reference to a date and time (e.g., by the generation unit 2014) by cross-correlating event information in a database including a plurality of calendar events with the language associated with the event information on the electronic device.
[0283] In some embodiments, the processing unit 2008 is further configured to receive a request for a calendar event (e.g., by the receiving unit 2010) and, in response to the request for the calendar event, search for a proposed calendar event (e.g., by the search unit 2022).
[0284] In some embodiments, the processing unit 2008 is further configured to refrain from storing a proposed calendar event in a remote database on the network (e.g., by the memory suspension unit 2024) in response to the generation of the calendar event.
[0285] In some embodiments, the processing unit 2008 is further configured to receive a request to add a proposed calendar event to a database including a plurality of calendar events (e.g., by the receiving unit 2010) and, in response to the request to add the proposed calendar event to the database, store the generated calendar event (e.g., by the memory unit 2026) without displaying that the generated calendar event is the proposed calendar event in the database.
[0286] In some embodiments, the processing unit 2008 is further configured to store the generated calendar event (e.g., by the memory unit 2026) in a remote database on the network without displaying that the generated calendar event is the proposed calendar event in response to the request to add the proposed calendar event to the database.
[0287] In some embodiments, the processing unit 2008 receives a request to reject a proposed calendar event (e.g., by the receiving unit 2010), and in response to the request to reject the proposed calendar event, is further configured to prevent (e.g., by the prevention unit 2028) the proposed calendar event from being generated in the future as a result of the event information being specified within a future message.
[0288] The operations described above with reference to FIGS. 11A and 11B are optionally performed by the components shown in FIGS. 1A and 1B, or FIG. 20. For example, the receiving operation at block 1102, the identifying operation at block 1104, and the generating operation at block 1122 may be performed by the event sorter 170, the event recognizer 180, and the event handler 190. The event monitor 171 of the event sorter 170 detects a contact on the touch-sensitive display 112, and the event dispatcher module 174 distributes the event information to the application 136-1. Each event recognizer 180 of the application 136-1 compares the event information with its respective event definition 186 to determine whether a first contact at a first position on the touch-sensitive surface corresponds to a predefined event or sub-event, such as the activation of an affordance on the user interface. When each predefined event or sub-event is detected, the event recognizer 180 activates an event handler 190 associated with the detection of the event or sub-event. The event handler 190 may utilize or call the data update 176 or the object update 177 to update the internal state 192 of the application. In some embodiments, the event handler 190 accesses respective GUI updates 178 to update what is displayed by the application. Similarly, it will be apparent to those skilled in the art how other processes can be performed based on the components shown in FIGS. 1A and 1B.
[0289] According to some embodiments, FIG. 21 shows a functional block diagram of an electronic device 2100 configured in accordance with the principles of the various embodiments described. The functional blocks of this device are optionally implemented by hardware, software, or a combination of hardware and software to perform the principles of the various embodiments described. It will be understood by those skilled in the art that the functional blocks described in FIG. 21 may optionally be combined or separated into sub-blocks to perform the principles of the various embodiments described. Thus, the description herein optionally supports any possible combination or division of, or further definition of, the functional blocks described herein.
[0290] As shown in FIG. 21, the electronic device 2100 includes a display unit 2102 configured to display graphical objects, one or more RF units 2106 configured to communicate with external electronic devices, and a processing unit 2108 coupled to the display unit 2102 and the one or more RF units 2106. In some embodiments, the processing unit 2108 includes a receiving unit 2110, an identifying unit 2112, and a display enabling unit 2114.
[0291] The processing unit 2108 is configured to receive a message (e.g., by the receiving unit 2110), identify event information in the received message (e.g., by the identifying unit 2112), and enable the display of a first user interface corresponding to the received message (e.g., by the display enabling unit 2114), the first user interface including a first portion including the content of the message received by the electronic device and a second portion including a first user interface object corresponding to the identified event information and, if selected, a second user interface object associated with the identified event information that causes the electronic device to add the identified event information to a database including a plurality of calendar events.
[0292] In some embodiments, the second portion, when selected, includes a third user interface object associated with specified event information that causes the electronic device to cease displaying a second user interface object.
[0293] In some embodiments, the message includes an email.
[0294] In some embodiments, the specified event information includes a date and time.
[0295] The operations described above with reference to FIG. 12 are optionally performed by the components shown in FIGS. 1A and 1B, or FIG. 21. For example, the receiving operation at block 1202, the identifying operation at block 1204, and the displaying operation at block 1210 may be performed by the event sorter 170, the event recognizer 180, and the event handler 190. The event monitor 171 within the event sorter 170 detects contacts on the touch-sensing display 112, and the event dispatcher module 174 distributes event information to the application 136-1. Each event recognizer 180 of the application 136-1 compares the event information with its respective event definition 186 to determine whether a first contact at a first position on the touch-sensing surface corresponds to a predefined event or sub-event, such as the activation of an affordance on the user interface. When each predefined event or sub-event is detected, the event recognizer 180 activates an event handler 190 associated with the detection of the event or sub-event. The event handler 190 may utilize or call data update 176 or object update 177 to update the application internal state 192. In some embodiments, the event handler 190 accesses respective GUI update 178 for updating what is displayed by the application. Similarly, it will be apparent to those skilled in the art how other processes can be performed based on the components shown in FIGS. 1A and 1B.
[0296] According to some embodiments, FIG. 22 shows a functional block diagram of an electronic device 2200 configured in accordance with the principles of the various embodiments described. The functional blocks of this device are optionally implemented by hardware, software, or a combination of hardware and software to perform the principles of the various embodiments described. It will be understood by those skilled in the art that the functional blocks described in FIG. 22 may optionally be combined or separated into sub-blocks to execute the principles of the various embodiments described. Thus, the description herein optionally supports any possible combination or division, or further definition, of the functional blocks described herein.
[0297] As shown in FIG. 22, the electronic device 2200 includes a display unit 2202 configured to display graphical objects, one or more RF units 2206 configured to communicate with external electronic devices, and a processing unit 2208 coupled to the display unit 2202 and the one or more RF units 2206. In some embodiments, the processing unit 2208 includes a receiving unit 2210, an identifying unit 2212, a displayable unit 2214, and a detecting unit 2216.
[0298] The processing unit 2208 is configured to receive a message (e.g., by the receiving unit 2210), identify a plurality of cases of contact or event information in the received message (e.g., by the identifying unit 2212), and enable the display of a first user interface corresponding to the received message (e.g., by the displayable unit 2214), the first user interface including a first portion including the content of the message received by the electronic device and a second portion that, when selected, causes the electronic device to display a second user interface including a list of the plurality of cases of the identified contact or event information.
[0299] In some embodiments, the processing unit 2208 detects an input corresponding to the selection of the second portion of the first user interface (e.g., by the detection unit 2216), and in response to the detection of the input corresponding to the selection of the second portion of the first user interface, a list of a plurality of instances of the specified contact or event information, and for each of the plurality of instances of the specified contact or event information, if selected, causes the electronic device to add the specified information to the database, and a first user interface object, and further configured to enable the display of the second user interface (e.g., by the display enabling unit 2214).
[0300] In some embodiments, the second user interface includes a second user interface object that, for each of the plurality of instances of the specified contact or event information, if selected, causes the electronic device to stop displaying the first user interface object.
[0301] In some embodiments, the second user interface includes a third user interface object that, if selected, causes the electronic device to add each of the groupings of the plurality of instances of the specified contact or event information to the database.
[0302] In some embodiments, the display of the second user interface causes the display of the first user interface to be stopped.
[0303] The operations described above with reference to FIG. 13 are optionally performed by the components shown in FIGS. 1A and 1B, or FIG. 22. For example, the receiving operation at block 1302, the identifying operation at block 1304, and the displaying operation at block 1306 can be performed by the event sorter 170, the event recognizer 180, and the event handler 190. The event monitor 171 within the event sorter 170 detects contacts on the touch-sensing display 112, and the event dispatcher module 174 distributes the event information to the application 136-1. Each event recognizer 180 of the application 136-1 compares the event information with its respective event definition 186 to determine whether a first contact at a first position on the touch-sensing surface corresponds to a predefined event or sub-event, such as the activation of an affordance on the user interface. When each predefined event or sub-event is detected, the event recognizer 180 activates the event handler 190 associated with the detection of the event or sub-event. The event handler 190 may utilize or call the data update 176 or the object update 177 to update the application internal state 192. In some embodiments, the event handler 190 accesses each GUI update 178 for updating what is displayed by the application. Similarly, it will be apparent to those skilled in the art how other processes can be performed based on the components shown in FIGS. 1A and 1B.
[0304] The foregoing description has been presented for purposes of illustration and description with reference to particular embodiments. However, the foregoing exemplary description is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Numerous modifications and variations are possible in light of the above teachings. Embodiments were chosen and described in order to best explain the principles of the technology and its practical application to thereby enable those skilled in the art to best utilize the technology and various embodiments with various modifications as are suited to the particular use contemplated.
[0305] Although the present disclosure and examples have been fully described with reference to the accompanying drawings, it should be noted that various changes and modifications will be apparent to those skilled in the art. Such changes and modifications should be understood to be included within the scope of the present disclosure and examples as defined by the claims.
[0306] As described above, one aspect of the present technology is the collection and use of data available from various sources to improve the delivery of attractive content or any other content that a user may be interested in to the user. It is contemplated that in some examples, the collected data may include personal information data that can be used to uniquely identify a particular person, or to contact or locate that person. Such personal information data may include location-dependent data, demographic data, phone numbers, email addresses, home addresses, or any other identifying information.
[0307] The present disclosure recognizes that in the present technology, such personal information data can be used to benefit the user. For example, personal information data can be used to deliver content for purposes that are more interesting to the user. Thus, the use of such personal information data enables the quantitative management of the content to be delivered. Still further, other uses of personal information data that benefit the user are also contemplated by the present disclosure.
[0308] The present disclosure further contemplates that entities responsible for the collection, analysis, disclosure, transmission, storage, or other use of such personal information data will comply with personal information protection policies and / or privacy practices established by them. In particular, such entities should implement and consistently use personal information protection policies and privacy practices that meet or exceed industry or government requirements in order to maintain personal information data confidentially and securely. For example, personal information from users should be collected for legitimate and proper use by that entity and should not be shared or sold except for such legitimate use. Furthermore, such collection should be carried out only after informing and obtaining consent from the users. Furthermore, such entities should protect and secure access to such personal information data and take all necessary measures to ensure that others with access to such personal information data comply with their personal information protection policies and procedures. Furthermore, such entities should be able to undergo evaluation by a third party to prove their compliance with widely accepted personal information protection policies and privacy practices.
[0309] Notwithstanding the foregoing, the present disclosure also contemplates embodiments in which a user can selectively block the use of personal information data or access to personal information data. That is, the present disclosure contemplates that hardware elements and / or software elements can be provided to prevent or block access to such personal information data. For example, in the case of an advertising delivery service, this technology can be configured to allow a user to select an "opt-in" or "opt-out" for participation in the collection of personal information data during service registration. In another example, a user can choose not to provide location information for a targeted content delivery service. In yet another embodiment, a user can choose not to provide accurate location information but to permit the transmission of location zone information.
[0310] Therefore, while the present disclosure broadly encompasses the use of personal information data for implementing one or more of the various disclosed embodiments, the present disclosure also contemplates that those various embodiments can also be implemented without the need to access such personal information data. That is, the various embodiments of the present technology are not rendered impossible by the lack of all or a portion of such personal information data. For example, by inferring selections based on non-personal information data or minimal necessary personal information (e.g., content requested by a device associated with the user, other non-personal information available to the content delivery service, or information available to the public), content can be selected and delivered to the user.
Claims
1. In electronic devices, Receiving a message; and identifying an entity and contact information associated with the entity in the received message; determining that a contact associated with the identified entity is not present among a plurality of contacts in a database; and generating a contact associated with the entity in response to the determining, the generated contact including the contact information and an indication that the generated contact is a suggested contact.
2. The method of claim 1 , wherein the identified entity includes a name and the identified contact information includes a phone number, an address, a business network, or a social network handle.
3. The method of claim 1 or 2, wherein the identifying comprises identifying a signature block of the message and analyzing the identified signature block for the entity and the contact information.
4. The method of claim 3 , wherein the message comprises an email and the signature block comprises an email signature.
5. 5. The method of claim 4, wherein the email includes one or more previous emails in an email thread, and identifying the email signature includes analyzing the one or more previous emails in the email thread.
6. The identifying step includes: identifying one or more phrases in the message based on a collection of predetermined phrases; and analyzing the one or more identified phrases for the entity and the contact information.
7. 7. The method of claim 6, further comprising updating said collection of predetermined phrases over a network.
8. 8. The method of claim 6 or 7, comprising downgrading one or more of the predefined phrases as a result of a request to reject the suggested contact.
9. 9. The method of claim 6, further comprising generating one or more of the predetermined phrases by cross-correlating contact information in the database with language associated with contact information on the electronic device.
10. Receiving a request for contacts; 10. The method of claim 1, further comprising: retrieving the suggested contacts in response to a request for a contact.
11. 11. The method of claim 1, comprising refraining from storing the suggested contact in a remote database on a network in response to generating the contact.
12. receiving a request to add the suggested contact to the database; 12. The method of claim 1, further comprising: in response to the request to add the suggested contact to the database, storing the created contact in the database without indicating that the created contact is a suggested contact.
13. 13. The method of claim 12, including, in response to the request to add the suggested contact to the database, storing the generated contact in a remote database on a network without indicating that the generated contact is a suggested contact.
14. receiving a request to reject the suggested contacts; and in response to the request to reject the suggested contacts, preventing the suggested contacts from being generated in the future as a result of the entity and the contact information being identified in future messages.
15. 1. An electronic device comprising: one or more processors; Memory, and one or more programs stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for performing the method of any one of claims 1 to 14.
16. 15. A computer readable storage medium storing one or more programs comprising instructions that, when executed by an electronic device, cause the device to perform the method of any one of claims 1 to 14.
17. A system comprising means for carrying out the method according to any one of claims 1 to 14.
18. A means for receiving a message; means for identifying an entity and contact information associated with the entity in the received message; means for determining that a contact associated with the identified entity is not present among a plurality of contacts in a database; means for generating a contact associated with the entity in response to the determining, the generated contact including the contact information and an indication that the generated contact is a suggested contact.
19. In electronic devices, Receiving a message; and identifying an entity and an item of contact information associated with the entity in the received message; determining that a contact associated with the identified entity exists among a plurality of contacts in a database, and that the contact does not include the identified item of contact information; and in response to the determining, updating the contact to include the item of contact information and an indication that the item of contact information is a suggested item of contact information.
20. 20. The method of claim 19, wherein the identified entity includes a name and the identified items of contact information include a phone number, an address, a business network or a social network handle.
21. 21. The method of claim 19 or 20, wherein said identifying comprises identifying a signature block of the message and analyzing the identified signature block for the entity and the item of contact information.
22. 22. The method of claim 21, wherein the message comprises an email and the signature block comprises an email signature.
23. 23. The method of claim 22, wherein the email includes one or more previous emails in an email thread, and identifying the email signature includes analyzing the one or more previous emails in the email thread.
24. The identifying step includes: identifying one or more phrases in the message based on a collection of predetermined phrases; and analyzing the one or more identified phrases for the entity and the item of contact information.
25. 25. The method of claim 24, including updating the collection of predetermined phrases over a network.
26. 26. A method according to claim 24 or 25, comprising downgrading one or more of the predefined phrases as a result of a request to reject the suggested item of contact information.
27. 27. The method of any one of claims 24 to 26, comprising generating one or more of the predetermined phrases by cross-correlating contact information in the database with language associated with contact information on the electronic device.
28. Receiving a request for contacts; 28. A method according to any one of claims 19 to 27, comprising retrieving the suggested items of contact information in response to a request for the contact.
29. 29. A method according to any one of claims 19 to 28, comprising refraining from storing the suggested items of contact information in a remote database on a network in response to updating the contacts.
30. receiving a request to add the suggested item of contact information to the database; 30. The method of claim 19, further comprising: in response to the request to add the suggested item of contact information to the database, storing the updated contact in the database without indicating that the item of contact information is a suggested item of contact information.
31. 31. The method of claim 30, including, in response to the request to add the suggested item of contact information to the database, storing the updated contact in a remote database on a network without indicating that the item of contact information is a suggested item of contact information.
32. receiving a request to reject the suggested item of contact information; 32. The method of claim 19, further comprising: in response to the request to reject the suggested item of contact information, preventing the contact from being updated with the suggested item of contact information in future as a result of the entity and the item of contact information being identified in future messages.
33. 1. An electronic device comprising: one or more processors; Memory, and one or more programs stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for performing the method of any one of claims 19 to 32.
34. 33. A computer readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by an electronic device, cause the device to perform the method of any one of claims 19 to 32.
35. A system comprising means for carrying out the method according to any one of claims 19 to 32.
36. A means for receiving a message; means for identifying an entity and an item of contact information associated with the entity in the received message; means for determining that a contact associated with the identified entity exists among a plurality of contacts in a database, and that the contact does not include the identified item of contact information; and means for updating the contact to include the item of contact information and an indication that the item of contact information is a suggested item of contact information in response to the determining.
37. In an electronic device having a display, Receiving a message; and identifying an entity and contact information associated with the entity in the received message; generating an indication that the identified contact information is suggested contact information; and and displaying a first user interface corresponding to a contact associated with the entity, the first user interface including a first user interface object that indicates, based on the generated display, that the identified contact information is suggested contact information.
38. 40. The method of claim 37, wherein an input corresponding to a selection of the suggested contact information comprises preventing an application from being invoked to contact the entity.
39. detecting an input in the first user interface corresponding to a selection of the suggested contact information; 39. The method of claim 37 or 38, comprising: in response to detecting the input in the first user interface corresponding to a selection of the suggested contact information, displaying a second user interface including a second user interface object associated with the identified contact information that, when selected, causes the electronic device to add the identified contact information to a database.
40. 40. The method of claim 39, wherein the second user interface includes a third user interface object associated with the identified contact information that, when selected, causes the electronic device to cease displaying the second user interface object.
41. 41. The method of claim 39 or 40, wherein displaying the second user interface ceases displaying the first user interface.
42. 42. The method of any one of claims 39 to 41, wherein the second user interface displays at least a portion of the message.
43. detecting an input corresponding to a selection of the displayed message; 43. The method of claim 42, comprising in response to detecting the input corresponding to a selection of the displayed message, invoking an application that opens the message.
44. 44. The method of claim 43, wherein the message comprises an email and the application comprises an email application.
45. detecting an input in the second user interface corresponding to a selection of the suggested contact information; 45. The method of claim 39, further comprising: in response to detecting an input in the second user interface corresponding to a selection of the suggested contact information, invoking an application that contacts the entity using the identified contact information.
46. 46. The method of claim 45, comprising adding the identified contact information to the database in response to detecting the input in the second user interface corresponding to a selection of the suggested contact information.
47. 47. The method of claim 39 or 46, comprising ceasing to display the first user interface object in response to adding the identified contact information to the database.
48. 1. An electronic device comprising: Display and one or more processors; Memory, and one or more programs stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for performing the method of any one of claims 37 to 47.
49. 50. A computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by an electronic device having a display, cause the device to perform the method of any one of claims 37 to 47.
50. 48. A system comprising means for carrying out the method of any one of claims 37 to 47.
51. A means for receiving a message; means for identifying an entity and contact information associated with the entity in the received message; means for generating an indication that the identified contact information is suggested contact information; and means for displaying a first user interface corresponding to a contact associated with the entity, the first user interface including a first user interface object indicating that the identified contact information is suggested contact information based on the generated display.
52. In an electronic device having a display, Receiving a message; and identifying an entity and contact information associated with the entity in the received message; and displaying a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; A second portion, a first user interface object corresponding to the identified entity; a second user interface object corresponding to the identified contact information; and and a second portion including a third user interface object associated with the identified contact information that, when selected, causes the electronic device to add the identified contact information to a database.
53. 53. The method of claim 52, wherein the second portion includes a fourth user interface object associated with the identified contact information that, when selected, causes the electronic device to cease displaying the third user interface object.
54. 54. The method of claim 52 or 53, wherein the message comprises an email.
55. 55. The method of any one of claims 52 to 54, wherein the identified entity includes a name and the identified contact information includes a phone number, an address, a business network or a social network handle.
56. 1. An electronic device comprising: Display and one or more processors; Memory, and one or more programs stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for performing the method of any one of claims 52 to 55.
57. 56. A computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by an electronic device having a display, cause the device to perform the method of any one of claims 52 to 55.
58. 56. A system comprising means for carrying out the method of any one of claims 52 to 55.
59. A means for receiving a message; means for identifying an entity and contact information associated with the entity in the received message; means for displaying a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; A second portion, a first user interface object corresponding to the identified entity; a second user interface object corresponding to the identified contact information; and a second portion including a third user interface object associated with the identified contact information that, when selected, causes the electronic device to add the identified contact information to a database; and Including, the system.
60. In electronic devices, Receiving a message; and identifying event information in the received message; generating a calendar event associated with the identified event information, the generated calendar event including the event information and an indication that the generated calendar event is a suggested calendar event.
61. 61. The method of claim 60, wherein the identified event information includes a date and a time.
62. The identifying step includes: identifying a format of content in the message; identifying a template from a collection of predefined templates configured to recognize event information in a format of the content in the message; and analyzing the content according to the identified template for the event information.
63. 63. The method of claim 62, wherein the message comprises an email and the content comprises a reservation.
64. 64. A method according to claim 62 or 63, comprising updating the collection of predefined templates over a network.
65. The identifying step includes: identifying, in the message, one or more references to dates and times based on a predetermined collection of references to dates and times; 65. The method of any one of claims 60 to 64, comprising: analysing the one or more identified references to dates and times for the event information.
66. 66. The method of claim 65, including updating a collection of predetermined references to said date and time over a network.
67. 67. A method according to claim 65 or 66, comprising downgrading one or more of the predetermined references to dates and times as a result of a request to reject the proposed calendar event.
68. 68. A method according to any one of claims 65 to 67, comprising generating one or more of the predetermined references to the date and time by cross-correlating event information in a database comprising a plurality of calendar events with language associated with event information on the electronic device.
69. Receiving a request for a calendar event; 69. The method of any one of claims 60 to 68, comprising retrieving the suggested calendar events in response to a request for the calendar event.
70. 70. The method of any one of claims 60 to 69, comprising refraining from storing the proposed calendar event in a remote database on a network in response to generating the calendar event.
71. receiving a request to add the suggested calendar event to a database including a plurality of calendar events; 71. The method of claim 60, further comprising: in response to the request to add the suggested calendar event to the database, storing the generated calendar event in the database without indicating that the generated calendar event is a suggested calendar event.
72. 72. The method of claim 71, including, in response to a request to add the suggested calendar event to the database, storing the generated calendar event in a remote database on a network without indicating that the generated calendar event is a suggested calendar event.
73. receiving a request to reject the proposed calendar event; 73. The method of claim 60, further comprising: in response to the request to reject the proposed calendar event, preventing the proposed calendar event from being generated in the future as a result of the event information being identified in a future message.
74. 1. An electronic device comprising: one or more processors; Memory, and one or more programs stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for performing the method of any one of claims 60 to 73.
75. A computer readable storage medium storing one or more programs, the one or more programs comprising instructions that, when executed by an electronic device, cause the device to perform a method according to any one of claims 60 to 73.
76. 74. A system comprising means for carrying out the method of any one of claims 60 to 73.
77. A means for receiving a message; means for identifying event information in the received message; means for generating a calendar event associated with the identified event information, the generated calendar event including the event information and an indication that the generated calendar event is a suggested calendar event.
78. In an electronic device having a display, Receiving a message; and identifying event information in the received message; and displaying a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; A second portion, a first user interface object corresponding to the identified event information; and a second portion including a second user interface object associated with the identified event information that, when selected, causes the electronic device to add the identified event information to a database including a plurality of calendar events; and A method comprising:
79. 80. The method of claim 78, wherein the second portion includes a third user interface object associated with the identified event information that, when selected, causes the electronic device to cease displaying the second user interface object.
80. 80. The method of claim 78 or 79, wherein the message comprises an email.
81. 81. The method of any one of claims 78 to 80, wherein the identified event information includes a date and a time.
82. 1. An electronic device comprising: Display and one or more processors; Memory, and one or more programs stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for performing the method of any one of claims 78 to 81.
83. 82. A computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by an electronic device having a display, cause the device to perform the method of any one of claims 78 to 81.
84. 82. A system comprising means for carrying out the method of any one of claims 78 to 81.
85. A means for receiving a message; means for identifying event information in the received message; means for displaying a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; A second portion, a first user interface object corresponding to the identified event information; and a second portion including a second user interface object associated with the identified event information that, when selected, causes the electronic device to add the identified event information to a database including a plurality of calendar events; and Including, the system.
86. In an electronic device having a display, Receiving a message; and identifying a plurality of instances of contact or event information in the received message; and displaying a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; and a second portion that, if selected, causes the electronic device to display a second user interface including a list of multiple instances of the identified contact or event information.
87. Detecting an input corresponding to a selection of a second portion of the first user interface; in response to detecting the input corresponding to a selection of a second portion of the first user interface; a list of a plurality of instances of the identified contact or event information; and for each of a plurality of instances of the identified contact or event information, displaying the second user interface including a first user interface object that, when selected, causes the electronic device to add the identified information to a database.
88. 90. The method of claim 87, wherein the second user interface includes, for each of a plurality of instances of the identified contact or event information, a second user interface object that, when selected, causes the electronic device to cease displaying the first user interface object.
89. 89. The method of claim 87 or 88, wherein the second user interface includes a third user interface object that, when selected, causes the electronic device to add each of the groupings of multiple instances of identified contact or event information to a database.
90. 90. The method of any one of claims 87 to 89, wherein displaying the second user interface causes displaying the first user interface to cease.
91. 1. An electronic device comprising: Display and one or more processors; Memory, and one or more programs stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for performing the method of any one of claims 86 to 90.
92. 91. A computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by an electronic device having a display, cause the device to perform the method of any one of claims 86 to 90.
93. 91. A system comprising means for carrying out the method of any one of claims 86 to 90.
94. A means for receiving a message; means for identifying a plurality of instances of contact or event information in the received message; means for displaying a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; a second portion that, when selected, causes the electronic device to display a second user interface including a list of multiple instances of the identified contact or event information.
95. 1. An electronic device comprising: one or more RF units configured to communicate with an external electronic device; a processing unit coupled to the RF unit, the processing unit comprising: Receive a message, Identifying an entity and contact information associated with the entity in the received message; determining that a contact associated with the identified entity is not present among a plurality of contacts in a database; The electronic device is configured to generate a contact associated with the entity in response to the determining, the generated contact including the contact information and an indication that the generated contact is a suggested contact.
96. 96. The electronic device of claim 95, wherein the identified entity includes a name and the identified contact information includes a phone number, an address, a business network or a social network handle.
97. To identify, the processing unit Identifying a signature block of the message; 97. The electronic device of claim 95 or 96, further configured to analyze the identified signature blocks for the entity and the contact information.
98. 98. The electronic device of claim 97, wherein the message comprises an email and the signature block comprises an email signature.
99. 99. The electronic device of claim 98, wherein the email includes one or more previous emails in an email thread, and the processing unit is further configured to analyze the one or more previous emails in the email thread to identify a signature of the email.
100. To identify, the processing unit Identifying one or more phrases in the message based on a collection of predetermined phrases; 100. The electronic device of any one of claims 95 to 99, further configured to analyze the one or more identified phrases with respect to the entities and the contact information.
101. The processing unit includes:
101. The electronic device of claim 100, further configured to update the collection of predetermined phrases over a network.
102. The processing unit includes:
102. The electronic device of claim 100 or 101, further configured to downgrade one or more of the predefined phrases as a result of a request to reject the suggested contact.
103. The processing unit includes:
103. The electronic device of any one of claims 100 to 102, further configured to generate one or more of the predefined phrases by cross-correlating contact information in the database with language associated with contact information on the electronic device.
104. The processing unit includes: Receive a request for contacts, 104. The electronic device of any one of claims 95 to 103, further configured to retrieve the suggested contacts in response to a request for a contact.
105. 105. The electronic device of any one of claims 95 to 104, wherein the processing unit is further configured to, in response to generating the contact, refrain from storing the suggested contact in a remote database on a network.
106. The processing unit includes: receiving a request to add the suggested contact to the database; 106. The electronic device of any one of claims 95 to 105, further configured to, in response to the request to add the suggested contact to the database, store the created contact in the database without indicating that the created contact is a suggested contact.
107. 107. The electronic device of claim 106, wherein the processing unit is further configured to, in response to the request to add the suggested contact to the database, store the created contact in a remote database on a network without indicating that the created contact is a suggested contact.
108. The processing unit includes: receiving a request to reject the suggested contacts; 108. The electronic device of any one of claims 95 to 107, further configured, in response to the request to reject the suggested contacts, to prevent the suggested contacts from being generated in the future as a result of the entity and the contact information being identified in future messages.
109. 1. An electronic device comprising: one or more processors; Memory, one or more programs, the one or more programs being stored in the memory and configured to be executed by the one or more processors, the one or more programs comprising: Receiving a message; and identifying an entity and contact information associated with the entity in the received message; determining that a contact associated with the identified entity is not present among a plurality of contacts in a database; and generating a contact associated with the entity in response to the determining, the generated contact including the contact information and an indication that the generated contact is a suggested contact.
110. 1. A computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by an electronic device, cause the device to: Receive the message, Identifying an entity and contact information associated with the entity in the received message; determining that a contact associated with the identified entity is not present among a plurality of contacts in a database; In response to the determining, generating a contact associated with the entity, the generated contact including the contact information and an indication that the generated contact is a suggested contact.
111. 1. An electronic device comprising: An electronic device comprising means for performing any of the methods according to claims 1 to 14.
112. 1. An electronic device comprising: one or more RF units configured to communicate with an external electronic device; a processing unit coupled to the RF unit, the processing unit comprising: Receive a message, Identifying an entity and an item of contact information associated with the entity in the received message; determining that a contact associated with the identified entity exists among a plurality of contacts in a database, and that the contact does not include the identified item of contact information; In response to the determining, the electronic device is configured to update the contact to include the item of contact information and an indication that the item of contact information is a suggested item of contact information.
113. 113. The electronic device of claim 112, wherein the identified entity includes a name and the identified items of contact information include a phone number, an address, a business network or a social network handle.
114. To identify, the processing unit Identifying a signature block of the message; 114. The electronic device of claim 112 or 113, further configured to analyze the identified signature blocks for the entity and the item of contact information.
115. 115. The electronic device of claim 114, wherein the message comprises an email and the signature block comprises an email signature.
116. 116. The electronic device of claim 115, wherein the email includes one or more previous emails in an email thread, and the processing unit is further configured to analyze the one or more previous emails in the email thread to identify a signature of the email.
117. To identify, the processing unit identifying one or more phrases in the message based on a collection of predetermined phrases; 117. The electronic device of any one of claims 112 to 116, further configured to analyze the one or more identified phrases for the entities and the items of contact information.
118. 118. The electronic device of claim 117, wherein the processing unit is further configured to update the collection of predefined phrases over a network.
119. 119. The electronic device of claim 117 or 118, wherein the processing unit is further configured to downgrade one or more of the predefined phrases as a result of a request to reject the suggested item of contact information.
120. 120. The electronic device of any one of claims 117 to 119, wherein the processing unit is further configured to generate one or more of the predetermined phrases by cross-correlating contact information in the database with language associated with contact information on the electronic device.
121. The processing unit includes: Receive a request for contacts, 121. The electronic device of any one of claims 112 to 120, further configured to retrieve suggested items of contact information in response to the request for the contact.
122. 122. The electronic device of any one of claims 112 to 121, wherein the processing unit is further configured to refrain from storing the suggested items of contact information in a remote database on a network in response to updating the contacts.
123. The processing unit includes: receiving a request to add the suggested item of contact information to the database; 123. The electronic device of any one of claims 112 to 122, further configured, in response to the request to add the suggested item of contact information to the database, to store the updated contact in the database without indicating that the item of contact information is a suggested item of contact information.
124. 124. The electronic device of claim 123, wherein the processing unit is further configured, in response to the request to add a suggested item of contact information to the database, to store the updated contact in a remote database over a network without indicating that the item of contact information is a suggested item of contact information.
125. The processing unit includes: receiving a request to reject the suggested item of contact information; 125. The electronic device of any one of claims 112 to 124, further configured, in response to the request to reject the suggested item of contact information, to prevent the contact from being updated with the suggested item of contact information in future as a result of the entity and the item of contact information being identified in future messages.
126. 1. An electronic device comprising: one or more processors; Memory, one or more programs, the one or more programs being stored in the memory and configured to be executed by the one or more processors, the one or more programs comprising: Receive a message, Identifying an entity and an item of contact information associated with the entity in the received message; determining that a contact associated with the identified entity exists among a plurality of contacts in a database, and that the contact does not include the identified item of contact information; responsive to the determining, updating the contact to include the item of contact information and an indication that the item of contact information is a suggested item of contact information.
127. 1. A computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by an electronic device, cause the device to: Receive the message, identifying an entity and an item of contact information associated with the entity in the received message; determining that a contact associated with the identified entity exists among a plurality of contacts in a database, and that the contact does not include the identified item of contact information; In response to the determining, updating the contact to include the item of contact information and an indication that the item of contact information is a suggested item of contact information.
128. 1. An electronic device comprising:
33. An electronic device comprising means for performing any of the methods according to claims 19 to 32.
129. An electron, a display unit configured to display graphical objects; one or more RF units configured to communicate with an external electronic device; a processing unit coupled to the display unit and the RF unit, the processing unit comprising: Receive a message, Identifying an entity and contact information associated with the entity in the received message; generating an indication that the identified contact information is suggested contact information; and configured to enable display of a first user interface corresponding to a contact associated with the entity, the first user interface including a first user interface object indicating that the identified contact information is suggested contact information based on the generated display.
130. 130. The electronic device of claim 129, wherein the processing unit is further configured to prevent an input corresponding to a selection of the suggested contact information from invoking an application that contacts the entity.
131. The processing unit includes: detecting an input in the first user interface corresponding to a selection of the suggested contact information; 131. The electronic device of claim 129 or 130, further configured to, in response to detecting the input corresponding to a selection of the suggested contact information in the first user interface, enable display of a second user interface including a second user interface object associated with the identified contact information that, when selected, causes the electronic device to add the identified contact information to a database.
132. 132. The electronic device of claim 131, wherein the second user interface includes a third user interface object associated with the identified contact information that, when selected, causes the electronic device to cease displaying the second user interface object.
133. 133. The electronic device of claim 131 or 132, wherein the display of the second user interface causes the display of the first user interface to cease.
134. 134. The electronic device of any one of claims 131 to 133, wherein the second user interface displays at least a portion of the message.
135. The processing unit includes: detecting an input corresponding to a selection of the displayed message; 135. The electronic device of claim 134, further configured, in response to detecting the input corresponding to a selection of the displayed message, to invoke an application that opens the message.
136. 136. The electronic device of claim 135, wherein the message comprises an email and the application comprises an email application.
137. The processing unit includes: detecting an input in the second user interface corresponding to a selection of the suggested contact information; 137. The electronic device of any one of claims 131 to 136, further configured, in response to detecting the input in the second user interface corresponding to a selection of the suggested contact information, to invoke an application that contacts the entity using the identified contact information.
138. The processing unit includes:
138. The electronic device of claim 137, further configured to add the identified contact information to the database in response to detecting the input corresponding to a selection of the suggested contact information in the second user interface.
139. 139. The electronic device of claim 131 or 138, wherein the processing unit is further configured to cease displaying the first user interface object in response to adding the identified contact information to the database.
140. 1. An electronic device comprising: one or more processors; Memory, one or more programs, the one or more programs being stored in the memory and configured to be executed by the one or more processors, the one or more programs comprising: Receive a message, Identifying an entity and contact information associated with the entity in the received message; generating an indication that the identified contact information is suggested contact information; and displaying a first user interface corresponding to a contact associated with the entity, the first user interface including a first user interface object indicating that the identified contact information is suggested contact information based on the generated display.
141. 1. A computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by an electronic device having a display, cause the device to: Receive the message, Identifying an entity and contact information associated with the entity in the received message; generating an indication that the identified contact information is suggested contact information; a first user interface corresponding to a contact associated with the entity, the first user interface including a first user interface object indicating that the identified contact information is suggested contact information based on the generated display;
142. 1. An electronic device comprising:
48. An electronic device comprising means for performing any of the methods according to claims 37 to 47.
143. 1. An electronic device comprising: a display unit configured to display graphical objects; one or more RF units configured to communicate with an external electronic device; a processing unit coupled to the display unit and the RF unit, the processing unit comprising: Receive a message, Identifying an entity and contact information associated with the entity in the received message; and configured to enable display of a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; A second portion, a first user interface object corresponding to the identified entity; a second user interface object corresponding to the identified contact information; and a second portion including a third user interface object associated with the identified contact information that, when selected, causes the electronic device to add the identified contact information to a database; and 2. An electronic device comprising:
144. 144. The electronic device of claim 143, wherein the second portion includes a fourth user interface object associated with the identified contact information that, when selected, causes the electronic device to cease displaying the third user interface object.
145. 145. The electronic device of claim 143 or 144, wherein the message comprises an email.
146. 146. The electronic device of any one of claims 143 to 145, wherein the identified entity includes a name and the identified contact information includes a phone number, an address, a business network or a social network handle.
147. 1. An electronic device comprising: one or more processors; Memory, one or more programs, the one or more programs being stored in the memory and configured to be executed by the one or more processors, the one or more programs comprising: Receive a message, Identifying an entity and contact information associated with the entity in the received message; and instructions for displaying a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; A second portion, a first user interface object corresponding to the identified entity; a second user interface object corresponding to the identified contact information; and a second portion including a third user interface object associated with the identified contact information that, when selected, causes the electronic device to add the identified contact information to a database; and 2. An electronic device comprising:
148. 1. A computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by an electronic device having a display, cause the device to: Receive the message, Identifying an entity and contact information associated with the entity in the received message; displaying a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; A second portion, a first user interface object corresponding to the identified entity; a second user interface object corresponding to the identified contact information; and a second portion including a third user interface object associated with the identified contact information that, when selected, causes the electronic device to add the identified contact information to a database; and 23. A computer-readable storage medium comprising:
149. 1. An electronic device comprising:
56. An electronic device comprising means for performing any of the methods according to claims 52 to 55.
150. 1. An electronic device comprising: one or more RF units configured to communicate with an external electronic device; a processing unit coupled to the RF unit, the processing unit comprising: Receive a message, Identifying event information in the received message; and generating a calendar event associated with the identified event information, the generated calendar event including the event information and an indication that the generated calendar event is a suggested calendar event.
151. 151. The electronic device of claim 150, wherein the identified event information includes a date and time.
152. To identify, the processing unit Identifying a format of content within the message; identifying a template from a collection of predefined templates configured to recognize event information within a format of the content within the message; 152. An electronic device according to claim 150 or 151, further configured to analyse the content according to the identified template for the event information.
153. 153. The electronic device of claim 152, wherein the message comprises an email and the content comprises a reservation.
154. 154. The electronic device of claim 152 or 153, wherein the processing unit is further configured to update the collection of predefined templates over a network.
155. To specify, the process comprises: Identifying, based on a predetermined collection of references to dates and times, one or more references to dates and times in the message; 155. The electronic device of any one of claims 150 to 154, further configured to analyze the one or more identified references to dates and times for the event information.
156. 156. The electronic device of claim 155, wherein the processing unit is further configured to update the collection of predetermined references to the date and time over a network.
157. 157. The electronic device of claim 155 or 156, wherein the processing unit is further configured to downgrade one or more of the predetermined references to the date and time as a result of a request to reject the proposed calendar event.
158. 158. The electronic device of any one of claims 155 to 157, wherein the processing unit is further configured to generate one or more of the predetermined references to the date and time by cross-correlating event information in a database including a plurality of calendar events with language associated with event information on the electronic device.
159. The processing unit includes: Receive a request for a calendar event, 159. The electronic device of any one of claims 150 to 158, further configured to retrieve the suggested calendar events in response to a request for the calendar event.
160. 160. The electronic device of any one of claims 150 to 159, wherein the processing unit is further configured to, in response to generating the calendar event, refrain from storing the suggested calendar event in a remote database on a network.
161. The processing unit includes: receiving a request to add the suggested calendar event to a database including a plurality of calendar events; 161. The electronic device of any one of claims 150 to 160, further configured, in response to the request to add the suggested calendar event to the database, to store the generated calendar event in the database without indicating that the generated calendar event is a suggested calendar event.
162. 162. The electronic device of claim 161, wherein the processing unit is further configured to, in response to the request to add the suggested calendar event to the database, store the generated calendar event in a remote database over a network without indicating that the generated calendar event is a suggested calendar event.
163. The processing unit includes: receiving a request to reject the proposed calendar event; 163. The electronic device of any one of claims 150 to 162, further configured, in response to the request to reject the proposed calendar event, to prevent the proposed calendar event from being generated in the future as a result of the event information being identified in a future message.
164. 1. An electronic device comprising: one or more processors; Memory, one or more programs, the one or more programs being stored in the memory and configured to be executed by the one or more processors, the one or more programs comprising: Receive a message, Identifying event information in the received message; generating a calendar event associated with the identified event information, the generated calendar event including the event information and an indication that the generated calendar event is a suggested calendar event.
165. 1. A computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by an electronic device, cause the device to: Receive the message, Identifying event information in the received message; generating a calendar event associated with the identified event information, the generated calendar event including the event information and an indication that the generated calendar event is a suggested calendar event.
166. 1. An electronic device comprising:
74. An electronic device comprising means for performing any of the methods according to claims 60 to 73.
167. 1. An electronic device comprising: a display unit configured to display graphical objects; one or more RF units configured to communicate with an external electronic device; a processing unit coupled to the display unit and the RF unit, the processing unit comprising: Receive a message, Identifying event information in the received message; and configured to enable display of a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; A second portion, a first user interface object corresponding to the identified event information; and a second portion including a second user interface object associated with the identified event information that, when selected, causes the electronic device to add the identified event information to a database including a plurality of calendar events; and 2. An electronic device comprising:
168. 168. The electronic device of claim 167, wherein the second portion includes a third user interface object associated with the identified event information that, when selected, causes the electronic device to cease displaying the second user interface object.
169. 169. The electronic device of claim 167 or 168, wherein the message comprises an email.
170. 170. The electronic device of any one of claims 167 to 169, wherein the identified event information includes a date and time.
171. 1. An electronic device comprising: one or more processors; Memory, one or more programs, the one or more programs being stored in the memory and configured to be executed by the one or more processors, the one or more programs comprising: Receive a message, Identifying event information in the received message; and instructions for displaying a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; A second portion, a first user interface object corresponding to the identified event information; and a second portion including a second user interface object associated with the identified event information that, when selected, causes the electronic device to add the identified event information to a database including a plurality of calendar events; and 2. An electronic device comprising:
172. 1. A computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by an electronic device having a display, cause the device to: Receive the message, Identifying event information in the received message; displaying a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; A second portion, a first user interface object corresponding to the identified event information; and a second portion including a second user interface object associated with the identified event information that, when selected, causes the electronic device to add the identified event information to a database including a plurality of calendar events; and 23. A computer-readable storage medium comprising:
173. 1. An electronic device comprising:
82. An electronic device comprising means for performing any of the methods according to claims 78 to 81.
174. 1. An electronic device comprising: a display unit configured to display graphical objects; one or more RF units configured to communicate with an external electronic device; a processing unit coupled to the display unit and the RF unit, the processing unit comprising: Receive a message, Identifying a plurality of instances of contact or event information in the received message; and configured to enable display of a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; and a second portion that, when selected, causes the electronic device to display a second user interface including a list of multiple instances of the identified contact or event information.
175. The processing unit includes: Detecting an input corresponding to a selection of a second portion of the first user interface; in response to detecting the input corresponding to a selection of a second portion of the first user interface; a list of a plurality of instances of the identified contact or event information; and a first user interface object that, for each of a plurality of instances of the identified contact or event information, causes the electronic device to add the identified information to a database.
176. 176. The electronic device of claim 175, wherein the second user interface includes a second user interface object that, for each of a plurality of instances of the identified contact or event information, when selected, causes the electronic device to cease displaying the first user interface object.
177. 177. The electronic device of claim 175 or 176, wherein the second user interface includes a third user interface object that, when selected, causes the electronic device to add each of the groupings of multiple instances of identified contact or event information to a database.
178. 178. The electronic device of any one of claims 175 to 177, wherein enabling the display of the second user interface causes the display of the first user interface to cease.
179. 1. An electronic device comprising: one or more processors; Memory, one or more programs, the one or more programs being stored in the memory and configured to be executed by the one or more processors, the one or more programs comprising: Receive a message, Identifying a plurality of instances of contact or event information in the received message; and instructions for displaying a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; and a second portion that, when selected, causes the electronic device to display a second user interface including a list of multiple instances of the identified contact or event information.
180. 1. A computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by an electronic device having a display, cause the device to: Receive the message, identifying a plurality of instances of contact or event information in the received message; displaying a first user interface corresponding to the received message, the first user interface comprising: a first portion including the content of the message as received by the electronic device; and a second portion that, if selected, causes the electronic device to display a second user interface including a list of multiple instances of the identified contact or event information.
181. 1. An electronic device comprising:
91. An electronic device comprising means for performing any of the methods according to claims 86 to 90.
Citation Information
Patent Citations
Portable electronic mail terminal
JP1998031635A
Data processor and storage medium
JP2000020465A
Action support information providing device, method and program
JP2012118660A
Method, System, Graphical User Interface, and Data Structure for Creating Electronic Calendar Entries from Email Messages
US20070244976A1