This disclosure relates generally to methods and systems for improving alarm clock functionality.
Mobile device users often use the alarm clock setting of their mobile devices to set alarms. For example, the users can, in the evening or at night, set an alarm to go off for the next morning. For further example, the users can set a daytime alarm to remind the user of an appointment or obligation. However, in some cases, the user can mistakenly set an alarm. For example, the user can set an alarm for 7:30 PM when a 7:30 AM alarm is intended. In these cases, the alarms will not activate at the intended time, and the user may fail to wake up, miss a meeting, or experience other consequences.
Accordingly, there is a need for to provide methods and systems for reducing occurrences of mistakenly set alarms.
Implementations of the present teachings relate to computer-implemented methods of managing an alarm clock function of a device. The methods include receiving, at the device, an input indicating a first time associated with the alarm clock function. The methods also include determining whether the first time differs by more than a threshold amount from one or more previous times associated with the alarm clock function. Additionally, the methods include outputting a notification if the first time differs by more than the threshold amount from the one or more previous times.
Implementations of the present teachings also relate to computer readable storage media storing instructions. The instructions cause one or more processor to perform methods. The methods include identifying, at a device, a first time associated with an alarm clock function. The methods also include determining whether the first time differs by more than a threshold amount from one or more previous times associated with the alarm clock function. The methods also include outputting a notification if the first time differs by more than the threshold amount from the one or more previous times.
Implementations of the present teachings also relate devices for managing an alarm clock function. The devices include one or more memory devices storing instructions, and one or more processors coupled to the one or more memory devices. The one or more processors are configured to execute the instructions to perform methods. The methods include receiving an input indicating a first time associated with the alarm clock function. The methods also include determining whether the first time differs by more than a threshold amount from one or more previous times associated with the alarm clock function. Additionally, the methods include outputting a notification if the first time differs by more than the threshold amount from the one or more previous times.
Various features of the implementations can be more fully appreciated, as the same become better understood with reference to the following detailed description of the implementations when considered in connection with the accompanying figures, in which:
For simplicity and illustrative purposes, the principles of the present teachings are described by referring mainly to examples of various implementations thereof. However, one of ordinary skill in the art would readily recognize that the same principles are equally applicable to, and can be implemented in, all types of information and systems, and that any such variations do not depart from the true spirit and scope of the present teachings. Moreover, in the following detailed description, references are made to the accompanying figures, which illustrate specific examples of various implementations. Electrical, mechanical, logical and structural changes can be made to the examples of the various implementations without departing from the spirit and scope of the present teachings. The following detailed description is, therefore, not to be taken in a limiting sense and the scope of the present teachings is defined by the appended claims and their equivalents.
Implementations of the present teachings relate to systems and methods for managing an alarm clock function of a device. More particularly, implementations relate to systems and methods for comparing a time setting of a new alarm by a user to one or more previous time settings that the alarm has been set to determine whether to warn the user about and/or require the user to confirm the setting of the new alarm time. An alarm application and/or associated logic or services of a device can detect a user input indicating a first time setting for the alarm clock function. Further, the alarm application and/or associated logic or services can examine the one or more previous time settings associated with the alarm clock function and determine, based on the one or more previous time settings, whether to query the user to confirm an activation of the alarm clock function at the first time setting.
These and other implementations described herein provide a device user with an opportunity to confirm a potentially mistakenly set alarm time. Users may therefore avoid consequences associated with a mistakenly set alarm time such as, for example, failing to wake up, missing a meeting or appointment, failing to be reminded of an occurrence, and/or other consequences.
As illustrated in
The device 100 can also include a speaker 104. The speaker 104 can be configured to emit audible sound from the device 100. The speaker 104 can be any type of hardware, software, and combination thereof that is configured to produce sound emitted from the device 100. The device 100 can also include a microphone 105. The microphone 105 can be configured to capture and input sound into the device 100. The microphone 105 can be any type of hardware, software, and combination thereof that is configured to capture and input sound into the device 100.
The device 100 can also include an operating system 106. The operating system 106 can be configured to provide an execution environment on the device 100. For example, the operating system 106 can provide an execution environment for one or more application programs that can be stored and executed on the device 100. The operating system 106 can provide services to the one or more application programs to access, utilize, and interact with the components of the device 100, such as the display 102, the speaker 104, and storage 108. The operating system 106 can be any type of open-source or propriety operating system. The one or more applications programs can include, for example, a word-processing application, a web-browser, browser-implemented application, messaging application, electronic mail application, or the like.
The device 100 can also include one or more types of storage 108. The storage 108 can be any type of storage that provides permanent storage and/or temporary storage in the device 100. The storage 108 can be configured to store copies of software programs such as the operating system 106 and the one or more applications programs. The storage 108 can also be configured to store data and information used and accessed by the operating system 106 and the one or more applications programs. The device 100 can also utilize remote storage via one or more networks accessible by the device 100. The remote storage can be any type of storage that is accessible by the device 100 such as remote server computers, “cloud” storage, and the like. The remote storage can store any of the software programs used by the device 100 and any of the data and information used and accessed by the operating system 106 and the one or more applications programs.
In implementations, the device 100 can include an alarm clock application 110. The alarm clock application 110 can be configured to perform the alarm clock functions as described herein. As described herein, alarm clock functions refer to processes and procedures for specifying a time at which the device 100 will provide an alarm, for example an audible sound emitted from the speaker 104, a physical indication by the device 100 (e.g. vibrating of the device 100) and/or a visual indication from the display 102 (e.g. flashing indication from the display 102), indicating that the time has been reached. The alarm clock application 110 can be a standalone application program that is configured to perform the alai in clock functions. Likewise, the alarm clock application 110 can be a program module that is part of another application or program, such as the operating system 106. The alarm clock application 110 can be implemented as software, hardware, or combination of both.
To allow users to utilize the alarm clock functions, the alarm clock application 110 can be configured to generate and output an interface. The interface can be any type of interface such as a graphical user interface (GUI) and/or command-line interface that allows a user to interact with the alarm clock application. For example,
Additionally, for example,
In implementations, in addition to interfaces, the alarm clock application 110 can be controlled by other channels. For example, the alarm clock application 110 can be configured to be controlled by voice commands. As such, the alarm clock application 110 can be configured to receive sound input into the microphone 105 and interpret the sounds in order to create an alarm, view existing alarms, and modifying existing alarms. Likewise, the alarm clock application 110 can be controlled by other software programs. As such, the alarm clock application 110 can be configured to receive commands via interfaces such as application programming interfaces (APIs).
In implementations, the alarm clock application 110 can determine whether the user may have mistakenly set the alarm. For example, the user could have mistakenly selected P.M. while intending the alarm to go off in the morning, e.g. A.M. For further example, the user could have mistakenly set a time that is significantly later than a time the user normally sets. Further, for example, the user could have set a time for a day of the week that is inconsistent with alarms that were previously set for that particular day of the week. It should be appreciated that other scenarios are envisioned. In implementations, the alarm clock application 110 as described herein can analyze or examine an alarm history associated with the device to determine whether the user may have mistakenly set the alarm. More particularly, the alarm history can comprise a listing of one or more previous times that the alarm clock function has been set.
In implementations, the alarm clock application 110 can store the alarm history in any type of storage accessible by the device 100. For example, the alarm clock application 110 can store the alarm history in the storage 108. Likewise, the alarm clock application 110 can store the alarm history in remote storage such as remote server computers, “cloud” storage, and the like.
In 202, the process can begin. In 204, the alarm clock application 110 can be initiated. The alarm clock application 110 can be initiated by a user interacting with the device 100. For example, a user of the device 100 can initiate the alarm clock application 110 from a home screen of the device, via a keystroke sequence, or via other channels.
In 206, the alarm clock application 110 can generate and output an interface that allows a user to set an alarm. The alarm clock application 110 can generate an interface that allows the user to create a new alarm or modify an existing alarm and pass the interface to the display 102 for viewing by the user. For instance, the alarm clock application 110 can generate an interface 112 and/or 118 as described above.
In 208, the alarm clock application 110 can receive input that indicates the parameters of the current alarm to be set. The parameters received can include a time and date for the current alarm and other parameters such as type and volume of an audible sound to be emitted upon the occurrence of the alarm. The alarm clock application 110 can receive the input from the user via the interfaces displayed on the display 102.
In 210, the alarm clock application 110 can determine whether the alarm parameters for the current alarm are unusual compared to previously-set alarms. The alarm clock application 110 can access an alarm history and retrieve the parameters of previously-set alarms, such as time and date. The alarm clock application 110 can compare the parameters of the current alarm to the previously-set alarms and utilize various mathematical and statistical methods to determine whether the current alarm is unusual compared to the previously-set alarms from the alarm history.
In 224, the alarm clock application 110 can determine a mean and a standard deviation of the number of minutes past midnight for each previously-set alarm in the alarm history. The alarm clock application 110 can utilize the following equation to calculate the mean:
where
where σ is the standard deviation,
For example, the mean is 457 minutes and the standard deviation is 20.3 for the alarm history 300. It should be appreciated that other techniques for calculating a mean and standard deviation of the previously-set alarms in the alarm history are envisioned. For example, instead of calculating the mean and standard deviation from the number of minutes past midnight, the mean and standard deviation can be calculated from a number of minutes from noon, or from other benchmarks.
In 226, the alarm clock application 110 can calculate the number of standard deviations the current alarm is from the mean of the previously-set alarms. For example, using the alarm history 300, if an 8:00 AM alarm is attempted to be set by the user, the alarm clock application 110 can determine that the alarm is 1.13 standard deviations away from the mean. If a 9:00 AM alarm is attempted to be set by the user, the alarm clock application 110 can determine that the alarm is 4.01 standard deviations away from the mean. If a 7:00 PM alarm is attempted to be set by the user, the alarm clock application 110 can determine that the alarm is 33.6 standard deviations away from the mean.
In 228, the alarm clock application 110 can compare the calculated standard deviations to threshold values to determine if the alarm attempted to be set can be construed as usual, unusual, very unusual, or other classification conventions. It should be appreciated that any threshold values as well as classification conventions can be incorporated in the systems and methods as described herein. For example, a usual alarm can be considered an alarm that is between 0 and 2 standard deviations away from the mean, an unusual alarm can be considered an alarm that is between 2 and 5 standard deviations away from the mean, and a very unusual alarm can be considered an alarm that is over 5 standard deviations away from the mean.
For instance, referring to the above examples, if the alarm is 1.13 standard deviations away from the mean, the alarm clock application 110 can determine that the alarm is a usual alarm. If the alarm is 4.01 standard deviations away from the mean, the alarm clock application 110 can determine that the alarm is an unusual alarm. If the alarm is 33.6 standard deviations away from the mean, the alarm clock application 110 can determine that the alarm a very unusual alarm. If the alarm clock application 110 determines that the alarm is usual, the alarm clock application can proceed to 216. If the alarm clock application 110 determines that the alarm is unusual, the alarm clock application can proceed to 212.
In 234, the alarm clock application 110 can calculate a mean and a standard deviation of the difference in minutes. The alarm clock application 110 can calculate the mean and standard deviation utilizing the equations described above. For example, referring to the difference in minutes 316 from the alarm history 310 in
In 236, the alarm clock application 110 can calculate the number of standard deviations the difference in minutes for the current alarm is from the mean of the previously-set alai ins. For example, referring to alarm history 310, if the user is proposing, at 11:20 PM, to set an alarm for 7:15 AM (475 minutes), then the alarm clock application 110 can calculate that 475 is 0.23 standard deviations away from the mean. Further, for example, if the current alarm is 300 minutes after the current alarm is set, then the alarm clock application 110 can calculate that 300 is 1.31 standard deviations away from the mean. If the current alarm is 1200 minutes after the current alarm is set, then the alarm clock application 110 can calculate that 1200 is 5.62 standard deviations away from the mean.
In 238, the alarm clock application 110 can compare the standard deviations for the current alarm to threshold values to determine if the proposed alarms can be construed as usual, unusual, very unusual, or other classification conventions. For example, a usual alarm can be considered an alarm that is between 0 and 1 standard deviations away from the mean, an unusual alarm can be considered an alarm that is between 1 and 3 standard deviations away from the mean, and a very unusual alarm can be considered an alarm that is over 3 standard deviations away from the mean.
For example, referring to above examples, if the current alarm is 0.23 standard deviations away from the mean, the alarm clock application 110 can determine a usual alarm. If the current alarm is 1.31 standard deviations away from the mean, the alarm clock application 110 can determine an unusual alarm. If the current alarm is 5.62 standard deviations away from the mean, the alarm clock application 110 can determine a very unusual alarm. If the alarm clock application 110 determines that the alarm is usual, the alarm clock application can proceed to 216. If the alarm clock application 110 determines that the alarm is unusual, the alarm clock application can proceed to 212.
In 244, the alarm clock application 110 can determine the frequency of previously-set alarms in the interval corresponding to the current alarm. For example, if the user attempts to set an alarm for 7:30 PM (Interval 4), then the alarm clock application 110 can examine the alarm history 330 and can determine that only 20% of previously-set alarms have been set in Interval 4.
In 246, the alarm clock application 110 can determine if the frequency is less than a threshold value. For example, if the current alarm is 7:30 PM, the alarm clock application 110 can determine the frequency is 20% which is less than a threshold value for a usual alarm. For further example, if the user attempts to set an alarm for 7:30 AM (Interval 2), then the application or logic can determine that 65% of previously-set alarms have been set in Interval 2, can determine that 65% meets or exceeds a threshold value for a usual alarm. If the alarm clock application 110 determines that the alarm is usual, the alarm clock application 110 can proceed to 216. If the alarm clock application 110 determines that the alarm is unusual, the alarm clock application can proceed to 212.
In some implementations, the alarm clock application 110 can determine alarms that are usual or unusual based on the day of the week on which previous alarms have been set or not set. More particularly, an alarm history of the alarm clock function can be examined to determine the day of the week (e.g., Monday, Tuesday, etc.) on which the alarms of the alarm history were set. Similar to the functionality as discussed with respect to
In 212, if the alarm clock application 110 determines that the current alarm is unusual, the alarm clock application 110 can notify the user that the current alarm is unusual. The alarm clock application 110 can provide any type of notification that informs the user that the current alarm is unusual. For example, the alarm clock application 110 can provide a visual notification on the display 102 and/or an audible notification emitted from the speaker 104.
The particular type of notification can depend on the degree of unusualness based on the threshold. More particularly, interface can display “LATE” or other indications that can inform the user of the potential unusualness of the alarm that is attempting to be set. The determination of the degree to which the attempted alarm is usual/unusual can be made upon the user entering the time of the alarm, upon the user setting the alarm, and/or at other times or stages. For example, if the current alarm is determined to be unusual, the alarm clock application 110 can provide the text notification 402 in the interface 402, as illustrated in
In 214, the alarm clock application 110 can receive a confirmation from the user that the alarm is correct. The confirmation can be received via any of the interfaces provided by the alarm clock application 110. If the user confirms the current alarm, the alarm clock application 110 proceeds to 216. If the user declines the current alarm, the alarm clock application 110 proceeds to 218.
In 216, the alarm clock application 110 can set the current alarm and store the parameters of the current alarm in the alarm history. In 218, the process can end, return to any point or repeat.
In the processes described above, the alarm clock application 110 can notify a user attempting to set a current alarm that the alarm is unusual. Likewise, using similar processes described above, the alarm clock application 110 can utilize the alarm history to notify a user if an alarm that is usual set at a time and date is not current set. The alarm clock application 110 can examine the alarm history and determine the date and times alarms are typically set and notify a user if the alarm is not current set. For example, the alarm clock application 110 can examine the weekday alarm frequencies to determine whether to notify the user about unset alarm. More particularly, the alarm clock application 110 can compare the frequencies to established thresholds to determine whether to provide the notification. For example, if on a Monday night there is no currently-set alarm for Tuesday morning when the Tuesday morning alarm frequency is 95%, and the threshold is 90%, the alarm clock application 110 can notify the user that there is no Tuesday alarm currently set, and can prompt the user to set a Tuesday alarm. It should be appreciated that alternative anomalous alarm clock notifications are envisioned.
In the examples of the processes described above, the alarm clock application 110 can be initiated and controlled using an interface displayed on the display 102. In other examples of the processes described above, the alarm clock application 110 can be initiated and controlled using other channels. For example, the alarm clock application 110 can be configured to be controlled by voice commands. As such, the alarm clock application 110 can be configured to receive sound input into the microphone 105 and interpret the sounds in order to create an alarm, view existing alarms, and modifying existing alarms. Likewise, the alarm clock application 110 can be controlled by other software programs. As such, the alarm clock application 110 can be configured to receive commands via interfaces such APIs.
In the examples of the processes described above, the alarm clock application 110 can provide a notification that includes text indicating that an alarm may be anomalous. In other examples of the processes described above, the alarm clock application 110 can utilize any type of notification indicating that an alarm may be anomalous. For example, the alarm clock application 110 can provide other visual indications such as a flashing indication on the display 102. Additionally, for example, the alarm clock application 110 can generate and emit from the speaker 106 an audible notification that the alarm may be anomalous. Also, for example, the alarm clock application 110 can provide a physical notification such as vibration in the device 100. Any of the notification described above can be used in combination or separately.
As illustrated in
The device 500 can also include one or more network interfaces 508 for communicating via one or more networks, such as Ethernet adapters, wireless transceivers, or serial network components, for communicating over wired or wireless media using protocols, such as Ethernet, wireless Ethernet, Global System for Mobile Communications (GSM), Enhanced Data rates for GSM Evolution (EDGE), Universal Mobile Telecommunications System (UMTS), Worldwide Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE), etc. The device 500 can also include one or more storage device 510 of varying physical dimensions and storage capacities, such as flash drives, hard drives, random access memory, etc., for storing data, such as images, files, and program instructions for execution by the one or more processors 502.
Additionally, the device 500 can include one or more software programs 512, such as the operating system 106 and the alarm clock application 110. The one or more software programs 512 can include instructions that cause the one or more processors 502 to perform the processes described. The one or more software programs can be stored in the one or more memory devices 504 and/or on in the one or more storage devices 510, which correspond to the storage 108 described above.
In implementations, the components of the device 500 need not be enclosed within a single enclosure or even located in close proximity to one another. Those skilled in the art will appreciate that the above-described componentry are examples only, as the device 500 can include any type of hardware componentry, including any necessary accompanying firmware or software, for performing the disclosed implementations. The device 500 can also be implemented in part or in whole by electronic circuit components or processors, such as application-specific integrated circuits (ASICs) or field-programmable gate arrays (FPGAs).
In situations in which the systems and methods discussed here store or share data of the user's computing device, the data can be treated in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, a user's identify can be treated so that no personally identifiable information can be determined for the user, or a user's geographic location can be generalized where location information is shared, so that a particular location of a user cannot be determined. Thus, the user can have control over how data, about the user, is collected, stored, or shared.
Certain implementations described above can be performed as a computer applications or programs. The computer program can exist in a variety of forms both active and inactive. For example, the computer program can exist as one or more software programs, software modules, or both that can be comprised of program instructions in source code, object code, executable code or other formats; firmware program(s); or hardware description language (HDL) files. Any of the above can be embodied on a computer readable medium, which include computer readable storage devices and media, and signals, in compressed or uncompressed form. Examples of computer readable storage devices and media include conventional computer system RAM (random access memory), ROM (read-only memory), EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM), and magnetic or optical disks or tapes. Examples of computer readable signals, whether modulated using a carrier or not, are signals that a computer system hosting or running the present teachings can be configured to access, including signals downloaded through the Internet or other networks. Concrete examples of the foregoing include distribution of executable software program(s) of the computer program on a CD-ROM or via Internet download. In a sense, the Internet itself, as an abstract entity, is a computer readable medium. The same is true of computer networks in general.
While the teachings have been described with reference to examples of the implementations thereof, those skilled in the art will be able to make various modifications to the described implementations without departing from the true spirit and scope. The terms and descriptions used herein are set forth by way of illustration only and are not meant as limitations. In particular, although the method has been described by examples, the steps of the method may be performed in a different order than illustrated or simultaneously. Furthermore, to the extent that the terms “including”, “includes”, “having”, “has”, “with”, or variants thereof are used in either the detailed description and the claims, such terms are intended to be inclusive in a manner similar to the term “comprising.” As used herein, the terms “one or more of” and “at least one of” with respect to a listing of items such as, for example, A and B, means A alone, B alone, or A and B. Further, unless specified otherwise, the term “set” should be interpreted as “one or more.” Those skilled in the art will recognize that these and other variations are possible within the spirit and scope as defined in the following claims and their equivalents.