Predictive forwarding of message data
Patent Information
- Application Number
- DE102014019917
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2013-12-10
- Filing Date
- 2014-07-03
- Publication Date
- 2025-02-06
- Estimated Expiration
- 2034-07-03
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
BackgroundA user may interact with a computing device that may receive notification data associated with the user. For example, a user may interact with a desktop computer that may receive message data associated with an instant message account of the user. As the user interacts with the desktop computer, the desktop computer may receive message data indicating that the user's instant message account has received a new message. The desktop computer may issue a visual, audible, and / or haptic type alarm to alert the user that the new instant message has been received. However, in some cases, the user may stop interacting with the desktop computer (e.g., leave the location of the desktop computer, move beyond the physical range of an output device, or otherwise abolish his or her attention from the desktop computer), thus missing the message of the new instant message by not listening to, seeing, and / or feel the alarm.US 2012 / 0136942 A1 describes techniques for notifying a computing device of a communication directed to a user based on an action or presence of the user.Tear-offAccording to one example, the disclosure is directed to a method comprising receiving, by means of a computer system, message data associated with a user. Upon determining that the user interacts with a first computing device at a first particular time, the method further includes outputting, by the computing system and for transmission to the first computing device, the notification data. The method further includes determining, by the computer system, that the user interacts with a second computing device at a second particular time, and determining, based on the second particular time being less than a threshold period after the first particular time, that the user has not viewed the notification data at the first computing device, outputting, by the computer system and for transmission to the second computing device, the notification data.According to another example, the disclosure is directed to a computer system including at least one processor and at least one module operable by the at least one processor to receive message data associated with a user and upon determining that the user interacts with a first computing device at a first determined time, output, for transmission to the first computing device, the message data. The at least one module may be further operable by the at least one processor to determine that the user is interacting with a second computing device at a second particular time, and to output, for transmission to the second computing device, the message data based on the second particular time being less than a threshold period after the first particular time.According to another example, the disclosure is directed to a computer readable storage medium including instructions that, when executed, configure one or more processors of a computer system to receive message data associated with a user and, upon determining that the user interacts with a first computing device at a first particular time, output, for transmission to the first computing device, the message data. The computer readable storage medium further includes instructions that, when executed, configure the one or more processors of the computer system to determine that the user interacts with a second computing device at a second particular time, and upon determining, based on the second particular time being less than a threshold time period after the first particular time, that the user has not viewed the notification data at the first computing device, output, for transmission to the second computing device, the notification data.The details of one or more examples are set forth in the accompanying drawings and the following description. Other features, objects and advantages of the disclosure will become apparent from the description and drawings, and from the claims.Brief Description of the DrawingsFIG. 1 is a schematic diagram illustrating an example computer system outputting message data to one or more example computing devices, in accordance with one or more aspects of the present disclosure. FIG. 2 is a block diagram illustrating an example computer system configured to output message data, in accordance with one or more aspects of the present disclosure. FIG. 3 is a block diagram illustrating an example computing device outputting graphical content for display at a remote device, in accordance with one or more techniques of the present disclosure. FIGS. 4 and 5 are flowcharts illustrating example operations of an example computer system configured to output report data to one or more example computing devices, in accordance with one or more aspects of the present disclosure.DETAILED DESCRIPTIONIn general, techniques of this disclosure may allow a computer system to automatically determine whether or not it is outputting message data for transmission to a second computing device after it has previously output the message data for transmission to a first computing device, thereby increasing the likelihood that a user associated with the message data will receive (e.g., listen, see, and / or feel) an alarm based thereon. For example, a user associated with message data may switch between multiple computing devices, such as a desktop or laptop computer, a cellular telephone, a wearable computing device (e.g., a computer-functional wristwatch, computer-functional eyeglasses, etc.), a tablet PC, and the like. A computing system (such as a server or cloud-based computing platform) may facilitate transmission of message data associated with the user via each computing device with which the user may interact. At some earlier time, the computing system may determine that the user associated with particular notification data is currently likely to interact with (e.g., be proximate to and / or use) a first computing device, thus outputting the notification data for transmission to the first computing device (e.g., causing the first computing device to issue an alarm based on the notification data).At a later determined time, the computer system may determine that the user associated with the notification data is interacting with a second computing device (such as a wearable computing device or a mobile phone) and / or otherwise no longer interacting with the first computing device, and as a result, may not see, belong, and / or feel an alarm provided by the first computing device at the first determined time. To improve a probability that the user associated with the message data receives the information associated with the message data, the computer system may then output the message data for transmission to the second computer device for output of a subsequent alarm based on the message data. In this manner, the computer system may cause the message data to "track" the user from one device to another device (e.g., by outputting message data for transmission across different computing devices) until the computer system determines that the user is likely to view, belong, and / or feel an alarm based on the message data.Described throughout the disclosure are examples in which a computing device and / or a computing system can analyze information (e.g., locations, speeds, etc.) associated with a computing device only when the computing device receives permission from the user to analyze the information. For example, in situations described below in which the computing device may collect or use information associated with the user, the user may be provided with a capability to provide input to control whether programs or features of the computing device may collect and use user information (e.g., information about a current location, speed, etc. of a user), or to prescribe whether and / or how the computing device may receive content that may be relevant to the user. Additionally, certain data may be treated in one or more ways before being stored or used by the computing device and / or the computing system, such that personally identifiable information is removed. For example, a user's identity may be treated so that personally identifiable information about the user cannot be determined, or a user's geographic location may be generalized where location information is obtained (such as to a city, zip code, or state level) so that a particular user's location cannot be determined. The user may thus have control over how information about the user is collected and used by the computing device.FIG. 1 is a schematic diagram illustrating an example computer system 1 outputting message data to example computing devices 10A- 10N, in accordance with one or more aspects of the present disclosure. The computer system 1 of FIG. 1 is an example of a computer system that includes computing devices 10A-10N (collectively "computing devices 10"), an information server system 60, and a network 30.The network 30 represents any type of public or private communication network, for example, cellular, Wi-Fi, and / or other type of network for transferring data between computing devices. Computing devices 10 and information server system 60 may send and receive data through network 30 using any suitable communication techniques. For example, computing device 10A may be operatively coupled to network 30 using network link 32A, and computing device 10N may be operatively coupled to network 30 using network link 32N. The information server system 60 may be operatively coupled to the network 30 via the network link 32X. The network 30 may include network hubs, network switches, network routers, etc., operatively coupled to one another, thereby allowing the exchange of information between the computing devices 10 and the information server system 60. In some examples, network links 32A- 32N and 32X (collectively "network links 32") may be Ethernet, ATM, or other network connections. Such connections may be wireless and / or wired connections.In the example of FIG. 1, computing device 10A is a desktop computer and computing device 10N is a wearable computing device (e.g., a computer-functional wristwatch, computer-functional eyeglasses, computer-functional gloves, etc.). However, in other examples, computing devices 10 may be any combination of tablet computers, mobile phones, personal digital assistants (PDAs), laptop computers, gaming systems, media players, e-book readers, television platforms, automotive navigation systems, or any other type of mobile and / or non-mobile computing devices configured to receive message data from information server system 60 and issue an alarm or otherwise provide an indication of receipt of message data.As shown in FIG. 1, each of computing devices 10A-N includes a respective user interface device (UID) 12A-12N (collectively "UIDs 12"). The UIDs 12 of the computing devices 10 may each serve as input and / or output devices for the computing devices 10. The UIDs 12 may be implemented using different technologies. For example, the UIDs 12 may serve as input devices using presence-sensitive input screens, such as resistive touch screens, surface acoustic wave touch screens, capacitive touch screens, projective capacitance touch screens, pressure-sensitive screens, acoustic pulse detection touch screens, or other technology of presence-sensitive displays. The UIDs 12 may serve as output devices (e.g., display devices) using any one or more display devices, such as liquid crystal displays (LCDs), dot matrix displays, light emitting diode (LED) displays, organic light emitting diode (OLED) displays, E-ink or similar monochrome or color displays suitable for outputting visible information to a user of the computing devices 10.The UIDs 12 may each include presence-sensitive displays that can receive tactile input from a user of the respective computing devices 10. The UIDs 12 may receive indications of tactile input by detecting one or more gestures from a user (e.g., when the user touches or points to one or more locations of the UIDs 12 with a finger or stylus). The UIDs 12 may present output to the user, for example, on respective presence-sensitive displays. The UIDs 12 may each represent the output as graphical user interfaces (e.g., user interfaces 14A- 14N) that may be associated with functionalities provided by the computing devices 10. For example, the UIDs 12 may represent various user interfaces related to the functionality of computing platforms, operating systems, applications, and / or services executing by or accessible by the computing devices 10 (e.g., electronic messaging applications, Internet browser applications, mobile or desktop operating systems, etc.). A user may interact with a user interface to cause computing devices 10 to perform corresponding operations related to functions.Computing devices 10 may each include respective user interface (UI) modules 20A- 20N (collectively "UI modules 20"), message client modules 22A- 22N (collectively "message client modules 22"), and context information modules 24A- 24N (collectively "context information modules 24"). The modules 20, 22, and 24 may perform operations described using software, hardware, firmware, or a mixture of hardware, software, and firmware residing in and / or executing on the respective computing devices 10. Computing devices 10 may each execute respective modules 20, 22, and 24 using one or more processors. Computing devices 10 may execute respective modules 20, 22, and 24 as one or more virtual machines executing on underlying hardware of computing devices 10. The modules 20, 22, and 24 may execute as one or more services or components of operating systems or computing platforms of the computing devices 10. Modules 20, 22, and 24 may execute as one or more executable programs at application levels of computing platforms of computing devices 10. The UIDs 12 and the modules 20, 22, and 24 may otherwise be remotely located from and accessible to the respective computing devices 10, for example, as one or more network services operating on the network 30 in a network cloud.The message client modules 22 may perform functions associated with receiving, managing, and otherwise handling at least a portion of the message data generated and / or received via platforms, applications, and services executing at the computing devices 10. The message client modules 22 may cause the UI modules 20 to issue alarms (e.g., an audible alarm, a visual alarm, a vibration, etc.) to indicate receipt of message data by the computing devices 10.The message client modules 22 may each receive message data from a message host module 62 of the information server system 60 and output the received message data to a receiving platform, application, and / or service executing at the computing devices 10. The message client modules 22 may receive message data generated by a respective platform, application, and / or service executing on the computing devices 10 and output the received message data to the information server system 60 via links 32.As used throughout the specification, the term "notification data" is used to describe various types of information indicative of the occurrence of an event associated with various platforms, applications, and services executing within an execution environment at one or more computing devices, such as computing devices 10, Appointments, etc.) associated with a user's calendar account of computing devices 10, information generated and / or received by a third party application executing at computing devices 10, transmission and / or receipt of inter-component communications between two or more components of platforms, applications, and / or services executing at computing devices 10, etc.The UI modules 20 may cause respective UIDs 12 to output respective user interfaces 14A- 14N (collectively "user interfaces 14") (or other examples of user interfaces) for display of how a user views outputs and provides input to the respective UIDs 12. The same user may interact with two or more user interfaces 14 at different times. For example, while a user is proximate to a location (e.g., an office) of computing device 10A, a user may interact with user interface 14A (e.g., a user interface of a desktop computing device) and, while remote from the location of computing device 10A, the user may interact with user interface 14N (e.g., a user interface of a wearable computing device).The UI modules 20 may interpret inputs detected at the UIDs 12 (e.g., when a user provides one or more gestures at one or more locations of the UIDs 12 where the user interfaces 14 are displayed). The UI modules 20 may pass information about the inputs captured at the UIDs 12 to one or more associated platforms, operating systems, applications, and / or services executing at the computing devices to cause the computing devices 10 to perform functions.The UI modules 20 may each receive information and instructions from one or more associated platforms, operating systems, applications, and / or services executing at the computing devices 10 (e.g., the notification client modules 22, etc.) to generate the user interfaces 14.For example, user interface 14A is an example graphical user interface for presenting one or more graphical indications of message data received by computing device 10A. The user interface 14A includes the graphical prompt 16A that presents a visual alarm indicative of receipt, by the computing device 10A, of message data associated with an instant message. User interface 14N is an example of a graphical user interface for presenting one or more graphical indications of message data received by computing device 10N. The user interface 14N includes a graphical prompt 16N that presents a visual alarm indicative of receipt, by the computing device 10N, of message data associated with an instant message. The user interfaces 14 may include various other types of graphical indicia, such as a visual alarm indicative of receipt of message data associated with an email or other type of communication message, a social media network, a calendar agreement or reminder, etc.The UI modules 20 may receive graphical information (e.g., text data, image data, etc.) based on the message data received by the message client modules 22 as input from the message client modules 22, along with instructions from the message client modules 22 to present the graphical information as graphical cues 16A-N (collectively "graphical cues 16") within the user interfaces 14. based on the graphical information and instructions received from the message client modules 22, the UI modules 20 may each cause respective UIDs 12 to present respective graphical cues 16 within the respective user interfaces 14, to alert a user of a corresponding one of the computing devices 10 of receipt of notification data.The context information modules 24 may each provide context information associated with the computing devices 10 to a prediction module 64 of the information server system 60. The contextual information modules 24 may sortally collect contextual information received and / or generated by corresponding integrated sensors, communication devices and radios, input devices, and the like of the computing devices 10. The contextual information modules 24 may output corresponding contextual information to the information server system 60 for use by the prediction module 64 to determine whether a user associated with the message data interacts with one of the computing devices 10 at a particular time. For example, the context information modules 24 may output sensor information, communications, and signal information, and / or information obtained via one or more input devices of the computing devices 10, to the prediction module 64.As used throughout the specification, the term "contextual information" is used to describe information that may be used by a computer system, such as the information server system 60, to determine a location and / or degree of motion associated with one or more computing devices, such as the computing devices 10, the information transmitted by one or more input devices (e.g., cameras, microphones, keyboards, touchpads, mice, UIDs 12, etc.) of the computing devices 10 and network / device identification information (e.g., a network name, a device IP address, etc.).In addition to determining a location and / or degrees of motion, contextual information may be used by a computer system, such as information server system 60, to determine the operating state of each of computing devices 10 at a particular time. In other words, based on the context information, prediction module 64 may determine whether one of computing devices 10 is active (e.g., powered on and / or receiving input) or inactive (e.g., powered off, stand-by mode, sleep / screen saving mode, and / or receiving no input), and use the determination regarding the operating state of computing devices 10 to determine whether a user is interacting with one of computing devices 10.The information server system 60 represents any suitable remote computer system, such as one or more desktop computers, laptop computers, mainframe computers, servers, cloud computer systems, etc., suitable for sending and receiving information (e.g., message data) through the network link 32X to the network 30. One or more of computing devices 10 may access a notification service hosted by information server system 60 to transmit and / or receive notification data between platforms, applications, and services executing at one or more computing devices. In some examples, the information server system 60 represents a cloud computing system that provides notification services through the network 30 to one or more of the computing devices 10 that have access to the notification services via access to the cloud provided by the information server system 60.In the example of FIG. 1, the information server system 60 includes the message host module 62 and the prediction module 64. the modules 62 and 64 may perform the described operations using software, hardware, firmware, or a mixture of hardware, software, and firmware located in and / or executing on the information server system 60. The information server system 60 may execute the modules 62 and 64 with multiple processors or multiple devices. The information server system 60 may execute the modules 62 and 64 as virtual machines executing on underlying hardware. The modules 62 and 64 may execute as one or more services of an operating system or computing platform. The modules 62 and 64 may execute as one or more executable programs at an application level of a computing platform.The message host module 62 may perform functions to route message data between one or more of the computing devices 10 over the network 30. The message host module 62 may perform message service hosting functions and also may perform message data outputting functions for transmission to one or more of the computing devices 10. For example, the message host module 62 may receive message data indicating that a message has been received using an instant message account associated with the computing devices 10 and output the message data to each combination of the computing devices 10 for transmission through the network 30.Each of the computing devices 10 may receive message data from the message host module 62 of the information server system 60 via a respective one of the network links 32. Each of the computing devices 10 may issue alarms based on the message data received from the message host module 62 to indicate receipt of message data by a respective one of the computing devices 10.As will be described in greater detail below, the message host module 62 may first output message data for transmission to a particular one of the computing devices 10 (i.e., the computing device 10A or the computing device 10N) depending on which one of the computing devices 10 determines the message host module 62 as being most likely to be used by a user and "attention-drawn" associated with the message data. After outputting the message data for transmission to that of the computing devices 10 most likely to be used by the user, the message host module 62 may determine that the user may not receive (e.g., see, belong, and / or feel) an alarm based on the message data or otherwise may not have obtained the information associated with the message data. The message host module 62 may determine another one of the computing devices 10 that is most likely to be used by and is attracting attention to the user associated with the message data, and may output the message data for transmission to the other one of the computing devices 10. By repeatedly outputting the message data, the message host module 62 may increase the likelihood that the user associated with the message data receives (e.g., sees, hears, and / or feels) an alarm based on the message data or otherwise includes the information associated with the message data.Prediction module 64 may perform functions to predict which of computing devices 10 is being used by a user associated with the message data. Generally, the prediction module 64 of the information server system 60 may receive "context information" from each of the computing devices 10 and, based on the context information, determine whether or not a user associated with the notification data interacts with any of the computing devices 10. Prediction module 64 may respond to requests (e.g., from message host module 62) requesting information indicative of which of computing devices 10 is more likely to be used by a user associated with the message data.The prediction module 64 may receive contextual information from each of the computing devices 10 and determine locations associated with each of the computing devices 10 based on the contextual information. For example, prediction module 64 may receive GPS, cellular, and / or Wi-Fi data from one or more of computing devices 10 and determine corresponding coordinate locations of the one or more computing devices 10. In some examples, prediction module 64 may determine relative locations (e.g., an address, a location, a country, a city, a building type, a company, etc.) of computing devices 10 and / or determine locations of computing devices 10 based on signal triangulation (e.g., a technique for determining a single location based on relative position data received from two or more signals). In other examples, prediction module 64 may determine a location of one of computing devices 10 based on a network identifier associated with the one of computing devices 10.The prediction module 64 may determine a degree of motion associated with each of the computing devices 10 based on the contextual information received from each of the computing devices 10. For example, prediction module 64 may determine a speed, acceleration, direction, and / or orientation of each of computing devices 10 based on sensor data received from computing devices 10 and / or based on location data associated with computing devices 10. For example, prediction module 64 may track the locations of computing devices 10 over a period of time and determine the speed, direction, and / or acceleration of computing devices 10 based on changes in the locations of computing devices 10.Based on the context information received from computing devices 10, prediction module 64 may determine a probability (e.g., statistical probability) that a user associated with the message data will interact with one of computing devices 10 at a particular time. For example, prediction module 64 may use machine learning and / or other prediction algorithms and techniques to determine a statistical probability that a user associated with the report data is interacting with one of computing devices 10 at a particular time based on the context information. In other words, prediction module 64 may provide the contextual information as one or more signal inputs to a machine learning algorithm and receive as output a statistical probability indicative of whether one of computing devices 10 is likely being used. Prediction module 64 may cause message host module 62 to output message data for transmission to that of computing devices 10 that is more likely to be used by the user at a particular time (e.g., a request received from message host module 62 for information indicative of which of computing devices 10 is more likely to be used by the user at a particular time).In some examples, the information server system 60 may receive contextual information from the computing devices 10 in substantially real-time. In other examples, the information server system 60 may receive contextual information from the computing devices 10 at different prior times and use the prior information to learn and build rules to distinguish which of the computing devices 10 is used by a user associated with the notification data at a later time.The prediction module 64 of the information server system 60 and the context information modules 24 of the computing devices 10 may collect or use information associated with a user of the computing devices 10 only after the user has been provided with a capability to provide input to the computing devices 10 to check whether programs or features of the information server system 60 and the computing devices 10 may collect and use user information (e.g., information about a current location of a user, a current speed, etc.), or to predict whether and / or how the information server system 60 and the computing devices 10 may receive content that may be relevant to the user. Additionally, certain data may be treated in one or more ways before being stored or used by the information server system 60 and computing devices 10 so that personally identifiable information is removed.In operation, the information server system 60 may receive message data associated with a user. For example, the message host module 62 may receive message data associated with a user of the computing devices 10 indicating that a textual message was received using an instant message account of the user.Upon determining that the user interacts with computing device 10A at a previously determined time, information server system 60 may output notification data for transmission to computing device 10A. For example, based on information provided by prediction module 64, reporting module 62 may determine that contextual information received from computing devices 10 indicates that computing device 10A is being used by the user associated with the reporting data. The message host module 62 may output the message data to the computing device 10A via links 32.The information server system 60 may determine that the user associated with the notification data interacts with the computing device 10N at a later determined time. For example, at a later determined time (i.e., after the earlier time that the information system 60 determined that the user has interacted with computing device 10A), the message host module 62 may receive information from the prediction module 64 indicating that the computing device 10A is likely not being used by the user and / or that the computing device 10N is likely to be used by the user.Upon determining, based on the later determined time being less than a threshold period after the earlier determined time, that the user has not viewed the notification data at the computing device 10A. The message host module 62 may determine whether the time period between the earlier time and the later time is less than a threshold time period (e.g., less than one minute, 30 seconds, etc.) that represents a time period during which the user has continued to change his or her attention from computing device 10A, thus missed or otherwise prevented from being notified of receipt of the message data by the message client module 22 of the computing device 10A. The information server system 60 may output the notification data for transmission to the computing device 10N, and the notification client module 22 of the computing device 10N may cause the UI module 22N to output an alarm based on the notification data (e.g., a graphical indication 16N at the UID 12).In this manner, a computer system according to the techniques of the present disclosure may cause message data to "track" a user associated with the message data from a first computing device to a second computing device when the computer system determines that a user may have missed the message data at the first computing device. The computer system may determine that the first computing device has received message data during a period in which the user associated with the message data has changed his or her attention and turned his or her attention away from the first computing device. The computer system can "track" the user and automatically output the notification data to a second computer device that is more likely to be used by the user at the present time.By outputting the message data to a second computing device in this manner, the computing system may increase the likelihood that the user receives the message alarms and / or receives information associated with the message data. Additionally, the computer system may reduce the likelihood that the user will miss message alarms and / or message-based information. The plurality of computing devices that thus receive message data from the computing system may receive less input from a user interacting with the plurality of computing devices (e.g., to obtain information using one computing device that has already been provided as message data to another computing device). Conversely, the plurality of computing devices may receive less false input from the user, and thus the plurality of computing devices and the computing system may perform fewer operations and consume less power.In some examples, prediction module 64 may determine the probability (e.g., a statistical probability) of whether the user associated with the notification data interacts with one of computing devices 10 at a particular time based on contextual information received from computing devices 10 and including input data captured by one or more input devices of computing device 10 (e.g., mice, trackball, touchpads, etc.). The prediction module 64 may identify specific patterns associated with the input data and identify a sequence of specific user interactions that indicate whether the user is interacting with one of the computing devices 10 based on the identified patterns. Prediction module 64 may use sensor data associated with the context information to determine whether any of the identified patterns represents a change in user behavior and indicates that the user is interacting with or no longer interacting with computing device 10.For example, based on the context information, prediction module 64 may determine that input data received from computing device 10A indicates that a user is moving a mouse-type input device (e.g., trackball, touchpad, etc.) to interact with computing device 10A (e.g., user interface 14A) at a previously determined time. At a later determined time, prediction module 64 may determine that the input data indicates that the user is not using the mouse-type device.The machine learning and / or other prediction algorithms and techniques of prediction module 64 may use the input data received from computing device 10A at the earlier and later determined times, along with speedometer-type sensor data received from computing device 10N at the later and earlier determined times, to determine that the user is no longer interacting with computing device 10A at the later determined time. For example, speedometer data received from computing device 10N may indicate that the user is moving at the later determined time. Prediction module 64 may determine that the probability of the user interacting with computing device 10A at the later determined time when the user is moving and when the user is not using a mouse is very low, and thus determine that the user is not interacting with computing device 10A at the later determined time. In other words, prediction module 64 may predict that the user is seated at computing device 10A at a previously determined time (as the user moves the mouse) and determine that the user is upstanded at the later determined time and is no longer seated at computing device 10A.In some examples, the input data included in the context information received by prediction module 64 may include video data (e.g., received by a webcam of computing device 10A). Prediction module 64 may determine that a user interacts with one of computing devices 10 based on facial and / or retinal image comparison techniques applied to video data received from a webcam of computing device 10A. In other words, prediction module 64 may determine that an image associated with video data received by a camera of computing device 10A matches or resemble a human face and / or match or resemble a face of a particular user when the user is to view a screen or monitor associated with computing device 10A. Prediction module 64 may determine that the user interacts with computing device 10A when a human face and / or a user face is identified by prediction module 64 at a previously determined time within a frame of the video data. At a later determined time, prediction module 64 may determine that the user is no longer interacting with computing device 10A when the video data is no longer including a frame of video data having a human face and / or a user face.In some examples, sensor data included in the context information associated with computing devices 10A may be alone sufficient for the prediction module to determine whether a user interacts with one of computing devices 10. For example, accelerometer data and / or gyro data received from computing device 10N may indicate a position and orientation of computing device 10N, and prediction module 64 may determine whether computing device 10N is being held and / or worn or whether it is not being held and / or worn based on the position and orientation information. The prediction module 64 may determine that the computing device 10N is resting on a planar surface based on the accelerometer data, and / or determine that the computing device 10N is likely not to be worn, or if the computing device 10N is a tablet PC, the prediction module 64 may determine that the computing device 10N is lying on a surface based on the accelerometer data. The prediction module 64 may determine a high level of likelihood that the computing device will not be used at any particular time, for example, when the computing device 10N is wearable and not worn or when the computing device 10N is a tablet-like device and lies flat on a surface (rather than being held by the user).FIG. 2 is a block diagram illustrating an example of a computer system configured to output message data, in accordance with one or more aspects of the present disclosure. The information server system 60 of FIG. 2 is described below in the context of FIG. 1. FIG. 2 shows a particular example of the information server system 60, and many other examples of the information server system 60 may be used in other cases and include a subset of the components included in the example for the information server system 60 or include additional components not shown in FIG. 2.As shown in the example of FIG. 2, the information server system 60 includes one or more processors 70, one or more communication units 72, and one or more storage devices 74. the storage devices 74 of the information server system 60 include the message host module 62 and the prediction module 64. the storage devices 74 of the information server system 60 further include a message information data store 68A and a device context information data store 68B (collectively, "data store 68"). The communication channels 80 may interconnect (physically, communicatively, and / or operatively) each of the components 70, 72, and 74 for inter-component communication. In some examples, the communication channels 80 may include a system bus, a network connection, an interprocess communication data structure, or any other method of communicating data.The one or more communication units 72 of the information server system 60 may communicate with external computing devices, such as the computing device 10, by sending and / or receiving network signals on one or more networks, such as the network 3. Examples of the communication unit 72 include a network interface card (e.g., such as an Ethernet card), an optical transceiver, a radio frequency transceiver, a GPS receiver, or any other type of device capable of transmitting and / or receiving information. Other examples of the communication units 72 may include short-wave radios, cellular data radios, wireless Ethernet network radios, and universal serial bus (USB) controllers.One or more storage devices 74 within the information server system 60 may store information for processing during operation of the information server system 60 (e.g., the information server system 60 may store data accessible by the modules 62 and 64 during execution at the information server system 60). In some examples, the storage devices 74 are temporary storage, meaning that a primary purpose of the storage devices 74 is not long-term storage. The storage devices 74 on the information server system 60 may be configured to temporarily store information as volatile memory and therefore not retain stored contents when disconnected from a power supply. Examples of volatile memories include random access memories (RAM), dynamic random access memories (DRAM), static random access memories (SRAM), and other forms of volatile memories known in the art.The storage devices 74 also include one or more computer readable storage media in some examples. The storage devices 74 may be configured to store larger amounts of information than volatile memories. The storage devices 74 may further be configured to store information as a non-volatile memory space for a long time and retain information after power-on / power-off cycles. Examples of non-volatile memories include magnetic hard disks, optical disks, floppy disks, flash memories, or forms of electrically programmable memories (EPROMs) or electrically erasable and programmable memories (EEPROMs). The storage devices 74 may store program instructions and / or data associated with the modules 62 and 64.The one or more processors 70 may implement functionalities and / or execute instructions within the information server system 60. For example, processors 70 on information server system 60 may receive and execute instructions stored via storage devices 74 that perform the functionality of modules 62 and 64. These instructions, which are executed by the processors 70, may cause the information server system 60 to store information within the storage devices 74 during execution of a program. The processors 70 may execute instructions of the modules 62 and 64 to provide fitness and navigation information to one or more computing devices (e.g., the computing devices 10 of FIG. 1 ). That is, the modules 62 and 64 may be operated by the processors 70 to perform various actions or functions of the information server system 60.The data stores 68 represent any suitable storage medium for storing data related to the message data and context information. For example, the message information data store 68A may store message data received by the message host module 62, and the device context information data store 68B may store context information received by the prediction module 64 and associated with and / or received by one or more of the computing devices 10.The message data stored in the data store 68A may be sorted and / or organized by the message host module 62, and / or accessed according to various attributes associated with the message data. For example, in addition to containing content (e.g., information associated with the message data, such as text, video, images, etc., associated with a message, calendar reminder, etc.), each portion of message data received via the information server system may include one or more attributes that the message host module 62 uses to determine when the message data is being outputted and / or which one or more of the computing devices 10 of the network 30 routes or provides the message data.An attribute may include a user identifier, such as a username, accountname, telephone number, network identifier, email address, etc., that indicates a receiving user associated with the message data for which the computing devices 10 may issue an alert based on the message data and / or otherwise provide access to information associated with the message data. The message host module 62 may store received message data in the data storage 68A according to the user identifier and obtain message data from the data storage 68A by requesting message data based on the user identifier.In some examples, the message data may include a transmitter identifier that indicates an origin of the message data. For example, email or instant messaging message data may include an attribute that specifies the email address or instant messaging account of a "sending" user associated with the message data. In other words, the sender identifier may indicate an account name associated with a person who written the email or instant message associated with the message data.In some examples, the message data in the message information data store 68A may include a "priority level" attribute that is assigned to the message data using the message service and / or the origin of the message data. For example, the computing device and / or system that generates the message data may include a priority attribute associated with the data and designated and / or assigned for the message data by the sender, such that the sender may specify, by assigning a priority level, a level of importance of the message data compared to other types of message data. The priority level may specify a level of importance associated with the message data to cause the message host module 62 to prioritize output of the message data. The message host module 62 may compare a priority level of message data to one or more priority thresholds to determine when message data is output to the computing devices 10. For example, a priority level that exceeds a priority threshold may cause the message host module 62 to output the message data within a certain time or duration (e.g., one minute after receipt at the information server system 60, 30 seconds after receipt, etc.), and a priority level that does not exceed the threshold may cause the message host module 62 to delay the outputting of the message data until a later time (e.g., 5 minutes after receipt at the information server system 60, one hour after receipt, etc.).In some examples, the message data at the message information data store 68A may include a "time sensitivity" attribute that is assigned to the message data using the message service and / or the origin of the message data. The time-sensitivity attribute may specify a latest determined time at which the message data is provided or otherwise specify a period of time for which the information associated with the message data is most relevant to a user associated with the message data. In some examples, the time-sensitive attribute may mark or label the message data with an indication that the information associated with the message data is time-dependent and / or time-sensitive. The message host module 62 may compare the time-sensitive attribute of the message data to a threshold to determine whether the message data is time-sensitive (e.g., if the attribute satisfies the threshold) or whether delivery of the message data (e.g., by an alarm based on the message data) is not required at a particular time (e.g., if the attribute does not satisfy the threshold).The contextual information stored in the data store 68A may be organized according to one or more individual and / or groups of the computing devices 10 and / or according to one or more individual users associated with the computing devices 10. For example, prediction module 64 may receive context information from computing devices 10 and categorize the context information in device context information data store 68A by copying the context information from each of computing devices 10 at separate corresponding portions or locations of data store 68A. Each respective separate portion or location of the data store 68A may include a label associated with one or more computing devices 10, and may also include a label associated with a user. Prediction module 64 may obtain contextual information from data store 68A by requesting the user tag and / or the computing device tag to obtain the contextual information associated with a specific user and / or one or more specific ones of computing devices 10.In some examples, over a period of time, prediction module 64 may collect (i.e., receive) and store (e.g., in device context information data store 68B) contextual information from a number of different computing devices 10, but only when information server system 60 receives explicit permission from the different users of computing devices 10 to receive and analyze the information. For example, in situations discussed herein where the information server system 60 may collect or use personal information about a user (e.g., contextual information), the user may be provided with a way to control whether programs or features of the computer system may collect user information (e.g., a current location of the user, a speed of the user, a direction of the user, etc.). Additionally, certain data may be treated in one or more ways before being stored or used by the computing device, such that personally identifiable information is removed. For example, a user's calendar information, preferences, geographic locations, etc. may be generalized such that a precise user's calendar, preference, and geographic location may not be determined. Thus, the user may have control over how information about the user is collected and used by the information server system 60.In operation, the message host module 62 may receive message data associated with a user of the computing devices 10 indicating that a text message was received using an instant message account of the user. The message host module may store at least a portion of the message data in the data store 68A. The message host module 62 may request the prediction module 64 to obtain information from the prediction module 64 indicating which of the computing devices 10 is more likely to be used by the user at the particular time.The prediction module 64 may access the device context information data store 68B for context information received from one or more of the computing devices 10 to determine which of the computing devices 10 is most likely to be used by the user associated with the notification data at the particular time. Prediction module 64 may perform a request to data store 68B using a user identifier associated with the message data to obtain contextual information associated with the one or more computing devices of computing devices 10 that may be used by the user. Based on the context information obtained from the data store 68B, the prediction module 64 may determine which of the computing devices 10 is most likely to be used at a particular time, and may further determine which of the computing devices 10 is more suitable for receiving the notification data from the notification host module 62 as well as for getting attention of the user by issuing an alarm based on the instant notification data at the particular time.For example, prediction module 64 may determine that contextual information from contextual information modules 24 indicates that computing device 10A is powered on and operating in an active state and that one or more input devices of computing device 10A are actively receiving input from the user (e.g., as a user writes to a keyboard and / or provides touch input to UID 12A). Based on the context information from the context information modules 24, the prediction module 64 may determine a probability (e.g., using machine learning or other types or rule-based prediction algorithms and techniques) that the computing device 10A is being used at the particular time. Upon determining that the probability satisfies a probability threshold (e.g., 50%), prediction module 64 may determine that the user associated with the report data is using computing device 10A at the determined time.In some examples, prediction module 64 may use the context information received from one of computing devices 10A and stored in data store 68B to determine that a user is using the other of computing devices 10. For example, based on the context information received from computing device 10, prediction module 64 may determine that computing device 10A is a desktop computer that is active and stationary at a particular location. The prediction module 64 may determine that the user of the computing device 10A is likely to use and be attentive to the computing device 10A. Based on the contextual information received from the computing device 10A, the prediction module 64 may determine that the computing device 10N is an inactive wearable computing device that is also stationary at the particular location. Although the computing device 10N is inactive, the prediction module 64 may receive contextual information from the computing device 10N indicating that the computing device 10N is actively worn (e.g., based on sensor information indicating galvanic skin response, temperature, orientation, and / or other movement indicating that the computing device 10N is at the wrist of a person). The prediction module 64 may determine that the user of the computing device 10A is likely not using and / or alerting the computing device 10N.Upon determining that the user interacts with computing device 10A at a previously determined time, information server system 60 may output the notification data for transmission to computing device 10A. For example, the message host module 62 may receive information from the prediction module 64 indicating that the computing device 10A has a higher probability of being used at the earlier determined time than the probability of the computing device 10N being used at the earlier determined time. The message host module 62 may send the message data over communication channels 50 to communication units 72, which may output the message data over links 32 to the message client module 22A of computing device 10A. The notification client module 22A of the computing device 10A may issue graphical information and / or instructions to direct the UI module 20A to cause the UID 12A to issue an alarm based on the notification data (e.g., a graphical prompt 16A and the like).To increase a likelihood that the user associated with the message data will receive information associated with the message data and / or an alarm based on the message data, the message host module 62 may determine whether the user associated with the message data continues to interact with the computing device 10A at a later determined time (e.g., after the earlier determined time at which the message host module 62 first outputs the message data for transmission to the computing device 10A). If the message host module 62 determines that the user is interacting with the computing device 10N at a later determined time, the message host module 62 may conclude that the user may have missed the message data during the period of time (e.g., between the earlier determined time and the later determined time) at which the user has changed his or her attention and stopped using the computing device 10A and / or started using the computing device 10N.The information server system 60 may determine that the user interacts with the computing device 10N at a later determined time. For example, at the later determined time, the message host module 62 may request the prediction module 64 via information indicative of which of the computing devices 10 is likely to be used by the user and an indication that the computing device 10A is likely not to be used by the user and / or the computing device 10N is likely to be used by the user.Upon determining that the user has not viewed the notification data in the computing device 10A by less than a threshold amount of time after the previously determined time, the information server system 60 may output the notification data for transmission to the computing device 10N. In other words, the message host module 62 may determine whether the user associated with the message data is likely to miss the message data (e.g., an alarm provided by the computing device 10A) by comparing the earlier time the message data was first issued for transmission to the computing device 10A to the later time the user may have begun using the computing device 10A and / or stopped using the computing device 10N. The message host module 62 may determine whether the time period between the earlier time and the later time is less than a threshold time period (e.g., less than one minute, 30 seconds, etc.). The threshold may represent a period of time during which the user may have facing away his or her attention from computing device 10A and may have missed or otherwise prevented from being notified of receipt of the notification data by notification client module 22 of computing device 10A.The message host module 62 may output the message data to the computing device 10N. The notification client module 22N of the computing device 10N may cause the UI module 22N to issue an alarm based on the notification data (e.g., a graphical indication 16N at the UID 12N).In some examples, the information server system 60 may output message data for transmission to a second computing device after the message data is first output for transmission to a first computing device upon determining that a priority level of the message data satisfies a threshold. In other words, the message host module 62 may determine whether a priority level of the message data satisfies a priority threshold prior to determining whether or not a user should be "tracked" with the message data by outputting the message data at a second of the computing devices 10 at a later determined time when the message host module 62 determines that the user is likely or unlikely to have received an alert based on the message data (e.g., "viewed, heard, and / or felt") or otherwise obtained information associated with the message data when the message data was output for transmission to a first of the computing devices 10 at an earlier determined time. If a priority level of the message data satisfies a threshold (e.g., to indicate more important message data), the message host module 62 may request the prediction module 64 via information indicating which of the computing devices 10 is most likely to be used by the user, and may cause the communication modules 72 to output the message data for transmission to that of the computing devices 10 with the highest likelihood.In some examples, the information server system 60 may output the message data for transmission to a second computing device after first outputting the message data for transmission to a first computing device upon determining that the message data includes time-sensitive information. In other words, the message host module 62 may determine whether a time-sensitive attribute of the received message data indicates that the information associated with the message data will leak at a particular time prior to determining whether or not the user associated with the message data is to be "tracked", and outputting the message data to a second, third, fourth, etc. of the computing devices 10 at a later particular time until the message host module 62 determines that the user is likely to have received (e.g., viewed, heard, and / or felt) an alert based on the message data or otherwise obtained the information associated with the message data. If the message host module 62 determines that the information associated with message data is time sensitive (e.g., by analyzing a time sensitive attribute), the message host module 62 may request the prediction module 64 via information indicative of which of the computing devices 10 is most likely to be used by the user, and may cause the communication modules 72 to output the message data for transmission to that of the computing devices 10 with the highest likelihood.In some examples, the information server system 60 may output message data for transmission to a second computing device after first outputting the message data for transmission to a first computing device upon determining that a sender identifier associated with the message data corresponds to an entry of an electronic address book or a contact list. In other words, the message host module 62 may track a user associated with the message data upon determining that the message data is associated with a contact of a contact list associated with the user. For example, the message host module 62 may access or store information associated with an address book or contact list associated with a user (e.g., via a cloud service accessible by the information server system 60). The message host module 62 may relate a sender identifier of the message data to one or more entries of an electronic address book or contact list associated with a user to determine whether the sender identifier corresponds to an entry in the address book or contact list. The message host module 62 may "track" a user (e.g., by outputting the message data to different ones of the computing devices 10 at a later time until the message host module 62 determines that the user associated with the message data is likely to have received an alarm based on the message data or otherwise obtained the information associated with the message data) and output the message data to a second computing device if the sender is included in the electronic address book or the contact list associated with the user and / or not track the user if the sender is not included in the address book or the contact list.FIG. 3 is a block diagram illustrating a computing device 100 outputting graphical content for display at a remote device, in accordance with one or more techniques of the present disclosure. Graphical content may generally include any visual information that may be output for display, such as text, images, a set of moving images, etc. The example shown in FIG. 3 includes a computing device 100, a presence-sensitive display 101, a communication unit 110, a projector 120, a projector screen 122, a mobile device 126, and a visual display device 130. Although shown as multiple self-contained computing devices 10 for purposes of the example of FIG. 1, a computing device such as one of computing devices 10 and computing device 100 may generally be any component or system that includes a processor or other suitable computing environment for executing software instructions and need not include, for example, a presence-sensitive display.As shown in the example of FIG. 3, computing device 100 may be a processor that includes functionalities as described in connection with processors 70 in FIG. 2. In such examples, computing device 100 may be operatively coupled to presence-sensitive display 101 via a communication channel 102A, which may be a system bus or other suitable connection. Computing device 100 may also be operatively coupled to communication unit 110, described in greater detail below, via a communication channel 102B, which may also be a system bus or other suitable connection. Although shown separately in the example of FIG. 3, computing device 100 may be operatively coupled to presence-sensitive display 101 and communication unit 110 through any number of one or more communication channels.In other examples, such as shown by computing devices 10 in FIG. 1 above, a computing device may refer to a portable or mobile device, such as cellular phones (including smart phones), laptop computers, computer-functional watches, computer-functional glasses, wearable computing devices, etc. In some examples, a computing device may be a desktop computer, a tablet computer, a smart TV platform, cameras, personal digital assistants (PDAs), servers, mainframe computers, etc.The presence-sensitive display 101 may include a display device 103 and a presence-sensitive input device 105. For example, the display device 103 may receive data from the computing device 100 and display the graphical content. In some examples, the presence-sensitive input device 105 may determine one or more inputs (e.g., continuous gestures, multi-touch gestures, single-touch gestures, etc.) on the presence-sensitive display 101 using capacitive, inductive, and / or optical recognition techniques and send indications of such inputs to the computing device 100 using the communication channel 102A. In some examples, the presence-sensitive input device 105 may be physically positioned on the display device 103 such that when a user positions an input device over a graphical element displayed by the display device 103, the location at which the presence-sensitive input device 105 is located corresponds to the location of the display device 103 at which the graphical element is displayed. In other examples, the presence-sensitive input device 105 may be physically positioned separate from the display device 103 and locations of the presence-sensitive input device 105 may correspond to locations of the display device 103, such that input may be made to the presence-sensitive input device 105 to interact with graphical elements displayed at corresponding locations of the display device 103.As shown in FIG. 3, computing device 100 may also include and / or be operatively coupled to a communication unit 110. Examples of the communication unit 110 may include a network interface card, an Ethernet card, an optical transceiver, a radio frequency transceiver, or any other type of device capable of transmitting and receiving information. Other examples of such communication devices may include Bluetooth, 3G, and WiFi radios, universal serial bus (USB) interfaces, etc. Computing device 100 may also include and / or be operatively coupled to one or more other devices, e.g., input devices, output devices, data storage, storage devices, etc., which are not shown in FIG. 3 for purposes of brevity and clarity.FIG. 3 also shows a projector 120 and a projector screen 122. Other such examples of projection devices may include electronic whiteboards, holographic display devices, head-up displays (HUD), and any other suitable devices for displaying graphical content. The projector 120 and the projector screen 122 may include one or more communication units that allow the respective devices to communicate with the computing device 100. In some examples, the one or more communication units may allow communication between the projector 120 and the projector screen 122. The projector 120 may receive data from the computing device 100 that includes graphical content. The projector 120 may project the graphical content onto the projector screen 122 upon receiving the data. In some examples, the projector 120 may determine one or more inputs (e.g., continuous gestures, multi-touch gestures, single-touch gestures, etc.) on the projector screen 122 using optical recognition or other suitable techniques and send indications of such inputs to the computing device 100 using one or more communication units. In such examples, the projector screen 122 may be unnecessary and the projector 120 may project graphical content onto any suitable medium and detect one or more user inputs using optical recognition or other such suitable techniques.The projector screen 122, in some examples, may include a presence-sensitive display 124. The presence-sensitive display 124 may include a subset of the functionalities or all of the functionalities of the UI device 4 as described in the present disclosure. In some examples, the presence-sensitive display 124 may include additional functionalities. The projector screen 122 (e.g., an electronic display of eyeglasses having computer functionality) may receive data from the computing device 100 and display the graphical content. In some examples, the presence-sensitive display 124 may determine one or more inputs on the projector screen 122 (e.g., continuous gestures, multiple touch gestures, single touch gestures, etc.) to the computing device 100 using capacitive, inductive, and / or optical recognition techniques and send indications of such inputs using one or more communication units.FIG. 3 further shows a mobile device 126 and a visual display device 130. The mobile device 126 and the visual display device 130 may each include computational and connection capabilities. Examples of the mobile device 126 may include e-reader devices, convertible notebook devices, hybrid slate devices, computer function watches, computer function glasses, etc. Examples of the visual display device 130 may include other semi-stationary devices such as televisions, computer monitors, automotive displays, etc. As shown in FIG. 3, the mobile device 126 may include a presence-sensitive display 128. The visual display device 130 may include a presence-sensitive display 132. The presence-sensitive displays 128, 132 may include a subset of the functionalities or all of the functionalities of the UID 12 as described in the present disclosure. In some examples, the presence-sensitive displays 128, 132 may include additional functionalities. In any event, for example, the presence-sensitive display 132 may receive data from the computing device 100 and display the graphical content. In some examples, the presence-sensitive display 132 may determine one or more inputs (e.g., continuous gestures, multi-touch gestures, single-touch gestures, etc.) on the projector screen using capacitive, inductive, and / or optical recognition techniques and send indications of such inputs to the computing device 100 using one or more communication units.As described above, in some examples, computing device 100 may output graphical content for display on presence-sensitive display 101 coupled to computing device 100 via a system bus or other suitable communication channel. Computing device 100 may also output graphical content for display at one or more remote devices, such as projector 120, projector screen 122, mobile device 126, and visual display device 130. For example, computing device 100 may execute one or more instructions to generate and / or modify graphical content, in accordance with techniques of the present disclosure. The computing device 100 may output the data including the graphical content to a communication unit of the computing device 100, such as the communication unit 110. The communication unit 110 may send the data to one or more of the remote devices, such as the projector 120, the projector screen 122, the mobile device 126, and / or the visual display device 130. In this manner, computing device 100 may output the graphical content for display at one or more of the remote devices. In some examples, one or more of the remote devices may output the graphical content on a presence-sensitive display included in and / or operatively coupled to the respective remote device.In some examples, computing device 100 may not output graphical content on presence-sensitive display 101 operatively coupled to computing device 100. In other examples, computing device 100 may output graphical content for display on both a presence-sensitive display 101 coupled to computing device 100 via communication channel 102A and one or more remote devices. In such examples, the graphical content may be displayed substantially simultaneously on each device, respectively. For example, some delay may be introduced by communication latency in sending the data containing the graphical content to the remote device. In some examples, graphical content generated by computing device 100 and output for display at presence-sensitive display 101 may be different than graphical content output for display at the one or more remote devices.Computing device 100 may transmit and receive data using any suitable communication techniques. For example, computing device 100 may be operatively coupled to an external network 114 using network link 112A. Each of the remote devices shown in FIG. 3 may be operatively coupled to the external network 114 via one of the respective network links 112B, 112C, and 112D. The external network 114 may include network hubs, network switches, network routers, etc., operatively coupled together, thereby allowing the exchange of information between the computing device 100 and the remote devices shown in FIG. 3. In some examples, network links 112A- 112D may be Ethernet, ATM, or other network connections. Such connections may be wireless and / or wired connections.In some examples, computing device 100 may be operatively coupled to one or more of the remote devices in FIG. 3 using direct device communication 118. Direct device communication 118 may include communications by which computing device 100 directly sends and receives data with a remote device using wired or wireless communication. That is, in some examples of direct device communication 118, data transmitted by computing device 100 may not be forwarded by one or more additional devices before being received at the remote device, and vice versa. Examples of direct device communication 118 may include Bluetooth, near field communication, universal serial bus (USB), WiFi, infrared, etc. One or more of the remote devices in FIG. 3 may be operatively coupled to computing device 100 via communication links 116A- 116D. In some examples, communication links 112A- 112D may be connections using Bluetooth, near field communication, universal serial bus (USB), infrared, etc. Such connections may be wireless and / or wired connections.In accordance with techniques of the disclosure, computing device 100 may be operatively coupled to visual display device 130 using external network 114. Computing device 100 may receive message data as output from a computing system (e.g., information server system 60 of FIGS. 1 and 2 ). For example, the computing system may determine that a user associated with the message data is likely to interact with the computing device 100 at a particular time and then output the message data for transmission to the computing device 100.Upon receiving the message data, the computing device 100 may issue an alarm indicative of receipt of the message data. For example, computing device 100 may output a graphical indication (e.g., graphical indication 16A) for purposes of display to visual display device 130 and based on the message data. The computing device 100 may output the graphical indication to the display device 130 based on the message data via direct device communication 118 or the external network 114 for display purposes. In some examples, the display device 130 outputs the graphical indicator for display to the user associated with the message data, and the user may interact with the computing device 100 in turn by selecting or discarding some or all of the displayed graphical indicators based on the message data. Computing device 100 and display device 130 may be configured such that selection of a particular element of the displayed graphic based on the message data causes computing device 100 to obtain additional information (e.g., text of an instant message, etc.) associated with the message data.FIGS. 4 and 5 are flowcharts illustrating example operations of an example computer system configured to output report data to one or more example computing devices, in accordance with one or more aspects of the present disclosure. The processes of FIGS. 4 and 5 may be performed by one or more processors of a computer system, such as the information server system 60 of FIGS. 1 and 2. For purposes of illustration, FIGS. 4 and 5 are described below in connection with the information server system 60, computing devices 10, and system 1 of FIG. 1.FIG. 4 shows that the information server system 60 can receive message data associated with a user (200). For example, the information server system 60 may receive message data indicative of receipt of an email message addressed to an email account to which a user of the computing devices 10 has access.The information server system 60 may determine that the user interacts with a first computing device at a first particular time ( 210). For example, prediction module 64 may output information to message host module 62 indicating that the user of computing devices 10 is likely to interact with computing device 10A at the first particular time.FIG. 4 shows that the information server system 60 can output the message data for transmission to the first computing device ( 220). For example, the message host module 62 may cause the information server system 60 to output the message data to the message client module 22A of the computing device 10A through links 32.In some examples, the information server system 60 may output the notification data for transmission to the first computing device (e.g., computing device 10A) upon determining that the user interacts with the first computing device at the first particular time, and not output the notification data for transmission to other computing devices 10, including the second computing device (e.g., computing device 10N) at the first particular time. In other words, the information server system 60 may output the notification data exclusively for transmission to only the computing device (e.g., computing device 10) that the information server system 60 determines as being the one that is more likely to be used at the first determined time.The information server system 60 may determine that the user is interacting with a second computing device at a second determined time ( 230). For example, the message host module 62 may determine that the message data associated with a contact in an address book or contact list associated with the user or that a priority level associated with the message data exceeds a priority threshold and / or that the message data includes time sensitive information. To increase a likelihood that the user associated with the message data receives an alarm based on the message data or otherwise receives the message data that the information server system 60 issues at the first (earlier) determined time, the message host module 62 may request the prediction module 64 via an updated indication of whether or not the user is interacting with the computing device 10A at a second (later) determined time. In other words, the message host module 62 may determine that the user has not viewed the message data at the first computing device by determining that the user does not interact with the first computing device at the second determined time. The message host module 62 may receive information from the prediction module 64 indicating that the user is more likely to interact with computing device 10N and / or not likely to interact with computing device 10A at the second particular time.In some examples, the information server system 60 may determine that the user has not viewed the notification data at the first computing device by first receiving context information associated with the second computing device and, based on the context information, determine that the user is not interacting with the first computing device at the second determined time. In other words, prediction module 64 may receive context information from computing device 10N and determine that the user is not using computing device 10A based on the context information received from computing device 10N. The prediction module 64 may determine that a user does not interact with one of the computing devices 10, such as a desktop computer, based on contextual information (e.g., sensor information, etc.) received from another of the computing devices 10, such as a wristwatch with computer functionality.FIG. 4 shows that the information server system 60 may determine whether the second determined time is less than a threshold time period after the first determined time ( 240). For example, the message host module 62 may determine that the second determined time is too close in time to the first determined time and indicate that the user may have missed an alarm based on the message data at the computing device 10A (e.g., by moving his or her attention away from the computing device 10A with respect to, listening, and / or sensing an alarm based on the message data at the computing device 10A).If the information server system 60 determines that the second determined time is less than the threshold time period after the first determined time, the information server system 60 may output the notification data for transmission to the second computing device ( 250). For example, the information server system 60 may output the notification data for transmission to the computing device 10N in an attempt to "track" the user, and cause one of the computing devices 10 most likely to be used by the user at the second particular time to output an alarm based on the notification data.In some examples, upon determining that the user interacts with the first computing device at a third particular time after the second particular time, the information server system 60 may output the notification data for transmission to the computing device 10A. In other words, after outputting the notification data to the computing device 10N, the information server system 62 may determine that the user is likely to interact with the computing device 10A again and output the notification data to the computing device 10A via a second transmission.FIG. 5 illustrates further operations of the information server system 60. for example, FIG. 5 illustrates an additional example of operations of the information server system 60 that may be performed by the information server system 60 from step 250 of FIG. 4.FIG. 5 shows that the information server system 60 may receive second message data associated with the user (260). For example, the information server system 60 may receive additional message data, the additional message data indicative of receipt of an instant message addressed to an instant message account to which the user of the computing devices 10 has access.The information server system 60 may output the second notification data for transmission to the second computing device ( 270). For example, the message host module 62 may receive information from the prediction module 64 indicating that the user associated with the message data continues to interact with the computing device 10N. The message host module 62 may transmit the additional message data to the computing device 10N and cause the message client module 22N and the UI module 20N to issue an alarm based on the additional message data.The information server system 60 may determine that the user interacts with the first computing device at a third specific time after the first and second specific times (280). In other words, at a third particular time after the first and second particular times, the notification module 62 may receive information from the prediction module 64 indicating that the user is likely to have begun interacting with the computing device 10A again. The message host module 62 may determine that the third determined time is less than the threshold time period after the second determined time, and determine that the user may not see, belong, and / or feel (e.g., receive) an alert based on the additional message data at the computing device 10N.The information server system 60 may output the second notification data received after the first determined time and before the third determined time for transmission to the first computing device ( 290). In other words, upon determining that the user interacts with the computing device 10A at a third particular time after the second particular time, the information server system 62 may output the additional notification data to be transmitted to the computing device 10A that is received by the information server system 62 after the first particular time and before the third particular time. In this manner, the information server system 62 can track the user associated with the message data back and forth between the computing devices 10. The information server system 62 may output first message data (e.g., an email-based message) to the computing device 10A and then "track" and output the first message data to the computing device 10N. Upon receiving the additional message data (e.g., an instant message-based message), the information server system 62 may output the additional message data for transmission to the computing device 10N and then "track" and output the additional message data for transmission to the computing device 10A.In some examples, the information server system 62 may determine whether a user interacts with one of the computing devices 10 based on face recognition techniques. For example, computing device 10A may include a camera (e.g., a web camera, etc.). The information server system 62 may receive video data obtained by the camera of the computing device 10A and determine whether or not an image of a human face is included in the video data by face recognition techniques and / or algorithms. In cases where a human face is detected in the video data, the information server system 62 may determine that the user is interacting with the computing device 10A. In cases where a human face is not detected within the video data, the information server system 62 may determine that the user is not interacting with the computing device 10A. In some examples, retina scanning or other image comparison techniques may be used to determine whether an image associated with a still image or moving video data received from one of computing devices 10 indicates whether or not a user is interacting with one of computing devices 10.Clause 1. a method comprising: receiving, by a computer system, message data associated with a user; upon determining that the user interacts with a first computing device at a first particular time, outputting, by the computer system and for transmission to the first computing device, the message data; determining, by the computer system, that the user interacts with a second computing device at a second particular time; and upon determining, based on the second particular time being less than a threshold period after the first particular time, that the user has not viewed the message data at the first computing device, outputting, by the computer system and for transmission to the second computing device, the message data.Clause 2. the method of Clause 1, wherein determining that the user has not viewed the notification data at the first computing device further comprises determining that the user does not interact with the first computing device at the second determined time.Clause 3. The method of any of Clause 1 to 2, wherein the notification data is output for transmission to the first computing device upon determining that the user interacts with the first computing device at the first determined time and is not output for transmission to other computing devices, including the second computing device, at the first determined time.Clause 4. The method of any one of Clause 1 to Clause 3, wherein the outputting, by the computer system and for transmission to the second computer device, the message data is further performed upon determining that a priority level of the message data satisfies a threshold.Clause 5. The method of any one of Clause 1 to Clause 4, wherein the outputting, by the computer system and for transmission to the second computer device, the message data is further performed upon determining that the message data includes time-sensitive information.Clause 6. The method of any one of Clause 1 to Clause 5, wherein the outputting, by the computer system and for transmission to the second computer device, the message data is further performed upon determining that the message data is associated with a contact of a contact list associated with the user.Clause 7. The method of any one of Clause 1 to 6, further comprising, upon determining that the user interacts with the first computing device at a third specific time after the second specific time, outputting, via the computing system, and for transmission to the first computing device, the notification data.Clause 8. The method of any one of Clause 1 to 7, wherein the message data comprises first message data, the method further comprising, upon determining that the user interacts with the first computing device at a third specific time after the second specific time, outputting, to the first computing device, second message data received by the computing system after the first specific time and before the third specific time.Clause 9. The method of any one of Clause 1 to 8, wherein determining that the user has not viewed the notification data at the first computing device further comprises: receiving, by the computing system, contextual information associated with the second computing device; and determining, by the computing system and based on the contextual information, that the user does not interact with the first computing device at the second determined time.Clause 10. a computer system, comprising: at least one processor; and at least one module operable by the at least one processor to: receive message data associated with a user; upon determining that the user interacts with a first computing device at a first particular time, output, for transmission to the first computing device, the message data; determine that the user interacts with a second computing device at a second particular time; and upon determining, based on the second particular time being less than a threshold period after the first particular time, that the user has not viewed the message data at the first computing device, output, for transmission to the second computing device, the message data.Clause 11. The computer system of Clause 10, wherein the at least one module is further operable by the at least one processor to determine that the user has not viewed the notification data at the first computing device, at least by determining that the user does not interact with the first computing device at the second determined time.Clause 12. The computer system of any of Clause 10 to 11, wherein the at least one module is further operable by the at least one processor to output the notification data for transmission to the first computing device upon determining that the user interacts with the first computing device at the first determined time and not to output the notification data for transmission to other computing devices including the second computing device at the first determined time.Clause 13. The computer system of any of Clause 10 to 12, wherein the at least one module is further operable by the at least one processor to output the notification data upon determining that the user has not viewed the notification data at the first computing device, and further upon determining that a priority level of the notification data satisfies a priority threshold.Clause 14. The computer system of any of Clause 10 to 13, wherein the at least one module is further operable by the at least one processor to output the message data upon determining that the user has not viewed the message data at the first computing device and further upon determining that the message data includes time-sensitive information.Clause 15. The computer system of any of Clause 10 to 14, wherein the at least one module is further operable by the one processor to output the message data upon determining that the user has not viewed the message data at the first computing device and further upon determining that the message data is associated with a contact of a contact list associated with the user.Clause 16. The computer system of any of Clause 10 to 15, wherein the at least one module is further operable by the at least one processor to, upon determining that the user interacts with the first computer device at a third determined time after the second determined time, and to transmit to the first computer device, the report data.Clause 17. The computer system of any of Clause 10 to 16, wherein the message data comprises first message data, and wherein the at least one module is further operable by the at least one processor to, upon determining that the user interacts with the first computing device at a third particular time after the second particular time, and to transmit to the first computing device, second message data received after the first particular time and before the third particular time.Clause 18. The computer system of any of Clause 10 to 17, wherein the at least one module is further operable by the at least one processor to determine that the user has not viewed the notification data at the first computing device, at least by receiving context information associated with the second computing device, and determine, based on the context information, that the user does not interact with the first computing device at the second determined time.Clause 19. The computer system of any of Clause 10 to 18, wherein the first computing device is a non-mobile computing device and the second computing device is a mobile computing device, the at least one module further operable by the at least one processor to determine that the user has not viewed the notification data at the first computing device based at least in part on context information associated with the second computing device, wherein the context information comprises sensor information of the second computing device.Clause 20. A computer-readable storage medium comprising instructions that, when executed, configure one or more processors of a computer system to: receive message data associated with a user; upon determining that the user interacts with a first computing device at a first particular time, output, for transmission to the first computing device, the message data; determine that the user interacts with a second computing device at a second particular time; and upon determining, based on the second particular time being less than a threshold period after the first particular time, that the user has not viewed the message data at the first computing device, output, for transmission to the second computing device, the message data.Clause 21: A computing device comprising means for performing any of the methods of Clause 1 to 9.Clause 22: A computer readable storage medium, described with instructions to cause one or more programmable processors to perform any of the methods recited in Clause 1 to 9.In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored on or transmitted to a computer readable medium as one or more instructions or code and executed by a hardware-based processing unit. Computer readable media may include computer readable storage media corresponding to a tangible medium, such as a data storage medium, or communication media including any medium that facilitates transfer of a computer program from one place to another place, e.g., according to a communication protocol. In this manner, computer readable media can generally correspond to (1) tangible computer readable storage media that are non-transitory, or (2) a communication medium such as a signal or a carrier wave. Storage media may be any available media that can be accessed by one or more computers or processors to obtain instructions, code, and / or data structures for implementing the techniques described in the present disclosure. A computer program product may include a computer readable medium.By way of example, and not limitation, such computer readable storage media may include random access memory (RAM), read only memory (ROM), electrically erasable programmable read only memory (EEPROM), CD-ROM or other optical storage disks, magnetic storage disks or other magnetic storage devices, flash memory, or any other medium which can be used to store desired program code in the form of instructions or data structures and which can be accessed by a computer. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, braid, digital subscriber line (DSL), or wireless techniques such as infrared, radio, and microwave, then coaxial cable, fiber optic cable, braid, DSL, or wireless technologies such as infrared, radio, and microwave are included in the medium definition. Of course, computer readable storage media and data storage, however, do not include links, carrier waves, signals, or other volatile media, but are directed to non-volatile tangible storage media. The terms floppy disk and disk as used herein include compact disk (CD), laser disk, optical disk, digital versatile disk (DVD), floppy disk, and Blue-ray disk, where disks typically reproduce data magnetically, whereas disks reproduce data optically with lasers. Combinations of the foregoing are also intended to be included within the meaning of computer readable media.Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors and application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the term "processor," as used herein, may refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionalities described herein may be provided within dedicated hardware and / or software modules. In addition, the technique may be implemented entirely in one or more circuits or logic elements.The techniques of the present disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of integrated circuits (e.g., a chip set). Various components, modules, or units are described in the present disclosure to emphasize functional aspects of the devices configured to perform the disclosed techniques, but do not necessarily require implementation using different hardware units. Rather, as described above, different units may be combined into a hardware unit or provided by a collection of interacting hardware units, including one or more processors as described above in conjunction with suitable software and / or firmware.Various examples have been described. These and other examples are within the scope of the following claims.
Claims
A method comprising the steps of: receiving, by a first computing device (10A-N; 100), message data associated with a user; and at a first determined time while the user interacts with the first computing device (10A-N; 100), outputting, by the first computing device (10A-N; 100), a graphical indication of the message data for display; determining, by the first computing device (10A-N; 100), based on context information, a corresponding statistical probability that the user interacts with one of a plurality of computing devices (10A-N; 100) including the first computing device (10A-N; 100) and a remote computing device (10A-N; 100); determining, by the first computing device (10A-N; 100), that the user is not interacting with the first computing device (10A-N; 100) at a second particular time based on the statistical probability, and / or determining, by the first computing device (10A-N; 100), that the user is interacting with the remote computing device (10A-N; 100) at a second particular time based on the statistical probability, and in response to determining that the second particular time is less than a threshold time period after the first particular time, outputting the notification data by the first computing device (10A-N; 100) and transmitting to the remote computing device (10A-N; 100).The method of claim 1, wherein outputting the message data via the first computing device (10A-N; 100) and for transmission to the remote computing device (10A-N; 100) is further responsive to: determining, via the first computing device (10A-N; 100), that the user has not viewed the message data at the first computing device (10A-N; 100); and determining, via the first computing device (10A-N; 100), that the user is interacting with the remote computing device (10A-N; 100) at the second determined time.The method of claim 1 or 2, wherein the message data is received by the first computing device (10A-N; 100) at the first determined time and is not received by the remote computing device (10A-N; 100).The method of any preceding claim, wherein outputting the message data using the first computing device (10A-N; 100) and for transmission to the remote computing device (10A-N; 100) is further based on determining that a priority level of the message data satisfies a threshold.The method of any preceding claim, wherein outputting the message data using the first computing device (10A-N; 100) and for transmission to the remote computing device (10A-N; 100) is further responsive to determining that the message data includes time-sensitive information.The method of any preceding claim, wherein outputting the message data using the first computing device (10A-N; 100) and for transmission to the remote computing device (10A-N; 100) is further based on determining that the message data is associated with a contact of a contact list associated with the user.The method of any preceding claim, wherein in response to determining that the user interacts with the first computing device (10A-N; 100) at a third particular time after the second particular time, outputting, by the first computing device (10A-N; 100), the graphical indication of the message data for display.The method of any preceding claim, wherein the message data comprises first message data, the method further comprising: responsive to determining that the user interacts with the first computing device (10A-N; 100) at a third particular time after the second particular time, outputting, by the first computing device (10A-N; 100), a graphical indication of second message data for display received by the first computing device (10A-N; 100) after the first particular time and before the third particular time.The method of any preceding claim, responsive to determining that the user has not viewed the message data at the remote computing device (10A-N; 100), outputting, by the first computing device (10A-N; 100), a graphical indication of the message data for display.The method according to any one of the preceding claims, wherein the context information is received and / or generated by means of one or more sensors, one or more communication units, one or more radios or one or more input devices of the plurality of computing devices (10A-N; 100).The method of claim 10, wherein the one or more sensors include a gyroscope, an accelerometer, or a proximity sensor.The method of any preceding claim, wherein the context information includes radio transmission information obtained from one or more global positioning systems (GPS) via cellular or Wi-Fi communication units and / or radios of the plurality of computing devices (10A-N; 100).The method of at least one of the preceding claims, wherein the contextual information includes information obtained using one or more cameras, microphones, keyboards, touchpads, mice, or user interface devices (12A-12N) of the plurality of computing devices (10A-N; 100).A first computing device (10A-N; 100) comprising: at least one processor; and at least one module (20A-N, 22A-N, 24A-N) operable by the at least one processor to: receive message data associated with the user; and at a first particular time while the user interacts with the first computing device (10A-N; 100), output a graphical indication of the message data for display; determine, based on contextual information, a corresponding statistical probability that the user interacts with one of a plurality of computing devices (10A-N; 100) including the first computing device (10A-N; 100) and a remote computing device (10A-N; 100); determining, based on the statistical likelihood that the user does not interact with the first computing device (10A-N; 100) at a second particular time; and / or determining, by the first computing device (10A-N; 100), based on the statistical likelihood that the user interacts with the remote computing device (10A-N; 100) at a second particular time, and in response to determining that the second particular time is less than a threshold time period after the first particular time, outputting the notification data for transmission to the remote computing device (10A-N; 100).The first computing device (10A-N; 100) of claim 14, wherein the at least one module (20A-N, 22A-N, 24A-N) is further operable by the at least one processor to output the message data for transmission to the remote computing device (10A-N; 100) in further response to: determining that the user has not viewed the message data at the first computing device (10A-N; 100); and determining that the user is interacting with the remote computing device (10A-N; 100) at the second determined time.The first computing device (10A-N; 100) of claim 14 or 15, wherein the notification data is received by the first computing device (10A-N; 100) at the first determined time and is not received by the remote computing device (10A-N; 100).The first computing device (10A-N; 100) of any of claims 14 to 16, wherein the at least one module (20A-N, 22A-N, 24A-N) is further operable by the at least one processor to output the message data for transmission to the remote computing device (10A-N; 100) at least in response to determining that a priority level of the message data satisfies a priority threshold.The first computing device (10A-N; 100) of any one of claims 14 to 17, comprising means for performing a method according to any one of claims 1 to 13.A computer readable storage medium comprising instructions which, when executed, configure one or more processors of a first computing device (10A-N; 100) to perform a method according to any one of claims 1 to 13.
Citation Information
Patent Citations
Systems and methods for notifying a computing device of a communication addressed to a user based on an activity or presence of the user
US20120136942A1