Device and method for measurement using augmented reality
The computer system enhances augmented reality measurement methods by reducing input complexity and conserving power, addressing inefficiencies and energy waste in conventional systems through touch-sensitive interfaces and gesture recognition.
Patent Information
- Application Number
- JP2024060325
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-03-14
- Filing Date
- 2024-04-03
- Publication Date
- 2025-07-15
- Estimated Expiration
- 2039-04-30
AI Technical Summary
Conventional augmented reality methods for measuring physical spaces and objects are cumbersome, inefficient, and require multiple inputs, leading to energy wastage, particularly in battery-operated devices.
A computer system with improved user interfaces and methods for augmented reality environments that reduce the number and type of user inputs, enhance efficiency, and conserve power by using touch-sensitive displays, cameras, and intuitive gesture recognition for measurement tasks.
The system provides efficient and power-conserving measurement capabilities in augmented reality environments, enabling easier and more intuitive interactions for users, reducing input requirements and extending battery life.
Smart Images

Figure 0007708916000001 
Figure 0007708916000002 
Figure 0007708916000003
Abstract
Description
Technical Field
[0001] This application generally relates to electronic devices for virtual / augmented reality, including but not limited to, electronic devices for measuring physical spaces and / or physical objects using virtual / augmented reality environments.
Background Art
[0002] Augmented reality environments are useful for measuring physical spaces and objects therein by providing a view of the physical space and enabling a user to overlay measurements on the physical space and the objects therein. However, conventional methods of measuring using augmented reality are cumbersome, inefficient, and limited. In some cases, conventional methods of measuring using augmented reality are functionally limited. In some cases, conventional methods of measuring using augmented reality require multiple separate inputs (e.g., a sequence of gestures and button presses) to achieve the intended result (e.g., by activating a number of displayed user interface elements to access different measurement functions). Additionally, conventional methods are time-consuming and waste energy more than necessary. The latter problem is particularly critical in battery-operated devices.
Summary of the Invention
[0003] Accordingly, there is a need for a computer system with improved methods and interfaces for measuring using virtual / augmented reality environments. Such methods and interfaces optionally complement or replace conventional methods for measuring using augmented / virtual reality environments. Such methods and interfaces reduce the number, scope, and / or type of inputs from a user and create a more efficient human-machine interface. For battery-operated devices, such methods and interfaces conserve power and extend the time between battery charges.
[0004] The above disadvantages and other problems associated with user interfaces for measurements using virtual / augmented reality are reduced or eliminated by the disclosed computer system. In some embodiments, the computer system includes a desktop computer. In some embodiments, the computer system is portable (e.g., a notebook computer, a tablet computer, or a handheld device). In some embodiments, the computer system includes a personal electronic device (e.g., a wearable electronic device such as a watch). In some embodiments, the computer system has (and / or communicates with) a touch pad. In some embodiments, the computer system has (and / or communicates with) a touch-sensitive display (also known as a "touch screen" or "touch screen display"). In some embodiments, the computer system has a graphical user interface (GUI), one or more processors, memory, and one or more modules, programs, or sets of instructions stored in the memory for performing multiple functions. In some embodiments, the user interacts with the GUI, at least in part, through contact and gestures by a stylus and / or finger on the touch-sensitive surface. In some embodiments, in addition to the measurement function based on augmented reality, the functions optionally include game play, image editing, drawing, presenting, word processing, spreadsheet creation, telephone, video conferencing, email, instant messaging, training support, digital photography, digital video recording, web browsing, digital music playback, note taking, and / or digital video playback. The executable instructions for performing those functions are optionally included in a non-transitory computer-readable storage medium or other computer program product configured to be executed by one or more processors.
[0005] According to some embodiments, the method is executed on an electronic device comprising a touch-sensitive display and one or more cameras. The method includes displaying, on the touch-sensitive display, a user interface of an application. The user interface includes a representation of the field of view of at least one of the one or more cameras. The representation of the field of view is displayed at a first magnification, and the representation of the field of view is updated over time based on changes to current visual data detected by at least one of the one or more cameras. The field of view includes at least a portion of three-dimensional space. The method includes detecting a first touch input on the touch-sensitive display while the representation of the field of view is being displayed, and in response to detecting the first touch input, adding and displaying a measurement point at a first position within the representation of the field of view corresponding to a first position in three-dimensional space. The method also includes, after adding the measurement point and while continuing to display the representation of the field of view, when at least one of the one or more cameras moves, displaying the measurement point at a position within the representation of the field of view corresponding to the first position in three-dimensional space, and detecting a second touch input at a position on the touch-sensitive display corresponding to the current position of the measurement point within the representation of the field of view. In response to detecting the second touch input, expanding the display of at least a portion of the representation of the field of view from the first magnification to a second magnification greater than the first magnification, wherein the expanded display of a portion of the representation of the field of view includes the measurement point.
[0006] In some embodiments, the method is performed on an electronic device comprising a touch-sensitive display, one or more sensors for detecting the intensity of contact with the touch-sensitive display, and one or more cameras. The method includes displaying, on the touch-sensitive display, a user interface of an application. The user interface includes a representation of the field of view of at least one of the one or more cameras. The representation of the field of view is updated over time based on changes to current visual data detected by at least one of the one or more cameras. The user interface also includes a measurement point creation indicator displayed over the representation of the field of view. The field of view includes at least a portion of a three-dimensional space. The method includes detecting a contact on the touch-sensitive display and, while continuously detecting the contact on the touch-sensitive display, adding and displaying a first measurement point in the representation of the field of view corresponding to a first position in the three-dimensional space according to a determination that a first criterion is met, the first criterion including the requirement that the intensity of the contact meets respective intensity thresholds while the measurement point creation indicator is displayed over the first position in the representation of the field of view corresponding to the first position in the three-dimensional space and a first reference is met. The method also includes updating the representation of the field of view when the electronic device is moved after adding the first measurement point. The method further includes, after the electronic device is moved, adding and displaying a second measurement point in the representation of the field of view corresponding to a second position in the three-dimensional space according to a determination that the first criterion is met while the measurement point creation indicator is displayed over the second position in the representation of the field of view corresponding to the second position in the three-dimensional space, and displaying a first measurement segment connecting the first measurement point and the second measurement point.
[0007] According to some embodiments, the method is executed on an electronic device comprising a touch-sensitive display and one or more cameras. The method includes displaying, on the touch-sensitive display, a user interface of an application. The user interface includes a representation of the field of view of at least one of the one or more cameras. The representation of the field of view is updated over time based on changes to current visual data detected by at least one of the one or more cameras. The user interface includes a measurement point creation indicator displayed over the representation of the field of view. The field of view includes at least a portion of a three-dimensional space. The method includes determining, while the representation of the field of view is being displayed, an anchor point at a position within the representation of the field of view corresponding to a first position in the three-dimensional space. The method also includes changing a visual appearance of the measurement point creation indicator to indicate that a measurement point is added to the anchor point when a touch input meets a first criterion while the measurement point creation indicator is over the anchor point when at least one of the one or more cameras moves. The method further includes detecting a first touch input on the touch-sensitive display that meets the first criterion, and in response to detecting the first touch input that meets the first criterion, adding and displaying a first measurement point to the anchor point within the representation of the field of view corresponding to the first position in the three-dimensional space according to a determination that the measurement point creation indicator is over the anchor point when the first criterion is met, and adding and displaying a first measurement point at a first position within the representation of the field of view that is away from the anchor point according to a determination that the measurement point creation indicator is not over the anchor point when the first criterion is met.
[0008] According to some embodiments, the method is executed on an electronic device comprising a display, an input device, and one or more cameras. The method includes displaying a user interface of an application on the display. The user interface includes a representation of the field of view of at least one of the one or more cameras. The representation of the field of view is updated over time based on changes to current visual data detected by at least one of the one or more cameras. The field of view includes physical objects in a three-dimensional space. The method includes detecting, via the input device, one or more user inputs while the representation of the field of view is being displayed, and adding a representation of a first measurement corresponding to the physical object over the representation of the field of view. The method also includes simultaneously displaying, over the representation of the field of view, the representation of the first measurement and a first label describing the first measurement, wherein, according to a determination that a first distance between the electronic device and the physical object is less than a first threshold distance, the first label is displayed at a first threshold size, according to a determination that the first distance between the electronic device and the physical object is greater than a second threshold distance greater than the first threshold distance, the first label is displayed at a second threshold size smaller than the first threshold size, and according to a determination that the first distance between the electronic device and the physical object is between the first threshold distance and the second threshold distance, the first label is displayed at a size between the first threshold size and the second threshold size that depends on the first distance between the electronic device and the physical object.
[0009] According to some embodiments, the method is executed on an electronic device comprising a display, an input device, and one or more cameras. The method includes displaying a user interface of an application on the display. The user interface includes a representation of the field of view of at least one of the one or more cameras. The representation of the field of view is updated over time based on changes to current visual data detected by at least one of the one or more cameras. The field of view includes physical objects in a three-dimensional space. The method includes detecting, via the input device, one or more user inputs while the representation of the field of view is being displayed, and adding a representation of a first measurement corresponding to a physical object on top of the representation of the field of view, where the representation of the first measurement includes a first endpoint corresponding to a first position on the physical object, the representation of the first measurement includes a second endpoint corresponding to a second position on the physical object, and the representation of the first measurement includes a first line segment connecting the first endpoint and the second endpoint. The method also includes determining, based at least in part on the first measurement, a first area within the representation of the field of view adjacent to the first line segment of the first measurement, where the first area corresponds to a physically rectangular area in the three-dimensional space. The method further includes displaying an indication of the first area within the user interface, where the indication is placed on top of the first area within the representation of the field of view.
[0010] According to some embodiments, the method is executed on an electronic device comprising a touch-sensitive display and one or more cameras. The method includes displaying, on the touch-sensitive display, a first user interface of an application. The first user interface includes a representation of the field of view of at least one of the one or more cameras. The representation of the field of view is updated over time based on changes to current visual data detected by at least one of the one or more cameras. The field of view includes physical objects in a three-dimensional space. A representation of measurements of the physical objects is overlaid on an image of the physical objects within the representation of the field of view. The method includes detecting a first touch input on the touch-sensitive display over the representation of the measurements while the first user interface is being displayed. The method further includes initiating, in response to detecting the first touch input on the touch-sensitive display over the representation of the measurements, a process for sharing information regarding the measurements.
[0011] According to some embodiments, the method is executed on an electronic device comprising a display, an input device, and one or more cameras. The method includes displaying, on the display, a user interface of an application. The user interface includes a representation of the field of view of at least one of the one or more cameras. The representation of the field of view is updated over time based on changes to current visual data detected by at least one of the one or more cameras. The field of view includes at least a portion of a three-dimensional space. The method includes detecting movement of the electronic device that moves the field of view of at least one of the one or more cameras in a first direction. The method also includes updating the representation of the field of view in accordance with the movement of the electronic device while detecting the movement of the electronic device that moves the field of view in the first direction, identifying one or more first elements within the representation of the field of view that extend along the first direction, and displaying, within the representation of the field of view, a first guide that extends in the first direction and corresponds to one of the one or more identified first elements, based at least in part on a determination of the one or more first elements.
[0012] According to some embodiments, the method is executed on an electronic device having one or more input devices, one or more display devices, and one or more cameras. The method includes displaying, via one or more display devices, a user interface including a representation of a physical space. The method includes receiving, while the representation of the physical space is being displayed, a first set of one or more inputs to create a virtual annotation within the representation of the physical space. The method also includes, in response to receiving the first set of one or more inputs, adding a first virtual annotation to the representation of the physical space. The first virtual annotation is linked to a portion of the representation of the physical space. The method also includes, after adding the first virtual annotation to the representation of the physical space, receiving a second set of one or more inputs associated with the representation of the physical space. The method includes, in response to receiving the second set of one or more inputs associated with the representation of the physical space, creating a second virtual annotation within the representation of the physical space while maintaining the first virtual annotation within the representation of the physical space according to a determination that the second set of one or more inputs corresponds to a request to create a virtual annotation within the representation of the physical space that is within a threshold distance from the first virtual annotation, and creating a second virtual annotation within the representation of the physical space and removing the first virtual annotation from the representation of the physical space according to a determination that the second set of one or more inputs corresponds to a request to create a virtual annotation within the representation of the physical space that is outside a threshold distance from the first virtual annotation.
[0013] According to some embodiments, the method is executed on an electronic device comprising one or more cameras, one or more input devices, one or more display devices, and one or more cameras. The method includes displaying an annotation placement user interface via one or more display devices. The annotation placement user interface includes a representation of a physical space and a placement user interface element indicating a position within the representation of the physical space where a virtual annotation is to be placed in response to detecting an annotation placement input. The method includes detecting a movement of at least one of the one or more cameras with respect to the physical space while the annotation placement user interface is being displayed. The movement of at least one of the one or more cameras begins while the placement user interface element is displayed at a position within the representation of the physical space corresponding to a first portion of the physical space. The method includes, in response to detecting the movement of at least one of the one or more cameras with respect to the physical space, moving the placement user interface element to a position within the representation of the physical space corresponding to a second portion of the physical space different from the first portion of the physical space, and updating the appearance of the annotation placement user interface according to the movement of at least one of the one or more cameras with respect to the physical space, including following a determination that the device is unable to identify an object within the second portion of the physical space whose corresponding object within the representation of the physical space can be linked to the virtual annotation, stopping the display of at least a portion of the placement user interface element, and maintaining the display of the placement user interface element according to a determination that the device has identified an object within the second portion of the physical space whose corresponding object within the representation of the physical space can be linked to the virtual annotation.
[0014] According to some embodiments, a computer system (e.g., an electronic device) includes a display generation component (e.g., a display, a projector, a head-up display, etc.), one or more cameras (e.g., a video camera that continuously provides a live preview of at least a portion of the content within the field of view of the camera and optionally generates one or more streams of image frames that capture the content within the field of view of the camera), one or more input devices (e.g., a touch-sensitive surface such as a touch-sensitive remote control, or a touchscreen display that also functions as a display generation component, a mouse, a joystick, a wand controller, and / or a camera that tracks the position of one or more features of the user such as the user's hand), optionally one or more posture sensors, optionally one or more sensors that detect the intensity of contact with a touch-sensitive surface, optionally one or more haptic output generators, one or more processors, and a memory that stores one or more programs (and / or communicates with them), the one or more programs being configured to be executed by the one or more processors, the one or more programs including instructions to perform or cause to be performed any of the operations of the methods described herein. According to some embodiments, a computer-readable storage medium stores instructions therein that, when executed by a computer system including a display generation component, one or more cameras, one or more input devices, optionally one or more posture sensors, optionally one or more sensors that detect the intensity of contact with a touch-sensitive surface, and optionally one or more haptic output generators (and / or communicates with them), cause the computer system to perform or cause to be performed any of the operations of the methods described herein.According to some embodiments, a graphical user interface on a computer system that includes (and / or communicates with) a display generation component, one or more cameras, one or more input devices, optionally one or more orientation sensors, optionally one or more sensors that detect the intensity of contact with a touch-sensitive surface, optionally one or more haptic output generators, a memory, and one or more processors that execute one or more programs stored in the memory includes one or more of the elements to be displayed in any of the methods described herein, and the elements are updated in response to input as described in any of the methods described herein. According to some embodiments, the computer system includes (and / or communicates with) a display generation component, one or more cameras, one or more input devices, optionally one or more orientation sensors, optionally one or more sensors that detect the intensity of contact with a touch-sensitive surface, optionally one or more haptic output generators, and means for performing or causing to be performed any of the operations of the methods described herein. According to some embodiments, an information processing apparatus used in a computer system that includes (and / or communicates with) a display generation component, one or more cameras, one or more input devices, optionally one or more orientation sensors, optionally one or more sensors that detect the intensity of contact with a touch-sensitive surface, and optionally one or more haptic output generators includes means for performing or causing to be performed any of the operations of the methods described herein.
[0015] Accordingly, a computer system having a display generation component, one or more cameras, one or more input devices, optionally one or more orientation sensors, optionally one or more sensors for detecting the intensity of contact with a touch-sensing surface, and optionally one or more haptic output generators (and / or communicating therewith) is provided with improved methods and interfaces for measuring physical objects using a virtual / augmented reality environment, thereby improving the effectiveness, efficiency, and user satisfaction of such a computer system. Such methods and interfaces can complement or replace conventional methods for measuring physical objects using a virtual / augmented reality environment.
Brief Description of the Drawings
[0016] To better understand the various embodiments described, the following "Detailed Description of the Invention" should be referred to in conjunction with the following drawings, in which like reference numerals refer to corresponding parts throughout the following figures.
[0017]
Figure 1A
[0018]
Figure 1B
[0019]
Figure 1C
[0020]
Figure 2
[0021]
Figure 3A
[0022]
Figure 3B
Figure 3C
[0023]
Figure 4A
[0024]
Figure 4B
[0025]
Figure 4C
Figure 4D
Figure 4E
[0026]
Figure 4F
Figure 4G
Figure 4H
Figure 4I
Figure 4J
Figure 4K
[0027]
Figure 5A
Figure 5B
Figure 5C
Figure 5D
Figure 5E
Figure 5F
Figure 5G
Figure 5H
Figure 5I
Figure 5J
Figure 5K
Figure 5L
Figure 5M
Figure 5N
Figure 5O
Figure 5P
Figure 5Q
Figure 5R
Figure 5S
Figure 5T
Figure 5U
Figure 5V
Figure 5W
Figure 5X
Figure 5Y
Figure 5Z
Figure 5AA
Figure 5AB
Figure 5AC
Figure 5AD
Figure 5AE
Figure 5AF
Figure 5AG
Figure 5AH
Figure 5AI
Figure 5AJ
Figure 5AK
Figure 5AL
Figure 5AM
Figure 5AN
Figure 5AO
Figure 5AP
Figure 5AQ
Figure 5AR
Figure 5AS
Figure 5AT
Figure 5AU
Figure 5AV
Figure 5AW
Figure 5AX
Figure 5AY
Figure 5AZ
Figure 5BA
Figure 5BB
Figure 5BC
Figure 5BD
Figure 5BE
Figure 5BF
Figure 5BG
Figure 5BH
Figure 5BI
Figure 5BJ
Figure 5BK
Figure 5BL
Figure 5BM
Figure 5BN
Figure 5BO
Figure 5BP
Figure 5BQ
Figure 5BR
Figure 5BS
Figure 5BT
Figure 5BU
Figure 5BV
Figure 5BW
Figure 5BX
Figure 5BY
Figure 5BZ
Figure 5CA
Figure 5CB
Figure 5CC
Figure 5CD
Figure 5CE
Figure 5CF
Figure 5CG
Figure 5CH
Figure 5CI
Figure 5CJ
Figure 5CK
Figure 5CL
Figure 5CM
Figure 5CN
Figure 5CO
[0028]
Figure 6A
Figure 6B
Figure 6C
[0029]
Figure 7A
Figure 7B
Figure 7C
Figure 7D
Figure 7E
[0030]
Figure 8A
Figure 8B
Figure 8C
[0031]
Figure 9A
Figure 9B
[0032]
Figure 10A
Figure 10B
[0033]
Figure 11A
Figure 11B
[0034]
Figure 12A
Figure 12B
Figure 12C
[0035]
Figure 13A
Figure 13B
Figure 13C
[0036]
Figure 14A
Figure 14B
Figure 14C
Figure 14D
DETAILED DESCRIPTION OF THE INVENTION
[0037] As described above, an augmented reality environment is useful for making measurements of a physical space and objects therein by providing a view of the physical space and enabling a user to overlay measurements of the physical space and physical objects therein. Conventional methods of making measurements using an augmented reality environment are often limited in functionality. In some cases, conventional methods require multiple separate inputs (e.g., a sequence of gestures and button presses) in order to achieve an intended result (e.g., by activating a number of displayed user interface elements to access different measurement functions). The embodiments disclosed herein provide an intuitive method for making measurements in an augmented reality environment (e.g., by enabling a user to perform different actions within the augmented reality environment with fewer inputs and / or by simplifying the user interface). Additionally, the embodiments herein provide improved visual and tactile feedback that provides additional information to the user about the physical object being measured and the actions being performed in the augmented reality environment.
[0038] The systems, methods, and GUIs described herein improve user interface interactions with a virtual / augmented reality environment in multiple ways. For example, by providing automatic detection of features within a physical space, improved labeling, and alignment guides (e.g., for improved measurement point placement and area recognition), and by enabling a user to interact with and manage measurement information, it is made easier to measure features within a physical space using an augmented reality environment.
[0039] The following, FIGS. 1A - 1B, FIG. 2, and FIGS. 3A - 3C provide an illustration of an exemplary device. FIGS. 4A - 4B and FIGS. 5A - 5CO show exemplary situations and exemplary user interfaces for performing measurements of a physical space using an augmented reality environment. FIGS. 6A - 6C show a flowchart of a method for interacting with an application for performing measurements of a physical space using an augmented reality environment. FIGS. 7A - 7E show a flowchart of a method for adding measurements to a displayed representation of a physical space within an augmented reality environment. FIGS. 8A - 8C show a flowchart of a method for adding virtual measurement points to automatically determined anchor points within an augmented reality environment. FIGS. 9A - 9B show a flowchart of a method for displaying labels for measurements of a physical space within an augmented reality environment. FIGS. 10A - 10B show a flowchart of a method for measuring and interacting with a rectangular area within a physical space within an augmented reality environment. FIGS. 11A - 11B show a flowchart of a method for interacting with and managing measurement information within an augmented reality environment. FIGS. 12A - 12C show a flowchart of a method for providing automatically determined alignment guides within an augmented reality environment. FIGS. 13A - 13C are flowcharts of a process for automatically removing previously added virtual annotations within an augmented reality environment. FIGS. 14A - 14D are flowcharts of a process for indicating whether an object within a physical space has been identified as an object whose corresponding representation within an augmented reality environment can be tracked. The processes of FIGS. 6A - 6C, FIGS. 7A - 7E, FIGS. 8A - 8C, FIGS. 9A - 9B, FIGS. 10A - 10B, FIGS. 11A - 11B, FIGS. 12A - 12C, FIGS. 13A - 13C, and FIGS. 14A - 14D are shown using the user interfaces of FIGS. 5A - 5CO.
[0040] Exemplary device Reference will now be made in detail to embodiments shown in the accompanying drawings. In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the various embodiments described. However, it will be apparent to one of ordinary skill in the art that the various embodiments described may be practiced without these specific details. In other instances, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.
[0041] In this specification, terms such as first and second are used in some embodiments to describe various elements, but it will also be understood that 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 contact may be referred to as a second contact, and similarly, a second contact may be referred to as a first contact. Although both the first contact and the second contact are contacts, they are not the same contact unless the context clearly indicates otherwise.
[0042] The terms used in the description of the various embodiments described herein are for the purpose of describing particular embodiments only and are not intended to be limiting. 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 as well, unless the context clearly dictates otherwise. Also, as used herein, the term "and / or" refers to and includes any and all possible combinations of one or more of the associated listed items. It should be understood that the terms "includes", "including", "comprises", and / or "comprising", when used herein, specify the presence of the stated 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.
[0043] As used herein, the term "if (when)" is optionally construed to mean "when", "upon", "in response to determining", or "in response to detecting", depending on the context. Similarly, the phrases "if it is determined" or "if [a stated condition or event] is detected" are optionally construed, depending on the context, to mean "upon determining" or "in response to determining", or "upon detecting [the stated condition or event]" or "in response to detecting [the stated condition or event]".
[0044] A computer system for virtual / augmented reality includes an electronic device that generates a virtual / augmented reality environment. Embodiments of the electronic device, user interfaces for such devices, and related processes for using such devices 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 player functionality. Exemplary embodiments of portable multifunctional devices include, but are not limited to, the iPhone (registered trademark), iPod Touch (registered trademark), and iPad (registered trademark) devices from Apple Inc., 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), may optionally be used. In some embodiments, it should also be understood that the device is a desktop computer that has a touch-sensitive surface (e.g., a touch screen display and / or a touch pad), includes or communicates with one or more cameras, and is not a portable communication device.
[0045] In the following description, a computer system including an electronic device having (and / or communicating with) a display and a touch-sensitive surface is described. However, it should be understood that the computer system may optionally include one or more other physical user interface devices, such as a physical keyboard, mouse, joystick, wand controller, and / or a camera that tracks the position of one or more features of the user, such as the user's hand.
[0046] The device typically supports various applications such as one or more of a game application, a note-taking application, a drawing application, a presentation application, a word processing application, a spreadsheet application, a phone application, a video conferencing application, an email 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 player application, and / or a digital video player application.
[0047] The various applications executed on the device optionally use at least one common physical user interface device such as a touch-sensitive surface. One or more functions of the touch-sensitive surface, as well as the corresponding information displayed by the device, are optionally adjusted and / or changed for each application and / or within each respective application. Thus, the common physical architecture of the device (such as a touch-sensitive surface) optionally supports various applications with a user interface that is intuitive and transparent to the user.
[0048] Attention is now directed to an embodiment of a portable device with a touch-sensing display. FIG. 1A is a block diagram showing a portable multifunctional device 100 having a touch-sensing display system 112 according to some embodiments. The touch-sensing display system 112 may be referred to as a "touch screen" for convenience, or simply as a touch-sensing display. 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 or control devices 116, and an external port 124. The device 100 optionally includes one or more optical sensors 164 (e.g., as part of one or more cameras). The device 100 optionally includes one or more intensity sensors 165 for detecting the intensity of contact on the device 100 (e.g., on 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 163 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 communicate optionally via one or more communication buses or signal lines 103.
[0049] As used in this specification and the claims, the term "haptic output" refers to the physical displacement of the device relative to its previous position, the 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 the displacement of a component relative to the center of mass of the device, that is to be detected by the user via the user's sense of touch. For example, in a situation where the device or a component of the device is in contact with a touch-sensitive surface of the user (e.g., the finger, palm, or other part of the user's hand), the haptic output generated by the physical displacement will be 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) may optionally be interpreted by the user as a "down click" or "up click" of a physical actuator button. In some cases, the user may feel a tactile sensation such as a "down click" or "up click" even when there is no movement of the physical actuator button associated with the touch-sensing surface that has been physically pushed (e.g., displaced) by the user's action. As another example, the movement of a touch-sensing surface may optionally be interpreted or perceived by the user as the "roughness" of the touch-sensing surface, even if there is no change in the smoothness of the touch-sensing surface. Such interpretation of touch by the user depends on the user's individual sensory perception, but there are many sensory perceptions of touch that are common to the majority of 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 stated, the generated haptic output corresponds to the physical displacement of the device or a component of the device that produces the described sensory perception of a typical (or average) user.By providing haptic feedback to a user using tactile output, the operability of the device is improved, the user-device interface becomes more efficient (e.g., by assisting the user in providing appropriate input and reducing user errors when operating / interacting with the device), and in addition, by enabling the user to use the device more quickly and efficiently, power usage is reduced and the battery life of the device is improved.
[0050] In some embodiments, the tactile output pattern specifies characteristics of the tactile output such as the amplitude of the tactile output, the shape of the movement waveform of the tactile output, the frequency of the tactile output, and / or the duration of the tactile output.
[0051] When a haptic output having a different haptic output pattern is generated by a device (e.g., via one or more haptic output generators that move a movable mass to generate the haptic output), the haptic output can cause different tactile sensations when the user holds or touches the device. When the user's sensation is based on the user's perception of the haptic output, most users are able to distinguish changes in the waveform, frequency, and amplitude of the haptic output generated by the device. Thus, the waveform, frequency, and amplitude can be adjusted to indicate to the user that different operations have been performed. Thus, in some situations, in a given environment (e.g., a user interface including graphical features and objects, a simulated physical environment having virtual boundaries and virtual objects, an actual physical environment having physical boundaries and physical objects, and / or any combination of the above), a haptic output having a haptic output pattern designed, selected, and / or developed to simulate the characteristics (e.g., size, material, weight, stiffness, smoothness, etc.), behavior (e.g., vibration, displacement, acceleration, rotation, expansion, etc.), and / or interactions (e.g., collision, adhesion, repulsion, attraction, friction, etc.) of an object provides useful feedback to the user that reduces input errors and increases the efficiency of the user's operation of the device. Additionally, the haptic output is optionally generated to correspond to feedback that is not related to simulated physical characteristics such as input thresholds or object selections. In some situations, such haptic output provides useful feedback to the user that reduces input errors and increases the efficiency of the user's operation of the device.
[0052] In some embodiments, haptic output having a suitable haptic output pattern serves as a cue for the occurrence of a target event behind a scene within a user interface or within a device. Examples of target events include activation of affordances (e.g., physical buttons, virtual buttons, or toggle switches) provided on the device or within the user interface, success or failure of a requested operation, reaching or exceeding a boundary within the user interface, entering a new state, switching the input focus between objects, activating a new mode, reaching or exceeding an input threshold, detecting or recognizing the type of an input or gesture, and the like. In some embodiments, the haptic output is provided to serve as a warning or alert for an upcoming event or result that occurs soon, unless a redirection or interrupt input is detected in due course. The haptic output is also used in other contexts to improve the user experience, improve the accessibility of the device for users with visual or motor disabilities or other accessibility needs, and / or improve the efficiency and functionality of the user interface and / or the device. The haptic output optionally includes an audio output and / or a change in the visual user interface, further enhancing the user's experience when the user interacts with the user interface and / or the device, facilitating better communication of information regarding the state of the user interface and / or the device, reducing input errors, and increasing the efficiency of the user's actions on the device.
[0053] Figures 4F - 4H provide a set of sample haptic output patterns that can be used individually or in combination via any one or more of a transformation (e.g., modulation, amplification, truncation, etc.) to create suitable haptic feedback for various scenarios and various purposes, such as those mentioned or described above with respect to the user interfaces and methods discussed herein. This example of a palette of haptic outputs shows how a set of three waveforms and eight frequencies can be used to create an array of haptic output patterns. In addition to the haptic output patterns shown in this figure, each of these haptic output patterns can have its amplitude optionally adjusted by changing the gain value for the haptic output pattern, as shown, for example, by changes in gain of 1.0, 0.75, 0.5, and 0.25 for the full tap 80 Hz, full tap 200 Hz, mini tap 80 Hz, mini tap 200 Hz, micro tap 80 Hz, and micro tap 200 Hz shown in FIGS. 4I - 4K, respectively. As shown in FIGS. 4I - 4K, changing the gain of a haptic output pattern changes the amplitude of the pattern without changing the frequency of the pattern or the shape of the waveform. In some embodiments, some haptic output generators are limited by how much force can be applied to the movable mass, so changing the frequency of the haptic output pattern results in a lower amplitude, and thus the greater the frequency movement of the mass, the more constrained the lower amplitude becomes, ensuring that the acceleration required to create the waveform does not require a force outside the operating force range of the haptic output generator (e.g., the peak amplitudes of the full taps at 230 Hz, 270 Hz, and 300 Hz are lower than the amplitudes of the full taps at 80 Hz, 100 Hz, 125 Hz, and 200 Hz).
[0054] Figures 4F - 4K show haptic output patterns having specific waveforms. The waveform of a haptic output pattern is the neutral position (e.g., x) with respect to the time that the movable mass passes through in order to generate haptic output with that haptic output pattern zero) represents a pattern of physical displacement with respect to. For example, the first set of haptic output patterns shown in FIG. 4F (e.g., the haptic output pattern of "full tap") each have a waveform including a complete two-cycle vibration (e.g., a vibration starting and ending at the neutral position and crossing the neutral position three times). The second set of haptic output patterns shown in FIG. 4G (e.g., the haptic output pattern of "mini tap") each have a waveform including a vibration including a complete one cycle (e.g., a vibration starting and ending at the neutral position and crossing the neutral position once). The third set of haptic output patterns shown in FIG. 4H (e.g., the haptic output pattern of "micro tap") each have a waveform including a vibration including half of a complete one cycle (e.g., a vibration starting and ending at the neutral position and not crossing the neutral position). The waveforms of the haptic output patterns also include a start buffer and an end buffer representing the gradual acceleration and deceleration of the movable mass at the start and end of the haptic output. The exemplary waveforms shown in FIGS. 4F-4K represent the maximum and minimum limits of the movement of the movable mass in the x max value and x min value. In the case of a larger electronic device having a larger movable mass, the minimum and maximum limits of the movement of the mass may be larger or smaller. The examples shown in FIGS. 4F-4K illustrate the movement of the mass in one dimension, but the same principle may also apply to the movement of the movable mass in two or three dimensions.
[0055] As shown in FIGS. 4F - 4H, each haptic output pattern also has a corresponding characteristic frequency that affects the "pitch" of the tactile sensation felt by the user from the haptic output having that characteristic frequency. In the case of continuous haptic output, the characteristic frequency represents the number of cycles completed by the movable mass of the haptic output generator within a given period (e.g., cycles per second). In the case of individual haptic outputs, individual output signals (e.g., having 0.5, 1, or 2 cycles) are generated, and the characteristic frequency value specifies how fast the movable mass needs to move to generate the haptic output having that characteristic frequency. As shown in FIGS. 4F - 4H, for each type of haptic output (e.g., defined by each waveform such as full - tap, mini - tap, or micro - tap), higher frequency values correspond to faster movement(s) by the movable mass, and thus, generally, the time to complete the haptic output is shorter (e.g., including start and end buffer times for the time to complete the number of cycles required for discrete haptic output). For example, a full - tap with a characteristic frequency of 80 Hz takes longer to complete than a full - tap with a characteristic frequency of 100 Hz (e.g., 35.4 ms vs. 28.3 ms in FIG. 4F). Additionally, for a given frequency, a haptic output having more cycles in its waveform at that frequency takes longer to complete than a haptic output having fewer cycles in its waveform at the same frequency. For example, a full - tap at 150 Hz takes longer to complete than a mini - tap at 150 Hz (e.g., 19.4 ms and 12.8 ms), and a mini - tap at 150 Hz takes longer to complete than a micro - tap at 150 Hz (e.g., 12.8 ms and 9.4 ms). However, for haptic output patterns of different frequencies, this regularity may not hold (e.g., a haptic output with more cycles but a higher frequency may take less time than a haptic output with fewer cycles but a lower frequency, and vice versa). For example, at 300 Hz, a full - tap takes the same amount of time as a mini - tap (e.g., 9.9 ms).
[0056] As shown in FIGS. 4F-4H, the haptic output pattern also has a “strength” of the haptic sensation that a user can feel through a characteristic amplitude that affects the amount of energy contained in the haptic signal, or a haptic output having that characteristic amplitude. In some embodiments, the characteristic amplitude of the haptic output pattern refers to an absolute value or a normalized value representing the maximum displacement of the movable mass from the neutral position when generating the haptic output. In some embodiments, the characteristic amplitude of the haptic output pattern is adjustable by, for example, a fixed or dynamically determined gain factor (e.g., a value from 0 to 1), and / or a preset metric (e.g., an input-based metric and / or a user interface-based metric), according to various conditions (e.g., customized based on the context and behavior of the user interface). In some embodiments, the input-based metric (e.g., an intensity change metric or an input speed metric) indicates a characteristic of the input (e.g., the rate of change of the characteristic intensity of contact in a press input during the input that triggers the generation of the haptic output, or the speed of movement of the contact on the touch sensing surface). In some embodiments, the user interface-based metric (e.g., a boundary crossing speed metric) indicates a characteristic of the user interface element during a change in the user interface that triggers the generation of the haptic output (e.g., the speed of movement of an element across a hidden or visible boundary within the user interface). In some embodiments, the characteristic amplitude of the haptic output pattern may be modulated by an “envelope,” and the peaks of adjacent cycles may have different amplitudes, and one of the above waveforms is further modulated by multiplying by an envelope parameter that changes over time (e.g., from 0 to 1) so as to gradually adjust the amplitude of a part of the haptic output over time while the haptic output is being generated.
[0057] For illustrative purposes, in FIGS. 4F-4H, specific frequencies, amplitudes, and waveforms are represented by sample haptic output patterns, but haptic output patterns having other frequencies, amplitudes, and waveforms can also be used for the same purpose. For example, waveforms having 0.5 to 4 cycles can be used. Also, other frequencies in the range of 60 Hz to 400 Hz can be used.
[0058] 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 those shown, may optionally combine two or more components, or may optionally have different configurations or arrangements of those components. The various components shown in FIG. 1A are implemented in hardware, software, firmware, or a combination thereof, including one or more signal processing circuits and / or application specific integrated circuits.
[0059] Memory 102 optionally includes high-speed random access memory and also optionally includes non-volatile memory such as one or more magnetic disk storage devices, flash memory devices, or other non-volatile solid state memory devices. Access to memory 102 by other components of device 100, such as CPU(s) 120 and peripheral interface 118, is optional and is controlled by memory controller 122.
[0060] Peripheral interface 118 is used to couple the input and output peripheral devices of the device to CPU(s) 120 and memory 102. One or more processors 120 operate on or execute various software programs and / or instruction sets stored in memory 102 to perform various functions for device 100 and process data.
[0061] In some embodiments, peripheral interface 118, CPU(s) 120, and memory controller 122 are optionally implemented on a single chip such as chip 104. In some other embodiments, they are optionally implemented on separate chips.
[0062] 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 these functions, including, but not limited to, an antenna system, an RF transceiver, one or more amplifiers, a tuner, one or more oscillators, a digital signal processor, a CODEC chipset, a subscriber identity module (SIM) card, memory, and the like. The RF circuit 108 optionally communicates wirelessly with networks such as the Internet, also called the World Wide Web, an intranet, and / or a wireless network such as a cellular telephone network, a wireless local area network (LAN), and / or a metropolitan area network (MAN), as well as with other devices. The wireless communication is optionally a Global System for Mobile Communications (GSM), Enhanced Data GSM Environment (EDGE), high-speed downlink packet access (HSDPA), high-speed uplink packet access (HSUPA), Evolution, Data-Only (EV-DO), HSPA, HSPA+, Dual-Cell HSPA (DC-HSPDA), long term evolution (LTE), near field communication (NFC), wideband code division multiple access (W-CDMA), code divisionany one of a plurality of communication standards, communication protocols, and communication technologies including, but not limited to, multiple access, CDMA (Code Division Multiple Access), TDMA (Time Division Multiple Access), Bluetooth, Wireless Fidelity (Wi-Fi) (e.g., IEEE 802.11a, IEEE 802.11ac, IEEE 802.11ax, IEEE 802.11b, IEEE 802.11g, and / or IEEE 802.11n), Voice over Internet Protocol (VoIP), Wi-MAX, protocols for email (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 not yet developed as of the filing date of this document.
[0063] 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 device interface 118, converts this audio data into an electrical signal, and transmits this electrical signal to the speaker 111. The speaker 111 converts the electrical signal into human audible sound waves. Also, the audio circuit 110 receives the electrical signal converted from sound waves by the microphone 113. The audio circuit 110 converts the electrical signal into audio data and transmits this audio data to the peripheral device interface 118 for processing. The audio data is optionally obtained from and / or transmitted to the memory 102 and / or the RF circuit 108 by the peripheral device interface 118. In some embodiments, the audio circuit 110 further includes a headset jack (e.g., 212, FIG. 2). The headset jack provides an interface between the audio circuit 110 and a detachable audio input / output peripheral device such as an output-only headset or a headset with both output (e.g., mono or stereo headphones) and input (e.g., microphone).
[0064] The I / O subsystem 106 couples input / output peripherals on the device 100, such as the touch-sensing display system 112 and other input or control devices 116, to the peripheral interface 118. The I / O subsystem 106 optionally includes a display controller 156, an optical 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 electrical signals from, or transmit electrical signals to, the other input or control devices 116. The other input or 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 pointer device such as a keyboard, an infrared port, a USB port, a stylus, and / or a mouse. One or more buttons (e.g., 208, FIG. 2) optionally include up / down buttons for volume control of the speaker 111 and / or the microphone 113. One or more buttons optionally include push buttons (e.g., 206, FIG. 2).
[0065] The touch-sensing display system 112 provides an input interface and an output interface between the device and the user. The display controller 156 receives electrical signals from and / or transmits electrical signals to the touch-sensing display system 112. The touch-sensing display system 112 displays visual output to the user. This visual output optionally includes graphics, text, icons, video, and any combination thereof (collectively referred to as "graphics"). In some embodiments, some or all of the visual output corresponds to user interface objects. As used herein, the term "affordance" refers to a user-interactive graphical user interface object (e.g., a graphical user interface object configured to respond to an input directed towards the graphical user interface object). Examples of user-interactive graphical user interface objects include, but are not limited to, buttons, sliders, icons, selectable menu items, switches, hyperlinks, or other user interface controls.
[0066] The touch-sensing display system 112 has a touch-sensing surface, sensor, or set of sensors that receives input from the user based on tactile and / or haptic contact. The touch-sensing display system 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-sensing display system 112 and translate the detected contact into an interaction with a user interface object (e.g., one or more soft keys, icons, web page, or image) displayed on the touch-sensing display system 112. In some embodiments, the point of contact between the touch-sensing display system 112 and the user corresponds to the user's finger or stylus.
[0067] The touch-sensing display system 112 optionally uses LCD (liquid crystal display) technology, LPD (light emitting polymer display) technology, or LED (light emitting diode) technology, although in other embodiments, other display technologies are used. The touch-sensing display system 112 and the display controller 156 optionally include capacitive technology, resistive technology, infrared technology, and surface acoustic wave technology, as well as other proximity sensor arrays or other elements for determining one or more points of contact with the touch-sensing display system 112, and detect contact and any movement or interruption thereof using any of a plurality of touch-sensing technologies, including but not limited to, currently known or later developed. In some embodiments, projected capacitive sensing technology, such as that found in the iPhone®, iPod Touch®, and iPad® from Apple Inc., Cupertino, California, is used.
[0068] The touch-sensing display system 112 optionally has a video resolution greater than 100 dpi. In some embodiments, the video resolution of the touch screen is greater than 400 dpi (e.g., 500 dpi, 800 dpi, or higher). The user optionally uses any suitable object or appendage, such as a stylus, finger, etc., to contact the touch-sensing display system 112. In some embodiments, the user interface is designed to function with finger-based contact and gestures, which may be less accurate than stylus-based input due to the larger contact area of the finger on the touch screen compared to the contact area of the stylus. In some embodiments, the device converts rough input by the finger into an accurate pointer / cursor position or command for performing the action desired by the user.
[0069] In some embodiments, in addition to the touch screen, device 100 optionally includes 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 is optionally a touch-sensitive surface separate from the touch-sensitive display system 112, or an extension of the touch-sensitive surface formed by the touch screen.
[0070] Device 100 also includes a power system 162 that supplies power to various components. The power system 162 optionally includes 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 within a portable device.
[0071] Device 100 also optionally includes one or more optical sensors 164 (e.g., as part of one or more cameras). FIG. 1A shows an optical sensor coupled to an optical sensor controller 158 within I / O subsystem 106. The optical sensor(s) 164 optionally include a charge-coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) phototransistor. The optical sensor(s) 164 receive light from the environment projected through one or more lenses and convert the light into data representing an image. In conjunction with imaging module 143 (also referred to as a camera module), the optical sensor(s) 164 optionally capture still images and / or video. In some embodiments, the optical sensor is disposed on the back of device 100, opposite touch-sensitive display system 112 on the front of the device, so that the touch screen can be used as a viewfinder for acquiring still and / or video images. In some embodiments, another optical sensor is disposed on the front of the device so that an image of the user is acquired (e.g., for a self-portrait, for a video conference while the user is looking at other video conference participants on the touch screen, etc.).
[0072] 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 the I / O subsystem 106. The contact intensity sensor(s) 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(s) 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 juxtaposed 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 surface of device 100, opposite a touch screen display system 112 located on the front surface of device 100.
[0073] Also, device 100 optionally includes 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 is coupled to an input controller 160 within the I / O subsystem 106. In some embodiments, when a multifunctional device is placed near a user's ear (e.g., when the user is on a phone call), the proximity sensor turns off and disables the touch sensing display system 112.
[0074] Device 100 also optionally includes one or more haptic output generators 163. FIG. 1A shows a haptic output generator coupled with a haptic feedback controller 161 within the I / O subsystem 106. In some embodiments, the haptic output generator(s) 163 includes one or more electroacoustic devices such as a speaker or other audio components, and / or electromechanical devices that convert energy into linear movement, such as a motor, solenoid, electroactive polymer, piezoelectric actuator, electrostatic actuator, or other haptic output generating components (e.g., components that convert an electrical signal into a haptic output on the device). The haptic output generator(s) 163 receives haptic feedback generation instructions from the haptic feedback module 133 and generates haptic output on the device 100 that can be sensed by a user of the device 100. In some embodiments, at least one haptic output generator is juxtaposed with, or in proximity to, a touch sensing surface (e.g., the touch sensing display system 112), and optionally generates haptic output by moving the touch sensing surface in a vertical direction (e.g., in / out of the surface of the device 100) or in a horizontal direction (e.g., back and forth within the same plane as the surface of the device 100). In some embodiments, at least one haptic output generator sensor is disposed on the back surface of the device 100, opposite the touch sensing display system 112 located on the front surface of the device 100.
[0075] Device 100 also optionally includes one or more accelerometers 167, gyroscopes 168, and / or magnetometers 169 (e.g., as part of an inertial measurement unit (IMU)) to obtain information regarding the position (e.g., orientation) of the device. FIG. 1A shows sensors 167, 168, and 169 coupled to the peripheral device interface 118. Alternatively, sensors 167, 168, and 169 are optionally coupled to an input controller 160 within the I / O subsystem 106. In some embodiments, the information is displayed on the touch screen display in a portrait or landscape view based on analysis of data received from one or more accelerometers. Device 100 optionally includes a GPS (or GLONASS or other global navigation system) receiver (not shown) to obtain information regarding the location of device 100.
[0076] In some embodiments, the software components stored in 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 haptic feedback module (or instruction set) 133, a text input module (or instruction set) 134, a Global Positioning System (GPS) module (or instruction set) 135, and an application (or instruction set) 136. Further, in some embodiments, as shown in FIGS. 1A and 3, memory 102 stores a device / global internal state 157. The device / global internal state 157 includes one or more of an active application state indicating which application is active if there is a currently active application, a display state indicating which application, view, or other information occupies various regions of the touch-sensitive display system 112, a sensor state including information obtained from various sensors of the device and other input or control devices 116, and position and / or orientation information regarding the position and / or orientation of the device.
[0077] The operating system 126 (e.g., an embedded operating system such as iOS, Android, Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, or VxWorks) includes various software components and / or drivers for controlling and managing overall system tasks (e.g., memory management, storage device control, power management, etc.) and facilitating communication between various hardware components and software components.
[0078] The communication module 128 facilitates communication with other devices via one or more external ports 124 and also includes various software components for processing data received by the RF circuit 108 and / or the external port 124. The external ports 124 (e.g., Universal Serial Bus (USB), FIREWIRE (registered trademark), etc.) are adapted to couple to other devices either directly or indirectly via a network (e.g., the Internet, a wireless LAN, etc.). In some embodiments, the external port is the same as, similar to, and / or compatible with a 30-pin connector used in some iPhone (registered trademark), iPod Touch (registered trademark), and iPad (registered trademark) devices from Apple Inc. of Cupertino, California. In some embodiments, the external port is the same as, similar to, and / or compatible with a Lightning connector used in some iPhone (registered trademark), iPod Touch (registered trademark), and iPad (registered trademark) devices from Apple Inc. of Cupertino, California. In some embodiments, the external port is the same as, similar to, and / or compatible with a USB Type-C connector used in some electronic devices from Apple Inc. of Cupertino, California.
[0079] The contact / motion module 130 optionally detects contact with the touch sensing display system 112 (in cooperation with 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 software components for performing various operations related to the detection of contact (e.g., by a finger or a stylus), 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 something in place of 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 a drag event of one or more fingers), and determining whether the contact has stopped (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 optionally apply to a single contact (e.g., contact by one finger or a stylus) or multiple simultaneous contacts (e.g., "multi-touch" / contact by multiple fingers). In some embodiments, the contact / motion module 130 and the display controller 156 detect contact on the touch pad.
[0080] The contact / motion module 130 optionally detects gesture input by a user. Different gestures on the touch sensing surface have different contact patterns (e.g., the detected contact movement, timing, and / or intensity are different). Thus, a gesture is optionally detected by detecting a specific 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. Similarly, taps, swipes, drags, and other gestures are optionally detected for a stylus by detecting a specific contact pattern for the stylus.
[0081] In some embodiments, detecting a finger tap gesture depends on the length of time between detecting a finger down event and detecting a finger up event, and is not related to the intensity of finger contact between detecting the finger down event and detecting the finger up event. In some embodiments, a tap gesture is detected according to a determination that the length of time between a finger down event and a finger up event is shorter than a predetermined value (e.g., shorter than 0.1, 0.2, 0.3, 0.4, or 0.5 seconds), regardless of whether the intensity of finger contact during the tap meets a given intensity threshold, such as a light press or deep press intensity threshold (greater than a nominal contact detection intensity threshold). Thus, a finger tap gesture can meet a specific input criterion that does not require the characteristic intensity of contact to meet a given intensity threshold in order for a specific input criterion to be met. For clarity, finger contact in a tap gesture generally needs to meet a nominal contact detection intensity threshold below which contact is not detected in order to detect a finger down event. A similar analysis applies to detecting a tap gesture or other contact with a stylus. In cases where the device is capable of detecting contact of a finger or stylus hovering over the touch sensing surface, the nominal contact detection intensity threshold is optional and does not correspond to physical contact between the finger or stylus and the touch sensing surface.
[0082] In a similar manner, the same concept is applied to other types of gestures. For example, a swipe gesture, a pinch gesture, a spread gesture, and / or a long-press gesture are optionally detected based on meeting any criteria that are not related to the intensity of the contact included in the gesture or do not require the contact making the gesture to reach an intensity threshold for recognition. For example, a swipe gesture is detected based on the amount of movement of one or more contacts, a pinch gesture is detected based on the movement of two or more contacts towards each other, a spread gesture is detected based on the movement of two or more contacts away from each other, and a long-press gesture is detected based on the duration of the contact on the touch-sensitive surface that is less than a threshold amount of movement. Thus, the statement that a particular gesture recognition criterion does not require the intensity of the contact(s) to meet a corresponding intensity threshold for the particular gesture recognition criterion to be met means that it is possible for the particular gesture recognition criterion to be met when the contact(s) in the gesture do not reach the corresponding intensity threshold, and it is also possible for it to be met in situations where one or more of the contacts in the gesture reach or exceed the intensity threshold. In some embodiments, a tap gesture is detected based on a determination that a finger-down event and a finger-up event are detected within a predetermined period, regardless of whether the contact exceeds or falls below its respective intensity threshold during that predetermined period, and a swipe gesture is detected based on a determination that the movement of the contact is greater than a predetermined magnitude, even if the contact exceeds its respective intensity threshold at the end of the movement of the contact. Even in embodiments where the detection of the gesture is affected by the intensity of the contact making the gesture (e.g., the device detects a long press faster when the intensity of the contact exceeds the intensity threshold, or the device is slower to detect a tap input when the intensity of the contact is higher), as long as the criteria for recognizing the gesture can be met in situations where the contact does not reach a particular intensity threshold (e.g., even if the amount of time required to recognize the gesture changes), the detection of those gestures does not require the contact to reach a particular intensity threshold.
[0083] The contact strength threshold, duration threshold, and movement threshold, in some situations, are combined in various different combinations to create heuristics for distinguishing two or more different gestures directed at the same input element or region, thereby enabling a richer set of user interactions and responses with the same input element. A description that a particular set of gesture recognition criteria does not require the strength of the contact(s) to meet their respective strength thresholds in order for that particular gesture recognition criteria to be met does not preclude simultaneously evaluating other strength-dependent gesture recognition criteria for identifying other gestures that have criteria that are met when the gesture includes contacts having strengths that exceed their respective strength thresholds. For example, in some situations, a first gesture recognition criteria for a first gesture that does not require the strength of the contact(s) to meet the corresponding strength threshold in order for the first gesture recognition criteria to be met is in a competitive relationship with a second gesture recognition criteria for a second gesture that depends on a contact(s) reaching the corresponding strength threshold. In such a competition, the gesture is optionally not recognized as meeting the first gesture recognition criteria for the first gesture if the second gesture recognition criteria for the second gesture is met first. For example, if the contact reaches the corresponding strength threshold before the contact moves a predetermined amount of movement, a deep press gesture instead of a swipe gesture is detected. Conversely, if the contact moves a predetermined amount of movement before the contact reaches the corresponding strength threshold, a swipe gesture instead of a deep press gesture is detected. Even in such a situation, the first gesture recognition criteria for the first gesture still does not require the strength of the contact(s) to meet the corresponding strength threshold in order for the first gesture recognition criteria to be met, because if the contact remains below the corresponding strength threshold until the end of the gesture (e.g., a swipe gesture having a contact that does not increase to a strength above the corresponding strength threshold), the gesture is recognized by the first gesture recognition criteria as a swipe gesture.In this way, certain gesture recognition criteria that do not require the intensity of the contact(s) to meet a corresponding intensity threshold for the recognition of a particular gesture may, in some situations, (A) ignore the intensity of the contact with respect to an intensity threshold (e.g., for a tap gesture), and / or (B) in some situations, still depend on the intensity of the contact with respect to an intensity threshold in the sense that a particular gesture recognition criterion (e.g., for a long press gesture) may not function if a competing set of intensity-dependent gesture recognition criteria (e.g., for a deep press gesture) recognize the input as corresponding to an intensity-dependent gesture before the particular gesture recognition criteria recognize a gesture (e.g., a long press gesture competing with a deep press gesture for recognition) corresponding to the input.
[0084] In conjunction with the accelerometer 167, gyroscope 168, and / or magnetometer 169, the attitude module 131 optionally detects attitude information regarding the device, such as the attitude of the device (e.g., roll, pitch, and / or yaw) within a particular coordinate system. The attitude module 131 includes software components for performing various operations related to the detection of the position of the device and the detection of changes in the attitude of the device.
[0085] The graphic module 132 includes various known software components for rendering and displaying graphics on the touch-sensitive display system 112 or other display, including components for changing the visual effects (e.g., brightness, transparency, chroma, contrast, or other visual characteristics) of the displayed graphics. As used herein, the term "graphics" includes any object that can be displayed to the user, including but not limited to text, web pages, icons (such as user interface objects including soft keys), digital images, videos, and animations.
[0086] In some embodiments, the graphic module 132 stores data representing the graphics that will be used. Each graphic is optionally assigned a corresponding code. The graphic module 132 receives, from an application or the like, one or more codes specifying the graphics to be displayed, along with coordinate data and other graphic characteristic data as needed, and then generates the image data of the screen to be output to the display controller 156.
[0087] The haptic feedback module 133 includes various software components that generate instructions (e.g., instructions used by the haptic feedback controller 161) to create haptic outputs at one or more locations on the device 100 using the haptic output generator(s) 163 in response to user interactions with the device 100.
[0088] The text input module 134 is optionally 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).
[0089] 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 calling, to the camera 143 as photo / video metadata, and to applications that provide location-based services such as weather widgets, local yellow page widgets, and map / navigation widgets).
[0090] The virtual / augmented reality module 145 provides virtual reality logic and / or augmented reality logic to an application 136 that implements augmented reality functionality and, in some embodiments, virtual reality functionality. The virtual / augmented reality module 145 facilitates the overlay of virtual content, such as virtual user interface objects (e.g., a virtual measuring tape for performing measurements based on augmented reality), onto a representation of at least a portion of the field of view of one or more cameras. For example, with assistance from the virtual / augmented reality module 145, a representation of at least a portion of the field of view of one or more cameras may include corresponding physical objects, and the virtual user interface objects may be determined based on the corresponding physical objects within the field of view of the one or more cameras, and may be displayed at positions within a displayed augmented reality environment or within a virtual reality environment determined based on the pose of at least a portion of the computer system (e.g., the pose of a display device used to display a user interface to a user of the computer system).
[0091] The application 136 optionally includes the following modules (or sets of instructions) or subsets or supersets thereof. · Contact module 137 (which may also be referred to as 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, · Browser module 147, · Calendar module 148, · The widget module 149 optionally includes one or more of the weather widget 149-1, the stock price widget 149-2, the calculator widget 149-3, the alarm clock widget 149-4, the dictionary widget 149-5, and other widgets obtained by the user, as well as the user-created widget 149-6. · The widget creation module 150 for creating the user-created widget 149-6. · The search module 151. · The video and music player module 152 optionally composed of a video player module and a music player module. · The memo module 153. · The map module 154, and / or · The measurement module 155.
[0092] Examples of other applications 136 optionally stored in the 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 replication.
[0093] Together with touch sensing display system 112, display controller 156, contact module 130, graphic module 132, and text input module 134, contact module 137 includes executable instructions for managing 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), including adding name(s) to the address book, deleting name(s) from the address book, associating a phone number(s), email address(es), physical address(es), or other information with a name, associating an image with a name, classifying and sorting names, providing a phone number and / or email address to initiate and / or facilitate communication by phone 138, video conference 139, email 140, or IM 141, etc.
[0094] In conjunction with RF circuitry 108, audio circuitry 110, speaker 111, microphone 113, touch sensing display system 112, display controller 156, contact module 130, graphic module 132, and text input module 134, phone module 138 includes executable instructions for entering a sequence of characters corresponding to a phone number, accessing one or more phone numbers in address book 137, changing an entered phone number, dialing each phone number, executing a conversation, disconnecting or hanging up the phone when the conversation is complete. As described above, wireless communication optionally uses any of a plurality of communication standards, protocols, and technologies.
[0095] In cooperation with the RF circuit 108, audio circuit 110, speaker 111, microphone 113, touch sensing display system 112, display controller 156, optical sensor(s) 164, optical sensor controller 158, contact module 130, graphic module 132, text input module 134, contact list 137, and phone module 138, the video conferencing module 139 includes executable instructions to start, conduct, and end a video conference between the user and one or more other participants according to the user's commands.
[0096] In cooperation with the RF circuit 108, touch sensing display system 112, display controller 156, contact module 130, graphic module 132, and text input module 134, the email client module 140 includes executable instructions to create, send, receive, and manage emails in response to the user's instructions. In cooperation with the image management module 144, the email client module 140 greatly facilitates the creation and sending of emails with still or video images captured by the camera module 143.
[0097] In cooperation with the RF circuit 108, the touch sensing display system 112, the display controller 156, the contact module 130, the graphic module 132, and the text input module 134, the instant message module 141 inputs a series of characters corresponding to an instant message, corrects the previously input characters, and transmits each instant message (e.g., using the Short Message Service (SMS) or Multimedia Message Service (MMS) protocol for phone-based instant messages, or using XMPP, SIMPLE, Apple Push Notification Service (APNs), or IMPS for Internet-based instant messages), receives instant messages, and includes executable instructions for viewing the received instant messages. In some embodiments, the instant messages transmitted and / or received optionally 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 message" 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, APNs, or IMPS).
[0098] In cooperation with the RF circuit 108, touch sensing display system 112, display controller 156, contact module 130, graphic module 132, text input module 134, GPS module 135, map module 154, and video and music player module 152, the training support module 142 creates a training (e.g., having time, distance, and / or calorie consumption goals), communicates with training sensors (within the sports device and smartwatch), receives training sensor data, calibrates the sensors used to monitor the training, selects and plays music for the training, and displays, stores, and transmits training data, including executable instructions.
[0099] In conjunction with the touch sensing display system 112, display controller 156, optical sensor(s) 164, optical sensor controller 158, contact module 130, graphic module 132, and image management module 144, the camera module 143 captures still images or videos (including video streams), stores them in the memory 102, modifies the characteristics of the still images or videos, and / or deletes still images or videos from the memory 102, including executable instructions.
[0100] In cooperation with the touch sensing display system 112, display controller 156, contact module 130, graphic module 132, text input module 134, and camera module 143, the image management module 144 arranges, modifies (e.g., edits), or otherwise operates on still images and / or video images, labels, deletes, presents (e.g., in a digital slide show or album), and stores them, including executable instructions.
[0101] Together with the RF circuit 108, the touch sensing display system 112, the display system controller 156, the touch 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, linking, receiving, and displaying web pages or portions thereof, as well as attached files and other files linked to the web pages.
[0102] Together with the RF circuit 108, the touch sensing display system 112, the display system controller 156, the touch module 130, the graphic module 132, the text input module 134, the email client module 140, and the browser module 147, the calendar module 148 includes executable instructions for creating, displaying, modifying, and storing a calendar and data associated with the calendar (e.g., calendar items, lists of things to do, etc.) in accordance with user instructions.
[0103] Together with RF circuit 108, touch sensing display system 112, display system controller 156, contact module 130, graphic module 132, text input module 134, and browser module 147, widget module 149 optionally includes mini - applications (e.g., weather widget 149 - 1, stock price widget 149 - 2, calculator widget 149 - 3, alarm clock widget 149 - 4, and dictionary widget 149 - 5) downloaded and used by the user, or mini - applications created by the user (e.g., user - created widget 149 - 6). In some embodiments, the widget includes HTML (Hypertext Markup Language) files, CSS (Cascading Style Sheets) files, and JavaScript files. In some embodiments, the widget includes XML (Extensible Markup Language) files and JavaScript files (e.g., Yahoo! widget).
[0104] In conjunction with RF circuit 108, touch sensing display system 112, display system controller 156, contact module 130, graphic module 132, text input module 134, and browser module 147, widget creation module 150 includes executable instructions for creating a widget (e.g., changing a user - specified portion of a web page into a widget).
[0105] In conjunction with touch sensing display system 112, display system controller 156, contact module 130, graphic module 132, and text input module 134, search module 151 includes executable instructions for searching for text, music, sound, images, video, and / or other files in memory 102 that match one or more search criteria (e.g., one or more user - specified search phrases) according to the user's instructions.
[0106] In cooperation with the touch sensing display system 112, the display system controller 156, the contact module 130, the graphic module 132, the audio circuit 110, the speaker 111, the RF circuit 108, and the browser module 147, the video and music player module 152 includes executable instructions that enable a 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 executable instructions to display, present, or otherwise play videos (e.g., on the touch sensing display system 112 or on an external display connected wirelessly or via the external port 124). In some embodiments, the device 100 optionally includes the functionality of an MP3 player such as an iPod (trademark of Apple Inc.).
[0107] In cooperation with the touch sensing display system 112, the display controller 156, the contact module 130, the graphic module 132, and the text input module 134, the memo module 153 includes executable instructions to create and manage memos, to do lists, etc. according to user instructions.
[0108] In cooperation with the RF circuit 108, the touch sensing display system 112, the display system controller 156, the contact module 130, the graphic module 132, the text input module 134, the GPS module 135, and the 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 about stores and other points of interest at or near a particular location, and other location-based data) according to user instructions.
[0109] In conjunction with the touch sensing display system 112, the display system controller 156, the touch module 130, the graphics module 132, and the virtual / augmented reality module 145, the measurement module 155 includes executable instructions that enable a user to measure a physical space and / or an object therein within an augmented reality environment, as described in more detail herein.
[0110] Each of the above-specified modules and applications corresponds to a set of executable instructions that perform one or more of the functions described above, as well as the methods described in this application (e.g., methods performed by a computer and other information processing methods described herein). Those modules (i.e., sets of instructions) need not be implemented as separate software programs, procedures, or modules, and thus, various subsets of those modules may optionally be combined or otherwise rearranged in various embodiments. In some embodiments, the memory 102 optionally stores a subset of the modules and data structures identified above. Additionally, the memory 102 optionally stores additional modules and data structures not described above.
[0111] In some embodiments, the device 100 is a device in which the operation of a set of default functions in the device is performed only via a touch screen and / or a touch pad. By using the touch screen and / or the touch pad as the main input control device for the device 100 to operate, optionally, the number of physical input control devices (push buttons, dials, etc.) on the device 100 is reduced.
[0112] The set of default functions that are executed only through a touch screen and / or a touch pad optionally includes navigation between user interfaces. In some embodiments, the touch pad navigates the device 100 from any user interface displayed on the device 100 to the main menu, home menu, or root menu when touched by the user. In such embodiments, the "menu button" is implemented using the touch sensing surface. In some other embodiments, the menu button is a physical push button or other physical input control device instead of the touch sensing surface.
[0113] FIG. 1B is a block diagram showing exemplary components for event processing according to some embodiments. In some embodiments, the memory 102 (in FIG. 1A) or 370 (in FIG. 3A) includes an event sorter 170 (e.g., within the operating system 126) and respective applications 136-1 (e.g., any of the applications 136, 137 to 155, 380 to 390 described above).
[0114] The event sorter 170 receives event information and determines the application 136-1 to which the event information is to be delivered and the 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 indicating the current application view(s) displayed on the touch sensing display system 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(s) is / are 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.
[0115] In some embodiments, the application internal state 192 includes additional information such as resume information to be used when application 136-1 resumes execution, user interface state information indicating or ready to display the information being displayed by application 136-1, a state queue that enables the user to return to a previous state or view of application 136-1, and a redo / undo queue of previous actions performed by the user, among one or more of these.
[0116] Event monitor 171 receives event information from peripheral device interface 118. The event information includes information about sub-events (e.g., a user's touch on touch-sensitive display system 112 as part of a multi-touch gesture). Peripheral device interface 118 transmits information received from sensors such as I / O subsystem 106, or proximity sensor 166, accelerometer(s) 167, and / or microphone 113 (via audio circuit 110). The information that peripheral device interface 118 receives from I / O subsystem 106 includes information from touch-sensitive display system 112 or a touch-sensitive surface.
[0117] In some embodiments, event monitor 171 transmits requests to peripheral device interface 118 at predetermined intervals. In response, peripheral device interface 118 transmits event information. In other embodiments, peripheral device interface 118 transmits event information only when significant events (e.g., receiving an input that exceeds a predetermined noise threshold and / or is longer than a predetermined period) are present.
[0118] In some embodiments, event sorter 170 also includes a hit view determination module 172 and / or an active event recognition unit determination module 173.
[0119] When the touch sensing display system 112 displays two or more views, the hit view determination module 172 provides software procedures for determining where in one or more of the views a sub - event has occurred. A view is composed of control devices and other elements that a user can view on the display.
[0120] Another aspect of the user interface associated with an application is a set of views, sometimes referred to herein as application views or user interface windows, within which information is displayed and touch - based gestures occur. The application views (for each application) in which touches are detected optionally correspond to program levels within the program hierarchy or view hierarchy of the application. For example, the lowest - level view in which a touch is detected is optionally called the hit view, and the set of events recognized as appropriate inputs is optionally determined at least in part based on the hit view of the initial touch that initiates a touch - based gesture.
[0121] The hit view determination module 172 receives information related to sub - events of touch - based gestures. When an application has a plurality of hierarchically - structured views, the hit view determination module 172 identifies the hit view as the lowest - level view within the hierarchy in which the sub - event should be processed. In most situations, the hit view is the lowest - level view in which the starting sub - event (i.e., the first sub - event in a series of sub - events that form an event or potential event) occurs. Once the hit view is identified by the hit view determination module, the hit view typically receives all sub - events related to the same touch or input source for which it was identified as the hit view.
[0122] 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 actively involved, and thus determines that all views actively involved should receive a particular sequence of sub-events. In other embodiments, even if a touch sub-event is completely limited to an area associated with one particular view, the upper-level views within the hierarchy will still remain views actively involved.
[0123] The event dispatcher module 174 dispatches event information to an event recognition unit (e.g., event recognition unit 180). In embodiments including the active event recognition unit determination module 173, the event dispatcher module 174 distributes 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 receiving unit module 182 in an event waiting queue.
[0124] In some embodiments, the operating system 126 includes an event sorter 170. Alternatively, the application 136-1 includes an event sorter 170. In still other embodiments, the event sorter 170 is a stand-alone module or a part of another module stored in the memory 102 such as the touch / motion module 130.
[0125] In some embodiments, application 136-1 includes a plurality of event processing units 190 and one or more application views 191, each including instructions for processing touch events that occur within respective views of the user interface of the 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 characteristics. In some embodiments, each event processing unit 190 includes one or more of event data 179 received from data update unit 176, object update unit 177, GUI update unit 178, and / or event sorter 170. The event processing unit 190 optionally utilizes or calls data update unit 176, object update unit 177, or GUI update unit 178 to update the application internal state 192. Instead, one or more of the application views 191 include one or more respective event processing units 190. Also, in some embodiments, one or more of data update unit 176, object update unit 177, and GUI update unit 178 are included in respective application views 191.
[0126] Each event recognition unit 180 receives event information (e.g., event data 179) from event sorter 170 and identifies an event from the event information. The event recognition unit 180 includes an event receiving unit 182 and an event comparing unit 184. In some embodiments, the event recognition unit 180 also includes at least a subset of metadata 183 and event distribution instructions 188 (optionally including sub-event distribution instructions).
[0127] The event receiving unit 182 receives event information from the event sorter 170. The event information includes sub-events, for example, information about a touch or a movement of a touch. Depending on the sub-event, the event information also includes additional information such as the position of the sub-event. When the sub-event relates to a movement of a touch, the event information also optionally includes the speed and direction of the sub-event. In some embodiments, the event includes a rotation of the device from one orientation to another (e.g., from portrait to landscape, or vice versa), and the event information includes corresponding information about the current orientation of the device (also referred to as the posture of the device).
[0128] The event comparison unit 184 compares event information with the definitions of defined events or sub-events, and based on the 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 definitions of events (e.g., a sequence of predefined sub-events) such as, for example, event 1 (187-1) and event 2 (187-2). In some embodiments, the sub-events in event 187 include, for example, the start of a touch, the end of a touch, the movement of a touch, the cancellation of a touch, 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 (start of touch) at a predefined stage on the displayed object, a first lift-off (end of touch) at a predefined stage, a second touch (start of touch) at a predefined stage on the displayed object, and a second lift-off (end of touch) 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, a movement of the touch across the touch-sensing display system 112, and a lift-off of the touch (end of touch). In some embodiments, an event also includes information regarding one or more associated event processing units 190.
[0129] In some embodiments, the event definition 187 includes the definition of events for each user interface object. In some embodiments, the event comparison unit 184 performs a hit test to determine which user interface object is associated with the sub - event. For example, in an application view where three user interface objects are displayed on the touch - sensitive display system 112, when a touch is detected on the touch - sensitive display system 112, the event comparison unit 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 processing unit 190, the event comparison unit determines which event processing unit 190 should be activated using the result of the hit test. For example, the event comparison unit 184 selects the event processing unit associated with the sub - event and object that triggered the hit test.
[0130] In some embodiments, the definition of each event 187 also includes a delay action that delays the delivery of event information until it is determined whether a series of sub - events corresponds to the event type of the event recognition unit.
[0131] If each event recognition unit 180 determines that a series of sub - events does not match any of the events of 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 there is another event recognition unit that remains active for the hit view, that event recognition unit continues to track and process the sub - events of the ongoing touch - based gesture.
[0132] In some embodiments, each event recognition unit 180 includes metadata 183 having configurable properties, flags, and / or lists indicating how the event distribution system should actively participate in the event recognition unit that should perform sub - event distribution. In some embodiments, the metadata 183 includes configurable properties, flags, and / or lists indicating how the event recognition units interact with each other or how they can interact with each other. In some embodiments, the metadata 183 includes configurable properties, flags, and / or lists indicating whether sub - events are distributed to various levels in the view hierarchy or program hierarchy.
[0133] In some embodiments, each event recognition unit 180 activates the event processing unit 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 the event information associated with the event to the event processing unit 190. Activating the event processing unit 190 is separate from sending (and deferring sending) sub - events to each hit view. In some embodiments, the event recognition unit 180 sets a flag associated with the recognized event, and the event processing unit 190 associated with that flag catches the flag and executes a predefined process.
[0134] In some embodiments, the event distribution command 188 includes a sub - event distribution command that distributes event information about sub - events without activating the event processing unit. Instead, the sub - event distribution command distributes event information to the event processing unit associated with a series of sub - events or to the view actively involved. The event processing unit associated with a series of sub - events or the view actively involved receives the event information and performs a predetermined process.
[0135] In some embodiments, data update unit 176 creates and updates data used by application 136-1. For example, data update unit 176 updates the phone numbers used by contact module 137 or stores video files used by video and music player module 152. In some embodiments, object update unit 177 creates and updates objects used by application 136-1. For example, object update unit 177 creates a new user interface object or updates the position of a user interface object. GUI update unit 178 updates the GUI. For example, GUI update unit 178 prepares display information and sends the display information to graphic module 132 for display on the touch-sensitive display.
[0136] In some embodiments, event processing unit(s) 190 includes or has access to data update unit 176, object update unit 177, and GUI update unit 178. In some embodiments, data update unit 176, object update unit 177, and GUI update unit 178 are included in a single module of respective application 136-1 or application view 191. In other embodiments, they are included in two or more software modules.
[0137] The foregoing description regarding event handling of a user's touch on a touch-sensitive display applies to other forms of user input for operating the multifunctional device 100 using an input device, but it should 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 single or multiple presses or holds of a keyboard, movement of contact such as taps, drags, scrolls on a touch pad, pen stylus input, input based on real-time analysis of video images acquired by one or more cameras, movement of the device, spoken commands, detected eye movements, biometric input, and / or any combination thereof are optionally utilized as input corresponding to sub-events that define events to be recognized.
[0138] FIG. 1C is a block diagram showing a haptic output module according to some embodiments. In some embodiments, the I / O subsystem 106 (e.g., the tactile feedback controller 161 (FIG. 1A) and / or other input controller(s) 160 (FIG. 1A)) includes at least some of the example components shown in FIG. 1C. In some embodiments, the peripheral device interface 118 includes at least some of the example components shown in FIG. 1C.
[0139] In some embodiments, the haptic output module includes a haptic feedback module 133. In some embodiments, the haptic feedback module 133 aggregates and combines haptic output for user interface feedback (e.g., user input corresponding to a display user interface, and feedback in response to alerts and other notifications indicating the execution of an action or the occurrence of an event in the user interface of the electronic device) from a software application on the electronic device. The haptic feedback module 133 includes one or more of a waveform module 123 (providing waveforms used to generate haptic output), a mixer 125 (mixing waveforms such as waveforms on different channels), a compressor 127 (reducing or compressing the dynamic range of a waveform), a low-pass filter 129 (filtering high-frequency signal components within a waveform), and a thermal controller 181 (adjusting a waveform according to a thermal state). In some embodiments, the haptic feedback controller 161 (FIG. 1A) includes the haptic feedback module 133. In some embodiments, separate units of the haptic feedback module 133 (or separate implementations of the haptic feedback module 133) are also included in an audio controller (e.g., the audio circuit 110 of FIG. 1A) and used to generate audio signals. In some embodiments, a single haptic feedback module 133 is used to generate waveforms for audio signals and haptic output.
[0140] In some embodiments, the tactile feedback module 133 also includes a trigger module 121 (e.g., a software application, an operating system, or another software module that determines the haptic output to be generated and initiates a process to generate a corresponding haptic output). In some embodiments, the trigger module 121 generates a trigger signal that initiates the generation of a waveform (e.g., by the waveform module 123). For example, the trigger module 121 generates a trigger signal based on a preset timing criterion. In some embodiments, the trigger module 121 receives a trigger signal from outside the tactile feedback module 133 based on the activation of a user interface element (e.g., an application icon or affordance within an application) or a hardware input device (e.g., an intensity-sensitive input surface such as a home button or an intensity-sensitive touch screen), and relays those trigger signals to other components (e.g., the waveform module 123) within the tactile feedback module 133 or to a software application that triggers an operation (e.g., by the trigger module 121). In some embodiments, the trigger module 121 also receives haptic feedback generation instructions (e.g., from the tactile feedback module 133, FIGS. 1A and 3). In some embodiments, the trigger module 121 generates a trigger signal in response to the tactile feedback module 133 (or the trigger module 121 within the tactile feedback module 133) that receives haptic feedback instructions (e.g., from the tactile feedback module 133 of FIGS. 1A and 3).
[0141] The waveform module 123 receives a trigger signal as an input (e.g., from the trigger module 121), and in response to the received trigger signal, provides a waveform (e.g., a waveform selected from a predetermined set of waveforms designed for use by the waveform module 123, such as the waveforms described in more detail below with reference to FIGS. 4F - 4G) for the generation of one or more haptic outputs.
[0142] The mixer 125 receives waveforms (e.g., from the waveform module 123) as inputs and mixes these waveforms together. For example, when the mixer 125 receives two or more waveforms (e.g., a first waveform on a first channel and a second waveform on a second channel that at least partially overlaps the first waveform), the mixer 125 outputs a combined waveform corresponding to the sum of the two or more waveforms. In some embodiments, the mixer 125 also modifies one or more of the two or more waveforms and emphasizes a particular waveform relative to the rest of the two or more waveforms (e.g., by increasing the scale of a particular waveform and / or decreasing the scale of the rest of the waveforms). In some situations, the mixer 125 selects one or more waveforms to remove from the combined waveform (e.g., if there are waveforms from four or more sources that are required to be output simultaneously by the haptic output generator 163, the waveform from the oldest source is deleted).
[0143] Compressor 127 receives a waveform (e.g., a composite waveform from mixer 125) as an input and modifies the waveform. In some embodiments, compressor 127 reduces the waveform (e.g., according to the physical specifications of haptic output generator 163 (FIG. 1A) or 357 (FIG. 3)) such that the haptic output corresponding to the waveform decreases. In some embodiments, compressor 127 limits the waveform, such as by forcing a predetermined maximum amplitude for the waveform. For example, compressor 127 maintains the amplitude of portions of the waveform that do not exceed a predetermined amplitude threshold while reducing the amplitude of portions of the waveform that exceed the predetermined amplitude threshold. In some embodiments, compressor 127 reduces the dynamic range of the waveform. In some embodiments, compressor 127 dynamically reduces the dynamic range of the waveform, such that the combined waveform remains within the range of the performance specifications (e.g., force and / or displacement limits of the movable mass) of haptic output generator 163.
[0144] Low-pass filter 129 receives waveforms (e.g., the compressed waveforms from compressor 127) as inputs and filters (e.g., smoothes) these waveforms (e.g., removes or reduces high-frequency signal components within the waveforms). For example, in some instances, when a haptic output is generated according to a compressed waveform, compressor 127 includes in the compressed waveform an exogenous signal (e.g., a high-frequency signal component) that interferes with the generation of the haptic output and / or exceeds the performance specifications of haptic output generator 163. Low-pass filter 129 reduces or removes such exogenous signals within the waveforms.
[0145] The thermal controller 181 receives a waveform (e.g., the filtered waveform from the low-pass filter 129) as an input and adjusts these waveforms according to the thermal state of the device 100 (e.g., based on the internal temperature detected within the device 100, such as the temperature of the tactile feedback controller 161, and / or the external temperature detected by the device 100). For example, in some cases, the output of the tactile feedback controller 161 varies according to the temperature (e.g., the tactile feedback controller 161 generates a first tactile output when the tactile feedback controller 161 is at a first temperature and a second tactile output when the tactile feedback controller 161 is at a second temperature different from the first temperature in response to receiving the same waveform). For example, the magnitude (or amplitude) of the tactile output may vary with temperature. To reduce the effect of temperature variation, the waveform is modified (e.g., the amplitude of the waveform is increased or decreased based on the temperature).
[0146] In some embodiments, the tactile feedback module 133 (e.g., the trigger module 121) is coupled to the hardware input processing module 146. In some embodiments, the other input controller(s) 160 of FIG. 1A includes the hardware input processing module 146. In some embodiments, the hardware input processing module 146 receives input from a hardware input device 175 (e.g., the home button, or an intensity-sensing input surface such as an intensity-sensing touch screen, or other input or control device 116 of FIG. 1A). In some embodiments, the hardware input device 175 is any of the input devices described herein, such as the touch-sensing display system 112 (FIG. 1A), the keyboard / mouse 350 (FIG. 3), the touch pad 355 (FIG. 3), the other input or control device 116 (FIG. 1A), or an intensity-sensing home button. In some embodiments, the hardware input device 175 is composed of an intensity-sensing home button and is not the touch-sensing display system 112 (FIG. 1A), the keyboard / mouse 350 (FIG. 3), or the touch pad 355 (FIG. 3). In some embodiments, in response to an input from the hardware input device 175 (e.g., an intensity-sensing home button or a touch screen), the hardware input processing module 146 provides one or more trigger signals to the tactile feedback module 133 to indicate that a user input meeting a predefined input criterion, such as an input corresponding to a "click" (e.g., a "down click" or an "up click") of the home button, has been detected. In some embodiments, the tactile feedback module 133 provides a waveform corresponding to a "click" of the home button in response to an input corresponding to the "click" of the home button, simulating the tactile feedback of pressing a physical home button.
[0147] In some embodiments, the haptic output module includes a haptic feedback controller 161 (haptic feedback controller 161 of FIG. 1A) that controls the generation of haptic output. In some embodiments, the haptic feedback controller 161 is coupled to a plurality of haptic output generators, selects one or more of the plurality of haptic output generators, and transmits a waveform to the selected one or more haptic output generators that generate haptic output. In some embodiments, the haptic feedback controller 161 coordinates a haptic output request corresponding to the activation of the hardware input device 175 and a haptic output request corresponding to a software event (e.g., a haptic output request from the haptic feedback module 133), and modifies one or more of two or more waveforms to emphasize a particular waveform (s) relative to the rest of the two or more waveforms (e.g., by scaling up the scale of a particular waveform (s) and / or scaling down the remaining scale of the waveform, such as giving priority to the haptic output corresponding to the activation of the hardware input device 175 over the haptic output corresponding to the software event).
[0148] In some embodiments, as shown in FIG. 1C, the output of the haptic feedback controller 161 is coupled to an audio circuit of the device 100 (e.g., audio circuit 110, FIG. 1A) and provides an audio signal to the audio circuit of the device 100. In some embodiments, the haptic feedback controller 161 provides both a waveform used to generate haptic output and an audio signal used to provide audio output in conjunction with the generation of haptic output. In some embodiments, the haptic feedback controller 161 modifies the audio signal and / or the waveform (used to generate haptic output) such that the audio output and the haptic output are synchronized (e.g., by delaying the audio signal and / or the waveform). In some embodiments, the haptic feedback controller 161 includes a digital-to-analog converter used to convert a digital waveform into an analog signal, and the analog signal is received by an amplifier 185 and / or a haptic output generator 163.
[0149] In some embodiments, the haptic output module includes an amplifier 185. In some embodiments, the amplifier 185 receives a waveform (e.g., from the haptic feedback controller 161) and amplifies the waveform before transmitting the amplified waveform to a haptic output generator 163 (e.g., either the haptic output generator 163 (FIG. 1A) or 357 (FIG. 3)). For example, the amplifier 185 amplifies the received waveform to a signal level according to the physical specifications of the haptic output generator 163 (e.g., the voltage and / or current required by the haptic output generator 163 to generate a haptic output such that the signal transmitted to the haptic output generator 163 generates a haptic output corresponding to the waveform received from the haptic feedback controller 161), and transmits the amplified waveform to the haptic output generator 163. In response, the haptic output generator 163 generates a haptic output (e.g., by shifting a movable mass back and forth in one or more dimensions relative to a neutral position of the movable mass).
[0150] In some embodiments, the haptic output module includes a sensor 189 coupled to the haptic output generator 163. The sensor 189 detects the state or change in state (e.g., mechanical position, physical displacement, and / or movement) of the haptic output generator 163 or one or more components of the haptic output generator 163 (e.g., one or more moving parts such as a membrane used to generate a haptic output). In some embodiments, the sensor 189 is a magnetic field sensor (e.g., a Hall effect sensor) or other displacement sensor and / or motion sensor. In some embodiments, the sensor 189 provides information (e.g., the position, displacement, and / or movement of one or more parts within the haptic output generator 163) to the haptic feedback controller 161, and in accordance with the information provided by the sensor 189 regarding the state of the haptic output generator 163, the haptic feedback controller 161 adjusts a waveform output from the haptic feedback controller 161 (e.g., a waveform optionally transmitted to the haptic output generator 163 via the amplifier 185).
[0151] FIG. 2 shows a portable multifunctional device 100 having a touch screen (e.g., touch sensing display system 112, FIG. 1A) according to some embodiments. The touch screen optionally displays one or more graphics within a user interface (UI) 200. In these embodiments, as well as in the embodiments described hereinafter, the user can select one or more of the graphics by performing gestures on the graphics using, for example, one or more fingers 202 (not drawn to scale in the figure) or one or more styli 203 (not drawn to scale in the figure). In some embodiments, the selection of one or more graphics is implemented when the user interrupts contact with the one or more graphics. In some embodiments, the gestures optionally include 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, if the gesture corresponding to the selection is a tap, a swipe gesture that sweeps over an application icon does not optionally select the corresponding application.
[0152] Device 100 optionally also includes one or more physical buttons, such as a "home" or menu button 204. As described above, the menu button 204 is optionally used to navigate to any application 136 in a set of applications that are optionally executed on device 100. Alternatively, in some embodiments, the menu button is implemented as a soft key within a GUI displayed on the touch screen display.
[0153] In some embodiments, device 100 includes a touch screen display, a menu button 204 (which may be referred to as a home button 204), a push button 206 for turning the device on / off and locking the device, volume control button(s) 208, a subscriber identity module (SIM) card slot 210, a headset jack 212, and a docking / charging external port 124. The push button 206 is optionally used to turn the device on / off by pressing the button and holding it down for a predefined period, to lock the device by pressing the button and releasing it before a predefined time has elapsed, and / or to unlock the device or initiate an unlock process. In some embodiments, device 100 also accepts verbal input through microphone 113 to activate or deactivate some functions. Device 100 also optionally includes one or more contact intensity sensors 165 for detecting the intensity of contact on touch sensing display system 112, and / or one or more haptic output generators 163 for generating haptic output to the user of device 100.
[0154] FIG. 3A is a block diagram of an exemplary multifunctional device having a display and a touch sensing surface, according to some embodiments. Device 300 need 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) for interconnecting and controlling communications between system components. Device 300 includes an input / output (I / O) interface 330 that includes a display 340, which is optionally a touch screen display. I / O interface 330 optionally also includes a keyboard and / or a mouse (or other pointing device) 350, a touch pad 355, a tactile output generator 357 for generating tactile outputs on device 300 (e.g., similar to the tactile output generator(s) 163 described above with reference to FIG. 1A), sensors 359 (e.g., optical sensors, acceleration sensors, proximity sensors, touch sensing sensors, and / or contact intensity sensors similar to the 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 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 solid state storage devices. Memory 370 optionally includes one or more storage devices located remotely from the CPU(s) 310.In some embodiments, memory 370 stores programs, modules, and data structures similar to, or subsets of, the programs, modules, and data structures stored in memory 102 of portable multifunctional device 100 (FIG. 1A). Further, memory 370 optionally stores additional programs, modules, and data structures not present in memory 102 of portable multifunctional device 100. For example, memory 370 of device 300 optionally stores a drawing module 380, a presentation module 382, a word processing module 384, a website creation module 386, a disk authoring module 388, and / or a spreadsheet module 390, while memory 102 of portable multifunctional device 100 (FIG. 1A) optionally does not store those modules.
[0155] Each of the elements in FIG. 3A, specified above, is optionally stored in one or more of the previously mentioned memory devices. Each of the modules specified above corresponds to a set of instructions for performing the functions described above. The modules or programs (i.e., sets of instructions) specified above need not be implemented as separate software programs, procedures, or modules, and thus various subsets of those modules are optionally combined or otherwise rearranged in various embodiments. In some embodiments, memory 370 optionally stores a subset of the modules and data structures specified above. Further, memory 370 optionally stores additional modules and data structures not described above.
[0156] FIGS. 3B-3C are block diagrams of an exemplary computer system 301, according to some embodiments.
[0157] In some embodiments, computer system 301 includes and / or communicates with the following. · Input device(s) (302 and / or 307, e.g., a touch-sensitive surface such as a touch-sensitive remote control, or a touch screen display that also functions as a display generation component, a mouse, a joystick, a wand controller, and / or a camera that tracks the position of one or more features of the user such as the user's hand), · Virtual / augmented reality logic 303 (e.g., virtual / augmented reality module 145), · Display generation component(s) (304 and / or 308, e.g., a display, a projector, a head-up display, etc.) for displaying virtual user interface elements to the user, · Camera(s) (e.g., 305 and / or 311) for capturing an image of the device's field of view, e.g., to determine the placement of virtual user interface elements, to determine the device's pose, and / or to display a portion of the physical environment in which the camera(s) is / are located, · Pose sensor(s) (e.g., 306 and / or 311) for determining the pose of the device with respect to the physical environment and / or changes in the pose of the device.
[0158] In some computer systems (e.g., 301-a of FIG. 3B), the input device(s) 302, the virtual / augmented reality logic 303, the display generation component(s) 304, the camera(s) 305, and the pose sensor(s) 306 are all integrated into the computer system (e.g., the portable multifunctional device 100 of FIGS. 1A-1B or the device 300 of FIG. 3 such as a smartphone or a tablet).
[0159] In some computer systems (e.g., 301-b), in addition to the integrated input device(s) 302, virtual / augmented reality logic 303, display generation component(s) 304, camera(s) 305, and pose sensor(s) 306, the computer system also communicates with additional devices separate from the computer system, such as separate input device(s) 307 like a touch sensing surface, a wand, a remote control, and / or separate display generation component(s) 308 like a virtual reality headset or augmented reality glasses that superimpose virtual objects onto the physical environment.
[0160] In some computer systems (e.g., 301-c in FIG. 3C), the input device(s) 307, display generation component(s) 309, camera(s) 311, and / or pose sensor(s) 312 are separate from and communicate with the computer system. In some embodiments, other combinations of components within the computer system 301 and components that communicate with the computer system are used. For example, in some embodiments, the display generation component(s) 309, camera(s) 311, and pose sensor(s) 312 are incorporated into a headset that is either integrated with or communicates with the computer system.
[0161] In some embodiments, all of the operations described below with reference to FIGS. 5A-5CO are performed on a single computing device having virtual / augmented reality logic 303 (e.g., computer system 301-a described below with reference to FIG. 3B). However, often, multiple different computing devices are linked together to perform the operations described below with reference to FIGS. 5A-5CO (e.g., a computing device having virtual / augmented reality logic 303 communicates with a separate computing device having a display 450 and / or a separate computing device having a touch sensing surface 451). In any of these embodiments, the computing device described below with reference to FIGS. 5A-5CO is a computing device (s) including virtual / augmented reality logic 303. Additionally, in various embodiments, it should be understood that virtual / augmented reality logic 303 may be divided among multiple separate modules or computing devices. However, for the purposes of the description herein, virtual / augmented reality logic 303 is primarily referred to as being present within a single computing device so as not to unnecessarily obscure other aspects of the embodiments.
[0162] In some embodiments, the virtual / augmented reality logic 303 receives the interpreted inputs and, in response to these interpreted inputs, generates instructions for updating the graphical user interface on the display according to the interpreted inputs, which are then used to update the graphical user interface. The virtual / augmented reality logic 303 includes one or more modules (e.g., one or more event processing units 190 including one or more object update units 177 and one or more GUI update units 178 as described in more detail above with reference to FIG. 1B). In some embodiments, the interpreted inputs detected (e.g., by the contact motion module 130 of FIGS. 1A and 3), recognized (e.g., by the event recognition unit 180 of FIG. 1B), and / or distributed (e.g., by the event sorter 170 of FIG. 1B) for the inputs are used to update the graphical user interface on the display. In some embodiments, the interpreted inputs are generated by modules in the computing device (e.g., the computing device receives raw contact input data to identify gestures from the raw contact input data). In some embodiments, some or all of the interpreted inputs are received by the computing device as interpreted inputs (e.g., a computing device including a touch sensing surface 451 processes the raw contact input data to identify gestures from the raw contact input data and transmits information indicating the gestures to a computing device including the virtual / augmented reality logic 303).
[0163] In some embodiments, both the display and the touch sensing surface are integrated with a computer system (e.g., 301-a of FIG. 3B) that includes virtual / augmented reality logic 303. For example, the computer system may be a desktop computer or a laptop computer having an integrated display (e.g., 340 of FIG. 3) and a touch pad (e.g., 355 of FIG. 3). As another example, the computing device may be a portable multifunctional device 100 (e.g., a smartphone, a PDA, a tablet computer, etc.) having a touch screen (e.g., 112 of FIG. 2).
[0164] In some embodiments, the touch sensing surface is integrated with the computer system and the display is not integrated with a computer system that includes virtual / augmented reality logic 303. For example, the computer system may be a device 300 (e.g., a desktop computer or a laptop computer) in which an integrated touch pad (e.g., 355 of FIG. 3) is connected (via a wired or wireless connection) to a separate display (e.g., a computer monitor, a television, etc.). As another example, the computer system may be a portable multifunctional device 100 (e.g., a smartphone, a PDA, a tablet computer, etc.) in which a touch screen (e.g., 112 of FIG. 2) is connected (via a wired or wireless connection) to a separate display (e.g., a computer monitor, a television, etc.).
[0165] In some embodiments, the display is integrated with the computer system, and the touch sensing surface is not integrated with the computer system including virtual / augmented reality logic 303. For example, the computer system may be a device 300 (e.g., a desktop computer, a laptop computer, a television with an all-in-one set-top box) in which an integrated touch display (e.g., 340 of FIG. 3) is connected (via a wired or wireless connection) to a separate touch sensing surface (e.g., a remote touch pad, a portable multifunctional device, etc.). As another example, the computer system may be a portable multifunctional device 100 (e.g., a smartphone, a PDA, a tablet computer, etc.) in which a touch screen (e.g., 112 of FIG. 2) is connected (via a wired or wireless connection) to a separate touch sensing surface (e.g., a remote touch pad, another portable multifunctional device having a touch screen functioning as a remote touch pad, etc.).
[0166] In some embodiments, neither the display nor the touch sensing surface is integrated with a computer system (e.g., 301-c of FIG. 3C) including virtual / augmented reality logic 303. For example, the computer system may be a stand-alone computing device 300 (e.g., a set-top box, a game console, etc.) connected (via a wired or wireless connection) to a separate touch sensing surface (e.g., a remote touch pad, a portable multifunctional device, etc.) and a separate display (e.g., a computer monitor, a television, etc.).
[0167] In some embodiments, the computer system has an integrated audio system (e.g., the audio circuit 110 and speaker 111 within the portable multifunctional device 100). In some embodiments, the computing device communicates with an audio system separate from the computing device. In some embodiments, the audio system (e.g., the audio system integrated within a television unit) is integrated with a separate display. In some embodiments, the audio system (e.g., a stereo system) is a stand-alone system separate from the computer system and the display.
[0168] Attention is now directed to embodiments of a user interface (UI) optionally implemented on the portable multifunctional device 100.
[0169] FIG. 4A shows an exemplary user interface for a menu of an application on the portable multifunctional device 100, according to some embodiments. A similar user interface is optionally implemented on the device 300. In some embodiments, the user interface 400 includes the following elements, or a subset or superset thereof. · Signal strength indicator(s) for wireless communication(s) such as cellular and Wi-Fi signals, · Time, · Bluetooth® indicator, · Battery status indicator, · A tray 408 having icons of frequently used applications such as ○ An icon 416 of the phone module 138, labeled "Phone", optionally including an indicator 414 of the number of missed calls or voicemail messages, ○ An icon 418 of the email client module 140, labeled "Mail", optionally including an indicator 410 of the number of unread emails, ○ An icon 420 of the browser module 147 labeled "Browser", and ○ An icon 422 of the video and music player module 152 labeled "Music", and · Icons of other applications as follows, ○ An icon 424 of the IM module 141 labeled "Message", ○ An icon 426 of the calendar module 148 labeled "Calendar", ○ An icon 428 of the image management module 144 labeled "Photo", ○ An icon 430 of the camera module 143 labeled "Camera", ○ An icon 432 of the measurement module 155 labeled "Measurement", ○ An icon 434 of the stock price widget 149-2 labeled "Stock Price", ○ An icon 436 of the map module 154 labeled "Map", ○ An icon 438 of the weather widget 149-1 labeled "Weather", ○ An icon 440 of the alarm clock widget 149-4 labeled "Clock", ○ An icon 442 of the training support module 142 labeled "Training Support", ○ An icon 444 of the memo module 153 labeled "Memo", and ○ An icon 446 of the settings application or module labeled "Settings" that provides access to the settings for the device 100 and its various applications 136.
[0170] Note that the labels of the icons shown in FIG. 4A are merely examples. For example, other labels are optionally used for various application icons. In some embodiments, the label for each application icon includes the name of the application corresponding to each application icon. In some embodiments, the label of a particular application icon is different from the name of the application corresponding to that particular application icon.
[0171] FIG. 4B shows an exemplary user interface on a device (e.g., device 300, FIG. 3A) having a touch sensing surface 451 (e.g., tablet or touch pad 355, FIG. 3A) separate from the display 450. Many of the following examples are given with reference to inputs on the 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, the touch sensing surface (e.g., 451 in FIG. 4B) has a major axis (e.g., 452 in FIG. 4B) corresponding to the major axis (e.g., 453 in FIG. 4B) on the display (e.g., 450). According to those embodiments, the device detects contact (e.g., 460 and 462 in FIG. 4B) with the touch sensing surface 451 at positions (e.g., in FIG. 4B, 460 corresponds to 468 and 462 corresponds to 470) corresponding to each position on the display. Thus, 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.
[0172] In addition, while the following examples are mainly given with reference to finger inputs (e.g., finger contact, finger tap gesture, finger swipe gesture, etc.), it should be understood that in some embodiments, one or more of those finger inputs are replaced with inputs from another input device (e.g., mouse-based input or stylus input). For example, a swipe gesture is optionally replaced by the movement of a cursor along a swipe path followed by a mouse click (e.g., instead of movement of a contact). As another example, a tap gesture is optionally replaced by a mouse click while the cursor is positioned over the location of the tap gesture (e.g., instead of detecting a contact and subsequently stopping detection of the contact). Similarly, it should be understood that when multiple user inputs are detected simultaneously, multiple computer mice are optionally used simultaneously, or a mouse and finger contact are optionally used simultaneously.
[0173] 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" such that when an input (e.g., a press input) is detected on a touch-sensitive surface (e.g., touchpad 355 in FIG. 3A or touch-sensitive surface 451 in FIG. 4B) while the cursor is over a particular user interface element (e.g., a button, window, slider, or other user interface element), the particular user interface element is adjusted according to the detected input. In some implementations that include a touch screen display that enables direct interaction with user interface elements on the touch screen display (e.g., touch-sensitive display system 112 in FIG. 1A or touch screen in FIG. 4A), a contact detected on the touch screen functions as a "focus selector" such that when an input (e.g., a press input by the contact) is detected at the location of a particular user interface element (e.g., a button, window, slider, or other user interface element) on the touch screen display, 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 (e.g., by moving the focus from one button to another button using the tab key or arrow keys) without movement of the corresponding cursor or movement of the contact on the touch screen display. In these implementations, the focus selector moves in accordance with the movement of the focus between various areas of the user interface. Regardless of the specific form taken by the focus selector, the focus selector is generally a user interface element (or contact on the touch screen display) that is controlled by the user to communicate the user's intended interaction with the user interface (e.g., by indicating to the device the element of the user interface with which the user intends to interact).For example, while a press input is detected on a touch sensing surface (e.g., a touch pad or touch screen), the position of a focus selector (e.g., a cursor, contact, or selection box) over the corresponding button indicates that the user intends to activate that corresponding button (as opposed to other user interface elements shown on the device's display). In some embodiments, a focus indicator (e.g., a cursor or selection indicator) is displayed via a display device to indicate the current portion of the user interface that will be affected by input received from one or more input devices.
[0174] 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 or a stylus contact) on the touch sensing surface, or an alternative (proxy) for the force or pressure of the contact on the touch sensing surface. The intensity of the contact has a range of values that includes at least four distinct values, and more typically includes hundreds (e.g., at least 256) of distinct values. The intensity of the contact is optionally determined (or measured) using a variety of techniques and a variety of sensors or combinations of sensors. For example, one or more force sensors 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, force measurements from multiple force sensors are combined (e.g., weighted average or sum) to identify the 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. Alternatively, the size and / or change in size of the contact area detected on the touch sensing surface, the capacitance and / or change in capacitance of the touch sensing surface proximate to the contact, and / or the resistance and / or change in resistance of the touch sensing surface proximate to the contact are optionally used as an alternative for the force or pressure of the contact on the touch sensing surface. In some implementations, the alternative measurement for the force or pressure of the 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 implementations, the alternative measurement for the force or pressure of the contact is converted to an estimated force or pressure, and the 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 contact as an attribute of user input enables a user to access additional device functions that might otherwise not be easily accessible to the user on a device of limited or reduced size where assets for displaying affordances (e.g., on a touch-sensitive display) and / or receiving user input (e.g., via a touch-sensitive display, touch-sensitive surface, or physical / mechanical controls such as knobs or buttons) are restricted.
[0175] In some embodiments, the contact / motion module 130 uses a set of one or more intensity thresholds to determine whether an action has been performed by the user (e.g., to determine whether the user has “clicked” on an icon). In some embodiments, at least one subset of the intensity thresholds is determined according to software parameters (e.g., the intensity thresholds can be adjusted without changing the physical hardware of device 100, rather than being determined by the activation threshold of a particular physical actuator). For example, the mouse “click” threshold for a trackpad or touch screen display can be set to any of a wide range of default thresholds without changing the hardware of the trackpad or touch screen display. Further, in some implementations, a software setting is provided for a user of the device to adjust one or more of the set of intensity thresholds (e.g., by adjusting individual intensity thresholds and / or by adjusting multiple intensity thresholds at once with a system-level click “intensity” parameter).
[0176] As used in this specification and the claims, the term "characteristic strength" of a contact refers to the characteristics of that 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 during a predefined period (e.g., 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10 seconds) related to a predefined number of strength samples, i.e., a predefined 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 a contact is optionally one or more of the maximum value of the contact strength, the mean value of the contact strength, the average value of the contact strength, the top 10% value of the contact strength, a value that is half of the maximum value of the contact strength, a value that is 90% of the maximum value of the contact strength, a value generated by low-pass filtering the strength of a contact over a predefined period, or at a predefined time. In some embodiments, the duration of the contact is used when determining 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 the one or more strength thresholds is used not to determine whether to perform a first operation or a second operation, but to determine whether to perform one or more operations (e.g., whether to perform each option or refrain from performing each operation).
[0177] 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 (e.g., a drag gesture) that transitions from a start position to reach an end position, and at that point the intensity of the contact increases. In this example, the characteristic intensity of the contact at the end position may be based on only a portion of the continuous swipe contact (e.g., only a portion of the swipe contact at the end position) rather than the entire swipe contact. In some embodiments, a smoothing algorithm may be applied to the intensity of the swipe contact before identifying 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 eliminate minor increases or decreases in the intensity of the swipe contact for the purpose of determining the characteristic intensity.
[0178] The figures of the user interface described herein optionally include one or more intensity thresholds (e.g., a contact detection intensity threshold IT0, a light press intensity threshold IT L , a deep press intensity threshold IT D (e.g., at least initially higher than IT L ), and / or one or more other intensity thresholds (e.g., an intensity threshold IT L lower than IT H) includes charts of various intensities indicating the current intensity of contact on the touch sensing surface. This intensity diagram is typically not part of the displayed user interface but is provided to assist in the interpretation of the diagram. In some embodiments, the light press intensity threshold typically corresponds to the intensity at which the device performs an operation associated with clicking a button or trackpad of a physical mouse. In some embodiments, the deep press intensity threshold typically corresponds to the intensity at which the device performs an operation different from the operation associated with clicking a button or trackpad of a physical mouse. In some embodiments, when a contact having a characteristic intensity below the light press intensity threshold (e.g., above a nominal contact detection intensity threshold IT0 below which the contact is no longer detected) is detected, the device moves 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 among various sets of user interface diagrams.
[0179] In some embodiments, the device's response to an input detected by the device depends on a criterion based on the contact intensity during the input. For example, in the case of some "light press" inputs, a contact intensity that exceeds a first intensity threshold during the input triggers a first response. In some embodiments, the device's response to an input detected by the device depends on a criterion that includes both the contact intensity during the input and a time-based criterion. For example, in the case of some "deep press" inputs, a contact intensity that exceeds a second intensity threshold during the input, which is greater than the first intensity threshold for light presses, triggers a second response only if a delay time has elapsed between satisfying the first intensity threshold and satisfying the second intensity threshold. This delay time is typically less than 200 ms (milliseconds) (e.g., 40 ms, 100 ms, or 120 ms depending on the magnitude of the second intensity threshold, and the delay time increases as the second intensity threshold increases). This delay time helps to avoid accidental recognition of deep press inputs. As another example, in the case of some "deep press" inputs, there is a period of reduced sensitivity that occurs after the time when the first intensity threshold is satisfied. During the period of reduced sensitivity, the second intensity threshold increases. This temporary increase in the second intensity threshold also helps to avoid accidental deep press inputs. In the case of other deep press inputs, the response to the detection of a deep press input does not depend on a time-based criterion.
[0180] In some embodiments, one or more of the input intensity thresholds and / or the corresponding outputs vary based on one or more factors such as user settings, movement of the contact, input timing, the application being executed, the rate at which the intensity is applied, the number of simultaneous inputs, user history, environmental factors (e.g., ambient noise), the position of the focus selector, etc. Exemplary factors are described in U.S. Patent Application Publication Nos. 14 / 399,606 and 14 / 624,296, which are hereby incorporated by reference in their entirety.
[0181] For example, FIG. 4C shows a dynamic intensity threshold 480 that changes over time based to some extent on the intensity of the touch input 476. The dynamic intensity threshold 480 is the sum of two components, a first component 474 that decays over time after a predetermined delay time p1 from when the touch input 476 was first detected, and a second component 478 that follows the trace of the intensity of the touch input 476 over time. The first high intensity threshold of the first component 474 reduces the accidental triggering of the "deep press" response while further enabling an immediate "deep press" response if the touch input 476 provides sufficient intensity. The second component 478 reduces the unintended triggering of the "deep press" response due to the gradual intensity variations of the touch input. In some embodiments, when the touch input 476 meets the dynamic intensity threshold 480 (e.g., at point 481 in FIG. 4C), a "deep press" response is triggered.
[0182] FIG. 4D shows another dynamic intensity threshold 486 (e.g., intensity threshold IT D ). FIG. 4D also shows two other intensity thresholds, a first intensity threshold IT H and a second intensity threshold IT L . In FIG. 4D, the touch input 484 meets the first intensity threshold IT H and the second intensity threshold IT L before time p2, but no response is provided until the delay time p2 has elapsed at time 482. Also in FIG. 4D, the dynamic intensity threshold 486 decays over time with an attenuation that starts at time 488 after a predefined delay time p1 has elapsed from time 482 (when the response associated with the second intensity threshold IT L has been triggered). This type of dynamic intensity threshold reduces the accidental triggering of the response associated with the dynamic intensity threshold IT H or the second intensity threshold IT L immediately after or simultaneously with the triggering of the response associated with a lower intensity threshold such as the first intensity threshold IT D .
[0183] FIG. 4E shows yet another dynamic intensity threshold 492 (e.g., intensity threshold IT D ). In FIG. 4E, the intensity threshold ITL The response associated with L is triggered after a delay time p2 has elapsed since the touch input 490 was first detected. At the same time, the dynamic intensity threshold 492 decays after a predetermined delay time p1 has elapsed since the touch input 490 was first detected. Therefore, without releasing the touch input 490, an increase in the intensity of the touch input 490 is followed by a decrease in the intensity threshold IT L The decrease in the intensity of the touch input 490 after triggering the response associated with L can trigger the response associated with the intensity threshold IT L even when the intensity of the touch input 490 falls below another intensity threshold, e.g., the intensity threshold IT D (e.g., at time 494).
[0184] An increase in the characteristic intensity of the contact from an intensity below the light press intensity threshold IT L to an intensity between the light press intensity threshold IT L and the deep press intensity threshold IT D may be referred to as a "light press" input. An increase in the characteristic intensity of the contact from an intensity below the deep press intensity threshold IT D to an intensity above the deep press intensity threshold IT D may be referred to as a "deep press" input. An increase in the characteristic intensity of the contact from an intensity below the contact detection intensity threshold IT0 to an intensity between the contact detection intensity threshold IT0 and the light press intensity threshold IT L may be referred to as the detection of contact on the touch surface. A decrease in the characteristic intensity of the contact from an intensity above the contact detection intensity threshold IT0 to an intensity below the contact detection intensity threshold IT0 may be referred to as the detection of lift-off of the contact from the touch surface. In some embodiments, IT0 is zero. In some embodiments, IT0 is greater than zero. In some examples, a shaded circle or ellipse is used to represent the intensity of the contact on the touch sensing surface. In some examples, an unshaded circle or ellipse is used to represent each contact on the touch sensing surface without specifying the intensity of each contact.
[0185] In some embodiments described herein, one or more operations are performed in response to detecting a gesture that includes each respective press input, or in response to detecting each respective press input that is performed at each respective contact (or contacts), where each respective press input is detected based at least in part on detecting an increase in the intensity of the contact (or contacts) that exceeds a press input intensity threshold. In some embodiments, each respective operation is performed in response to detecting an increase in the intensity of each respective contact that exceeds a press input intensity threshold (e.g., each respective operation is performed on the "downstroke" of each respective press input). In some embodiments, the press input includes an increase in the intensity of each respective contact that exceeds a press input intensity threshold and a subsequent decrease in the intensity of the contact that falls below the press input intensity threshold, and each respective operation is performed in response to detecting the subsequent decrease in the intensity of each respective contact that falls below the press input threshold (e.g., each respective operation is performed on the "upstroke" of each respective press input).
[0186] 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 press input intensity threshold (e.g., the hysteresis intensity threshold is X intensity units lower than the press input intensity threshold, or the hysteresis intensity threshold is 75%, 90%, or some other appropriate percentage of the press input intensity threshold). Thus, in some embodiments, a press input includes an increase in the intensity of each contact above the press input intensity threshold and a subsequent decrease in the intensity of the contact below the hysteresis intensity threshold corresponding to the press input intensity threshold, and each operation is performed in response to detecting a subsequent decrease in the intensity of each contact below the hysteresis intensity threshold (e.g., each operation is performed on the "upstroke" of each press input). Similarly, in some embodiments, a press 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 press 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 the press input (e.g., an increase in the intensity of the contact or a decrease in the intensity of the contact, depending on the situation).
[0187] For ease of explanation, the description of an operation performed in response to a pressing input associated with a pressing input strength threshold or in response to a gesture including the pressing input is optionally triggered in response to detecting an increase in the intensity of contact exceeding the pressing input strength threshold, an increase in the intensity of contact from an intensity below a hysteresis strength threshold to an intensity exceeding the pressing input strength threshold, a decrease in the intensity of contact below the pressing input strength threshold, or a decrease in the intensity of contact below a hysteresis strength threshold corresponding to the pressing input strength threshold. Further, in an example where the operation is described as being performed in response to detecting a decrease in the intensity of contact below the pressing input strength threshold, the operation is optionally performed in response to detecting a decrease in the intensity of contact corresponding to and below a hysteresis strength threshold lower than the pressing input strength threshold. As described above, in some embodiments, the triggering of these responses also depends on time-based criteria being met (e.g., the delay time elapsing between the first intensity threshold being met and the second intensity threshold being met).
[0188] For illustrative purposes, only specific frequencies, amplitudes, and waveforms are represented by the sample haptic output patterns in FIGS. 4F - 4K, but haptic output patterns having other frequencies, amplitudes, and waveforms can also be used for a similar purpose. For example, a waveform having 0.5 - 4 cycles can be used. Also, other frequencies in the range of 60 Hz - 400 Hz can be used.
[0189] User Interface and Related Processes Here, a display generation component (e.g., a display, a projector, a head-up display, etc.), one or more cameras (e.g., a video camera that continuously provides a live preview of at least a portion of the content within the field of view of at least one of the cameras and optionally captures one or more streams of image frames of the content within the field of view of at least one of the cameras to generate a video output), one or more input devices (e.g., a touch-sensitive surface such as a touch-sensitive remote control, or a touch screen display that also functions as a display generation component, a mouse, a joystick, a wand controller, and / or a camera that tracks the position of one or more features of the user such as the user's hand), optionally one or more orientation sensors, optionally one or more sensors that detect the intensity of contact with a touch-sensitive surface, and optionally one or more haptic output generators, may be implemented on a computer system (e.g., an electronic device such as the portable multifunctional device 100 (FIG. 1A), the device 300 (FIG. 3A), or the computer system 301 (FIG. 3B)) that includes (and / or communicates with) them. Attention is directed to embodiments of a user interface ("UI") and related processes.
[0190] Figures 5A through 5CO illustrate exemplary user interfaces for performing measurements of a physical space using an extended reality environment, according to some embodiments. The user interfaces in these figures are used to illustrate processes described below, including the processes in Figures 6A-6C, 7A-7E, 8A-8C, 9A-9B, 10A-10B, 11A-11B, 12A-12C, 13A-13C, and 14A-14D. For convenience of explanation, some embodiments are discussed with reference to operations performed on a device having a touch sensing display system 112. In such embodiments, the focus selector is optionally any contact of a respective finger or stylus, a representative point corresponding to the contact of the finger or stylus (e.g., the centroid of each contact or a point associated with each contact), or the centroid of two or more contacts detected on the touch sensing display system 112. However, similar operations are optionally performed on a device having a display 450 and a separate touch sensing surface 451 in response to detecting a contact on the touch sensing surface 451 while displaying the user interface shown in the figure on the display 450, together with the focus selector.
[0191] FIG. 5A shows a situation in which the user interface described with respect to FIGS. 5A-5C0 is used. Specifically, FIG. 5A shows a diagram of the physical space 5000 in which the table 5002 and the device 100 are located. The device 100 is held by the user 5004 to view the physical space 5000 including a portion of the table 5002 via the touch screen 112 of the device 100. In particular, the touch screen 112 displays a view of the augmented reality environment corresponding to the physical space 5000. The user 5004 uses the touch screen 112 of the device 100 to interact with the augmented reality environment via the displayed user interface 5006 (e.g., the user interface of an augmented reality measurement application). The user interface 5006 includes a live preview of the field of view of at least one of one or more cameras of the device 100 (the cameras 305 (singular or plural) of FIGS. 3A-3B or the cameras 311 (singular or plural) of FIG. 3C, optionally the optical camera 164 of FIG. 1A as part of one or more of the cameras, sometimes referred to as the "camera" of the device 100). In some embodiments, the camera(s) is / are located on the device 100 within the region 5008. In some embodiments, the device 100 includes a front camera 305-a located adjacent to and above the same surface of the device 100 as the touch screen 112 (e.g., the surface facing the user 5004 in FIG. 5A) within the region 5008. In some embodiments, the device 100 includes one or more cameras located within the region 5008 on the back side of the touch screen 112 or on the opposite side of the touch screen 112 from the device 100 (sometimes referred to as the back side of the device 100) (e.g., in FIG. 5A, one or more cameras are facing away from the user 5004). At least one camera may include one or more physical objects (e.g., the table 5002) within the physical space 5000 and continuously provide a live preview of the content within the field of view of the camera.
[0192] In some embodiments, the user interface 5006 includes one or more user interface elements for user interaction with the augmented reality environment. For example, in FIG. 5A, the user interface 5006 includes a reticle 5010 that indicates an area for user interaction with the augmented reality environment. In some embodiments, the reticle 5010 includes a focus point 5012 that indicates a specific location for user interaction. In some embodiments, the user interface 5006 includes a measurement addition button 5014 that is used to add new measurements (e.g., new measurement points, new measurement segments, and / or new measurement regions) to the user interface 5006 (e.g., as described in more detail herein). In some embodiments, the reticle 5010 and the focus point 5012 form a measurement point creation indicator that indicates the location where new measurements are added in response to activation of the measurement addition button 5014.
[0193] In some embodiments, the user interface 5006 includes a media capture button 5016 used to capture media such as still images or video of the field of view (including optionally corresponding audio), and any virtual measurements corresponding to physical objects within the field of view. In some embodiments, the user interface 5006 includes an undo button 5018 used to invalidate the most recently performed action in the user interface 5006. In some embodiments, the user interface 5006 includes a redo button 5020 used to re - execute the most recently performed action in the user interface 5006 (e.g., to invalidate the invalidation of an action performed after activation of the undo button 5018). The user interface 5006 may also include one or more virtual measurements corresponding to one or more physical objects within the physical space 5000 and displayed in response, at least to some extent, to user input on the user interface elements of the user interface 5006. In some embodiments, the user interface 5006 includes a clear button 5022 for removing virtual measurements displayed within the user interface 5006 (and, optionally, also for removing virtual measurements that are not displayed within the user interface 5006 when the clear button 5022 is activated, such as virtual measurements corresponding to physical objects (singular and plural) outside the camera's field of view when the clear button 5022 is activated).
[0194] Figure 5B shows the device 100 in a first landscape orientation, in contrast to the vertical orientation of Figure 5A. While the device 100 is in the first landscape orientation, as shown in Figure 5B, one or more cameras of the device 100 are located within the area 5008 on the left side of the device 100, and the measurement addition button 5014 is displayed within the user interface 5006 on the right side of the device 100, away from the area 5008, reducing the possibility that the user 5004 holding the device 100 on the left side can see the field of view of the camera providing the live preview within the user interface 5006, and facilitating the interaction with the augmented reality environment while the user 5004 operates with one hand while holding the device 100 on its right side (for example, while the user 5004 holds the device 100 with their right hand).
[0195] Figure 5C shows the device 100 in a second landscape orientation different from the landscape orientation in Figure 5B (for example, rotated 180 degrees from the landscape orientation in Figure 5B). While the device 100 is in the second landscape orientation, as shown in Figure 5C, one or more cameras of the device 100 are located within the area 5008 on the right side of the device 100, and the measurement addition button 5014 is displayed within the user interface 100 on the left side of the device 100, away from the area 5008, reducing the possibility that the user 5004 holding the device 100 on the right side can see the field of view of the camera providing the live preview within the user interface 5006, and facilitating the interaction with the augmented reality environment while the user 5004 operates with one hand while holding the device 100 on its left side (for example, while the user 5004 holds the device 100 with their left hand).
[0196] FIG. 5D shows an example of an error state in an augmented reality environment. In particular, FIG. 5D shows a view of physical space 5000 when there is insufficient light available for device 100 to recognize distinct physical objects and physical features within the camera's field of view. Device 100 displays an error message 5024 (e.g., including text such as "too dark" and "turn on the lighting to detect surface") within user interface 5006 to indicate the error state and prompt user 5004 to increase the amount of light within physical space 5000. In some embodiments, while there is an error state such that device 100 is unable to identify a physical object or feature within the camera's field of view, device 100 stops displaying reticle 5010 and / or focus point 5012 to indicate the error state.
[0197] FIG. 5E shows another example of an error state in an augmented reality environment. Specifically, FIG. 5E shows a view of physical space 5000 where sufficient light is available, but (e.g., user 5004 has turned on the lighting in response to error message 5024), device 100 is not detecting the surface of a physical object within physical space 5000 that is within the camera's field of view. Device 100 displays an error message 5026 (e.g., by text such as "move the device left and right to detect surface") within user interface 5006 to indicate the error state and prompt user 5004 to move device 100 left and right (e.g., to facilitate image processing by device 100 to detect a physical surface within the camera's field of view). Movement arrows 5028 indicate left and right movement of device 100 by user 5004 in response to error message 5026. In some embodiments, error message 5026 is displayed when device 100 does not detect the surface of a physical object at the position where focus point 5012 is displayed within the live preview. In some embodiments, if user 5004 moves device 100 too quickly with respect to the surface of the physical object to be detected, an error state is displayed to indicate the error situation and prompt user 5004 to move device 100 more slowly.
[0198] Figure 5F shows a diagram of the physical space 5000 when the device 100 detects the surface of a physical object within the physical space 5000. Specifically, in Figure 5F, the device 100 detects the upper surface of the table 5002 (for example, while the focus point 5012 is positioned above the upper surface of the table 5002 in the live preview, based on the left - right movement of the device 100 as described above with respect to Figure 5E). By detecting a specific surface, the device 100 displays a reticle 5010 within the user interface 5006 in addition to the focus point 5012. In some embodiments, the reticle 5010 is displayed each time the focus point 5012 is positioned over an area in the live preview that corresponds to the detected surface of a physical object within the physical space 5000 (for example, to indicate that the area in the live preview where the focus point 5012 is positioned corresponds to the detected surface). In some embodiments, the reticle 5010 is tilted so as to appear on the same plane as the detected surface, as shown in Figure 5F, to indicate the surface detected by the device.
[0199] Figure 5G shows the transition from Figure 5F. In Figure 5G, the user 5004 is moving the device 100 such that the focus point 5012 is positioned over a point in the live preview that does not correspond to the detected surface (for example, the focus point 5012 is no longer positioned above the detected upper surface of the table 5002 in the live preview). Accordingly, the device 100 changes the appearance of the reticle 5010 (for example, by no longer tilting the reticle, by changing the reticle to a black circle, and / or by stopping the display of the reticle) while continuing to display the focus point 5012.
[0200] Figure 5H shows the transition from Figure 5G. In Figure 5H, user 5004 moves device 100 so that at least a portion of focus point 5012 and reticle 5010 are repositioned onto the detected upper surface of table 5002 within the live preview. Device 100 detected edge 5030 of table 5002 (e.g., the edge of the detected upper surface) in the live preview. Edge 5030 is at least partially present within reticle 5010 (e.g., focus point 5012 is within a predefined threshold distance of edge 5030, where in this case the predefined threshold distance is the maximum radius of reticle 5010). Accordingly, the visual appearance of reticle 5010 and focus point 5012 changes. Specifically, focus point 5012 is moved (e.g., vertically downward) to a specific point along edge 5030 or “snapped” to that point. Further, the size of reticle 5010 is reduced to indicate that focus point 5012 is snapped to a detected feature within the live preview. In some embodiments, reticle 5010 is displayed at the size shown in Figure 5H whenever focus point 5012 is snapped to a detected feature within the live preview. In some embodiments, the visual appearance of reticle 5010 and focus point 5012 is changed when focus point 5012 snaps to a detected feature within the live preview that corresponds to an edge or corner of a physical object within the camera's field of view. In some embodiments, the visual appearance of reticle 5010 and focus point 5012 is not changed when reticle 5010 and focus point 5012 are positioned over a detected feature within the live preview that corresponds to the surface of a physical object within the camera's field of view. In some embodiments, in conjunction with moving focus point 5012 to edge 5030, device 100 optionally generates a tactile output 5032 (e.g., using tactile output generator 163 of Figure 1A) to indicate that point 5012 has been “snapped” to a detected feature within the camera's live preview.
[0201] FIG. 5I shows the transition from FIG. 5H. In FIG. 5I, user 5004 moves device 100 such that a portion of edge 5030 is outside the scope of reticle 5010. Accordingly, focus point 5012 is snapped away from edge 5030 and redisplayed at the center of reticle 5010 (e.g., because there are no longer any features within the scope of reticle 5010 to which focus point 5012 should snap). Additionally, the size of reticle 5010 is enlarged to return to its size as shown in FIG. 5F before focus point 5012 snapped to edge 5030. In some embodiments, reticle 5010 is displayed by default at the size shown in FIGS. 5F and 5I whenever focus point 5012 is not snapped to any detected feature within the live preview. In some embodiments, focus point 5012 is displayed by default at the center of reticle 5010 whenever focus point 5012 is not snapped to any detected feature within the live preview. In some embodiments, as shown in FIG. 5I, device 100 optionally generates a haptic output 5034 in conjunction with moving focus point 5012 away from edge 5030 to indicate that focus point 5012 is no longer snapped to a detected feature within the camera's live preview. In some embodiments, haptic output 5034 differs from haptic output 5032 (FIG. 5H) in at least one haptic output characteristic (e.g., frequency, amplitude, and / or pattern), providing the user 5004 with haptic feedback that is different from haptic output 5032 (FIG. 5H) which indicates snapping to a detected feature, indicating snapping away from the detected feature.
[0202] Figures 5J to 5O show the creation of measurements at the upper left edge in the horizontal direction of the table 5002. Figure 5J shows the transition from Figure 5I. In Figure 5J, the user 5004 moves the device 100 so that the upper rear left corner of the table 5002 displayed in the live preview is within the range of the reticle 5010. Accordingly, the focus point 5012 is snapped to the anchor point corresponding to the upper rear left corner of the table 5002 in the live preview. In some embodiments, the focus point 5012 is maintained on the anchor point in the live preview as long as the upper rear left corner of the table 5002 in the live preview is within the range of the reticle 5010 (for example, the device 100 may move slightly due to an unintentional movement of the user 5004 such as the instability of the user 5004's hand). The size of the reticle 5010 is reduced to show the snap operation (for example, as shown above with reference to Figure 5H and having the same size as described above). In addition, a haptic output 5036 is generated to show the snap operation.
[0203] Figures 5K - 5L show the transition from Figure 5J, which shows the addition of measurement points to the user interface 5006. Specifically, Figure 5K shows the activation of the measurement addition button 5014 by a touch input 5038 (e.g., a tap gesture) where the contact intensity exceeds the minimum contact detection threshold IT0, as indicated by the intensitometer 5040. In response to the activation of the measurement addition button 5014, the device 100 adds and displays a (virtual) measurement point 5042 to the user interface 5006 at the current position of the focus point 5012. In addition to adding the measurement point 5042 to the user interface 5006, the device 100 optionally generates a haptic output 5044 indicating the addition of the measurement point. In some embodiments, the haptic output 5044 differs from the haptic outputs 5032 (Figure 5H) and 5034 (Figure 5I) in at least one haptic output characteristic (e.g., frequency, amplitude, and / or pattern), such that the haptic outputs 5032 (Figure 5H) and 5034 (Figure 5I) indicating the snap operation provide different haptic feedback to the user 5004 than the haptic output 5044 indicating the addition of the measurement point. Figure 5L shows the lift-off of the touch input 5038 from the measurement addition button 5014.
[0204] Figure 5M shows the transition from Figure 5L. In Figure 5M, user 5004 moves device 100 diagonally downward and to the right so that reticle 5010 is positioned over different positions within physical space 5000 such that it is displayed within the live preview. Specifically, in Figure 5M, reticle 5010 is positioned over the upper front left corner of table 5002 so as to be displayed in the live preview. Thus, focus point 5012 is snapped to the anchor point corresponding to the upper front left corner of table 5002 within the live preview. The size of reticle 5010 is reduced (e.g., as shown above with reference to Figure 5J and to the same size as described above) to indicate the snap operation. A haptic output 5046 is generated to indicate the snap operation. Additionally, measurement point 5042 continues to be displayed over the upper rear left corner of table 5002 (e.g., measurement point 5042 is associated with the upper rear left corner of table 5002 and is displayed over that position within the live preview even as the position of the upper rear left corner of table 5002 changes as device 100 moves).
[0205] In response to the movement of device 100 such that reticle 5010 and focus point 5012 are positioned over different locations within physical space 5000, measurement segment 5048 is displayed between measurement point 5042 (the most recently added measurement point) and focus point 5012. Measurement segment 5048 is displayed with a label 5049 indicating the distance (e.g., "3 feet") between the point within physical space 5000 corresponding to measurement point 5042 and the point within physical space 5000 corresponding to focus point 5012. Prior to the addition of the second endpoint of measurement segment 5048, measurement segment 5048 is a dynamic measurement segment having a first endpoint that is measurement point 5042 and a second endpoint that is the current position of focus point 5012 (e.g., both the length of measurement segment 5048 and the distance indicated by label 5049 corresponding to measurement segment 5048 are updated in accordance with the movement of device 100 that changes the point within physical space 5000 corresponding to the current position of focus point 5012). Additionally, a virtual guide 5050 is displayed along a feature within physical space 5000 that extends in the direction of movement of device 100 from the most recently added measurement point, i.e., measurement point 5042. Specifically, virtual guide 5050 is displayed along the upper left horizontal edge of table 5002, extending diagonally downward and to the right within the live preview. The upper left horizontal edge of table 5002 and the other edges of the upper surface of table 5002 are referred to herein as horizontal edges, for the reason that they are horizontal within physical space 5000 from the perspective of device 100, even if they appear diagonal within the live preview.
[0206] Figures 5N to 5O show the transition from Figure 5M, showing the addition of measurements to the user interface 5006. Specifically, Figure 5N shows the activation of the measurement addition button 5014 by a touch input 5052 (e.g., a tap gesture) whose contact intensity exceeds the minimum contact detection threshold IT0, as indicated by the intensitometer 5040. In response to the activation of the measurement addition button 5014, the device 100 adds and displays a (virtual) measurement point 5054 within the user interface 5006 at the current position of the focus point 5012 and as the second end point of the measurement segment 5048. In addition to adding the measurement point 5040 to the user interface 5006, the device 100 optionally generates a haptic output 5056 indicating the addition of the measurement point. In some embodiments, the haptic output 5056 is the same type of haptic output as the haptic output 5044 (Figure 5K) indicating the addition of a measurement point. In some embodiments, the haptic output 5056 differs from the haptic output 5044 (Figure 5K) in at least one haptic output characteristic (e.g., frequency, amplitude, and / or pattern), so that the haptic output 5056 provides the user 5004 with feedback different from the haptic output 5044 (Figure 5K). In some such embodiments, the haptic output 5044 (Figure 5K) indicates the addition of a measurement point starting a new measurement segment, and the haptic output 5056 indicates the addition of a measurement point completing (e.g., ending) the measurement segment. Figure 5O shows the lift-off of the touch input 5052 from the measurement addition button 5014. After the lift-off of the touch input 5052, the device 100 continues to display the measurement point 5042, the measurement point 5054, the measurement segment 5048 connecting the measurement points 5042 and 5054 within the user interface 5006, and the label 5049 (corresponding to the measurement at the upper left horizontal edge of the table 5002). In some embodiments, as shown in Figure 5O, when the measurement segment is completed, the device 100 stops displaying virtual guides such as the virtual guide 5050.
[0207] Figure 5P shows the transition from Figure 5O. In Figure 5P, the user 5004 is moving the device 100 so that the reticle 5010 is positioned on the side surface of the table 5002 within the live preview adjacent to the measurement segment 5048. The device 100 determines (e.g., based to some extent on the measurement segment 5048) that the area where the reticle 5010 (or more specifically the focus point 5012) is positioned corresponds to a physical rectangular area within the physical space 5000 (e.g., the detected area may appear trapezoidal in the live preview from the perspective of the device 100). Accordingly, the device 100 displays an indicator 5058 indicating that the detected area corresponds to a physical rectangular area. In addition, the device 100 continues to display the measurement point 5042, the measurement point 5054, the measurement segment 5048, and the label 5049 above the upper left edge in the horizontal direction of the table 5002. In some embodiments, measurement elements (e.g., the measurement point 5042, the measurement 5054, the measurement segment 5048, and the label 5049) that are part of the virtual measurement are displayed on the user interface 5006 whenever the physical object corresponding to the virtual measurement (e.g., the upper left edge in the horizontal direction of the table 5002) can be seen within the live preview until the corresponding virtual measurement is cleared.
[0208] Figures 5Q to 5X show the creation of measurements at the left front edge in the vertical direction of table 5002. Figure 5Q shows the transition from Figure 5P. In Figure 5Q, user 5004 moves device 100 so that reticle 5010 is repositioned again over the upper front left corner of table 5002 as shown in the live preview. Thus, focus point 5012 snaps to an anchor point corresponding to the upper front left corner of table 5002 in the live preview and corresponding to measurement point 5054. The size of reticle 5010 is reduced to show the snap operation (e.g., as shown above with reference to Figure 5M and to the same size as described above). A haptic output 5060 is generated to show the snap operation. Device 100 stops displaying indicator 5058 (e.g., because focus point 5012 has snapped to an anchor point corresponding to the upper front left corner of table 5002 and is no longer displayed over the detection area in the live preview corresponding to the physical rectangular area on the side of table 5002).
[0209] Figure 5R shows the transition from Figure 5Q, showing the addition of a measurement point to user interface 5006. Specifically, Figure 5R shows the activation of measurement addition button 5014 by a touch input 5062 (e.g., a tap gesture) whose contact intensity exceeds the minimum contact detection threshold IT0 as indicated by intensity meter 5040. In some embodiments, as shown in Figure 5R, in response to the activation of measurement addition button 5014, device 100 uses measurement point 5054 as the starting point for a new measurement segment to be added. In some embodiments, in response to the activation of measurement addition button 5014, device 100 adds and displays another (virtual) measurement point at the same position as measurement point 5054 as the starting point for a new measurement segment. In addition to establishing any of the aforementioned starting points for the new measurement segment, device 100 optionally generates a haptic output 5064 indicating the addition of a measurement point (and, in some embodiments, indicating that the added measurement point starts a new measurement segment).
[0210] Figure 5S shows the transition from Figure 5R. In Figure 5S, user 5004 moves device 100 horizontally to the right such that reticle 5010 is positioned over a location along the horizontal front edge of table 5002 and the upper front left corner of table 5002 within the live preview is no longer within the extent of reticle 5010. Accordingly, focus point 5012 is displayed on an anchor point corresponding to the horizontal front edge of table 5002 (e.g., a midpoint of a portion of the front edge of table 5002 within the extent of reticle 5010 that is the shortest distance from the center of reticle 5010 and along a portion of the front edge of table 5002 within the extent of reticle 5010). Reticle 5010 is displayed in its reduced size (e.g., the same size as in Figure 5R) to indicate that focus point 5012 is snapped to a detected feature within the live preview. Additionally, measurement point 5054 continues to be displayed over the upper front left corner of table 5002 within the live preview and dynamic measurement segment 5066 is displayed between measurement point 5054 and focus point 5012. Label 5068 indicates the distance between the point in physical space 5000 corresponding to measurement point 5054 and the point in physical space 5000 corresponding to focus point 5012. Additionally, in response to the horizontal movement of device 100, device 100 displays virtual guide 5070 extending horizontally from measurement point 5054.
[0211] In some embodiments, as shown in Figure 5S, haptic output is not generated to indicate a snap operation. For example, at least a portion of the horizontal front edge of table 5002 is maintained within the extent of reticle 5010 and the particular anchor point to which focus point 5012 is snapped changes as device 100 moves, but focus point 5012 is not snapped away from the horizontal front edge of table 5002 at any time during the movement of device 100. While focus point 5012 moves along the detected edge, device 100 ceases generating haptic output to avoid continuous generation of haptic output.
[0212] Figure 5T shows the transition from Figure 5S. In Figure 5T, the direction of movement of device 100 changes from the horizontal direction to vertically downward to the right. In response to the change in the direction of movement from horizontal to vertical movement, device 100 stops displaying the (horizontal direction) virtual guide 5070 (Figure 5S) and instead displays a (vertical direction) virtual guide 5072 that extends vertically from measurement point 5054 in the direction of movement of device 100. Focus point 5012 is snapped to an anchor point corresponding to the vertical inner left edge 5074 of table 5002, and in some embodiments, as shown in Figure 5T, device 100 generates a haptic output 5076 to indicate the snap operation. Dynamic measurement segment 5066 is continuously updated as device 100 moves so as to be displayed between measurement point 5054 and the current position of focus point 5012. Additionally, label 5068 is continuously updated as the device moves and dynamic measurement segment 5066 is updated so that label 5068 is displayed at the midpoint of dynamic measurement segment 5066.
[0213] Figure 5U shows the transition from Figure 5T, which shows the addition of a measurement point to the user interface 5006. Specifically, Figure 5U shows the activation of the measurement addition button 5014 by a touch input 5078 (e.g., a tap gesture) whose contact intensity exceeds the minimum contact detection threshold IT0, as indicated by the intensitometer 5040. In response to the activation of the measurement addition button 5014, the device 100 adds and displays a (virtual) measurement point 5080 to the user interface 5006 at the current position of the focus point 5012 and as the second endpoint of a measurement segment 5066 that will become a completed measurement segment (e.g., its second endpoint is here the measurement point 5080, not the focus point 5012, and this is no longer a dynamic measurement segment). In addition to adding the measurement point 5040 to the user interface 5006, the device 100 optionally generates a haptic output 5082 indicating the addition of the measurement point (and optionally, for example, uses a haptic output of the same type as the haptic output 5056 in Figure 5N to indicate the addition of the measurement point that completes the measurement segment). In some embodiments, as shown in Figure 5U, the device 100 continues to display virtual guides, such as the virtual guide 5072, even after the completion of the measurement segment (e.g., until the device 100 moves away from its current position).
[0214] Figure 5V shows the transition from Figure 5U, which includes performing an "undo" operation that invalidates the most recently performed operation within the user interface 5006. Specifically, Figure 5V shows the activation of the undo button 5018 by a touch input 5084 to invalidate the addition of the measurement point 5080 (Figure 5U). Accordingly, the measurement point 5080 is removed from the user interface 5006. The measurement segment 5066 is here (again) a dynamic measurement segment whose second endpoint is the focus point 5012 and is updated as the focus point 5012 moves.
[0215] Figure 5W shows the transition from Figure 5V. In Figure 5W, the user 5004 is moving the device 100 downward so that the reticle 5010 is positioned above the lower front left corner of the table 5002 as shown in the live preview. Accordingly, the focus point 5012 is snapped to the anchor point corresponding to the lower front left corner of the table 5002 (and optionally also to the virtual guide 5072). The reticle 5010 is displayed in its reduced size (e.g., the same size as in Figure 5U) to indicate that the focus point 5012 is snapped to the detected feature within the live preview. A haptic output 5086 is generated to indicate the snap operation. In Figure 5X, the device 100 is moving such that only a portion of the measurement segment 5048 is displayed within the user interface 5006, because the upper rear left corner of the table 5002 can no longer be seen within the live preview, and thus only a portion of the upper left horizontal edge of the table 5002 can be seen within the live preview. Accordingly, the label 5049 is displayed at the midpoint of only the displayed portion of the measurement segment 5048, rather than at the midpoint of the entire measurement segment 5048 (as shown, for example, in Figure 5V).
[0216] Figure 5X shows the transition from Figure 5W, which shows the addition of a measurement point to the user interface 5006. Specifically, Figure 5X shows the activation of the measurement addition button 5014 by a touch input 5088 (e.g., a tap gesture) whose contact intensity exceeds the minimum contact detection threshold IT0, as indicated by the intensitometer 5040. In response to the activation of the measurement addition button 5014, the device 100 adds and displays a (virtual) measurement point 5090 to the user interface 5006 at the current position of the focus point 5012 and as the second end point of the measurement segment 5066 that will become the completed measurement segment. In conjunction with adding the measurement point 5090 to the user interface 5006, the device 100 optionally generates a haptic output 5092 to indicate the addition of the measurement point (and optionally, to indicate the addition of the measurement point that completes the measurement segment using the same type as the haptic output 5056 in Figure 5N or the haptic quality 5082 in Figure 5U).
[0217] Figures 5Y to 5AF show the creation of a measurement area corresponding to a physical rectangular area (e.g., the surface of the table 5002) within the physical space 5000. Specifically, Figures 5Y to 5Z show the creation of a measurement area corresponding to a physical rectangular area that is entirely displayed at once within the live preview. Figure 5Y shows the transition from Figure 5X. In Figure 5Y, the user 5004 moves the device 100 from its position in Figure 5X such that the reticle 5010 is positioned on the side surface of the table 5002 within the live preview adjacent to both the measurement segment 5048 and the measurement segment 5066. The device 100 determines that the area within the live preview where the reticle 5010 (or more specifically the focus point 5012) is positioned corresponds to a physical rectangular area within the physical space 5000 (e.g., the determination is based to some extent on the fact that the measurement segments 5048 and 5066 are adjacent sides of the detected area). Thus, the device 100 displays the indicator 5094 to indicate that the detected area within the live preview where the focus point 5012 is positioned corresponds to a physical rectangular area. In addition, the device 100 continues to display the measurement segment 5048, the corresponding label 5049, the measurement segment 5066, the corresponding label 5068, and the end points 5042, 5054, and 5090. Figure 5Y is the same as Figure 5P except that Figure 5Y includes a (second) measurement segment 5066 having end points 5054 and 5090 and a label 5068 in addition to the (first) measurement segment 5048 having end points 5042, 5054, and a label 5049.
[0218] FIG. 5Z shows the transition from FIG. 5Y, showing the addition of a measurement area to the user interface 5006. Specifically, FIG. 5Z shows the activation of the measurement addition button 5014 by a touch input 5096 (e.g., a tap gesture) such that the contact intensity exceeds the minimum contact detection threshold IT0 as indicated by the intensity meter 5040 while the focus point 5012 is over the detected area indicated by the indicator 5094. In response to the activation of the measurement addition button 5014, the device 100 adds a measurement corresponding to the detected area and changes the appearance of the indicator 5094 to indicate that the detected area has been confirmed as a measurement area. Additionally, the device 100 displays a label 5098 indicating the area of the physical rectangular area corresponding to the confirmed area (e.g., "7.5ft 2 "). Optionally, in some embodiments, the label 5098 is displayed with the indicator 5094 before the detected area is confirmed as a measurement area (e.g., in some embodiments, the label 5098 is displayed with the indicator 5094 of FIG. 5Y).
[0219] Figure 5AA shows the transition from Figure 5Z. In Figure 5AA, user 5004 is moving device 100 vertically upward so that reticle 5010 is positioned above the upper left horizontal edge of table 5002 and within measurement segment 5048 in the live preview. In particular, the midpoint of measurement segment 5048 is within reticle 5010. In some embodiments, as shown in Figure 5AA, the midpoint of each measurement segment displayed within user interface 5006 can be an anchor point to which focus point 5012 snaps. Thus, in Figure 5AA, focus point 5012 snaps to an anchor point corresponding to the midpoint of measurement segment 5048 (and also corresponding to the midpoint of the upper left horizontal edge of table 5002). The size of reticle 5010 is reduced to show the snap operation, as described above. Haptic output 5100 is generated to show the snap operation. Additionally, device 100 continues to display indicator 5094 of the confirmed region over the detected region corresponding to the physical rectangular area in physical space 5000 (e.g., indicator 5094 of the confirmed region is associated with the detected region corresponding to the physical rectangular area and is displayed over the detected region in the live preview even while the detected region moves within the live preview as device 100 moves).
[0220] Figures 5AB to 5AE show the creation of a measurement area corresponding to a physical rectangular area within a physical space 5000 that can be partially viewed within the live preview but not in its entirety (e.g., only three sides of the physical rectangular area can be viewed, either in whole or in part, within the live preview). Figure 5AB shows the transition from Figure 5AA. In Figure 5AB, the user 5004 moves the device 100 horizontally to the right such that the reticle 5010 is positioned over an area within the live preview that is adjacent to the measurement segment 5048 and corresponds to a partial view of the upper surface of the table 5002. Specifically, the left edge of the upper surface of the table 5002 is visible, a portion of the front edge of the upper surface of the table 5002 is visible, a portion of the rear edge of the upper surface of the table 5002 is visible, but the right edge of the upper surface of the table 5002 is not visible. The focus point 5012 is snapped away from the anchor point corresponding to the midpoint of the measurement segment 5048 and redisplayed at the center of the reticle 5010. The reticle 5010 is redisplayed with its increased size, and haptic output 5102 is optionally generated along with the focus point 5012 that moves away from the anchor point. Additionally, the device 100 determines (based to some extent on the measurement segment 5048) that the area where the reticle 5010 (or more specifically the focus point 5012) is positioned corresponds to a portion of a physical rectangular area within the physical space 5000 (e.g., the detected area does not appear rectangular within the live preview from the perspective of the device 100). Accordingly, the device 100 displays an indicator 5104 indicating that the detected area corresponds to a physical rectangular area. Optionally, a virtual guide 5106 is displayed as the device 100 moves. The virtual guide 5106 extends horizontally and corresponds to a feature within the live preview identified as extending horizontally in the direction of movement of the device 100. In some embodiments, if multiple features extend in the direction of movement of the device 100, multiple virtual guides extending in the direction of movement are displayed. In some embodiments, the virtual guide extending in the direction of movement is displayed only for features for which the corresponding measurement points have already been added within the user interface 5006.
[0221] Figures 5AC to 5AD show further horizontal movement of the device 100 while the reticle 510 is disposed on the upper surface of the table 5002 within the live preview. In Figure 5AC, a part of the front edge and a part of the rear edge of the upper surface of the table 5002 are visible, whereas neither the left edge nor the right edge of the upper surface of the table 5002 is visible. In Figure 5AD, in addition to a part of the front edge and a part of the rear edge, the right edge of the upper surface of the table 5002 is also visible here. The device 100 continues to display the indicator 5104 above the visible portion of the upper surface of the table 5002 within the live preview, as well as a horizontal virtual guide due to the horizontal movement of the device 100.
[0222] Figure 5AE shows the transition from Figure 5AD, indicating the addition of a measurement area to the user interface 5006. Specifically, Figure 5AE shows that while the focus point 5012 is over the detected area indicated by the indicator 5104, the activation of the measurement addition button 5014 by a touch input 5108 (e.g., a tap gesture) such that the contact intensity exceeds the minimum contact detection threshold IT0 as indicated by the intensitometer 5040. In response to the activation of the measurement addition button 5014, the device 100 adds a measurement corresponding to the entire detected area although it can only see a portion of the detected area, and changes the appearance of the indicator 5104 to indicate that the detected area has been confirmed as a measurement area. Further, the device 100 displays a label 5110, a label 5112, and a label 5114. The label 5110 indicates the area of the (overall) physical rectangular area corresponding to the (overall) confirmed area. The label 5112 indicates the length of the first side of the physical rectangular area corresponding to the confirmed area (e.g., the right edge of the upper surface of the table 5002). The label 5114 indicates the length of the second side adjacent to the first side of the physical rectangular area corresponding to the confirmed area (e.g., the front edge of the upper surface of the table 5002). Optionally, in some embodiments, the label 5114 is displayed together with the indicator 5104 before the detected area is confirmed as a measurement area (e.g., in some embodiments, the label 5114 is displayed together with the indicator 5104 of Figure 5AD).
[0223] Figure 5AF shows the transition from Figure 5AE. In Figure 5AF, user 5004 is moving device 100 horizontally to the left so that the left part of table 5002 can be seen in the live preview. Indicator 5094, measurement segment 5048, and measurement segment 5066 (along with their respective associated labels) are pre - moved as if device 100 has moved away from a position where these elements and the corresponding features of table 5002 could be seen within user interface 5006, and now are being moved back to a position where these elements and the corresponding features of table 5002 can be seen again within user interface 5006 (such as shown in Figure 5AF), and are displayed within user interface 5006 at their respective positions corresponding to each feature of table 5002 (e.g., each side of table 5002, the upper - left horizontal edge, and the front - left vertical edge). Additionally, even if a detection area corresponding to the upper surface of table 5002 is confirmed while device 100 is displaying a different part of the upper surface of table 5002 that is not currently visible within user interface 5006, indicator 5104 (along with its associated label) is displayed over the visible part of the upper surface of table 5002.
[0224] Figure 5AG shows the operation of clearing from user interface 5006 all measurements (including measurements corresponding to physical objects not currently within the camera's field of view) that are displayed on the live preview of physical space 5000 and corresponding to physical space 5000. In Figure 5AG, in response to the activation of clear button 5022 by touch input 5116, measurement segments 5048 and 5066, measurement points 5042, 5054, and 5090, indicators 5094 and 5104, and all the corresponding labels are removed from user interface 506.
[0225] Figures 5AH to 5AS show the continuous creation of measurements based on the change in intensity of consecutive touch inputs. Specifically, Figures 5AH to 5AM show the creation of measurements at the upper left edge in the horizontal direction of Table 5002. Figure 5AH shows the transition from Figure 5AG. In Figure 5AH, user 5004 moves device 100 so that the upper rear left corner of Table 5002 displayed in the live preview is within the range of reticle 5010. Accordingly, focus point 5012 is snapped to the anchor point corresponding to the upper rear left corner of Table 5002 in the live preview. Reticle 5010 is displayed in its reduced size to indicate the snap operation. Additionally, haptic output 5118 is optionally generated to indicate the snap operation.
[0226] Figure 5AI shows the transition from Figure 5AH, indicating the addition of a measurement point to user interface 5006. Specifically, Figure 5AI shows the activation of measurement addition button 5014 by touch input 5120 (e.g., a light press gesture) having a contact intensity greater than the light press intensity threshold IT L as indicated by intensity meter 5040. In response to the activation of measurement addition button 5014, device 100 adds (virtually) measurement point 5122 to user interface 5006 and displays it at the current position of focus point 5012. In addition to adding measurement point 5122 to user interface 5006, and in response to the increase in the contact intensity of touch input 5120 greater than light press intensity threshold IT L device 100 optionally generates haptic output 5124 indicating the addition of a measurement point. In some embodiments, as shown in Figure 5AI, the size of measurement addition button 5014 is reduced as the contact intensity of touch input 5120 increases (e.g., the measurement addition button 5014 is smaller in Figure 5AI where the contact intensity of touch input 5120 is greater than light press intensity threshold IT L than in Figure 5K where the contact intensity of touch input 5038 is between minimum contact detection threshold IT0 and light press intensity threshold IT L and greater than light press intensity threshold IT).
[0227] FIG. 5AJ shows a transition from FIG. 5AI, where the touch input 5120 exceeds the minimum contact detection threshold IT0 but is maintained on the measurement addition button 5014 at a reduced contact intensity below the light press intensity threshold IT L . In some embodiments, when the device 100 detects a decrease in the contact intensity of the touch input 5120 below the light press intensity threshold IT L , it generates a haptic output (e.g., as shown in FIG. 5AI, the haptic output 5124 is not generated in response to an increase in the contact intensity of the touch input 5120 exceeding the light press intensity threshold IT L , but instead, as shown in FIG. 5AJ, is generated in response to a decrease in the contact intensity of the touch input 5120 below the light press intensity threshold IT L ).
[0228] FIG. 5AK shows a transition from FIG. 5AJ. In FIG. 5AK, the user 5004 moves the device 100 diagonally downward and to the right while maintaining the touch input 5120 on the measurement addition button 5014 at a contact intensity that exceeds the minimum contact detection threshold IT0 and is below the light press intensity threshold IT L . The device 100 is moved such that the reticle 5010 is positioned over the upper front left corner of the table 5002 as shown in the live preview. Accordingly, the focus point 5012 is snapped to an anchor point corresponding to the upper front left corner of the table 5002 within the live preview. The reticle 5010 is displayed in its reduced size to indicate the snap operation, and optionally, a haptic output 5126 is generated to indicate the snap operation. The measurement point 5122 continues to be displayed over the upper rear left corner of the table 5002 within the live preview, and a dynamic measurement segment 5128 is displayed between the current position of the focus point 5012 and the measurement point 5122. Additionally, as the device 100 moves, a virtual guide 5130 is displayed, in this case extending diagonally from the measurement point 5122 and along the upper left horizontal edge of the table 5002 within the user interface 5006.
[0229] Figure 5AL shows the transition from Figure 5AK, indicating the addition of a measurement point to the user interface 5006. Specifically, Figure 5AL shows that as the contact intensity of the touch input 5120 increases until it exceeds the light pressing intensity threshold IT L as indicated by the intensitometer 5040, it shows the activation of the measurement addition button 5014 while the touch input 5120 is maintained on the measurement addition button 5014. In response to the activation of the measurement addition button 5014, the device 100 adds and displays a (virtual) measurement point 5132 to the user interface 5006 at the current position of the focus point 5012 and as the second end point of the measurement segment 5128. In addition to the measurement point 5132 to the user interface 5006, in response to the increase in the contact intensity of the touch input 5120 that exceeds the light pressing intensity threshold IT L , the device 100 optionally generates a haptic output 5134 indicating the addition of a measurement point. In some embodiments, as shown in Figure 5AL (and as previously described with reference to Figure 5AI), as the contact intensity of the touch input 5120 increases, the size of the measurement addition button 5014 is reduced. Optionally, as shown in Figure 5AL, when the measurement segment 5128 is completed, the device 100 stops displaying the virtual guide 5130.
[0230] Figure 5AM shows the transition from Figure 5AL, indicating that the touch input 5120 is maintained on the measurement addition button 5014 with a contact intensity that exceeds the minimum contact detection threshold IT0 but is below the light pressing intensity threshold IT L . In some embodiments, the device 100 generates a haptic output when it detects a decrease in the contact intensity of the touch input 5120 that is below the light pressing intensity threshold IT L as described herein with respect to Figure 5AJ.
[0231] Figures 5AN to 5AR show the transition from Figure 5AM, demonstrating the addition of another measurement segment that is continuous with (e.g., having a common end point with) the measurement segment 5128 using the same continuous touch input 5120. In Figure 5AN, the user 5004 moves the device 100 diagonally upward and to the right while maintaining the touch input 5120 on the measurement addition button 5014 at a contact strength that exceeds the minimum contact detection threshold IT0 and is below the light pressing strength threshold IT L The device 100 is moved so that the reticle 5010 is positioned over a specific area on the upper surface of the table 5002 that does not include any features where the focus point 5012 is snapped. Accordingly, the focus point 5012 is displayed at the center of the reticle 5010, and the reticle 5010 is displayed in its enlarged size. The measurement point 5122, the measurement segment 5128, and the measurement point 5132 continue to be displayed on the live preview, and a dynamic measurement segment 5136 is displayed between the current position of the focus point 5012 and the measurement point 5122. Since the live preview does not include any features extending in the direction of movement of the device 100, no virtual guides are displayed. For example, the movement of the device 100 exceeds a defined angle from the horizontal direction, and thus no virtual guides are displayed for features within the horizontally extending live preview. Additionally, since the movement of the device 100 exceeds a predefined angle from the vertical direction, no virtual guides are displayed for features within the vertically extending live preview either.
[0232] Figure 5AO shows the transition from Figure 5AN. In Figure 5AO, the user 5004 maintains the touch input 5120 on the measurement addition button 5014 at a contact strength that exceeds the minimum contact detection threshold IT0 and is below the light pressing strength threshold IT LWhile maintaining a contact strength below, the device 100 is being moved horizontally to the right. As the device 100 is moved, the measurement points 5122, the measurement segment 5128, and the measurement point 5132 are no longer displayed within the user interface 5006, because the physical features to which they correspond are no longer present within the live preview displayed on the user interface 5006. The dynamic measurement segment 5136 continues to be displayed so as to extend from the current position of the focus point 5012. However, since the measurement point 5132 (the other end point of the dynamic measurement segment 5136) is no longer displayed within the user interface 5006, the dynamic measurement segment 5136 only extends towards the edge of the user interface 5006 (e.g., towards the projected position of the measurement point 5132). Additionally, in accordance with the horizontal movement of the device 100, a virtual guide 5138 is displayed, in this case, the virtual guide 5138 extends horizontally from the measurement point 5132 (its projected position) and along the horizontal leading edge of the table 5002 within the user interface 5006.
[0233] Figure 5AP shows the transition from Figure 5AO. In Figure 5AP, the user 5004 has a touch input 5120 on the measurement addition button 5014 that exceeds the minimum contact detection threshold IT0 and a light pressing strength threshold IT LWhile maintaining a contact intensity below, the device 100 is being moved slightly downward and to the right. The device 100 is moved such that a virtual guide 5138 corresponding to the horizontal front edge of the table 5002 in the live preview is at least partially within the range of the reticle 5010 (e.g., the focus point 5012 is within a predetermined distance (e.g., the predetermined distance is the radius of the reticle 5010) from the virtual guide 5138 (and the horizontal front edge of the table 5002 in the live preview)). Thus, the focus point 5012 is snapped to the virtual guide 5138 (e.g., to a point along the virtual guide 5138 that is the shortest distance from the center of the reticle 5010). The reticle 5010 is displayed in its reduced size, and optionally, a haptic output 5140 is generated to indicate the snap operation. The dynamic measurement segment 5136 continues to be displayed so as to extend from the current position of the focus point 5012 to the edge of the user interface 5006 (e.g., towards the projected position of the measurement point 5132). Additionally, in accordance with the continuous movement of the device 100 within the defined angular range of the horizontal virtual guide 5138, the horizontal virtual guide 5138 continues to be displayed along the front edge of the table 5002 within the user interface 5006.
[0234] Figure 5AQ shows the transition from Figure 5AP. In Figure 5AQ, the user 5004 applies a touch input 5120 on the measurement addition button 5014 that exceeds the minimum contact detection threshold IT0 and a light pressing intensity threshold IT LWhile maintaining a contact intensity below a certain level, device 100 is being moved horizontally to the right. Device 100 is being moved such that reticle 5010 is positioned above the upper front right corner of table 5002 as shown in the live preview. Thus, focus point 5012 is snapped to the anchor point corresponding to the upper front right corner of table 5002 within the live preview. Reticle 5010 is displayed in its reduced size to indicate the snapping operation. Dynamic measurement segment 5136 continues to be displayed extending from the current position of focus point 5012 to the edge of user interface 5006 (e.g., towards the projected position of measurement point 5132). Additionally, in the sequence of FIGS. 5AN - 5AQ, the label corresponding to measurement segment 5136 is updated to reflect the change in the length of the measurement represented by dynamic measurement segment 5136 as device 100 is moved. Additionally, in accordance with the continuous horizontal movement of device 100, horizontal virtual guide 5138 continues to be displayed along the front edge of table 5002 within user interface 5006.
[0235] FIGS. 5AR - 5AS show the transition from FIG. 5AQ, indicating the addition of a measurement point to user interface 5006. Specifically, FIG. 5AR shows the activation of measurement addition button 5014 while touch input 5120 is maintained on measurement addition button 5014 by increasing the contact intensity of touch input 5120 as indicated by intensity meter 5040 until it exceeds the light pressing intensity threshold IT L In response to the activation of measurement addition button 5014, device 100 adds and displays (virtual) measurement point 5142 to user interface 5006 at the current position of focus point 5012 and as the second endpoint of measurement segment 5136. Adding measurement point 5142 to user interface 5006 and the light pressing intensity threshold IT LIn response to an increase in the contact intensity of the touch input 5120 that exceeds a certain level, the device 100 optionally generates a haptic output 5144 indicating the addition of a measurement point. Additionally, as the contact intensity of the touch input 5120 increases, the size of the measurement addition button 5014 is (optionally) reduced. Optionally, as shown in FIG. 5AR, the device 100 continues to display the virtual guide 5138 even after the measurement segment 5136 is completed.
[0236] FIG. 5AS shows the lift-off of the touch input 5120 from the measurement addition button 5014. In some embodiments, after the lift-off of the touch input 5120 from the measurement addition button 5014 (and before any subsequent touch input is detected), further movement of the device 100 does not result in the display of a new dynamic measurement segment that extends from the measurement point 5142 (e.g., and is continuous with the measurement segment 5136). That is, the lift-off of consecutive touch inputs 5120 ends the continuous creation of new measurement segments based on the touch input 5120.
[0237] In some embodiments, the device responds to a series of tap gestures (where contact with the touch-sensitive surface is not maintained), as distinct from a series of press gestures (where contact with the touch-sensitive surface is maintained). In the case of input that consists of separate tap gestures (not a press gesture performed with a single continuously detected contact), the measurement segments are not created continuously with each subsequent measurement point added. That is, in the case of a series of tap gestures, if the user lowers four points in succession, a measurement segment is created between the first and second points, and another measurement segment is created between the third and fourth points, but no measurement segment is created between the second and third points.
[0238] Figure 5AT shows the transition from Figure 5AS. In Figure 5AT, the device 100 is moved so that the reticle 5010 is positioned above the upper front left corner of the table 5002 and above the measurement point 5132 so as to be displayed in the live preview. Accordingly, the focus point 5012 is snapped to the measurement point 5132 at the anchor point corresponding to the upper front left corner of the table 5002 within the live preview. The reticle 5010 is displayed in its reduced size to indicate the snap operation. The measurement segment 5128 and the measurement segment 5136 are displayed within the user interface 5006 at their respective positions corresponding to the respective features of the table 5002 (e.g., the horizontal upper left edge and the horizontal front edge of the table 5002 respectively) according to the corresponding features of the table 5002 (again) displayed within the live preview within the user interface 5006. The measurement segment 5128 is displayed between its end points, i.e., between the measurement point 5122 and the measurement point 5132. The measurement segment 5136 is displayed so as to extend from the measurement point 5132 (one end point of the measurement segment 5136) to the edge of the user interface 5006 (e.g., towards the projected position of the measurement point 5142 which is the other end point of the measurement segment 5136 and is not currently visible within the user interface 5006). In addition, virtual guides 5146, 5148 and 5150 extending from the measurement point 5132 are displayed according to the reticle 5010 positioned above the measurement point 5132. The virtual guide 5146 extends in the x direction from the measurement point 5132 (e.g., horizontally along the horizontal front edge of the table 5002). The virtual guide 5148 extends in the y direction from the measurement point 5132 (e.g., vertically along the vertical front left edge of the table 5002). The virtual guide 5150 extends in the z direction from the measurement point 5132 (e.g., horizontally along the horizontal upper left edge of the table 5002).
[0239] Figures 5AU to 5AX show the transition from Figure 5AT, showing the addition of a measurement segment to the user interface 5006. Figure 5AU shows the activation of the measurement addition button 5014 by a touch input 5152 (e.g., a tap gesture) having a contact intensity greater than the minimum contact detection threshold IT0 as indicated by the intensitometer 5040. In response to the activation of the measurement addition button 5014, the device 100 uses the measurement point 5132 as the starting point of the newly added measurement segment and optionally generates a haptic output 5154 indicating the start of the new measurement segment.
[0240] Figure 5AV shows that the user 5004 has moved the device 100 downward along the vertical front left edge of the table 5002 (after the lift-off of the touch input 5152). The focus point 5012 is snapped to an anchor point along the vertical front left edge of the table 5002, not at the lower front left corner of the table 5002. The reticle 5010 is displayed in its reduced size to indicate the snap operation. Also, in accordance with the vertical movement, the device 100 continues to display a virtual guide 5148 extending vertically from the measurement point 5132 and stops displaying the virtual guides 5146 and 5150 that do not extend vertically (or in a direction within a predetermined angular range in the vertical direction) from the measurement point 5132. In addition, a dynamic measurement segment 5156 is displayed between the measurement point 5132 and the current position of the focus point 5012.
[0241] FIG. 5AW shows the activation of the measurement addition button 5014 by a touch input 5158 (e.g., a tap gesture) having a contact intensity that exceeds the minimum contact detection threshold IT0 as indicated by the intensity meter 5040. In response to the activation of the measurement addition button 5014, the device 100 adds and displays a measurement point 5160 to the user interface 5006 at the current position of the focus point 5012 and as the second end point of a measurement segment 5156 that becomes a completed measurement segment. In addition to adding the measurement point 5160 to the user interface 5006, the device 100 optionally generates a haptic output 5162 (e.g., to indicate the completion of a measurement segment). FIG. 5AX shows the lift-off of the touch input 5158 from the measurement addition button 5014.
[0242] FIGS. 5AY - 5BE show examples of zoom interactions with an augmented reality environment within the user interface 5006. Specifically, FIGS. 5AY - 5BA show the zoom-assisted repositioning of the displayed measurement points. FIG. 5AY shows a touch input 5164 detected on the measurement point 5160 with a contact intensity that exceeds the minimum contact detection threshold IT0 as indicated by the intensity meter 5040. In response to detecting the touch input 5164 on the measurement point 5160, the device 100 enlarges or zooms into a portion of the live preview that includes the measurement point 5160 (e.g., a portion of the live preview centered on the measurement point 5160). The amount of zoom of the live preview is based on the distance between the device 100 and the location on the table 5002 corresponding to the measurement point 5160 (e.g., the location on the table 5002 directly above the lower front left corner of the table 5002). For example, in FIG. 5AY, when the device 100 is at a distance d1 from the location on the table 5002 corresponding to the measurement point 5160, the live preview is enlarged at a zoom ratio of 4X.
[0243] FIG. 5AZ shows a transition from FIG. 5AY, showing the movement of touch input 5164 across touch screen 112 (e.g., a pan gesture or a drag gesture by contact in touch input 5164) such that touch input 5164 is above an anchor point corresponding to the lower front left corner of table 5002. Measurement point 5160 moves within user interface 5006 with the movement of touch input 5164 across touch screen 112. In some embodiments, as shown in FIG. 5AZ, measurement point 5160 is snapped to the anchor point to which touch input 5164 has moved. Thus, measurement point 5160 is displayed at the anchor point corresponding to the lower front left corner of table 5002. In conjunction with the movement of measurement point 5160, measurement segment 5156 is extended and its label is updated accordingly (as shown to indicate the length of the vertical left front edge of table 5002). Additionally, device 100 optionally generates haptic output 5166 to indicate the snap operation.
[0244] In some embodiments, device 100 determines a vector from the position of the camera to the position on the detected surface within physical space 5000 where the measurement point is to be displayed. In some embodiments, device 100 determines the angle between the determined vector and the detected surface. In some embodiments, in accordance with the determination that the determined vector is within a range of a predefined threshold angle of the detected surface (e.g., the determined angle is less than a predefined threshold angle such as 15, 18, 20, 25, or 30 degrees), when receiving a set of one or more user inputs to move the measurement point, the measurement point is moved through a position within user interface 5006 corresponding to the position along the determined vector.
[0245] Figure 5BA shows the transition from Figure 5AZ. In some embodiments, as shown in Figure 5BA, when the touch input 5164 is lifted off, the device 100 stops displaying the enlarged live preview (the enlarged portion thereof) and redisplay the live preview without zoom. In some embodiments, after the touch input 5164 is lifted off, the device 100 continues to display the enlarged live preview until a subsequent input (to return from the zoomed live preview to the live preview displayed without zoom) is detected.
[0246] Since the device 100 is maintained at the same position in Figures 5AX - 5AZ, the reticle 5010 is shown in Figure 5BA at the same size and the same position as that in Figure 5AX (before the zoom-assisted relocation of the measurement point 5160). As described with respect to Figures 5AY - 5AZ, since the measurement point 5160 is repositioned at the anchor point corresponding to the lower front left corner of the table 5002, the measurement point 5160 is displayed at its anchor point within the live preview displayed without zoom in Figure 5BA, outside the reticle 5010. The extended measurement segment 5156 and its corresponding updated label are similarly displayed.
[0247] Figures 5BB - 5BC illustrate another exemplary zoom interaction. Figure 5BB is the same as Figure 5AX, except that in Figure 5BB, the device 100 is positioned closer to the table 5002 (or more specifically, to the point on the table 5002 corresponding to the measurement point 5160) at a distance d2 that is shorter than the distance d1 in Figure 5AY (as shown by the side view of the user 5004, device 100, and table 5002 in Figure 5AY). Thus, in response to detecting a touch input 5168 on the measurement point 5160, as shown in Figure 5BC, the device 100 zooms into a portion of the live preview that includes the measurement point 5160. The amount of zoom of the live preview in Figure 5BC is based on the smaller distance d2 between the device 100 and the table 5002, such that the amount of zoom of the live preview in Figure 5BC corresponds to a zoom factor of 2X, which is smaller than the amount of zoom in Figure 5AY that corresponds to a zoom factor of 4X. Additionally, since the device 100 is closer to the table 5002 in Figure 5BB than in Figure 5AX, scale markers are displayed at 1 - foot intervals along the measurement segment 5156 (e.g., in contrast to Figure 5AX where no scale markers are displayed). Also, since the device 100 is closer to the table 5002 in Figure 5BB than in Figure 5AX, the size of the labels corresponding to the displayed measurements is larger in Figure 5BB than in Figure 5AX.
[0248] Figures 5BD - 5BE illustrate another exemplary zoom interaction. Figure 5BD is the same as Figure 5BB, except that the device 100 is positioned closer to the table 5002 (or, more specifically, to that point on the table 5002 corresponding to the measurement point 5160) at a distance d3 that is less than the distance d2 in Figure 5BB. Thus, as shown in Figure 5BE, in response to detecting a touch input 5170 on the measurement point 5160, the device 100 zooms in on a portion of the live preview that includes the measurement point 5160. The amount of zoom of the live preview in Figure 5BE is based on the smaller distance d3 between the device 100 and the table 5002, whereby the amount of zoom of the live preview in Figure 5BE corresponds to a zoom ratio of 1.5X and is less than the amount of zoom in Figure 5BC corresponding to a zoom magnification of 2X. Additionally, since the device 100 is closer to the table 5002 in Figure 5BD than in Figure 5BB, scale markers are displayed at 1 - inch intervals along the measurement segment 5156 (e.g., in contrast to the scale markers displayed at 1 - foot intervals in Figure 5BB). Also, since the device 100 is closer to the table 5002 in Figure 5BD than in Figure 5BB, the size of the labels corresponding to the measurements being displayed is larger in Figure 5BD than in Figure 5BB. In some embodiments, the scale at which markers are displayed along the measurement segment becomes finer as the distance between the device 100 and the physical feature corresponding to the measurement segment decreases (e.g., at distances greater than a first distance, no scale markers are displayed; at distances between the first distance and a second distance (shorter than the first distance), scale markers are displayed at 1 - foot intervals; at distances between the second distance and a third distance (shorter than the second distance), scale markers are displayed at 1 - inch intervals; at distances shorter than the third distance, scale markers are displayed at 1 / 4 - inch intervals, etc.).
[0249] In some embodiments, the zoom amount shown in FIG. 5AY is the maximum zoom amount. Thus, when the distance between device 100 and table 5002 (or the point on table 5002 corresponding to the displayed measurement point) is greater than the distance d1 shown in FIG. 5AY, the zoom amount of the live preview still corresponds to a zoom ratio of 4X. In some embodiments, the zoom amount shown in FIG. 5BE is the minimum zoom amount. Thereby, when the distance between device 100 and table 5002 (or the point on table 5002 corresponding to the displayed measurement point) is less than the distance d3 shown in FIG. 5BE, the zoom amount of the live preview still corresponds to a zoom ratio of 1.5X.
[0250] Similarly, in some embodiments, the size of the label shown in FIG. 5AY is the minimum label size. Thereby, when the distance between device 100 and table 5002 (or the point on table 5002 corresponding to the displayed measurement point) is greater than the distance d1 shown in FIG. 5AY, the size of the label is the same as in FIG. 5AY. In some embodiments, the size of the label shown in FIG. 5BE is the maximum label size. Thereby, when the distance between device 100 and table 5002 (or the point on table 5002 corresponding to the displayed measurement point) is less than the distance d3 shown in FIG. 5BE, the size of the label is the same as in FIG. 5BE.
[0251] FIGS. 5BF - 5BK show capturing an image of the augmented reality environment within user interface 5006. FIG. 5BF shows the transition from FIG. 5BA. In FIG. 5BF, user 5004 positions device 100 so that measurement segments 5128, 5136, and 5156 and their corresponding end points and labels are displayed within user interface 5006 and the corresponding features of table 5002 can be seen in the live preview. FIG. 5BG shows the activation of media capture button 5016 by touch input 5172 as indicated by the increasing intensity shown in intensity graph 5180, which shows the contact intensity of touch input 5172 over time.
[0252] FIG. 5BH shows the transition from FIG. 5BG based on the lift-off of the touch input 5172 before a predetermined threshold time T th (e.g., the touch input 5172 is a tap gesture). Thus, the intensity graph 5180 shows the corresponding decrease in the contact intensity to zero of the touch input 5172 before the time T th . In response to detecting the lift-off of the touch input 5172 before the predetermined threshold time T th , the device 100 captures an image 5174 of the augmented reality environment. The captured image 5174 is a still image corresponding to an instantaneous snapshot of the live preview of the camera's field of view and including the measurement segments 5128, 5136, and 5156 superimposed on the image of the camera's field of view with their corresponding end points and labels. In some embodiments, as shown in FIG. 5BH, the captured image 5174 does not include an image of a button / control within the user interface 5006
[0253] FIG. 5BI shows the capture of an image in response to the activation of the media capture button 5016 while the device 100 is in a different position (facing the left side of the table 5002) relative to the table 5002 such that different perspective views of the table 5002 are displayed within the live preview. As shown by the intensity graph 5180, in response to the activation of the media capture button 5016 by a touch input and the lift-off of the touch input before the specified threshold time T th , the device 100 captures an image 5176 of the augmented reality environment. The captured image 5176 is a still image including an image of the table 5002 from the perspective of the device 100 at that position in FIG. 5BI (e.g., facing the left side of the table 5002). The measurement segments 5128, 5136, and 5156 and their corresponding end points and labels are superimposed on the corresponding features of the table 5002 within the captured image 5176 based on the perspective of the device 100 in FIG. 5BI
[0254] Figure 5BJ shows the transition from Figure 5BG. Together with Figure 5BG, Figures 5BJ - 5BK show capturing the video of the augmented reality environment in response to a touch input maintained on the media capture button 5016 (e.g., long - press gesture). In Figure 5BJ, the touch input 5172 is maintained on the media capture button 5016 for longer than a predetermined threshold time T, as indicated by the intensity graph 5180. th Accordingly, the device 100 captures the video of the camera's field of view. A timer 5178 is displayed within the user interface 5006, indicating the current length of the captured video. Further, the captured video has the camera's field of view (e.g., measurement segments 5128, 5136, and 5156, and their corresponding end - points and labels) superimposed on the corresponding features of the table 5002 within the captured video. In some embodiments, the captured video does not include images of buttons / controls within the user interface 5006.
[0255] Figure 5BK shows that the device 100 is moving while the touch input 5172 is maintained on the media capture button 5016. Accordingly, the device 100 continues to capture the video of the camera's field of view as the device 100 moves, as indicated by the current video length shown by the timer 5178 in Figure 5BK being longer than that shown by the timer 5178 in Figure 5BJ. The captured video includes an additional portion of the measurement segment 5136 superimposed on the corresponding features within the camera's field of view as the device 100 moves to its position, as shown in Figure 5BK.
[0256] Figures 5BL through 5BM illustrate additional information regarding measurements and options selected to distribute information to another application, process, or device. Figure 5BL shows a touch input 5182 (e.g., a tap gesture by contact in the touch input) detected on measurement segment 5156 at a contact intensity above the minimum contact detection threshold IT0, as indicated by the intensitometer 5040. Figure 5BM shows that in response to detecting the touch input 5182 on measurement segment 5156, device 100 displays a measurement management interface 5184. The measurement management interface 5184 includes a label describing the physical object and a table 5002 to which measurement 5156 corresponds. For example, the measurement management interface 5184 includes a label 5186-a that classifies table 5002 (e.g., identifies table 5002 as a "table"). The measurement management interface 5184 also includes a label 5186-b that classifies the relationship between measurement segment 5156 and table 5002 (e.g., identifies measurement 5156 as the "height" of table 5002). In some embodiments, the relationship between measurement 5156 and table 5002 is classified as "height" based on the vertical movement of device 100 while adding measurement segment 5156 to user interface 5006.
[0257] In some embodiments, in response to a touch input 5182, information regarding a measurement 5156 (e.g., the classification of the physical object to which the measurement segment 5156 corresponds, and the relationship between the measurement segment 5156 and the physical object, the size of the measurement segment 5156 such as length or area, an image of the measurement segment 5156, etc.) is copied to a clipboard process running on the device 100. In some embodiments, the measurement management interface includes a plurality of destinations to which information regarding a selected measurement 5156 can be communicated (e.g., an icon 5192 (FIG. 1A) corresponding to the email client module 140, an icon 5194 (FIG. 1A) corresponding to the IM module 141, and an icon 5196 corresponding to a file transfer protocol between electronic devices). In some embodiments, the measurement management interface 5184 is displayed in response to a touch input 5182 that meets an intensity threshold (e.g., a light press intensity threshold IT L ) that exceeds a minimum contact detection threshold IT0 (e.g., in response to the touch input 5182 being a light press or a deep press gesture).
[0258] FIG. 5BN shows an exemplary control center user interface 5188 that includes an augmented reality measurement application icon 5190. Activation of the augmented reality measurement application icon 5190 launches the augmented reality measurement application and displays the user interface 5006 (e.g., as described with reference to FIG. 5A).
[0259] Figure 5BO shows the situation in which the user interface described with respect to Figures 5BO to 5CO is used. Figure 5BO is similar to Figure 5A in that it shows a view of the physical space 5000 including the device 100, except that the physical space 5000 includes a table 5200 on which an object 5202 is placed (instead of the table 5002). The object 5202 is within the field of view of the camera(s) of the device 100 and can be seen within the live preview of the physical space 5000 displayed within the user interface 5006 on the device 100. In some embodiments, as shown in Figure 5BO, the reticle 5010 within the user interface 5006 is detected and tilted to appear coplanar with the upper surface of the table 5200 in order to indicate the surface corresponding to the current position of the focus point 5012.
[0260] Figures 5BP to 5BQ show a first method of adding virtual measurement points to the user interface 5006 according to some embodiments. Figure 5BP shows a touch input 5204 on the reticle 5010. According to some embodiments, Figure 5BP shows that in response to the touch input 5204, the device 100 adds and displays a virtual measurement point 5206 at the current position of the focus point 5012 (as shown in Figure 5BO) to the user interface 5006. Figure 5BQ shows the measurement point 5206 displayed at the same position as Figure 5BP after the touch input 5204 is lifted off.
[0261] Figures 5BR - 5BS illustrate alternative methods for adding virtual measurement points to the user interface 5006 according to some embodiments. Figure 5BR shows a touch input 5204 on the reticle 5010. In contrast to Figure 5BP, Figure 5BR shows that in response to the touch input 5204, the device 100 ceases adding and displaying virtual measurement points at the position of the focus point 5012. Instead, in Figure 5BR, the device 100 displays an instruction message 5208 prompting the user 5004 to tap on the measurement addition button 5014 (instead of tapping on the reticle 5010) to add a measurement point. Figure 5BS shows the activation of the measurement addition button 5014 by a touch input 5210. In response to the touch input 5210, the device 100 adds a virtual measurement point 5206 to the user interface 5006 at the current position of the focus point 5012 (as shown in Figure 5BQ).
[0262] Figures 5BT - 5BU show the creation of measurements corresponding to object 5202 after the addition of measurement point 5206 (e.g., in either of FIGS. 5BQ or 5BS). In FIG. 5BT, user 5004 moves device 100 such that reticle 5010 and focus point 5012 are positioned over different locations within physical space 5000. Specifically, in FIG. 5BT, reticle 5010 and focus point 5012 are positioned over the edge of object 5202 (displayed in the live preview) that is closer to device 100 than the edge where reticle 5010 and focus point 5012 were positioned in FIG. 5BO. Thus, reticle 5010 is displayed at an increased size in FIG. 5BT compared to its size in FIG. 5BO, and focus point 5012 is displayed at an increased size in FIG. 5BT compared to its size in FIG. 5BO. In some embodiments, the size at which reticle 5010 is displayed is optionally based on the distance between device 100 and the position within physical space 5000 where reticle 5010 is displayed, subject to a default minimum size (used for distances greater than a default maximum distance) and a default maximum size (used for distances less than a default minimum distance). Similarly, in some embodiments, the size at which focus point 5012 is displayed is optionally based on the distance between device 100 and the position within physical space 5000 where focus point 5012 is displayed, subject to a default minimum size and a default maximum size. Additionally, as device 100 is moved such that reticle 5010 and focus point 5012 are positioned over different locations within physical space 5000, a (dynamic) measurement segment 5212, shown by a dashed line, is displayed between measurement point 5206 (the most recently added measurement point) and focus point 5012. Measurement segment 5212 is displayed with an associated (dynamic) label that indicates the distance within physical space 5000 that measurement segment 5212 appears to extend within user interface 5006.
[0263] Figure 5BU shows the activation of the measurement addition button 5014 by a touch input 5214 (e.g., a tap gesture). In response to the activation of the measurement addition button 5214, the device 100 adds and displays a measurement point 5216 within the user interface 5006 at the current position of the focus point 5012 (as shown in Figure 5BT) and as the second end point of the measurement segment 5212. As the measurement segment 5212 is completed, the appearance of the measurement segment 5212 is changed. In the embodiment shown in Figure 5BU, the measurement segment 5212 is changed from a dashed line to a solid line. Since the measurement point 5216 is positioned above the edge of the object 5202 closer to the device 100 than the edge of the object 5202 where the measurement point 5206 is displayed, the measurement point 5216 is displayed with an increased size relative to the measurement point 5206.
[0264] Figures 5BV - 5BY show the creation of measurements corresponding to the object 5202 that remove previous measurements, according to some embodiments. Figure 5BV shows the transition from Figure 5BU. In Figure 5BV, the user 5004 is moving the device 100 such that the reticle 5010 and the focus point 5012 are positioned over positions within a different physical space 5000 than in Figure 5BU. Specifically, in Figure 5BV, the reticle 5010 and the focus point 5012 are positioned over the first corner of the object 5202. In some embodiments, as the reticle 5010 and the focus point 5012 are moved away from the measurement segment 5212, as shown in Figure 5BV, the device 100 stops displaying the label ("17 inches") associated with the measurement segment 5212.
[0265] Figure 5BW shows the transition from Figure 5BV, which shows the addition of measurement points to the user interface 5006. Specifically, Figure 5BW shows the activation of the measurement addition button 5014 by the touch input 5218. In response, the device 100 adds a measurement point 5220 to the user interface 5006 at the current position of the focus point 5012 (as shown in Figure 5BV). Additionally, in accordance with the addition of a new measurement point away from the previously created measurement segment 5212, the device 100 changes the appearance of the measurement segment 5212 (e.g., by creating a measurement segment detached from the measurement segment 5212 to indicate removal of the measurement segment 5212 from the user interface 5006). In the example shown in Figure 5BW, the measurement segment 5212 is changed from a solid line to a dashed line, and the color (and / or transparency) of the measurement segment 5212 and its endpoints are changed.
[0266] Figure 5BX shows the transition from Figure 5BW, indicating that the user 5004 is moving the device 100 such that the reticle 5010 and the focus point 5012 are positioned over the second corner of the object 5202. Accordingly, a (dynamic) measurement segment 5222, shown as a dashed line, is displayed between the measurement point 5206 (the most recently added measurement point) and the focus point 5012. The measurement segment 5222 is displayed with an associated (dynamic) label (e.g., "17 inches") that indicates the distance (e.g., along the object 5202) within the physical space 5000 where the measurement segment 5222 appears to extend within the user interface 5006.
[0267] Figure 5BY shows the transition from Figure 5BX in response to the activation of the measurement addition button 5014 by the touch input 5226, indicating the addition of the measurement point 5224 to the user interface 5006. Figure 5BY shows that the measurement point 5224 is added to the current position of the focus point 5012 as the second end point of the measurement segment 5222 (as shown in Figure BX). Since the measurement point 5224 is positioned above a position on the object 5202 that is farther from the device 100 than the position on the object 5202 where the measurement point 5220 is displayed, the measurement point 5224 is displayed in a reduced size relative to the measurement point 5220. As the measurement segment 5222 is completed, the appearance of the measurement segment 5222 changes from a dashed line to a solid line. In addition, as the measurement segment 5222 is completed and as the measurement segment 5222 is detached from the previously placed measurement segment 5212, the device 100 stops displaying the measurement segment 5212. In some embodiments, the device 100 stops displaying the measurement segment 5212 according to a determination that the measurement segment 5212 is at least a predetermined threshold distance away from the measurement segment 5222 (e.g., no point on the measurement segment 5212 is within the predetermined threshold distance of any point on the measurement segment 5222).
[0268] Figures 5BZ through 5CF illustrate the creation of measurements corresponding to object 5202 leading up to a previous measurement, such that the previous measurement continues to be displayed, in some embodiments. Figure 5BZ shows the transition from Figure 5BY, indicating that user 5004 is moving device 100 such that reticle 5010 and focus point 5012 are positioned over a third corner of object 5202. In some embodiments, as shown in Figure 5BZ, even though reticle 5010 and focus point 5012 are moved away from measurement segment 5222, device 100 continues to display the label associated with measurement segment 5222 (in contrast to Figure 5BV, which shows an embodiment where device 100 stops displaying the label associated with measurement segment 5212 when reticle 5010 and focus point 5012 are moved away from the measurement segment).
[0269] Figure 5CA shows the transition from Figure 5BZ, indicating the addition of measurement point 5228 at the current position of focus point 5012 in response to activation of measurement addition button 5014 by touch input 5230 (as shown in Figure 5BZ). As measurement point 5228 is added at a position within user interface 5006 that is away from previously created measurement segment 5222, device 100 modifies the appearance of measurement segment 5222 (e.g., by creating a measurement segment detached from measurement segment 5222 to indicate that measurement segment 5222 is removed from user interface 5006). In the example shown in Figure 5CA, measurement segment 5222 is changed from a solid line to a dashed line, and the color (and / or transparency) of measurement segment 5222 is changed.
[0270] Figure 5CB shows the transition from Figure 5BZ, indicating that the user 5004 is moving the device 100 so that the reticle 5010 and the focus point 5012 are positioned away from the third corner of the object 5202. Accordingly, the (dynamic) measurement segment 5232 shown by the dashed line is displayed between the measurement point 5228 and the focus point 5012. The measurement segment 5232 is displayed with a related (dynamic) label indicating the distance along the object 5202 where the measurement segment 5222 appears to extend within the user interface 5006 (e.g., "8 inches").
[0271] Figure 5CC shows the transition from Figure 5CB, indicating that the user 5004 is moving the device 100 such that the midpoint of the measurement segment 5222 is within the scope of the reticle 5010. In some embodiments, as shown in Figure 5CC, the midpoint of each measurement segment displayed within the user interface 5006 can be an anchor point to which the focus point 5012 snaps. Thus, in Figure 5CC, the focus point 5012 is snapped to the anchor point corresponding to the midpoint of the measurement segment 5222. To indicate the snap operation, the focus point 5012 is displayed with an increased size relative to the size of the focus point 5012 when it is not snapped to the anchor point (e.g., as shown in Figure 5CB). In some embodiments, as shown in Figure 5CC, when the focus point is snapped to the anchor point, the size of the reticle 5010 does not change. In some embodiments, the size of the focus point 5012 when snapped to the anchor point is larger than the default maximum size of the focus point 5012 used to change the size of the focus point 5012 based on the distance between the device 100 and the position within the physical space 5000 where the focus point 5012 is displayed (e.g., as described herein with respect to Figure 5BT). Additionally, since the focus point 5012 is snapped to a specific point along the measurement segment 5222, to show that instead of the measurement segment 5222 being removed, a continued display results from adding a measurement point at the current position of the focus point 5012, the appearance of the measurement segment 5222 is changed. Specifically, the measurement segment 5222 is changed from a dashed line to a solid line (and back), and the color (and / or transparency) of the measurement segment 5222 is changed such that the measurement segment 5222 is redisplayed in its appearance as shown in Figure 5BZ (before the measurement point 5228 is added). Additionally, the length of the dynamic measurement segment 5232 is updated according to the movement of the device 100 such that the measurement segment 5232 continues to be displayed between the measurement point 5228 and the current position of the focus point 5012.The label associated with measurement segment 5232 is updated to reflect a change in the length of measurement segment 5232 (e.g., 12 inches).
[0272] Figure 5CD shows the transition from Figure 5CC, where user 5004 has moved device 100 such that reticle 5010 and focus point 5012 are positioned away from the midpoint of measurement segment 5222. Thus, in Figure 5CD, the dynamic measurement segment 5232 and its associated label are updated to reflect a change in the length of measurement segment 5232 due to the movement of focus point 5012 relative to measurement point 5228. Additionally, the appearance of measurement segment 5222 is updated to show that adding a measurement point at the current position of focus point 5012 will result in the removal of measurement segment 5222.
[0273] Figure 5CE shows the transition from Figure 5CD, indicating that the user 5004 is moving the device 100 such that the measurement point 5224 (as shown in Figure 5CD) is within the reticle 5010. In some embodiments, as shown in Figure 5CE, the end point of a previously added measurement segment can be an anchor point to which the focus point 5012 snaps. Thus, in Figure 5CE, the focus point 5012 snaps to the anchor point corresponding to the measurement point 5224 (as shown in Figure 5CD). To indicate the snap operation, the focus point 5012 is shown with an increased size relative to its size when it is not snapped to the anchor point (e.g., as shown in Figure 5CD), but the size of the reticle 5010 is not changed as described herein with reference to Figure 5CC. Additionally, since the focus point 5012 snaps to a specific point along the measurement segment 5222, the appearance of the measurement segment 5222 is changed to show that, instead of being removed, the measurement segment 5222 continues to be displayed as a result of adding a measurement point at the current position of the focus point 5012. Specifically, the measurement segment 5222 is changed from a dashed line to a solid line, and the color (and / or transparency) of the measurement segment 5222 is changed so that the measurement segment 5222 is redisplayed in its appearance as shown in Figure 5BZ. In addition, the dynamic measurement segment 5232 and its associated label are updated to reflect the change in the length of the measurement segment 5232 due to the movement of the focus point 5012 with respect to the measurement point 5228.
[0274] Figure 5CF shows the transition from Figure 5CE, indicating the addition of the measurement point 5234 to the user interface 5006 at the current position of the focus point 5012 (as shown in Figure 5CE) in response to the activation of the measurement addition button 5014 by the touch input 5236. In response to the measurement point 5234 being added at a specific point along the measurement segment 5222, the measurement segment 5222 continues to be displayed. As the measurement segment 5232 is completed, the appearance of the measurement segment 5232 is changed from a dashed line to a solid line.
[0275] Figures 5CG to 5CK show the creation of measurements that are close enough to a previous measurement (e.g., within a predefined threshold distance of that measurement but not connected to it) such that the previous measurement continues to be displayed, according to some embodiments. Figure 5CG shows the transition from Figure 5CF, where user 5004 moves device 100 such that reticle 5010 and focus point 5012 are moved away from object 5202 and positioned above the first corner of table 5200. In some embodiments, as shown in Figure 5CG, even if reticle 5010 and focus point 5012 are moved away from measurement segments 5222 and 5232, device 100 continues to display the labels associated with measurement segments 5222 and 5232 (in contrast to Figure 5BV, which shows an embodiment where device 100 stops displaying the label associated with measurement segment 5212 when reticle 5010 and focus point 5012 are moved away from the measurement segment).
[0276] Figure 5CH shows the transition from Figure 5CG, in response to activation of measurement addition button 5014 by touch input 5240, and the addition of measurement point 5238 to user interface 5006 at the current position of focus point 5012 (as shown in Figure 5CH). By adding measurement point 5238 at a specific location within user interface 5006 that is away from previously created measurement segments 5222 and 5232, device 100 creates measurement segments that are disconnected from measurement segments 5222 and 5232 and that exceed the threshold distance from any point along measurement segment 5222 and any point along measurement segment 5232, and modifies the appearance of measurement segments 5222 and 5232 to show that they are removed from user interface 5006. In the example shown in Figure 5CH, measurement segments 5222 and 5232 are changed from solid lines to dashed lines, and the color (and / or transparency) and endpoints of measurement segments 5222 and 5232 are changed.
[0277] Figure 5CI shows the transition from Figure 5CH where user 5004 moves device 100 such that reticle 5010 and focus point 5012 are disposed on the side surface of table 5200. In some embodiments, as shown in Figure 5CI, reticle 5010 is tilted so as to appear coplanar with the side surface of table 5200 to show the detected surface corresponding to the current position of focus point 5012. The dynamic measurement segment 5242 shown in dashed lines is displayed between measurement point 5238 and focus point 5012 along with a related dynamic label (e.g., "2 feet 10 inches") indicating the distance along the side surface of table 5200 such that measurement segment 5242 appears to extend within user interface 5006.
[0278] Figure 5CJ shows the transition from Figure 5CI where user 5004 moves device 100 such that reticle 5010 and focus point 5012 are positioned over the second corner of table 5200. In some embodiments, as shown in Figure 5CJ, even if measurement segments 5222 and 5232 continue to be displayed instead of being removed by adding measurement points at the current position of focus point 5012, the appearance of measurement segments 5222 and 5232 is not changed (e.g., because the measurement segments resulting from adding measurement points at the current position of focus point 5012 will be within a predetermined threshold distance of both measurement segments 5222 and 5232).
[0279] Figure 5CK shows the transition from Figure 5CJ, indicating the addition of measurement point 5244 at the current position of focus point 5012 in response to the activation of measurement addition button 5014 by touch input 5246 (as shown in Figure 5CJ). Measurement point 5244 is added at a position within user interface 5006 such that measurement segment 5242 is within the default threshold distance of measurement segment 5222 (e.g., measurement segment 5242 includes at least one point within the default threshold distance of at least one point along measurement segment 5222). Thus, measurement segment 5222 continues to be displayed even after the addition of measurement point 5244. Also, measurement segment 5222 is changed from a dashed line (posterior) to a solid line, the color (and / or transparency) of measurement segment 5222 is changed, and measurement segment 5222 is redisplayed in its appearance as shown in Figure 5CG. Similarly, measurement segment 5242 is within the default threshold distance of measurement segment 5232 (e.g., measurement segment 5242 includes at least one point within the range of the default threshold distance of at least one point along measurement segment 5222 such as end point measurement 5234). Thus, like measurement segment 5222, measurement segment 5232 also continues to be displayed and is redisplayed in its appearance as shown in Figure 5CG. In some embodiments, as long as at least one point in any of the currently displayed segments (e.g., previously connected segments 5222 and 5232) is within a predetermined distance of the newly created segment (e.g., segment 5242), all of the currently displayed segments remain displayed.
[0280] Figures 5CL - 5CM show exemplary alert states in an augmented reality environment. Figure 5CL shows the transition from Figure 5CK, indicating that the field of view of the camera no longer includes the portion of physical space 5000 in which measurement segments 5222, 5232, and 5242 are displayed (e.g., the left portion of table 5200 shown in Figure 5CK) due to user 5004 moving device 100. Figure 5CL shows that the amount of time elapsed since the field of view of the camera has moved away from the left portion of table 5200 is less than a first predetermined threshold time T th and.
[0281] Figure 5CM shows the transition from Figure 5CL, indicating that the amount of time elapsed since the camera's field of view has moved away from the left portion of the table 5200 has reached a first predetermined threshold amount of time. Accordingly, the device 100 displays an alert message 5248 to indicate that the measurement segments 5222, 5232, and 5242 will soon be removed from the user interface 5006. In some embodiments, if the device 100 is returned to its original position as shown in Figure 5CK within a range of a second predetermined threshold amount of time after the alert message 5248 is displayed, the measurement segments 5222, 5232, and 5242 will be redisplayed within the user interface 5006 over the corresponding features within the physical space 5000, as shown in Figure 5CG. In some embodiments, if the device 100 is returned to its position as shown in Figure 5CK after a second predetermined threshold amount of time has elapsed since the alert message 5248 was displayed, the measurement segments 5222, 5232, 5242 will not be redisplayed within the user interface 5006. In some embodiments, an alert message 5248 is displayed when the device 100 is moved such that the portion of the physical space 5000 where the measurement segments 5222, 5232, and 5242 were displayed is now displayed beyond a threshold distance from the portion of the physical space 5000 currently within the camera's field of view.
[0282] Figures 5CN - 5CO show another exemplary alert state in an augmented reality environment. Figure 5CN shows the device 100 positioned at a first distance from the table 5200 that is less than a predetermined (maximum) threshold distance D th and the reticle 5010 and focus point 5012 are displayed, indicating that the device 100 detected the surface at the position where the focus point 5012 is displayed. Figure 5CO shows the device 100 positioned at a second distance from the table 5200 that is less than a predetermined (maximum) threshold distance D thDevice 100 positioned at a second distance from table 5200 that is greater is shown. Thus, device 100 does not display reticle 5010 and focus point 5012, indicating that device 100 is not detecting the surface at a location within physical space 5000 where focus point 5012 is displayed. Additionally, device 100 displays alert message 5250, indicating that device 100 is far from a location within physical space 5000 where focus point 5012 is displayed, and prompting user 5004 to move device 100 closer to that location. Similarly, in some embodiments, when device 100 is positioned at a distance from table 5200 that is less than a predetermined minimum threshold distance, device 100 does not display reticle 5010 and focus point 5012 (to indicate that the surface is not detected), and displays an alert message (using text such as "move further away") to prompt user 5004 to move device 100 further away from a location within physical space 5000 where focus point 5012 is displayed.
[0283] Figures 6A-6C are flow diagrams showing a method 600 for interacting with an application to perform measurements of a physical space using an extended reality environment, according to some embodiments. The method 600 is executed on an electronic device (e.g., a portable multifunctional device 100 (FIG. 1A), a device 300 (FIG. 3A), or a computer system 301 (FIG. 3B)) that includes a touch-sensitive display (e.g., a touch screen 112 (FIG. 1A), or a display generation component(s) 304 in combination with an input device(s) 302 (FIG. 3B)), and one or more cameras (e.g., an optical sensor(s) 164 (FIG. 1A) or a camera(s) 305 (FIG. 3B)), optionally one or more sensors for detecting the intensity of contact with the touch-sensitive display (e.g., a contact intensity sensor(s) 165, (FIG. 1A), and optionally one or more haptic output generators (e.g., a haptic output generator(s) 163 (FIG. 1A) or a haptic output generator(s) 357 (FIG. 3A)). Some operations of the method 600 are optionally combined and / or the order of some operations is optionally changed.
[0284] As described below, the method 600 provides an intuitive way to reposition virtual measurement points in extended reality-based measurements. Zooming in on an area containing a measurement point in response to an input directed at the measurement point makes it easier to more accurately reposition the measurement point. The method 600 reduces the number, scope, and / or type of inputs from the user, thereby creating a more efficient human-machine interface. With respect to battery-operated electronic devices, it more efficiently conserves power and extends the time between battery charges by enabling the user to more quickly reposition measurement points.
[0285] The electronic device displays (602) on the touch-sensitive display a user interface of the application (e.g., a user interface 5006, FIG. 5AX) (e.g., an extended reality measurement application or an application that includes an extended reality measurement function).
[0286] The user interface includes a representation of the field of view of at least one of the one or more cameras (604) (e.g., the user interface 5006 includes a live preview of the field of view of the camera of the device 100 in FIG. 5AX). The representation of the field of view is displayed at a first magnification and is updated over time based on changes to the current visual data detected by at least one of the one or more cameras (e.g., the representation of the field of view is a live view from at least one of the one or more cameras). Further, the field of view includes at least a portion of a three-dimensional space (e.g., a space within the physical world that includes physical objects). For example, the live preview is displayed without zoom ...
Claims
1. In an electronic device having a touch-sensing display and one or more cameras, displaying a user interface of an application on the touch-sensing display, wherein the user interface includes a representation of the field of view of at least one of the one or more cameras, the representation of the field of view is updated over time based on changes to current visual data detected by at least one of the one or more cameras, the user interface includes a measurement point creation indicator displayed on the representation of the field of view, and the field of view includes at least a portion of a three-dimensional space, while displaying the representation of the field of view, determining an anchor point at a position within the representation of the field of view corresponding to a first position within the three-dimensional space, when at least one of the one or more cameras moves, while the measurement point creation indicator is over the anchor point, changing the visual appearance of the measurement point creation indicator to indicate that a measurement point is added at the anchor point if a touch input meets a first criterion, detecting a first touch input on the touch-sensing display that meets the first criterion, in response to detecting the first touch input that meets the first criterion, adding respective measurement points to the representation of the field of view at positions determined based on the position of the measurement point creation indicator within the representation of the field of view, displaying and adding the respective measurement points at the anchor point within the representation of the field of view corresponding to the first position within the three-dimensional space according to a determination that the measurement point creation indicator is over the anchor point when the first criterion is met, displaying and adding the respective measurement points at a first position within the representation of the field of view away from the anchor point according to a determination that the measurement point creation indicator is not over the anchor point when the first criterion is met, after adding the respective measurement points to the representation of the field of view, detecting movement of the one or more cameras that changes the field of view of the one or more cameras, in response to detecting the movement of the one or more cameras, updating the representation of the field of view based on the movement of the one or more cameras, In accordance with the determination that the representation of the field of view of the one or more cameras includes a region corresponding to at least one physical feature in the three-dimensional space identified by the electronic device as a physical feature to which a measurement point can be added, maintaining the display of the measurement point creation indicator on the touch-sensitive display; In accordance with the determination that the representation of the field of view of the one or more cameras does not include a region corresponding to a physical feature in the three-dimensional space to which a measurement point can be added, stopping the display of the measurement point creation indicator on the touch-sensitive display; A method comprising. **Claim 2** The determined anchor point is also the end point of the displayed representation of the measurement, Adding a measurement point at the anchor point when the touch input meets a first criterion does not form a region surrounded by a plurality of displayed measurement segments within the representation of the field of view. The method according to claim 1. **Claim 3** Displaying a representation of a first measurement on the representation of the field of view, The representation of the first measurement includes a first end point corresponding to a second position in the three-dimensional space, The representation of the first measurement includes a second end point corresponding to a third position in the three-dimensional space, The representation of the first measurement includes a first line segment connecting the first end point and the second end point, The determined anchor point is the midpoint of the first line segment. The method according to claim 1. **Claim 4** The electronic device includes one or more haptic output generators, and the method includes: When at least one of the one or more cameras moves, while the measurement point creation indicator is over the anchor point, Generating a haptic output in conjunction with changing the visual appearance of the measurement point creation indicator, Adding a measurement point to the anchor point when the touch input meets a first criterion does not form a region surrounded by a plurality of displayed measurement segments in the representation of the field of view of the one or more cameras. The method according to claim 1. **Claim 5** The electronic device includes one or more haptic output generators, and the method includes: Detecting movement of the measurement point creation indicator away from the anchor point, Generating a haptic output in response to detecting the movement of the measurement point creation indicator away from the anchor point. The method according to claim 1, comprising. **Claim 6** The electronic device includes one or more haptic output generators, and the method includes: In response to detecting the first touch input that meets a first criterion, Adding each of the measurement points without adding a measurement segment connected to each of the measurement points, Generating a first haptic output, Detecting movement of the measurement point creation indicator to a second position within the representation of the field of view corresponding to a second position in the three-dimensional space, While the measurement point creation indicator is over the second position within the representation of the field of view, detecting a second touch input on the touch-sensitive display that meets the first criterion, In response to detecting the second touch input that meets the first criterion, Adding a second measurement point at the second position within the representation of the field of view, Adding a measurement segment between each of the measurement points and the second measurement point, Generating a second haptic output different from the first haptic output, The method according to claim 1, comprising.
7. Changing the visual appearance of the measurement point creation indicator includes expanding a first part of the measurement point creation indicator relative to a second part of the measurement point creation indicator, the method according to claim 1.
8. A touch-sensitive display, One or more cameras, One or more processors, A memory storing one or more programs, An electronic device comprising: The one or more programs are configured to be executed by the one or more processors, and the one or more programs include: Displaying a user interface of an application on the touch-sensitive display, The user interface includes a representation of the field of view of at least one of the one or more cameras, The representation of the field of view is updated over time based on changes to current visual data detected by at least one of the one or more cameras, The user interface includes a measurement point creation indicator displayed over the representation of the field of view, and The field of view includes at least a portion of a three-dimensional space, While displaying the representation of the field of view, Determining an anchor point at a position within the representation of the field of view corresponding to a first position in the three-dimensional space, When at least one of the one or more cameras moves, while the measurement point creation indicator is above the anchor point, if a touch input meets a first criterion, in order to indicate that a measurement point is added at the anchor point, changing the visual appearance of the measurement point creation indicator; detecting a first touch input on the touch-sensitive display that meets the first criterion; in response to detecting the first touch input that meets the first criterion, adding respective measurement points to the representation of the visual field at positions determined based on the position of the measurement point creation indicator within the representation of the visual field, displaying by adding the respective measurement points at the anchor point within the representation of the visual field corresponding to the first position in the three-dimensional space according to a determination that the measurement point creation indicator is above the anchor point when the first criterion is met; displaying by adding the respective measurement points at a first position within the representation of the visual field that is away from the anchor point according to a determination that the measurement point creation indicator is not above the anchor point when the first criterion is met; after adding the respective measurement points to the representation of the visual field, detecting movement of the one or more cameras that changes the visual field of the one or more cameras; in response to detecting the movement of the one or more cameras; updating the representation of the visual field based on the movement of the one or more cameras; maintaining the display of the measurement point creation indicator on the touch-sensitive display according to a determination that the representation of the visual field of the one or more cameras includes a region corresponding to at least one physical feature in the three-dimensional space identified by the electronic device as a physical feature at which a measurement point can be added; aborting the display of the measurement point creation indicator on the touch-sensitive display according to a determination that the representation of the visual field of the one or more cameras does not include a region corresponding to a physical feature in the three-dimensional space at which a measurement point can be added; An electronic device comprising instructions for performing the above.
9. The electronic device according to claim 8, wherein the one or more programs include instructions for executing the method according to any one of claims 2 to 7.
10. When executed by an electronic device including a touch-sensitive display and one or more cameras, the electronic device is caused to display a user interface of an application on the touch-sensitive display, wherein the user interface includes a representation of the field of view of at least one of the one or more cameras, wherein the representation of the field of view is updated over time based on changes to current visual data detected by at least one of the one or more cameras, wherein the user interface includes a measurement point creation indicator displayed on the representation of the field of view, and wherein the field of view includes at least a portion of a three-dimensional space, while displaying the representation of the field of view, determining an anchor point at a position within the representation of the field of view corresponding to a first position within the three-dimensional space, when at least one of the one or more cameras moves, while the measurement point creation indicator is over the anchor point, changing the visual appearance of the measurement point creation indicator to indicate that a measurement point is added at the anchor point if a touch input meets a first criterion, detecting a first touch input on the touch-sensitive display that meets the first criterion, in response to detecting the first touch input that meets the first criterion, adding respective measurement points to the representation of the field of view at positions determined based on the position of the measurement point creation indicator within the representation of the field of view, displaying the respective measurement points added at the anchor point within the representation of the field of view corresponding to the first position within the three-dimensional space according to a determination that the measurement point creation indicator is over the anchor point when the first criterion is met, displaying the respective measurement points added at a first position within the representation of the field of view away from the anchor point according to a determination that the measurement point creation indicator is not over the anchor point when the first criterion is met, after adding the respective measurement points to the representation of the field of view, detecting movement of the one or more cameras that changes the field of view of the one or more cameras, in response to detecting the movement of the one or more cameras, updating the representation of the field of view based on the movement of the one or more cameras, In accordance with the determination that the representation of the field of view of the one or more cameras includes a region corresponding to at least one physical feature in the three-dimensional space identified by the electronic device as a physical feature to which a measurement point can be added, maintaining the display of the measurement point creation indicator on the touch-sensitive display; In accordance with the determination that the representation of the field of view of the one or more cameras does not include a region corresponding to a physical feature in the three-dimensional space to which a measurement point can be added, stopping the display of the measurement point creation indicator on the touch-sensitive display; A computer program comprising instructions for causing the above to be executed. [
11. ] The computer program according to claim 10, comprising instructions for causing the electronic device to execute the method according to any one of claims 2 to 7 when executed by the electronic device.
Citation Information
Patent Citations
Length measuring device, length measuring method, and program
JP2013217662A
Systems and methods for viewport-based augmented reality haptic effects
JP2015212946A
Virtual measurement tools for wearable visualization devices
JP2017536618A
Adjusting dimensioning results using augmented reality
US20170017301A1
Controls and Interfaces for User Interactions in Virtual Spaces
US20180095616A1