Pedometers and step detectors based on inertial sensors have found various applications in fitness, health monitoring, positioning systems, and more. Step detection in these applications is typically based on sensors that are constrained to a particular position with respect to a pedestrian (e.g., waist, wrist, shoes, etc.). For mobile phones and other mobile devices, step detection can be more difficult because the mobile device can be carried in any of a variety of locations (e.g., a pedestrian's hand, pocket, purse, etc.) and subject to combined motion due to steps, swinging of an arm while holding the mobile device, movement of a purse, and more. As such, step detection in mobile devices can be highly inaccurate.
Embodiments of the present invention are directed toward enhancing the performance of step detectors in mobile devices by calculating the probability of a step and providing the probability to an application. Embodiments can further improve the accuracy of step detection by utilizing adaptive data models that can be based on different types of motion (walking with mobile device in hand, climbing stairs with mobile device in purse, running with mobile device in pocket, etc.), and can adapt to a particular user's motion. Where applications allow, embodiments can further utilize data modeling to detect a pattern (e.g., a series of steps) and adjust the probability calculation accordingly.
An example method of step detection, according to the description, includes obtaining motion data indicative of a user's movement during a first time interval, determining one or more features of the motion data, and calculating, with a processing unit, a probability that a step was made. The probability can be based on at least one feature of the one or more features, and information indicative of the user's movement at a time prior to the first time interval.
The method of step detection also can include one or more of the following features. The method can include determining a motion state indicative of a type of the user's movement, where calculating the probability that a step was made is further based on the motion state. The motion state can be indicative of at least one of standing, sitting, running, fidgeting, walking, swinging or dangling a mobile device in hand, or the user's movement. The information indicative of the user's movement at a time prior to the first time interval can include a data model indicative of the user's movement at a second time interval previous to the first time interval. The method can further include updating the data model based on the motion data. The method can include using a data model to determine a pattern of the one or more features, wherein calculating the probability that a step was made is further based on the pattern. The data model can include a hidden Markov model. The one or more features can be indicative of at least one of a rate of change in acceleration, a magnitude of a change in acceleration, or a rate at which peaks in acceleration are detected.
Additionally or alternatively, the method of step detection can include one or more of the following features. The method can include accessing a probability that motion data over a previous interval corresponds to a step, where calculating the probability that a step was made over the first time interval is at least partially based on the probability that motion data over a second time interval, previous to the first time interval, corresponds to a step. Calculating a probability that a step was made can be performed on a mobile device. The method can include providing the probability that a step was made to an application executed by the mobile device. Obtaining the motion data can include receiving, at a server, the motion data. The method can include sending the probability that a step was made to mobile device; estimating a timestamp indicative of a point in time, during the first time interval, that corresponds to the probability that a step was made; and/or providing information indicative of at least one of a time stamp, a step event, a step probability history, a step rate, or a stride length.
An example mobile device, according to the disclosure, can include one or more motion sensors configured to measure motion data indicative of a user's movement of the mobile device during a first time interval, and a processing unit coupled to the one or more motion sensors. The processing unit is configured to perform functions including obtaining motion data from the one or more motion sensors, determining one or more features of the motion data, and calculating a probability that a step was made by the user, where the probability is based on at least one feature of the one or more features, and information indicative of the user's movement at a time prior to the first time interval.
The mobile device also can include one or more of the following features. The processing unit further can be configured to determine a motion state indicative of a type of the user's movement, and calculate the probability that a step was made further based on the motion state. The processing unit further can be configured to calculate the probability wherein the information indicative of the user's movement at a time prior to the first time interval comprises a data model indicative of the user's movement at a second time interval previous to the first time interval, and update the data model based on the motion data. The processing unit further can be configured to use a data model to determine a pattern of the one or more features, and calculate the probability that a step was made further based on the pattern. The data model can include a hidden Markov model.
The mobile device additionally or alternatively can include one or more of the following features. The processing unit further can be configured to use the one or more features indicative of at least one of a rate of change in acceleration, a magnitude of a change in acceleration, or a rate at which peaks in acceleration are detected. The processing unit further can be configured to access a probability that motion data over a previous interval corresponds to a step, and calculate the probability that a step was made over the first time interval at least partially based on the probability that motion data over a second time interval, previous to the first time interval, corresponds to a step. The processing unit further can be configured to provide the probability that a step was made to an application executed by the mobile device and/or estimate a timestamp indicative of a point in time, during the first time interval, that corresponds to the probability that a step was made.
An example computer-readable storage medium, according to the disclosure, has instructions embedded thereon for providing step detection. The instructions include computer-executable code for obtaining motion data indicative of a user's movement during a first time interval, determining one or more features of the motion data, and calculating a probability that a step was made, where the probability is based on at least one feature of the one or more features, and information indicative of the user's movement at a time prior to the first time interval.
The computer-readable storage medium also can include computer-executable code for providing one or more of the following features. Determining a motion state indicative of a type of the user's movement, and calculating the probability that a step was made further based on the motion state. Calculating the probability wherein the information indicative of the user's movement at a time prior to the first time interval comprises a data model indicative of the user's movement at a second time interval previous to the first time interval, and updating the data model based on the motion data. Using a data model to determine a pattern of the one or more features, and calculating the probability that a step was made further based on the pattern. Using the data model can include using a hidden Markov model.
The computer-readable storage medium additionally or alternatively can further include computer-executable code for providing one or more of the following features. Using the one or more features indicative of at least one of a rate of change in acceleration, a magnitude of a change in acceleration, or a rate at which peaks in acceleration are detected. Accessing a probability that motion data over a previous interval corresponds to a step, and calculating the probability that a step was made over the first time interval at least partially based on the probability that motion data over a second time interval, previous to the first time interval, corresponds to a step. Providing the probability that a step was made to an application executed by a mobile device. Obtaining the motion data comprises computer-executable code for receiving the motion data at a server. Sending the probability that that a step was made to a mobile device. Estimating a timestamp indicative of a point in time, during the first time interval, that corresponds to the probability that a step was made.
An example apparatus, according to the disclosure, can include means for obtaining motion data indicative of a user's movement during a first time interval, means for determining one or more features of the motion data, and means for calculating a probability that a step was made, wherein the probability is based on at least one feature of the one or more features, and information indicative of the user's movement at a time prior to the first time interval.
The apparatus also can include one or more of the following features. The means for calculating the probability that a step was made further include means for basing the calculation on the motion state. The means for calculating the probability can include means for basing the calculation on the information indicative of the user's movement at a time prior to the first time interval comprising a data model indicative of the user's movement at a second time interval previous to the first time interval, the apparatus further comprising, and the apparatus can further include means for updating the data model based on the motion data. The apparatus can further include means for using a data model to determine a pattern of the one or more features, where the means for calculating the probability that a step was made further include means for basing the calculation on the pattern. Means for using the data model can include means for using a hidden Markov model.
The apparatus additionally or alternatively can include one or more of the following features. The means for calculating the probability further include means for using the one or more features indicative of at least one of: a rate of change in acceleration, a magnitude of a change in acceleration, or a rate at which peaks in acceleration are detected. The apparatus can include means for accessing a probability that motion data over a previous interval corresponds to a step where the means for calculating the probability that a step was made over the first time interval include means for least partially basing the calculation on the probability that motion data over a second time interval, previous to the first time interval, corresponds to a step. The apparatus can also include means for providing the probability that a step was made to an application executed by a mobile device. The means for obtaining the motion data can include means for receiving the motion data at a server. The apparatus can further include means for sending the probability that a step was made to a mobile device, and/or means for estimating a timestamp indicative of a point in time, during the first time interval, that corresponds to the probability that a step was made.
Items and/or techniques described herein may provide one or more of the following capabilities, as well as other capabilities not mentioned. Techniques can provide for increased step determination accuracy, which, in turn, can improve the accuracy of applications utilizing a pedometer, such as fitness and health monitoring, dead reckoning for positioning applications, and the like. Embodiments can also provide more flexibility to an application by providing (e.g., via an application programming interface (API)) a probability of a step, rather than a simple binary output. These and other embodiments, along with many of its advantages and features, are described in more detail in conjunction with the text below and attached figures.
The following description is provided with reference to the drawings, where like reference numerals are used to refer to like elements throughout. While various details of one or more techniques are described herein, other techniques are also possible. In some instances, structures and devices are shown in block diagram form in order to facilitate describing various techniques.
“Instructions” as referred to herein relate to expressions which represent one or more logical operations. For example, instructions may be “machine-” or “computer-executable” by being interpretable by a machine, computer, and/or processor for executing one or more operations on one or more data objects. However, this is merely an example of instructions and claimed subject matter is not limited in this respect. In another example, instructions as referred to herein may relate to encoded commands which are executable by a processing unit having a command set which includes the encoded commands. Such an instruction may be encoded in the form of a machine language understood by the processing unit. Again, these are merely examples of an instruction and claimed subject matter is not limited in this respect.
Inertial sensor-based step detectors are utilized in a variety of applications, such as fitness and health monitoring, dead reckoning for fire-fighters, and more. In most applications, the sensors are placed in a constrained position with respect to the user. For example sensors are attached to the waist, wrist, shoes, etc., of a user. Because of the prevalence of inertial sensors in mobile devices such as mobile phones, portable media players, gaming devices, and other portable electronics, these mobile devices can also be used to estimate the number of steps taken by a user. However, the phone is not held in a constrained position, and as a result, the inertial sensors can measure the combined motion due to steps and other activities such as fidgeting, swinging of hand while walking, and the like.
Because sensor data can vary significantly based on conditions such as the location of a mobile device relative to a user, and a user's activity (walking, running, etc.), it can be difficult to decipher steps taken from movement due to other activities. As a result, pedometers available on mobile devices can be highly inaccurate. This can further result in poor performance of applications that rely on pedometer data to determine additional information (e.g., dead reckoning for position determination). However, accuracy of positioning and/or other applications dependent on pedometer functionality can be improved when using information about the uncertainty in step detection. Accordingly, techniques provided herein allow for probabilistic step detection using accelerometer data, instead of or in addition to a binary (“step” or “no step”) output. Techniques described herein can further improve accuracy by adapting to a particular user, using an algorithm that adapts to different walking gaits and different users. Furthermore, techniques may provide for state-based step detection that detects a user's motion state (e.g., at rest (sitting, standing, etc.) walking, running, walking and swinging (or performing another arm movement), fidgeting, etc.) that can significantly impact step detection and modifies step detection accordingly.
In the system 200, a location of the mobile device 205 can be determined a variety of information. For example, the location of the mobile device 205 can be calculated using triangulation and/or other positioning techniques with information transmitted from SPS satellites 210. In these embodiments, the mobile device 205 may utilize a receiver specifically implemented for use with the SPS that extracts position data from a plurality of signals 212 transmitted by SPS satellites 210. Transmitted satellite signals may include, for example, signals marked with a repeating pseudo-random noise (PN) code of a set number of chips and may be located on ground based control stations, user equipment and/or space vehicles. Satellite positioning systems may include such systems as the Global Positioning System (GPS), Galileo, Glonass, Compass, Quasi-Zenith Satellite System (QZSS) over Japan, Indian Regional Navigational Satellite System (IRNSS) over India, Beidou over China, etc., and/or various augmentation systems (e.g., an Satellite Based Augmentation System (SBAS)) that may be associated with or otherwise enabled for use with one or more global and/or regional navigation satellite systems. By way of example but not limitation, an SBAS may include an augmentation system(s) that provides integrity information, differential corrections, etc., such as, e.g., Wide Area Augmentation System (WAAS), European Geostationary Navigation Overlay Service (EGNOS), Multi-functional Satellite Augmentation System (MSAS), GPS Aided Geo Augmented Navigation or GPS and Geo Augmented Navigation system (GAGAN), and/or the like.
Embodiments may also use communication and/or positioning capabilities provided by base transceiver stations 220 and mobile network provider 240 (e.g., a cell phone service provider), as well as access point(s) 230. Communication to and from the mobile device 205 may thus also be implemented, in some embodiments, using various wireless communication networks. The mobile network provider 240, for example, can comprise such as a wide area wireless network (WWAN). The access point(s) 230 can be part of a wireless local area network (WLAN), a wireless personal area network (WPAN), and the like. The term “network” and “system” may be used interchangeably. A WWAN may be a Code Division Multiple Access (CDMA) network, a Time Division Multiple Access (TDMA) network, a Frequency Division Multiple Access (FDMA) network, an Orthogonal Frequency Division Multiple Access (OFDMA) network, a Single-Carrier Frequency Division Multiple Access (SC-FDMA) network, a WiMax (IEEE 802.16), and so on. A CDMA network may implement one or more radio access technologies (RATs) such as cdma2000, Wideband-CDMA (W-CDMA), and so on. Cdma2000 includes IS-95, IS-2000, and/or IS-856 standards. A TDMA network may implement Global System for Mobile Communications (GSM), Digital Advanced Mobile Phone System (D-AMPS), or some other RAT. An OFDMA network may implement Long Term Evolution (LTE), LTE Advanced, and so on. LTE, LTE Advanced, GSM, and W-CDMA are described in documents from a consortium named “3rd Generation Partnership Project” (3GPP). Cdma2000 is described in documents from a consortium named “3rd Generation Partnership Project 2” (3GPP2). 3GPP and 3GPP2 documents are publicly available. A WLAN may also be an IEEE 802.11x network, and a WPAN may be a Bluetooth network, an IEEE 802.15x, or some other type of network. The techniques described herein may also be used for any combination of WWAN, WLAN and/or WPAN.
Mobile network provider 240 and/or access point(s) 230 can further communicatively connect the mobile device 205 to the Internet 250. Other embodiments may include other networks in addition, or as an alternative to, the Internet 250. Such networks can include any of a variety of public and/or private communication networks, including wide area network (WAN), local area network (LAN), and the like. Moreover, networking technologies can include switching and/or packetized networks utilizing optical, radio frequency (RF), wired, satellite, and/or other technologies. The access point(s) 230 can be part of a WLAN that operates in a building to perform communications over smaller geographic regions than a WWAN. The access point(s) 230 can be part of a WiFi network (802.11x), cellular piconets and/or femtocells, Bluetooth network, and the like. The access point(s) 230 can also form part of a Qualcomm indoor positioning system (QUIPSTM). Embodiments may include any number of access point(s) 230, any of which may be a moveable node, or may be otherwise capable of being relocated.
In addition to the various components of the system 200 illustrated in
Optionally, sensor data can be provided by one or more sensors that are physically separate from the mobile device 205. These sensor(s) can be communicatively coupled with the mobile device 205 and/or another device of the system 200 (e.g., location server(s) 260) via, for example, low-power wireless technologies, such as Bluetooth low energy, ANT+, ZIGBEE (and/or other technologies based on the IEEE 802.15.4 standard), and the like, which can help preserve energy for battery-powered sensor(s). Depending on the sensor(s) utilized, the sensor(s) can communicate raw sensor information and/or provide information resulting from processing raw sensor information to at least some degree.
Each peak in the peak-detection data 330 can be indicative of a potential step. However, rather than simply providing a binary output (e.g., indicating a “step” for each detected peak), a probability of whether a step was taken can be calculated for each peak (or a subset of the peaks), based on measured and/or calculated features of the peak and other data. For example, a Bayesian probability that a step was taken for a given peak having an acceleration spread (i.e., magnitude of acceleration change between a peak and an adjacent valley of the raw acceleration data 310) and time elapsed since the previous peak, Δt, using the equation:
Here, acceleration spread and Δt, are considered independent features of a peak that can be separated in the right-hand side of Equation (1). Accordingly, the numerator separates these features and multiplies the probabilities of observing each feature (i.e., the probability of obtaining the measured and/or calculated value of each feature), given a step was taken, with the prior probability that a step was taken. The denominator is the probability of observing the value of these features regardless of whether a step was taken.
Probabilities for the components of Equation (1), such as the probability of observing a particular acceleration spread can be modeled, based on measurements. Accordingly, there can be data models for the various features, given a step was taken, as well as data models for features, given that no step was taken (as would be used in determining the probability of observing the value of these features regardless of whether a step was taken). Data models can include step functions and/or similar features in which a probability increases or decreases based on whether a measured value meets or exceeds a threshold value. (E.g., if a measured value of a particular acceleration spread meets or exceeds a threshold value, a probability increases from 0.5 to 1.0.) The granularity of such step functions and/or their associated probabilities can vary, depending on desired functionality.
Data models can further be based on historical data of a mobile device, allowing for the probabilistic step detection to adapt to the particular motions of a user. Where no historical data is available, generic data models can be used for probability determinations. However, as historical data is gathered over time, thresholds and/or other features of these generic data models can be adjusted to more accurately determine the steps of a user, enabling the probabilistic step detection to adjust step detection probabilities to a user that, for example walks slowly and gently (as shown in
Data models utilized in probabilistic step determination can be adjusted by analyzing the historical data in a variety of ways. For example, if an average peak value of historical data is determined to be less than average, the data model could be adjusted to lower a threshold for a probability related to peak values. (E.g., a probability increases from 0.5 to 1.0 if a measured value of a particular peak exceeds a threshold value of 11 m/s2 rather than 12 m/s2.) The data models can be similarly adjusted to adapt to other features (peak slope, rate, etc.) of the historical data.
Of course, calculating the probability that a step was taken can vary, depending on desired functionality. The probability can be calculated using a framework other than the Bayesian framework of Equation (1). Furthermore, probabilities can be based on any of a variety of peak features, including features other than acceleration spread or peak width, such as slope and/or width of the peak. These and other features discussed herein can be extracted from the raw acceleration data 310 using acceleration spread 320 and/or peak-detection data 330. It will be understood, however, that acceleration and other motion features could be represented and/or calculated differently, which can depend on how the type(s) of data collection and/or abstraction. Furthermore, data “peaks” discussed herein representative of a particular way of interpreting motion data, for illustrative purposes. However, techniques disclosed herein can provide for calculating probabilities of any of a variety of motion features that can be determined from acceleration and/or other motion data.
In some embodiments, there may be some latency between when motion data is measured and when a corresponding probability based on the motion data is calculated. The tolerance for such latency may vary, depending on the application to which the series of probabilities 430 are provided. The application may indicate a tolerance threshold for such latency via and API.
Where some latency is tolerated, hidden Markov model (HMM) smoothing, probability averaging, and/or other pattern recognition algorithms may be utilized to further increase the accuracy of step detection over a window of time by exploiting the continuity of typical, paced walking. In other words, because walking typically involves a steady pattern of steps, it is more likely that that a person took a step during a brief moment in which a pattern of steps was interrupted.
The degree of smoothing can vary depending on desired functionality and an application's tolerance for latency, among other factors. In some embodiments, HMM smoothing can be run backwards on a short time window to smooth the calculated probabilities. Furthermore, this smoothing window may be adapted to a particular user using adaptability techniques described above. Other data-smoothing mechanisms can be used in addition or as an alternative to HMM smoothing.
The degree of HMM smoothing and/or the way in which step-detection probabilities are calculated may be impacted by a determined state of the user, which (as illustrated in
At block 605, the process can begin by obtaining motion data from one or more sensors. The motion data can be obtained, for example, by a software application via an API. Such an API not only can provide motion data (e.g., time-stamped acceleration data, such as is shown in
At block 615, the process can optionally include state detection. Here, motion data can be broadly analyzed to determine a state (walking, running, etc.) that the user is currently in, to help increase the accuracy of subsequent step-detection probability calculations. For example, motion data over a period of time may be analyzed to determine whether the user is in a recognizable state such as steady-state walking (as shown in
State detection may vary, according to various embodiments. For example, for embodiments in which the state of a user may not impact a peak detection algorithm, or in which state detection utilizes peak detection, state detection can occur after peak detection. Additionally or alternatively, a state may be calculated using an application and/or function separate from a pedometer and obtained via an API. In such embodiments, the state may be obtained from off-the-shelf software and/or hardware applications, including built-in functionality of the mobile device, which can perform an in-depth contextual analysis to accurately determine a state of the user. Depending on the application used, the contextual analysis can utilize a wide variety of information such as determined location, time of day, sensor data (e.g., motion, light, sound, etc.), historical contextual determinations, and the like.
At block 625 a peak detection algorithm is run. The peak detection can utilize any of a variety of traditional techniques utilized in pedometers. Depending on the technique used, peak detection may involve deriving additional information from the motion data, such as the acceleration spread 320 described in relation to
If a peak is detected, the process can continue to block 645, where the probability a step was taken is calculated. As indicated previously, the probability can be based on one or more data models (e.g., data models describing the probabilities of certain features of the motion data for a step and/or no step), which can adapt to a user based on historical data. Furthermore, for embodiments utilizing state detection, these probabilistic models can vary from state to state. As such, not only can step-detection calculation techniques adapt to a particular user, but they can also adapt to each state that a user might be in, further increasing the accuracy of step detection.
At block 655 HMM smoothing is optionally performed. As illustrated above in regard to
At block 665, the probability is output to the API. Here, depending on desired functionality, the API may provide additional information besides the step probability, which may be utilized by different applications in different ways. This additional information can include, for example, a time stamp, step event, step probability history (up to a desired number of steps), a step rate, a stride length adjusted for step rate, and the like. The algorithm may also provide estimates of timestamps at which peaks corresponding to steps were not observed in the data. An example of such a scenario, as discussed above, is shown in
At block 710, the process includes obtaining motion data indicative of a user's movement at a first time interval. The motion data can include data from one or more sensors of a mobile device. Motion data can include, among other things, acceleration magnitude as described herein. Although embodiments described previously include software and/or hardware of a mobile device obtaining such movement data, embodiments can include sending motion data from a mobile device to a server (e.g., a location server 260 of
At block 720, one or more features of the motion data is/are determined. As indicated previously, features can include any of a variety of measureable features that can impact a step-detection probability calculation, such as peak slope, width, rate (e.g., time since last peak), acceleration spread, rate of acceleration change, and the like. Again, means for determining one or more features of the motion can include software and/or hardware components for executing an application and/or similar means, such as described below in regards to
At block 730, a probability that a step was made is calculated, based on at least one of the one or more features and information indicative of the user's movement at a time prior to the first interval. A probabilistic calculation can be made using one or more probabilistic models that provide a probability that the at least one feature is observed, given that a step was made, or that no step was made. Information indicative of the user's movement at a time prior to the first time interval could be, for example, a prior probability that a step was taken, a window of time for which data smoothing is determined, a determined motion state, a probabilistic model based on historical data, or the like. Means for calculating the probability that a step was made can include software and/or hardware components for executing an application and/or similar means, such as described below in regards to
It should be appreciated that the specific steps illustrated in
It can also be noted that some or all of the components of the mobile device 205 shown in
The mobile device 205 is shown comprising hardware elements that can be electrically coupled via a bus 805 (or may otherwise be in communication, as appropriate). The hardware elements may include a processing unit(s) 810 which can include without limitation one or more general-purpose processors, one or more special-purpose processors (such as digital signal processors (DSP), graphics acceleration processors, application specific integrated circuits (ASICs), and/or the like), and/or other processing structure or means, which can be configured to perform one or more of the methods described herein, including methods illustrated in
The mobile device 205 might also include a wireless communication interface 830, which can include without limitation a modem, a network card, an infrared communication device, a wireless communication device, and/or a chipset (such as a Bluetooth™ device, an IEEE 802.11 device, an IEEE 802.15.4 device, a WiFi device, a WiMax device, cellular communication facilities (as described above), etc.), and/or the like. The wireless communication interface 830 may permit data to be exchanged with a network (such as the Internet 250 and/or mobile network provider 240 of
The mobile device 205 can further include sensor(s) 840. As indicated herein, sensor(s) 840 can include motion sensors for measuring and providing motion data shown in
Embodiments of the mobile device may also include an SPS receiver 880 capable of receiving signals 884 from one or more SPS satellites (such as the SPS satellites 210 of
The mobile device 205 may further include (and/or be in communication with) a memory 860. The memory 860 can include a computer-readable (or “machine-readable”) storage medium including, without limitation, a local and/or network accessible storage, a disk drive, a drive array, an optical storage device, a solid-state storage device, such as a random access memory (“RAM”), and/or a read-only memory (“ROM”), which can be programmable, flash-updateable, and/or the like. Such storage devices may be configured to implement any appropriate data stores, including without limitation, various file systems, database structures, and/or the like.
The memory 860 of the mobile device 205 also can comprise software elements (not shown), including an operating system, device drivers, executable libraries, and/or other code, such as one or more application programs, which may comprise computer programs provided by various embodiments, and/or may be designed to implement methods, and/or configure systems, provided by other embodiments, as described herein. Merely by way of example, one or more procedures described with respect to the method(s) discussed above, such as those described in relation to
It will be apparent to those skilled in the art that substantial variations may be made in accordance with specific requirements. For example, customized hardware might also be used, and/or particular elements might be implemented in hardware, software (including portable software, such as applets, etc.), or both. Further, connection to other computing devices such as network input/output devices may be employed.
As mentioned above, in one aspect, some embodiments may employ a mobile device (such as the mobile device 205) to perform methods in accordance with various embodiments of the invention. According to a set of embodiments, some or all of the procedures of such methods are performed by the mobile device 205 in response to processing unit(s) 810 executing one or more sequences of one or more instructions (which might be incorporated into an operating system and/or other code) contained in the memory 860. Merely by way of example, execution of the sequences of instructions contained in the memory 860 might cause the processing unit(s) 810 to perform one or more procedures of the methods described herein. Additionally or alternatively, portions of the methods described herein may be executed through specialized hardware.
The methods, systems, and devices discussed herein are examples. Various embodiments may omit, substitute, or add various procedures or components as appropriate. For instance, features described with respect to certain embodiments may be combined in various other embodiments. Different aspects and elements of the embodiments may be combined in a similar manner. The various components of the figures provided herein can be embodied in hardware and/or software. Also, technology evolves and, thus, many of the elements are examples that do not limit the scope of the disclosure to those specific examples.
Specific details are given in the description to provide a thorough understanding of the embodiments. However, embodiments may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques have been shown without unnecessary detail in order to avoid obscuring the embodiments. This description provides example embodiments only, and is not intended to limit the scope, applicability, or configuration of the invention. Rather, the preceding description of the embodiments will provide those skilled in the art with an enabling description for implementing embodiments of the invention. Various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the invention.
It has proven convenient at times, principally for reasons of common usage, to refer to such signals as bits, information, values, elements, symbols, characters, variables, terms, numbers, numerals, or the like. It should be understood, however, that all of these or similar terms are to be associated with appropriate physical quantities and are merely convenient labels. Unless specifically stated otherwise, as is apparent from the discussion above, it is appreciated that throughout this Specification discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining,” “ascertaining,” “identifying,” “associating,” “measuring,” “performing,” or the like refer to actions or processes of a specific apparatus, such as a special purpose computer or a similar special purpose electronic computing device. In the context of this Specification, therefore, a special purpose computer or a similar special purpose electronic computing device is capable of manipulating or transforming signals, typically represented as physical electronic, electrical, or magnetic quantities within memories, registers, or other information storage devices, transmission devices, or display devices of the special purpose computer or similar special purpose electronic computing device.
Terms, “and” and “or” as used herein, may include a variety of meanings that also is expected to depend at least in part upon the context in which such terms are used. Typically, “or” if used to associate a list, such as A, B, or C, is intended to mean A, B, and C, here used in the inclusive sense, as well as A, B, or C, here used in the exclusive sense. In addition, the term “one or more” as used herein may be used to describe any feature, structure, or characteristic in the singular or may be used to describe some combination of features, structures, or characteristics. However, it should be noted that this is merely an illustrative example and claimed subject matter is not limited to this example. Furthermore, the term “at least one of” if used to associate a list, such as A, B, or C, can be interpreted to mean any combination of A, B, and/or C, such as A, AB, AA, AAB, AABBCCC, etc.
Having described several embodiments, various modifications, alternative constructions, and equivalents may be used without departing from the spirit of the disclosure. For example, the above elements may merely be a component of a larger system, wherein other rules may take precedence over or otherwise modify the application of the invention. Also, a number of steps may be undertaken before, during, or after the above elements are considered. Accordingly, the above description does not limit the scope of the disclosure.