GENERATING MESSAGING STREAMS WITH ANIMATED OBJECTS
A method for generating a messaging stream where one or more messages are exchanged between a first user and a second user comprises generating a messaging stream where one or more messages are exchanged between a first user and a second user. The method further includes receiving a selection of an animated object from the first user for the messaging stream. The method further includes providing the animated object in the messaging stream. The method further includes receiving a first action from the first user related to the animated object. The method further includes modifying a display of the animated object based on the first action. The method further includes receiving a second action from the second user related to the animated object. The method further includes modifying the display of the animated object based on the second action.
Latest Google Patents:
Current messaging applications allow for non-interactive, one-directional objects in the form of stickers, emojis, photos, GIFs, and sounds. However, these one-directional objects may be considered fleeting because they are limited in applicability. For example, a first user may send an emoji to a second user, who finds the emoji to be funny, but then forgets about the emoji entirely.
The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
SUMMARYImplementations generally relate to a computer-implemented method to generate a messaging stream where one or more messages are exchanged between a first user and a second user. The method may include generating a messaging stream where one or more messages are exchanged between a first user and a second user. The method further includes receiving a selection of an animated object from the first user for the messaging stream. The method further includes providing the animated object in the messaging stream. The method further includes receiving a first action from the first user related to the animated object. The method further includes modifying a display of the animated object based on the first action. The method further includes receiving a second action from the second user related to the animated object. The method further includes modifying the display of the animated object based on the second action.
In some implementations, receiving the first action from the first user includes detecting a change in airflow near a microphone associated with a user device. In some implementations, receiving the first action from the first user includes detecting movement of a finger on a touch screen or detection of movement of a pointing device. In some implementations, receiving the first action from the first user includes detecting movement of a user device based on information received from a sensor associated with the user device. In some implementations, receiving the first action from the first user includes receiving a message from the first user and determining a context from the messaging stream and modifying a display of the animated object based on the first action includes modifying the display of the animated object based on the context from the messaging stream. In some implementations, the first action is pulling the animated object in a first direction and the second action is pulling the animated object in a second direction. In some implementations, the method further comprises displaying the one or more messages within the messaging stream while the animated object remains fixed in a portion of the messaging stream. In some implementations, the first user is a chat bot and the animated object is related to the one or more messages exchanged between the first user and the second user. In some implementations, the display of the animated object is modified based on at least one of a word in the one or more messages, voice content, and a context of the messaging stream. In some implementations, the method further comprises identifying a set of objects to provide as options to the first user based on a type of user device on which the messaging stream is displayed, wherein the animated object is part of the set of objects.
In some implementations, the method includes generating a messaging stream where one or more messages are exchanged between a first user and a second user. The method further includes receiving a selection of an animated object from the first user for the messaging stream. The method further includes causing a version of the animated object to be displayed based on a type of user device on which the animated object is displayed. The method further includes receiving an action from the second user related to the animated object. The method further includes in response to receiving the action, modifying the display of the animated object.
In some implementations, the selection is a first selection and the animated object is a first animated object and the method further comprises providing the second user with a set of animated objects based on their relationship to the first object, receiving a second selection of a second animated object from the set of animated objects, and in response to the receiving the second selection, providing the second object in the messaging stream. In some implementations, the version of the animated object to be displayed based on the type of user device on which the animated object is displayed includes a complicated version for a desktop computer, a simpler version for a mobile device, and a more simple version for a smart watch. In some implementations, the selection is a first selection, the animated object is a first animated object, the action from the second user includes a second selection of a second animated object from the second user for the messaging stream, and modifying the display of the first animated object includes the first animated object interacting with the second animated object.
In some implementations, the method may include means for generating a messaging stream where one or more messages are exchanged between a first user and a second user. The method further includes means for receiving a selection of an animated object from the first user for the messaging stream. The method further includes means for providing the animated object in the messaging stream. The method further includes means for receiving a first action from the first user related to the animated object. The method further includes means for modifying a display of the animated object based on the first action. The method further includes means for receiving a second action from the second user related to the animated object. The method further includes means for modifying the display of the animated object based on the second action.
The various implementations described below provide messaging streams that include interactive animated objects. The animated objects described below may include multimedia features, such as features that can be displayed on a display screen, projected in a virtual reality environment, played back as audio, played back via haptic feedback, or a combination of such modalities. In various implementations, based on user consent, the animated objects react to user input, messages exchanged in the messaging stream, messaging context, and a combination of such factors. Interactive animated objects may provide several advantages. For example, such animated objects may enhance the user experience of using a messaging application that implements the messaging stream, e.g., by enabling users to express themselves in interactive ways, rather than being restricted to sending text, images, or stock items such as animated GIF, stickers, and emoji. Further, in implementations that provide animated objects in messaging streams that include multiple users, the animated objects may be acted upon concurrently, or sequentially, by multiple users. Such interactivity may provide geographically separated users an experience of collaboratively modifying an object. A further benefit is that behaviors of the objects may be customizable by users.
The implementations provided herein efficiently provide interactive animated objects in a messaging stream. For example, the animated objects may be preprogrammed for certain behaviors, e.g., may be configured to respond to various user actions, messaging context, etc. by being modified or displayed in accordance with the user actions or context. In this manner, a technical advantage is that a large or even infinite number of behaviors of animated objects may be provided by a combination of preprogrammed behaviors, without the need to explicitly specify each behavior. This can permit complex animated objects to be stored and displayed with limited computational resources. Animated objects may be downloaded or accessed on demand, e.g., only upon insertion of the animated object in the messaging stream, which reduces storage space required to store the objects. Different versions of an animated object may be provided, as described below, for different user devices. Therefore, devices with limited storage space, network access capacity, and processing power, can still render a suitable version of an animated object. Thus, implementations described below provide animated objects in messaging streams for different types of user devices, without the need for device-specific reconfiguration.
The disclosure is illustrated by way of example, and not by way of limitation in the figures of the accompanying drawings in which like reference numerals are used to refer to similar elements.
In some implementations, a messaging application generates a messaging stream where messages are exchanged between a first user and a second user. The messaging application may receive a selection of an animated object from the first user for the messaging stream. For example, the first user may select an animated bubble to add to the messaging stream. The messaging application may add the animated object to the messaging stream. For example, the first user and the second user may view the animated bubble in the messaging stream.
The messaging application may receive a first action from the first user related to the animated object. For example, the first user may blow into a user device and the user device detects a change in airflow near the microphone. The messaging application may modify a display of the animated object based on the first action. For example, the messaging application may show the bubble as moving upwards based on the user blowing into the user device. The messaging application may receive a second action from the second user related to the animated object. For example, the messaging application may receive indications based on the second user pulling the bubble with a finger on the user device. The messaging application may modify the display of the animated object based on the second action. For example, the messaging application may show the bubble as stretching in the direction corresponding to the movement of the finger and then popping.
Example SystemThe messaging server 101 may include a processor, a memory, and network communication capabilities. In some implementations, the messaging server 101 is a hardware server. The messaging server 101 is communicatively coupled to the network 105 via signal line 102. Signal line 102 may be a wired connection, such as Ethernet, coaxial cable, fiber-optic cable, etc., or a wireless connection, such as Wi-Fi®, Bluetooth®, or other wireless technology. In some implementations, the messaging server 101 sends and receives data to and from one or more of the user devices 115a, 115n and the second server 120 via the network 105. The messaging server 101 may include a messaging application 103a and a database 199.
The messaging application 103a may be code and routines operable to generate a messaging stream that includes an animated object. In some implementations, the messaging application 103a may be implemented using hardware including a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). In some implementations, the messaging application 103a may be implemented using a combination of hardware and software.
The database 199 may store animated objects, messaging streams, etc. For example, the database 199 may store the messages between a first user and a second user. The database 199 may also store social network data associated with users 125, user preferences for the users 125, etc.
The user device 115 may be a computing device that includes a memory and a hardware processor. For example, the user device may include a desktop computer, a mobile device, a tablet computer, a mobile telephone, a wearable device, a head-mounted display, a mobile email device, a portable game player, a portable music player, a reader device, or another electronic device capable of accessing a network 105.
In the illustrated implementation, user device 115a is coupled to the network 105 via signal line 108 and user device 115n is coupled to the network 105 via signal line 110. Signal lines 108 and 110 may be a wired connection, such as Ethernet, coaxial cable, fiber-optic cable, etc., or a wireless connection, such as Wi-Fi®, Bluetooth®, or other wireless technology. User devices 115a, 115n are accessed by users 125a, 125n, respectively. The user devices 115a, 115n in
In some implementations, the user device 115 can be a user device that is included in a wearable device worn by the user 125. For example, the user device 115 is included as part of a clip (e.g., a wristband), part of jewelry, or part of a pair of glasses. In another example, the user device 115 can be a smart watch. The user 125 may view an animated object from the messaging application 103 on a display of the device worn by the user 125. For example, the user 125 may view the animated object on a display of a smart watch or a smart wristband.
In some implementations, messaging application 103b may be stored on a user device 115a. The messaging application 103 may include a thin-client messaging application 103b stored on the user device 115a and a messaging application 103a that is stored on the messaging server 101. For example, the messaging application 103b stored on the user device 115a may display a messaging stream that includes an animated object. The user device 115a may identify a user action from a first user, such as shaking the user device 115a to make snow fall over an animated object of a snowman. The user device 115a may transmit information about the messaging stream and the user action to the messaging application 103a stored on the messaging server 101, which provides the information to a second user that accesses the messaging application 103a from a desktop computer.
The second server 120 may include a processor, a memory, and network communication capabilities. The second server 120 may access the network 105 via signal line 109. The second server 120 may receive information from the messaging application 103 about the messaging stream and provide information to the messaging application 103. For example, the second server 120 may be associated with a bank and the second server 120 may communicate with the messaging application 103 to pay a bill using the bank information. A user 125 may instruct the messaging application 103 to authorize the second server 120 to pay a bill by clicking on an animated object of a bag of money. Once the transaction is complete, the second server 120 may send the messaging application 103 a notification that the transaction is complete. The messaging application 103 may modify the animated object to show the money moving from the money bag to the bank associated with the second server 120. In another example, the second server 120 may include a bot that performs functions for a user 125, such as ordering food, scheduling an appointment, making a reservation, booking a flight, etc. In yet another example, the second server 120 may include a separate application that provides information to the messaging application 103, such as a calendar application that sends, upon user consent, information about the user's meetings.
In the illustrated implementation, the entities of the system 100 are communicatively coupled via a network 105. The network 105 may be a conventional type, wired or wireless, and may have numerous different configurations including a star configuration, token ring configuration or other configurations. Furthermore, the network 105 may include a local area network (LAN), a wide area network (WAN) (e.g., the Internet), and/or other interconnected data paths across which multiple devices may communicate. In some implementations, the network 105 may be a peer-to-peer network. The network 105 may also be coupled to or include portions of a telecommunications network for sending data in a variety of different communication protocols. In some implementations, the network 105 includes Bluetooth® communication networks, WiFi®, or a cellular communications network for sending and receiving data including via short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, email, etc. Although
In situations in which the systems and methods discussed herein may collect or use personal information about users (e.g., user data, information about a user's social network, user's location, user's biometric information, user's activities and demographic information, the messaging server stores and analyzes videos), users are provided with opportunities to control whether information is collected, whether the personal information is stored, whether the personal information is used, whether the videos are analyzed, and how the information about the user is collected, stored, and used. That is, the systems and methods discussed herein collect, store, and/or use user personal information only upon receiving explicit authorization from the relevant users to do so. For example, a user is provided with control over whether programs or features collect user information about that particular user or other users relevant to the program or feature. Each user for which personal information is to be collected is presented with one or more options to allow control over the information collection relevant to that user, to provide permission or authorization as to whether the information is collected and as to which portions of the information are to be collected. For example, users can be provided with one or more such control options over a communication network. In addition, certain data may be treated in one or more ways before it is stored or used so that personally identifiable information is removed. As one example, a user's identity information may be treated, e.g., anonymized, so that no personally identifiable information can be determined from a video. As another example, a user's geographic location may be generalized to a larger region so that the user's particular location cannot be determined.
Example Computing DeviceThe processor 235 includes an arithmetic logic unit, a microprocessor, a general purpose controller or some other processor array to perform computations and provide instructions to a display device. Processor 235 processes data and may include various computing architectures including a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, or an architecture implementing a combination of instruction sets. Although
The memory 237 stores instructions that may be executed by the processor 235 and/or data. The instructions may include code for performing the techniques described herein. The memory 237 may be a dynamic random access memory (DRAM) device, a static RAM, or some other memory device. In some implementations, the memory 237 also includes a non-volatile memory, such as a (SRAM) device or flash memory, or similar permanent storage device and media including a hard disk drive, a compact disc read only memory (CD-ROM) device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device for storing information on a more permanent basis. The memory 237 includes code and routines operable to execute the messaging application 103, which is described in greater detail below. The memory 237 is coupled to the bus 220 for communication with the other components via signal line 224.
The communication unit 239 transmits and receives data to and from at least one of the user device 115 and the messaging server 101 depending upon where the messaging application 103 may be stored. In some implementations, the communication unit 239 includes a port for direct physical connection to the network 105 or to another communication channel. For example, the communication unit 239 includes a universal serial bus (USB), secure digital (SD), category 5 cable (CAT-5) or similar port for wired communication with the user device 115 or the messaging server 101, depending on where the messaging application 103 may be stored. In some implementations, the communication unit 239 includes a wireless transceiver for exchanging data with the user device 115, messaging server 101, or other communication channels using one or more wireless communication methods, including IEEE 802.11, IEEE 802.16, Bluetooth® or another suitable wireless communication method. The communication unit 239 is coupled to the bus 220 for communication with the other components via signal line 226.
In some implementations, the communication unit 239 includes a cellular communications transceiver for sending and receiving data over a cellular communications network including via short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, e-mail or another suitable type of electronic communication. In some implementations, the communication unit 239 includes a wired port and a wireless transceiver. The communication unit 239 also provides other conventional connections to the network 105 for distribution of files and/or media objects using standard network protocols including, but not limited to, user datagram protocol (UDP), TCP/IP, HTTP, HTTP secure (HTTPS), simple mail transfer protocol (SMTP), SPDY, quick UDP internet connections (QUIC), etc.
The display 241 may include hardware operable to display graphical data received from the messaging application 103. For example, the display 241 may render graphics to display an overlay and a resulting composite image. The display 241 is coupled to the bus 220 for communication with the other components via signal line 228.
The speaker 243 may include hardware operable to emit noises. For example, in response to a user performing an action, the action module 206 may instruct the speaker 243 to emit a sound. The speaker is coupled to the buss 220 for communication with the other components via signal line 230.
The sensor 245 may include hardware operable to detect changes to the user device 115. For example, the sensor 245 may include motion sensors that measure movement of the computing device 200. For example, the sensor 245 may include an accelerometer and a gyroscope that detect acceleration forces and rotational forces along the x, y, and z-axes. The sensor 245 may also include position sensors that measure the physical position of the user device 115, such as orientation sensors and magnetometers. The sensor 245 may also include hardware that detects sounds and/or pressure changes, such as a microphone that detects changes in airflow when a user blows on the computing device 200. The sensor 245 is coupled to the bus 220 for communication and with the other components via signal line 232. The sensor 245 may detect contact on a touch screen of the computing device 200. For example, the sensor 245 may detect a user's finger touching the touch screen and movement of the user's finger.
The storage device 247 may be a non-transitory computer-readable storage medium that stores data that provides the functionality described herein. In implementations where the computing device 200 is the messaging server 101, the storage device 247 may include the database 199 in
The messaging application 103 may include a messaging module 202, an animation module 204, an action module 206, and a user interface module 208.
The messaging module 202 generates a messaging stream. In some implementations, the messaging module 202 includes a set of instructions executable by the processor 235 to generate the messaging stream. In some implementations, the messaging module 202 is stored in the memory 237 of the computing device 200 and can be accessible and executable by the processor 235.
In some implementations, the messaging module 202 generates a messaging stream that includes data sent to and from users and chat bots, for example, by sending data to a user device 115, a messaging server 101, and/or a second server 120. The messaging stream may include one or more messages where the messages have certain characteristics, such as a sender; a recipient; and message content including text, an animated object, images, video, and message metadata. The message metadata may include a timestamp, an originating device identifier, an expiration time, a retention time, various formats and effects applied, etc. In some implementations, the messaging stream includes a displayed messaging stream that includes messages displayed in chronological order within a user interface with various formats and effects applied.
The messaging stream may be used as part of different messaging platforms, such as part of an instant messaging application, a short-message service (SMS), an email application, an enhanced-message service (EMS), a multimedia-message service (MMS), push messaging (e.g., HDML, WAP push, etc.), application-to-application messaging, etc. The messages may be available for a limited amount of time, archived for an indeterminate time, etc. The messages may be encrypted. In some implementations, the messaging module 202 generates messages that are independent of the animated objects and inaccessible to the animated objects. In some implementations, the messages are available to the animated objects and are used to modify the display of the animated objects, for example, when an animated object appears to react to content in a message.
In some implementations, the messaging module 202 instructs the user interface module 208 to generate a user interface that includes the messaging stream. The user interface may include fields for entering text, videos, images, emojis, etc. The messaging module 202 receives messages between users and instructs the user interface module 208 to display the messages in the messaging stream. For example, user 125a enters text via the user interface that says “Hey Carl!” The messaging module 202 on the user device 115a transmits the message to user 125n and the message is displayed on the user device 115n. In some implementations, the message is transmitted from the user device 115a to the messaging server 101, which transmits the message to the user device 115n.
The animation module 204 generates animated objects. In some implementations, the animation module 204 includes a set of instructions executable by the processor 235 to generate the animated object. In some implementations, the animation module 204 is stored in the memory 237 of the computing device 200 and can be accessible and executable by the processor 235.
In some implementations, the animation module 204 generates a group of animated objects. The animated objects may include cartoons; caricatures of people (famous people, avatars, generic people, etc.), animals (e.g., a bear), inanimate objects (e.g., a cookie); abstract moving objects (e.g., a swirling pattern with eyes and a mouth); etc.
The animation module 204 may instruct the user interface module 208 to provide the group of animated in a user interface. The animation module 204 may organize the group of animated objects according to type and instruct the user interface module 208 to display an organized group of animated objects from which the user may select an animated object.
In some implementations, the animation module 204 may instruct the user interface module 208 to display options for customizing an animated object. For example, the user interface may include options for selecting a color or a size of an animated object. In some implementations, the options for customizing the animated object may be specific to the type of animated object. For example, the user interface may include an option to select an eye color for animated objects that have eyes. In some implementations, the user interface may include options for limiting the amount of information and/or actions available to the animated object. For example, the user interface may include options for disabling certain behaviors, such as nodding or producing a sound. In another example, the user interface may include options for disabling certain types of actions based on privacy concerns, such as disabling context-based animations that react based on words in the messages, while retaining animations that are in response to explicit user input, such as a user shaking the computing device 200.
In some implementations, the animation module 204 may instruct the user interface module 208 to provide a group of animated objects that are different depending on the type of computing device 200 being used to select an animated object. For example, where the computing device 200 is a smart watch, the group may include a subset of the animated objects that may be appropriate for the display on the smart watch. In some implementations, the group of animated objects may include different versions that are used for different devices. An animated object may include a complicated version for a desktop computer, a simpler version for a mobile device, and a more simple version for a smart watch. For example, an animated object on the desktop may include a cartoon of a man with a background scene, the animated object on the mobile device may include the cartoon of the man, and the animated object on the smart watch may include a cartoon of the man's face.
In some implementations, the animation module 204 may instruct a computing device 200 to provide different attributes of the animated object based on the type of computing device 200. For example, for a single animated object, the animation module 204 may instruct a computing device 200 that corresponds to a smart watch to provide vibrations and/or a sound, a computing device 200 that corresponds to a mobile device to provide a visual display, and a computing device 200 that corresponds to virtual reality goggles to provide a three-dimensional rendition of the user interface. The three-dimensional rendition may including placing the animated object at different depths in the user interface.
The animation module 204 receives a selection of an animated object from a user. The animation module 204 generates the animated object and instructions the user interface module 208 to display the animated object in the messaging stream. The user interface module 208 may display the animated object in different parts of the messaging stream. For example, the user interface module 208 may display the animated object at the top of the user interface, at the bottom of the user interface or in the middle of the user interface. In another example, the user interface module 208 may display the one or more messages within the messaging stream while the animated object remains fixed in a portion of the messaging stream. In yet another example, the user interface module 208 may display the animated object according to a time that the first user selected the animated object so that the animated object is located after content that was provided before the animated object was selected and before content that is provided after the animated object was selected. In yet another example, the user interface module 208 may display the animated object in random locations. The user interface module 208 may also change the location of the animated object based on actions performed by a user, as described in greater detail below.
The user interface module 208 displays the animated object within the user interface for each person that is viewing the same messaging stream. For example, the messaging stream may be viewed by a single user that is making notes for himself, the messaging stream may be viewed by a first user and a second user, or the messaging stream may be viewed by a group of users. In some implementations, the user interface module 208 places the animated object in different locations based on characteristics associated with different users. For example, a first user may provide user input that the first user prefers to see the animated object at the bottom right-hand part of the screen. In another example, the animated object may be located in the center of the messaging stream for users from a group that interact with the animated object and at the top left of the messaging stream for users that have not interacted with the animated object. In some implementations, the animated object is displayed differently depending on the position of the animated object in the messaging stream and/or the time the animated object has been displayed and/or how long since a user action associated with the animated object occurred.
In some implementations, the animated object may look different to multiple users that are viewing the same messaging stream based on metadata associated with each of the users. The metadata may include a time of day associated with a user device, a location associated with a user device, a time zone associated with a user device, user preferences associated with a user, etc. The animation module 204 may obtain information from the sensor 245 to determine information from the metadata. For example, the animation module 204 may determine the user's location, if the user has contented to such a determination by the animation module 204, based on a sensor 245 that provides global positioning system (GPS) information. The animation module 204 may modify an animated object based on the metadata. For example, where the animated object is an animation of a person, the person may wear shorts if the user is located in an area with warm weather, a jacket if the user is located in an area with cold weather, etc. The animation module 204 may display the animation of the person with different clothing or different behavior based on the time of day of the user. For example, the animation module 204 may display the animation of the person in pajamas and the animation may fall asleep if the time of day of the user is at night. In some implementations, upon consent of the user, the animation module 204 may modify the animated object based on user data. For example, the animation module 204 may instruct the user interface module 208 to display the animated object with an alarm that goes off when the user has configured an alarm on the computing device 200, the animated object may display a countdown associated with a timer that the user configured on the computing device 200, the animated object may display an upcoming calendar event based on a calendar entry based on information associated with the second server 120, etc.
In some implementations, the animation module 204 instructs the user interface module 208 to provide the second user with set of animated objects based on their relationships to the first animated object. For example, where the first animated object conveys a message, such as “I'll be home soon,” the set of animated objects may include responses to the message. The user interface module 208 may replace a first animated object with the second animated object or the second animated object may be displayed in the same messaging stream as the first animated object. In some implementations, the first animated object and the second animated object interact with each other.
The action module 206 modifies the animated object based on a user action. In some implementations, the action module 206 includes a set of instructions executable by the processor 235 to modify the animated object. For example, the action module 206 may program the animated object (e.g., the animated object may include stored code or a prerecorded animation) to react to the user action. In some implementations, the action module 206 is stored in the memory 237 of the computing device 200 and can be accessible and executable by the processor 235.
The action module 206 receives a first action from a first user related to the animated object. The action module 206 determines a type of action that occurred and instructs the user interface module 208 to modify a display of the animated object based on the action. For example, when the first user taps on an animated object, the action module 206 instructs the user interface module 208 to display hearts coming off of the animated object. In some implementations, the users that view the same messaging stream will see the hearts coming off of the animated object. The action module 206 receives a second action from a second user related to the animated object. For example, the second user makes a swiping motion, which the action module 206 detects. The action module 206 instructs the user interface module 208 to modify the display based on the second action. Continuing with the example above, the action module 206 instructs the user interface module 208 to display the animated objects as grabbing the hearts with the animated object's mouth.
The actions may include taps, swipes, making noise, changing pressure, moving a pointing device (e.g., a mouse moving an arrow), moving the computing device 200, capturing an image, providing a message with a context, providing a message with a word in the message, providing voice content, selecting options provided by the user interface, selecting another animated object, etc.
Turning to
The animated cookie 303 may follow the location of the cursor 311 with the same speed of movement as the cursor 311. For example, if the cursor 311 moves up and down quickly, the animated cookie 303 may include eyes that are animated to look up and down as quickly as the cursor 311. In some implementations, moving the cursor 311 a particular speed could cause the animated object to react. In this example, moving the cursor 311 around the animated cookie 303 several times may cause the animated cookie 303 to look dizzy, for example, by depicting stars floating around the animated cookie 303.
The second user moves the cursor 311 to the animated cookie 303 in order to move the animated cookie. In this example, the user interface module 208 also includes informative text below the second icon 321 to inform the users that the second user is moving the animated cookie 303.
In some implementations, the action from the user includes the user blowing on a computing device 200. For example, the user could blow on a mobile device or blow while wearing a headset. The sensor 245 may include a microphone that detects a change in airflow and transmits information about the change in airflow to the action module 206. The action module 206 may determine a degree of the change in airflow and the action module 206 instructs the user interface module 208 to move the animated object based on the degree of the change in airflow. For example, the animated object may be a box of tissues and blowing on the computing device 200 causes the tissues to move out of the box of tissues. If the user blows slightly on the computing device 200, it causes a few of the tissues from the box of tissues to come out of the box. If the user blows hard on the computing device 200, it causes several of the tissues from the box of tissues to come out of the box. In another example, the animated object is a character, such as a cartoon fox, and blowing on the computing device 200 causes the fox to hang on to the side of the messaging stream window and hold on. In yet another example, the animated object is a bubble and blowing on the computing device 200 makes the bubble increase in size corresponding to the extent of the first user blowing on the computing device 200.
In some implementations, the action from the user includes moving the computing device 200. The action module 206 may receive information from a sensor 245 (e.g., an accelerometer or a gyroscope) and determine a degree of the movement. The action module 206 may instruct the user interface module 208 to illustrate the animated object with additional changes. For example, the user shaking the user's smart watch or other mobile device causes the action module 206 to instruct the user interface module 208 to illustrate items moving, such as snow falling from the sky, nuts and bolts coming loose, a character's hair becoming disarrayed, the character shaking a fist at a user, etc. In another example, when the user moves the computing device 200 to the user's ear, the action module 206 may receive information from the sensor 245 indicating that the user moved the computing device 200 to the user's ear and instruct the speaker 243 to emit a noise. In some examples, the animated object emits a different noise depending on how the computing device 200 is moved, such as a yip if the user moves the computing device 200 to the user's left ear and a bark if the user moves the computing device 200 to the user's right ear.
Turning to
In another example, the action module 206, upon user consent, may identify that Karen responded to Steve with “We'll fight them off!” The action module 206 determines that fight is an instruction associated with the animated bear 430 and instructs the user interface module 206 to modify the display of the animated bear 430 to show the animated bear 430 initially fighting and then falling upside down.
In some implementations, the action from the user includes movement within the messaging stream. The movement may be the user touching a touch screen of a mobile device or movement of a pointing device, such as a mouse. The animated object may be a character with eyes (e.g., a smiley face). The action module 206 may receive information about the movement from the sensor 245 (e.g. a touch screen), and determine the direction of the movement. The action module 206 instructs the user interface module 208 to move the eyes of the animated object to correspond to the direction of the movement from the first user. In another example, the movement may stretch the animated object.
Turning to
In some implementations, when participant users in the messaging stream consent to such use of messages, the action module 206 identifies a word in a message or a context of the messaging stream. The action module 206 may compare words in a message to a list of words associated with different meanings, such as different emotions (e.g., happy, sad, angry, etc.), different states (e.g., about to end the chat), etc. The action module 206 may use machine learning to predict a meaning associated with a user based on the message where the machine learning may be based on all messages available to the action module 206 or, subject to user content, the messages associated with a particular user. The context of the messaging stream may be based on user patterns, a time of day, a location of the computing device 200, etc. and is determined only upon specific user consent to access such data. For example, where a user typically ends a messaging stream at the end of a workday. As a result, the action module 206 may instruct the user interface module 208 to modify a display of the animated object based on the context.
In some implementations, the action module 206 may, responsive to user content, identify voice content from the user. The action module 206 may convert the speech to text and identify an indent of the voice content. For example, the action module 206 may identify the user providing verbal instructions for an abstract animated object that includes “Jump around.” Based on the verbal content, the action module 206 instructs the user interface to modify the display of the abstract animated object to show it moving up and down.
In some implementations, a first user may be a chat bot (e.g., an automated chat program) that provides services to a user. The animated object may be related to one or more messages exchanges between the chat bot and the user. For example, the user may instruct the chat bot to make a reservation, a purchase, etc. by entering a message. The action module 206 may, upon user consent, instruct the user interface module 208 to modify the animated object based on the message. For example, if the user instructs the chat bot to make a reservation, the animated object includes a graphic associated with making a reservation.
Turning to
In some implementations, various examples described above may be combined. For example, a messaging stream may include multiple users and a chat bot. The action module 206 may detect a movement of a user on the computing device 200 and instruct the user interface module 208 to modify a display of the animated object based on messages related to the chat bot and the movement of the user.
Turning to
In some implementations, the action may include a second user selecting a second animated object. The second animated object may be from a subset of animated objects based on its relationship to a first animated object. The second animated object may be selected from a group of all animated objects. In some implementations, the user interface module 208 modifies a display by showing the first animated object interacting with the second animated object. For example, the first animated object may be a fox with boxing gloves and the second animated object may be a kangaroo with boxing globes. The user interface module 208 may display the two animated objects fighting with each other. In some implementations, the first user may control the first animated object and the second user may control the second animated object such that the first and second user engage in a boxing match using the two animated objects.
In some implementations where multiple animated objects are displayed in the messaging stream, the animated objects react differently depending on how they were added to the messaging stream. Two animated objects may react differently depending on their proximity to each other and a length of time, such that animated objects that are close to each other react to each other more than animated objects that are far away from each other. For example, when two animated people are next to each other they look at each other and touch each other. When the two animated people are at opposite sides of the messaging stream, they wave every two minutes but otherwise do not interact.
The user interface module 208 generates a user interface. In some implementations, the user interface module 208 includes a set of instructions executable by the processor 235 to generate the user interface. In some implementations, the user interface module 208 is stored in the memory 237 of the computing device 200 and can be accessible and executable by the processor 235.
In some implementations, the user interface module 208 receives instructions from the animation module 204 to generate a user interface that includes a messaging stream. The user interface may include a group of animated objects for a first user to choose from. The user interface module 208 may receive a selection from the first user of one of the animated objects. The user interface module 208 displays the animated object in the messaging stream.
The user interface module 208 receives instructions from the action module 206 to modifying a display of the animated object based on a first action from the first user. For example, the user interface module 208 receives instructions to modify an animated object of marbles to show them rolling around the messaging stream based on movement of a computing device associated with the first user. The user interface module 208 receives instructions from the action module 206 to modify the display of the animated object based on a second action from a second user. For example, the user interface module 208 receives instructions to show the marbles bouncing in the messaging stream based on the second user touching a computing device 200 associated with the second user to simulate the marbles bouncing within the messaging stream.
In some implementations, the user interface module 208 provides a user interface that includes interactive features to change the appearance of the animated object. For example, the user interface module 208 provides a user interface that provides a scratchpad for drawing. The scratchpad may include a toolkit with various tools for drawing such as a pencil, a paintbrush, color options, etc. In another example, the user interface module 208 provides a user interface that includes an interactive keyboard for producing music, beeps, tones, etc. When a user touches a key on the keyboard, the action module 206 detect the touch and instructs the speaker 243 to emit a beep, tone, etc. In yet another example, the user interface module 208 provides a user interface that includes interactive graphics, such as charts, timelines, etc. where the user has options for changing the appearance of the interactive graphics.
At block 902, a messaging stream is generated where one or more messages are exchanged between a first user and a second user. For example, the first user and the second user send messages to each other using an instant messaging platform, via text, via SMS, etc. At block 904, a selection is received of an animated object from the first user for the messaging stream. For example, the first user selects the animated object from a group of animated objects that are displayed for the first user's device. For example, the animated object is an animated version of a flamingo. The user may customize the animated object by choosing a color for the animated object, a style of eyes for the animated object, etc. At block 906, the animated object is provided in the messaging stream. For example, the user interface module 208 displays the animated object in a default location, such as the center of the user interface.
At block 908, a first action is received from the first user related to the animated object. For example, the action module 206 detects the first user blowing into a sensor 245, such as a microphone, of the computing device 200. At block 910, a display of the animated object is modified based on the first action. For example, based on the first user blowing into the computing device 200, the user interface module 208 modifies the display of the animated object to show the flamingo blowing around in the wind with his feathers flying.
At block 912, a second action is received from the second user related to the animated object. For example, the second user shakes the second user's computing device 200. At block 914, the display of the animated object is modified based on the second action. For example, the display is modified to show the flamingo bouncing up and down with movement corresponding to the shaking of the second user's computing device 200.
In the above description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the specification. It will be apparent, however, to one skilled in the art that the disclosure can be practiced without these specific details. In some instances, structures and devices are shown in block diagram form in order to avoid obscuring the description. For example, the implementations can be described above primarily with reference to user interfaces and particular hardware. However, the implementations can apply to any type of computing device that can receive data and commands, and any peripheral devices providing services.
Reference in the specification to “some implementations” or “some instances” means that a particular feature, structure, or characteristic described in connection with the implementations or instances can be included in at least one implementation of the description. The appearances of the phrase “in some implementations” in various places in the specification are not necessarily all referring to the same implementations.
Some portions of the detailed descriptions above are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic data capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these data as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms including “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission, or display devices.
The implementations of the specification can also relate to a processor for performing one or more steps of the methods described above. The processor may be a special-purpose processor selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a non-transitory computer-readable storage medium, including, but not limited to, any type of disk including optical disks, ROMs, CD-ROMs, magnetic disks, RAMs, EPROMs, EEPROMs, magnetic or optical cards, flash memories including USB keys with non-volatile memory, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
The specification can take the form of some entirely hardware implementations, some entirely software implementations or some implementations containing both hardware and software elements. In some implementations, the specification is implemented in software, which includes, but is not limited to, firmware, resident software, microcode, etc.
Furthermore, the description can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer-readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
A data processing system suitable for storing or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
In situations in which the systems discussed above collect or use personal information, the systems provide users with an opportunity to control whether programs or features collect user information (e.g., information about a user's social network, social actions or activities, profession, a user's preferences, or a user's current location), or control whether and/or how to receive content from the server that may be more relevant to the user. In addition, certain data may be treated in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, a user's identity may be treated so that no personally identifiable information can be determined for the user, 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 location of a user cannot be determined. Thus, the user may have control over how information is collected about the user and used by the server.
Claims
1. A computer-implemented method comprising:
- generating a messaging stream where one or more messages are exchanged between a first user and a second user;
- receiving a selection of an animated object from the first user for the messaging stream;
- providing the animated object in the messaging stream;
- receiving a first action from the first user related to the animated object;
- modifying a display of the animated object based on the first action;
- receiving a second action from the second user related to the animated object; and
- modifying the display of the animated object based on the second action.
2. The method of claim 1, wherein receiving the first action from the first user includes detecting a change in airflow near a microphone associated with a user device.
3. The method of claim 1, wherein receiving the first action from the first user includes detecting movement of a finger on a touch screen or detection of movement of a pointing device.
4. The method of claim 1, wherein receiving the first action from the first user includes detecting movement of a user device based on information received from a sensor associated with the user device.
5. The method of claim 1, wherein:
- receiving the first action from the first user includes receiving a message from the first user and determining a context from the messaging stream; and
- modifying the display of the animated object based on the first action includes modifying the display of the animated object based on the context from the messaging stream.
6. The method of claim 1, wherein the first action is pulling the animated object in a first direction and the second action is pulling the animated object in a second direction.
7. The method of claim 1, further comprising:
- displaying the one or more messages within the messaging stream while the animated object remains fixed in a portion of the messaging stream.
8. The method of claim 1, wherein the first user is a chat bot and the animated object is related to the one or more messages exchanged between the first user and the second user.
9. The method of claim 1, wherein the display of the animated object is modified based on at least one of a word in the one or more messages, voice content, and a context of the messaging stream.
10. The method of claim 1, further comprising:
- identifying a set of objects to provide as options to the first user based on a type of user device on which the messaging stream is displayed, wherein the animated object is part of the set of objects.
11. A non-transitory computer readable medium with instructions stored thereon that, when executed by one or more computers, cause the one or more computers to perform operations, the operations comprising:
- generating a messaging stream where one or more messages are exchanged between a first user and a second user;
- receiving a selection of an animated object from the first user for the messaging stream;
- causing a version of the animated object to be displayed based on a type of user device on which the animated object is displayed;
- receiving an action from the second user related to the animated object; and
- in response to receiving the action, modifying the display of the animated object.
12. The computer storage medium of claim 11, wherein the selection is a first selection and the animated object is a first animated object and further comprising:
- providing the second user with a set of animated objects based on their relationship to the first object;
- receiving a second selection of a second animated object from the set of animated objects; and
- in response to the receiving the second selection, providing the second object in the messaging stream.
13. The computer storage medium of claim 11, wherein the version of the animated object to be displayed based on the type of user device on which the animated object is displayed includes a complicated version for a desktop computer, a simpler version for a mobile device, and a more simple version for a smart watch.
14. The computer storage medium of claim 11, wherein receiving the action from the second user includes detecting a change in airflow near a microphone associated with a user device.
15. The computer storage medium of claim 11, wherein:
- the selection is a first selection;
- the animated object is a first animated object;
- the action from the second user includes a second selection of a second animated object from the second user for the messaging stream; and
- modifying the display of the first animated object includes the first animated object interacting with the second animated object.
16. A system comprising:
- one or more processors; and
- a memory that stores instructions executed by the one or more processors, the instructions comprising: generating a messaging stream where one or more messages are exchanged between a first user and a second user; receiving a selection of an animated object from the first user for the messaging stream; providing the animated object in the messaging stream; receiving a first action from the first user related to the animated object; modifying a display of the animated object based on the first action; receiving a second action from the second user related to the animated object; and modifying the display of the animated object based on the second action.
17. The system of claim 16, wherein receiving the first action from the first user includes detecting a change in airflow near a microphone associated with a user device.
18. The system of claim 16, wherein receiving the first action from the first user includes detecting movement of a finger on a touch screen or detection of movement of a pointing device.
19. The system of claim 16, wherein receiving the first action from the first user includes detecting movement of a user device based on information received from a sensor associated with the user device.
20. The system of claim 16, wherein:
- receiving the first action from the first user includes receiving a message from the first user and determining a context from the messaging stream; and
- modifying the display of the animated object based on the first action includes modifying the display of the animated object based on the context from the messaging stream.
Type: Application
Filed: Jan 4, 2017
Publication Date: Jul 5, 2018
Applicant: Google Inc. (Mountain View, CA)
Inventors: Thanh TRAN (Mountain View, CA), Eric WILCOX (San Francisco, CA)
Application Number: 15/398,497