A popular feature of many portable computing devices, such as smart phones, tablets, laptops, and portable media players, is the touchscreen, which allows users to directly interact with their devices in new and interesting ways. There are, however, certain drawbacks to the touchscreen. The surfaces of touchscreens require cleaning more often and some users find the electrical contact between the user's fingertip and the touchscreen uncomfortable, particularly after an extended period of use. In addition, certain tasks can be difficult for some users to perform on touchscreens and some interactions are less than optimal for the user. For example, new users may be unaccustomed to various features, functions, and applications incorporated in the devices, and can only familiarize themselves by trial and error. In other instances, a display area that may already be small to begin with can become even more limited when the user is required to interact with their devices by touch.
Various embodiments in accordance with the present disclosure will be described with reference to the drawings, in which:
a), 3(b), 3(c), and 3(d) illustrate an example process for determining one or more characteristics of a user with respect to a computing device that can be utilized in accordance with various embodiments;
a) and 6(b) illustrate another example approach for determining whether data to be displayed at a particular location may be occluded that can be utilized in accordance with various embodiments;
Users of personal and portable electronic devices often expect to be able to perform most (if not all) computing tasks from their portable electronic devices if the task can be performed by desktops, workstations, and servers. However, differences such as display size and approaches to user input, among others, can sometimes make it more difficult to perform certain tasks on smaller devices. For instance, web browsing on smaller devices can sometimes be less than ideal because many websites are designed with desktop displays in mind. Users may have to constantly scroll left or right, top to bottom to review some website content. In addition, certain websites group hyperlinks very close together such that users can often select an undesired hyperlink. Another example is text creation and editing. Users may find typing on portable electronic devices frustrating because the keyboard keys are typically smaller than the user's fingertips such that unintended keys are often pressed. Yet another example is the general lack of availability of tooltips, hover boxes, previews, and other such interfaces for personal devices. These approaches allow users to hover over an object of a user interface to obtain information about the object or what the object will do, and can be very helpful for many users. When such functionality is provided at all, conventional devices may fail to take into account that the presentation of tooltips, hover boxes, and other such interfaces, may be occluded by the user's finger, hand, or other physical features of the user.
Systems and methods in accordance with various embodiments of the present disclosure may overcome one or more of the aforementioned and other deficiencies experienced in conventional approaches for displaying data and/or enabling user input. In particular, various embodiments enable a computing device to recognize when a user's finger, hand, stylus, digital pen, or other such object hovers over or is within a determined distance of a user interface element. Some of the user interface elements may be configured to display data upon detection of a hover input or when the object is within the determined distance of the user interface element. When the data is displayed, certain approaches of various embodiments ensure that at least substantive portions of the data are displayed without being occluded or obscured, for example, by the user's finger, hand, or other such object.
Many other alternatives and variations are described and suggested below in relation to at least some of the various embodiments.
A conventional approach to hover interactions is a mouseover event in a desktop web browser, wherein a hover input, such as the user maintaining a mouse cursor over a hyperlink, may result in a display of the URL in the status bar of the web browser. Certain conventional web browsers can also display the title and/or alt attribute of a hyperlink as a tooltip next to the hyperlink when the user hovers over the hyperlink for a period of time. Conventional browsers that support tabbing can display the full title of a web page corresponding to a tab when the user hovers over the tab. Some web browsers also support hover interactions of websites that define their own mouseovers using JavaScript® or Cascade Style Sheets (CSS). For instance, hovering over certain objects of a webpage of the website may result in the object changing color, a border being added around an object, or a tooltip to appear next to the object.
Other conventional approaches for hover interactions are implemented by certain desktop software applications and desktop operating systems (OS's) with GUIs. Desktop software applications can provide tooltips when a user hovers over certain selectable objects or elements (e.g., buttons, toolbar or ribbon icons, menu options, palettes) of the respective programs. Tooltips can provide information to the user about the computing task(s) associated with the objects or elements. Other desktop applications, such as word processors, spreadsheet programs, image editing software, or presentation programs, use an approach for hover interactions that enable the user to select editable content and then hover over a stylistic or graphical tool without committing to changes to preview what the selected editable content would look like if the user selected the computing task(s) associated with the tool (e.g., bold, italicize, underline, color, image effect). Hover interactions are also supported by some desktop OS's. For example, in certain desktop OS's, hovering over an icon corresponding to hard drives, peripheral devices, network drives, applications, folders, files, etc. may provide information about these objects, such as the full name, contents, location, date of creation, size, file type, etc. In addition, desktop OS's may support hover interactions via one or more application programming interfaces that can standardize how a hover input is detected and the computing task(s) to perform when a hover input is detected.
In
Although
Certain conventional systems and approaches may rely only on capacitive sensors based on self-capacitance to enable hover interactions, which limits these conventional systems and methods to single hover detection because of the ghosting effect. As will be discussed in further detail below, approaches in accordance with various embodiments can overcome this deficiency by using image analysis, at least in part, for detecting hover inputs. Thus, in at least some embodiments, as demonstrated in
In some embodiments, consideration of an active area of a GUI may also determine where hover boxes are to be located when a user hovers over certain elements of the GUI. In various embodiments, the active area of the GUI may correspond to a location of a text cursor. For example, in
In order to determine whether an object (e.g., user's finger, stylus, digital pen, etc.) is within a determined distance of a user interface element displayed on a display or other such element of a computing device, a number of potential approaches can be used.
In this example, a second camera 310 is used to assist with location determination as well as to enable distance determinations through stereoscopic imaging. The lower camera 310 is also able to image the fingertip 304 as long as the feature is at least partially within the field of view 314 of the lower camera 310. Using a similar process to that described above, appropriate software can analyze the image information captured by the lower camera to determine an approximate direction 318 to the user's fingertip. The direction can be determined, in at least some embodiments, by looking at a distance from a center (or other) point of the image and comparing that to the angular measure of the field of view of the camera. For example, a feature in the middle of a captured image is likely directly in front of the respective camera. If the feature is at the very edge of the image, then the feature is likely at a forty-five degree angle from a vector orthogonal to the image plane of the capture element. Positions between the edge and the center correspond to intermediate angles as would be apparent to one of ordinary skill in the art, and as known in the art for stereoscopic imaging. Once the direction vectors from at least two image capture elements are determined for a given feature, the intersection point of those vectors can be determined, which corresponds to the approximate relative position in three dimensions of the respective feature.
In some embodiments, information from a single camera can be used to determine the relative distance to a feature of a user. For example, a device can determine the size of a feature (e.g., a finger, hand, pen, or stylus) used to provide input to the device. By monitoring the relative size in the captured image information, the device can estimate the relative distance to the feature. This estimated distance can be used to assist with location determination using a single camera or sensor approach.
Further illustrating such an example approach,
As can be seen in
d) illustrates another perspective 360 of the device 302. If a fingertip or other feature near the display screen 306 of the device falls within at least one of these fields of view, the device can analyze images or video captured by these cameras to determine the location of the fingertip. In order to account for position in the dead zone outside the fields of view near the display, the device can utilize a second detection approach, such as by using one or more capacitive sensors. The capacitive sensor(s) can detect position at or near the surface of the display screen, and by adjusting the parameters of the capacitive sensor(s) the device can have a detection range 370 that covers the dead zone and also at least partially overlaps the fields of view. Such an approach enables the location of a fingertip or feature to be detected when that fingertip is within a given distance of the display screen, whether or not the fingertip can be seen by one of the cameras. Other location detection approaches can be used as well, such as ultrasonic detection, distance detection, optical analysis, and the like.
In this example, the angle of incidence between the user's finger 404 and the computing device is such that capacitive disturbance can be measured from a first point 420 on the touchscreen 406 corresponding to the user's fingertip to a second point 424 at the edge of the touchscreen. For instance, the capacitive sensor(s) can be configured to detect both the user's fingertip corresponding to the point at 420 and the presence of other portions of the user's finger 404 below the fingertip when the angle of incidence between the user's finger 404 and the computing device 402 is at least 45°. In various embodiments, other minimum and/or maximum threshold angles of incidence can be used based at least in part on the characteristics of the capacitive sensor(s). The capacitive disturbance that has been detected here is represented as the gradient from point 420 to point 424. From the detected capacitive disturbance, the footprint of the user's finger 404 (i.e., the area indicated by the dashed line corresponding to the user's finger 404 on the touchscreen 406 and the right edge of the touchscreen 406) can be estimated. Data associated with a GUI element that is located at point 420 and associated with a hover interaction can then be displayed away from the footprint of the user's finger 404, for example. Here, that data comprises a tooltip 422.
In certain cases, it may not be possible to measure capacitive disturbance to determine the footprint of the user's finger, such as when the user's finger is perpendicular to the touchscreen. Another approach in accordance with various embodiments, such as the example 500 illustrated in
a) and 6(b) illustrate another example approach for determining whether data to be displayed at a location may be occluded that can be utilized in accordance with various embodiments. In some embodiments, detection of a location on a screen that the user is hovering over may be determined by an absolute distance between the user's finger (or other such implement) from the screen. In other embodiments, detection of the location that the user is hovering over can be a relative distance based on the location of the user's finger and the angle of incidence between the user's line of sight with respect to the screen. For example,
A user may interact with the user interface such that a computing device executing the user interface detects that one of the user interface elements has been hovered upon 704. As discussed elsewhere herein, a computing device may include one or more capacitive sensors, one or more cameras, one or more ultrasonic detectors, and/or one or more other such sensors to detect hover inputs. In various embodiments, the computing device can estimate one or more characteristics of the user with respect to the computing device 706, such as a footprint of the user's hand, the user's handedness, the user's line of sight, etc. Based on this analysis, the computing device may determine whether the data to be displayed would be occluded 708 if displayed at a default position. For instance, there may be a number of heuristics on where to display tooltips, hover boxes, and the like. As discussed elsewhere herein, one approach may be to provide hover boxes corresponding to virtual keys above the user's fingertip. However, in some circumstances, such placement may result in substantive portions of the data being obscured by the user. If the data would be occluded, the computing device may determine a different location in the user interface to present the data such that at least the substantive portion of the data would be visible to the user 710, and display the data the determined location 712. If the data would not be occluded at the preferred or default location, then the data can be displayed at that location 714.
The computing device in this example includes cameras 804 and 806 or other imaging element for capturing still or video image information over at least a field of view of the cameras. In some embodiments, the computing device might only contain one imaging element, and in other embodiments the computing device might contain several imaging elements. Each image capture element may be, for example, a camera, a charge-coupled device (CCD), a motion detection sensor, or an infrared sensor, among many other possibilities. If there are multiple image capture elements on the computing device, the image capture elements may be of different types. In some embodiments, at least one camera can include at least one wide-angle optical element, such as a fish eye lens, that enables the camera to capture images over a wide range of angles, such as 180 degrees or more. Further, each camera can comprise a digital still camera, configured to capture subsequent frames in rapid succession, or a video camera able to capture streaming video.
The example computing device 800 also includes at least one microphone 810 or other audio capture device capable of capturing audio data, such as words or commands spoken by a user of the device. In this example, a microphone is placed on the same side of the device as the display screen 806, such that the microphone will typically be better able to capture words spoken by a user of the device. In at least some embodiments, a microphone can be a directional microphone that captures sound information from substantially directly in front of the microphone, and picks up only a limited amount of sound from other directions. It should be understood that a microphone might be located on any appropriate surface of any region, face, or edge of the device in different embodiments, and that multiple microphones can be used for audio recording and filtering purposes, etc.
The computing device 900 includes at least one capacitive component 908 or other proximity sensor, which can be part of, or separate from, the display assembly. In at least some embodiments the proximity sensor can take the form of a capacitive touch sensor capable of detecting the proximity of a finger or other such object as discussed herein. The computing device can include one or more communication elements or networking sub-systems, such as a Wi-Fi, Bluetooth, RF, wired, or wireless communication system. The device in many embodiments can communicate with a network, such as the Internet, and may be able to communicate with other such devices. In some embodiments the device can include at least one additional input device 912 able to receive conventional input from a user. This conventional input can include, for example, a push button, touch pad, touchscreen, wheel, joystick, keyboard, mouse, keypad, or any other such device or element whereby a user can input a command to the device. In some embodiments, however, such a device might not include any buttons at all, and might be controlled only through a combination of visual and audio commands, such that a user can control the device without having to be in contact with the device.
The device 900 also can include one or more orientation and/or motion sensors. Such sensor(s) can include an accelerometer or gyroscope operable to detect an orientation and/or change in orientation, or an electronic or digital compass, which can indicate a direction in which the device is determined to be facing. The mechanism(s) also (or alternatively) can include or comprise a global positioning system (UPS) or similar positioning element operable to determine relative coordinates for a position of the computing device, as well as information about relatively large movements of the device. The device can include other elements as well, such as may enable location determinations through triangulation or another such approach. These mechanisms can communicate with the processor 902, whereby the device can perform any of a number of actions described or suggested herein.
In some embodiments, the device 900 can include the ability to activate and/or deactivate detection and/or command modes, such as when receiving a command from a user or an application, or retrying to determine an audio input or video input, etc. For example, a device might not attempt to detect or communicate with devices when there is not a user in the room. If a proximity sensor of the device, such as an IR sensor, detects a user entering the room, for instance, the device can activate a detection or control mode such that the device can be ready when needed by the user, but conserve power and resources when a user is not nearby.
In some embodiments, the computing device 900 may include a light-detecting element that is able to determine whether the device is exposed to ambient light or is in relative or complete darkness. Such an element can be beneficial in a number of ways. For example, the light-detecting element can be used to determine when a user is holding the device up to the user's face (causing the light-detecting element to be substantially shielded from the ambient light), which can trigger an action such as the display element to temporarily shut off (since the user cannot see the display element while holding the device to the user's ear). The light-detecting element could be used in conjunction with information from other elements to adjust the functionality of the device. For example, if the device is unable to detect a user's view location and a user is not holding the device but the device is exposed to ambient light, the device might determine that it has likely been set down by the user and might turn off the display element and disable certain functionality. If the device is unable to detect a user's view location, a user is not holding the device and the device is further not exposed to ambient light, the device might determine that the device has been placed in a hag or other compartment that is likely inaccessible to the user and thus might turn off or disable additional features that might otherwise have been available. In some embodiments, a user must either be looking at the device, holding the device or have the device out in the light in order to activate certain functionality of the device. In other embodiments, the device may include a display element that can operate in different modes, such as reflective (for bright situations) and emissive (for dark situations). Based on the detected light, the device may change modes.
In some embodiments, the device 900 can disable features for reasons substantially unrelated to power savings. For example, the device can use voice recognition to determine people near the device, such as children, and can disable or enable features, such as Internet access or parental controls, based thereon. Further, the device can analyze recorded noise to attempt to determine an environment, such as whether the device is in a car or on a plane, and that determination can help to decide which features to enable/disable or which actions are taken based upon other inputs. If voice recognition is used, words can be used as input, either directly spoken to the device or indirectly as picked up through conversation. For example, if the device determines that it is in a car, facing the user and detects a word such as “hungry” or “eat,” then the device might turn on the display element and display information for nearby restaurants, etc. A user can have the option of turning off voice recording and conversation monitoring for privacy and other such purposes.
In some of the above examples, the actions taken by the device relate to deactivating certain functionality for purposes of reducing power consumption. It should be understood, however, that actions can correspond to other functions that can adjust similar and other potential issues with use of the device. For example, certain functions, such as requesting Web page content, searching for content on a hard drive and opening various applications, can take a certain amount of time to complete. For devices with limited resources, or that have heavy usage, a number of such operations occurring at the same time can cause the device to slow down or even lock up, which can lead to inefficiencies, degrade the user experience and potentially use more power. In order to address at least some of these and other such issues, approaches in accordance with various embodiments can also utilize information such as user gaze direction to activate resources that are likely to be used in order to spread out the need for processing capacity, memory space and other such resources.
In some embodiments, the device can have sufficient processing capability, and the camera and associated image analysis algorithm(s) may be sensitive enough to distinguish between the motion of the device, motion of a user's head, motion of the user's eyes and other such motions, based on the captured images alone. In other embodiments, such as where it may be desirable for an image process to utilize a fairly simple camera and image analysis approach, it can be desirable to include at least one orientation determining element that is able to determine a current orientation of the device. In one example, the one or more orientation and/or motion sensors may comprise a single- or multi-axis accelerometer that is able to detect factors such as three-dimensional position of the device and the magnitude and direction of movement of the device, as well as vibration, shock, etc. Methods for using elements such as accelerometers to determine orientation or movement of a device are also known in the art and will not be discussed herein in detail. Other elements for detecting orientation and/or movement can be used as well within the scope of various embodiments for use as the orientation determining element. When the input from an accelerometer or similar element is used along with the input from the camera, the relative movement can be more accurately interpreted, allowing for a more precise input and/or a less complex image analysis algorithm.
When using a camera of the computing device to detect motion of the device and/or user, for example, the computing device can use the background in the images to determine movement. For example, if a user holds the device at a fixed orientation (e.g. distance, angle, etc.) to the user and the user changes orientation to the surrounding environment, analyzing an image of the user alone will not result in detecting a change in an orientation of the device. Rather, in some embodiments, the computing device can still detect movement of the device by recognizing the changes in the background imagery behind the user. So, for example, if an object (e.g. a window, picture, tree, hush, building, car, etc.) moves to the left or right in the image, the device can determine that the device has changed orientation, even though the orientation of the device with respect to the user has not changed. In other embodiments, the device may detect that the user has moved with respect to the device and adjust accordingly. For example, if the user tilts their head to the left or right with respect to the device, the content rendered on the display element may likewise tilt to keep the content in orientation with the user.
The various embodiments can be further implemented in a wide variety of operating environments, which in some cases can include one or more user computers or computing devices which can be used to operate any of a number of applications. User or client devices can include any of a number of general purpose personal computers, such as desktop or laptop computers running a standard operating system, as well as cellular, wireless and handheld devices running mobile software and capable of supporting a number of networking and messaging protocols. Such a system can also include a number of workstations running any of a variety of commercially-available operating systems and other known applications for purposes such as development and database management. These devices can also include other electronic devices, such as dummy terminals, thin-clients, gaming systems and other devices capable of communicating via a network.
The operating environments can include a variety of data stores and other memory and storage media as discussed above. These can reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or more of the computers or remote from any or all of the computers across the network. In a particular set of embodiments, the information may reside in a storage-area network (SAN) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers, servers or other network devices may be stored locally and/or remotely, as appropriate. Where a system includes computerized devices, each such device can include hardware elements that may be electrically coupled via a bus, the elements including, for example, at least one central processing unit (CPU), at least one input device (e.g., a mouse, keyboard, controller, touch-sensitive display element or keypad) and at least one output device (e.g., a display device, printer or speaker). Such a system may also include one or more storage devices, such as disk drives, optical storage devices and solid-state storage devices such as random access memory (RAM) or read-only memory (ROM), as well as removable media devices, memory cards, flash cards, etc.
Such devices can also include a computer-readable storage media reader, a communications device (e.g., a modem, a network card (wireless or wired), an infrared communication device) and working memory as described above. The computer-readable storage media reader can be connected with, or configured to receive, a computer-readable storage medium representing remote, local, fixed and/or removable storage devices as well as storage media for temporarily and/or more permanently containing, storing, transmitting and retrieving computer-readable information. The system and various devices also typically will include a number of software applications, modules, services or other elements located within at least one working memory device, including an operating system and application programs such as a client application or Web browser. It should be appreciated that alternate embodiments may have numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets) or both. Further, connection to other computing devices such as network input/output devices may be employed.
Storage media and computer readable media for containing code, or portions of code, can include any appropriate media known or used in the art, including storage media and communication media, such as but not limited to volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as computer readable instructions, data structures, program modules or other data, including RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices or any other medium which can be used to store the desired information and which can be accessed by a system device. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the various embodiments.
The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims.