System for displaying user path
By implementing the location sharing function in social media platforms, accessing user profile data and displaying the trajectory of location sequences on the map, the problem of difficulty in displaying user routes in the prior art is solved, and a more detailed geographical information sharing and interactive experience is achieved. .
Patent Information
- Application Number
- CN202380049447.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-01-12
- Filing Date
- 2023-06-28
- Publication Date
- 2025-02-11
AI Technical Summary
Existing social media platforms have difficulty effectively displaying user route information over a period of time, especially if the geolocation service is not activated or does not support mobile devices.
By implementing the location sharing function in the system, accessing user profile data to identify location sequences, and displaying the trajectories of these location sequences on the map, the problem of user route information display is solved.
It realizes effective display of user routes, enhances users' interactive experience on social media platforms, and provides more detailed geographic information sharing functions.
Smart Images

Figure CN119422036A_ABST
Abstract
Description
[0001] Priority claim
[0002] This patent application claims priority to U.S. patent application No. 18 / 096,357, filed on January 12, 2023, which claims the benefit of U.S. Provisional Patent Application No. 63 / 367,164, entitled “SYSTEM TO DISPLAY USER PATH,” filed on June 28, 2022, which are incorporated herein by reference in their entirety. Background Art
[0003] Social media applications implement computer-mediated technologies that allow the creation and sharing of content that conveys information, ideas, professional interests, and other forms of expression via virtual communities and networks. Social media platforms use web-based technologies, desktop computers, and mobile technologies (e.g., smartphones and tablet computers) to create highly interactive platforms through which individuals, communities, and organizations can share, co-create, discuss, and modify user-generated content or pre-made content posted online.
[0004] Mobile electronic devices on which end-user social media applications can be executed typically provide geolocation services for determining the geographic location of the mobile electronic device through an extension that indicates the geographic location of the associated user. Social media content posted by a user is typically geotagged based on the geographic location of a mobile electronic device (such as a mobile phone) that is used to capture the social media content and / or post it to a social media platform. In other embodiments, social media content can be explicitly geotagged by a user using a computer device that does not have a geolocation service activated and / or is not a mobile device (such as a desktop PC). BRIEF DESCRIPTION OF THE DRAWINGS
[0005] In the accompanying drawings (which are not necessarily drawn to scale), like numbers may describe similar components in different views. To easily identify the discussion of any particular element or action, the most significant digit or digits in the reference numerals refer to the figure number in which the element is first introduced. Some embodiments are shown by way of example and not limitation in the accompanying drawings, in which:
[0006] Figure 1 is a diagrammatic representation of a networked environment in which the present disclosure may be deployed, according to some examples.
[0007] Figure 2 is a diagrammatic representation of a messaging system having both client-side and server-side functionality according to some examples.
[0008] Figure 3 is a flow chart depicting a method for presenting a user route according to one embodiment.
[0009] Figure 4 is a flow chart depicting a method for presenting a user route according to one embodiment.
[0010] Figure 5 is a flow chart depicting a method for presenting a user route according to one embodiment.
[0011] Figure 6 is a flow chart depicting a method for presenting a user route according to one embodiment.
[0012] Figure 7 is a flow chart depicting a method for presenting a user route according to one embodiment.
[0013] Figure 8 is an interface diagram depicting presentation of a user route according to one embodiment.
[0014] Fig. 9 is an interface diagram depicting presentation of a user route according to one embodiment.
[0015] Fig.10 is a diagrammatic representation of a machine in the form of a computer system according to some examples within which a set of instructions may be executed for causing the machine to perform any one or more of the methodologies discussed herein.
[0016] Fig.11 is a block diagram illustrating a software architecture in which examples may be implemented.
[0017] Fig.12 is a diagrammatic representation of a processing environment according to some examples. DETAILED DESCRIPTION
[0018] As described above, the mobile electronic device can provide a geolocation service for determining the geographic location of the mobile electronic device by indicating an extension of the geographic location of the associated user. Users of the social media platform may choose to share their location with other users within the social media platform. According to certain example embodiments, a system for displaying a user's route over a period of time is configured to perform operations including: causing a map image depicting a location to be displayed; accessing user profile data associated with a user profile, the user profile data including a user identifier and location data associated with the user profile; identifying a sequence of locations associated with the user profile based on the user profile data; and causing a presentation of a trajectory indicating a sequence of locations associated with the user profile, the trajectory terminating at the display of the user identifier.
[0019] According to certain example embodiments, accessing user profile data associated with a user profile may include the following operations: receiving input selecting a user identifier associated with the user profile; and accessing the user profile data in response to the input. For example, in some embodiments, the system may display a user identifier associated with a social network connection of a user of the client device at a location within a map image presented at the client device. The user of the client device may provide input for selecting a user identifier, and in response, the system may access the user profile data associated with the user profile identified by the user identifier to generate a location sequence and display a presentation of the location sequence.
[0020] According to certain example embodiments, a system may identify locations to be included in a sequence of locations based on the locations in the sequence of locations being at least a threshold distance from each other. For example, the sequence of locations may include at least a first location and a second location. The system may identify the first location and the second location in the location data. Upon determining that the second location is at a threshold distance from the first location, the second location may be included in the sequence of locations to be presented within the map image.
[0021] In some embodiments, the location data associated with the user profile may include associated permissions, wherein the permissions determine whether a location can be presented to other users. For example, a user of a client device may request to display a path (i.e., a sequence of locations) associated with a selected user account. In response to the request, the system may access user profile data including location data associated with the selected user account to identify one or more locations. The system may also determine permissions associated with the user with respect to the location data. For example, one or more locations in the sequence of locations may be unavailable due to lack of permissions. Therefore, the system may then display a sequence of locations associated with the selected user account that the user of the client device is allowed to access.
[0022] Networked computing environment
[0023] Figure 1 1 is a block diagram illustrating an example messaging system 100 for exchanging data (e.g., messages and associated content) over a network. The messaging system 100 includes multiple instances of client devices 106, each of the multiple instances hosting multiple applications including a messaging client 108. Each messaging client 108 is communicatively coupled to other instances of the messaging client 108 and a messaging server system 104 via a network 102 (e.g., the Internet).
[0024] The messaging client 108 is able to communicate and exchange data with another messaging client 108 and a messaging server system 104 via the network 102. The data exchanged between the messaging clients 108 and between the messaging clients 108 and the messaging server system 104 includes functions (e.g., commands for activating functions) and payload data (e.g., text, audio, video, or other multimedia data).
[0025] The messaging server system 104 provides server-side functionality to specific messaging clients 108 via the network 102. Although certain functions of the messaging system 100 are described herein as being performed by the messaging client 108 or by the messaging server system 104, the location of certain functions within the messaging client 108 or within the messaging server system 104 may be a design choice. For example, it may be technically preferred to initially deploy certain technologies and functions within the messaging server system 104, but later migrate the technologies and functions to the messaging client 108 where the client device 106 has sufficient processing power.
[0026] The messaging server system 104 supports various services and operations provided to the messaging clients 108. Such operations include sending data to the messaging clients 108, receiving data from the messaging clients 108, and processing data generated by the messaging clients 108. As examples, the data may include message content, client device information, geographic location information, media enhancements and overlays, message content persistence conditions, social network information, and live event information. The data exchange within the messaging system 100 is activated and controlled by functions available via the user interface (UI) of the messaging client 108.
[0027] Turning now specifically to the messaging server system 104, an application program interface (API) server 112 is coupled to the application server 110 and provides a programming interface to the application server 110. The application server 110 is communicatively coupled to a database server 116, which facilitates access to a database 122 that stores data associated with messages processed by the application server 110. Similarly, a web server 124 is coupled to the application server 110 and provides a web-based interface to the application server 110. To this end, the web server 124 processes incoming network requests via the hypertext transfer protocol (HTTP) and several other related protocols. In some embodiments, the database 122 may include a decentralized database.
[0028] The application program interface (API) server 112 receives and sends message data (e.g., commands and message payloads) between the client device 106 and the application server 110. Specifically, the application program interface (API) server 112 provides a set of interfaces (e.g., routines and protocols) that can be called or queried by the messaging client 108 to activate the functions of the application server 110. An application program interface (API) server 112 exposes various functions supported by application server 110, including: account registration; login functionality; sending messages from a particular messaging client 108 to another messaging client 108 via application server 110; sending media files (e.g., images or videos) from a messaging client 108 to messaging server 114 and for possible access by another messaging client 108; setting up a collection of media data (e.g., a story); retrieving a friend list of a user of client device 106; retrieving such a collection; retrieving messages and content; adding and removing entities (e.g., friends) from an entity graph (e.g., a social graph); locating friends in a social graph; and opening application events (e.g., related to messaging client 108).
[0029] The application server 110 hosts multiple server applications and subsystems, including, for example, a messaging server 114, an image processing server 118, and a social network server 120. The messaging server 114 implements multiple message processing technologies and functions, particularly those related to the aggregation and other processing of content (e.g., text and multimedia content) included in messages received from multiple instances of the messaging client 108. As will be described in further detail, text and media content from multiple sources can be aggregated into collections of content (e.g., called stories or galleries). These collections are then made available to the messaging client 108. In view of the hardware requirements for other processor and memory intensive processing of data, such processing can also be performed on the server side by the messaging server 114.
[0030] The application server 110 also includes an image processing server 118 that is dedicated to performing various image processing operations, typically on images or videos within the payload of messages sent from or received at the messaging server 114 .
[0031] The social network server 120 supports various social networking functions and services and makes them available to the messaging server 114. Examples of functions and services supported by the social network server 120 include identifying other users with whom a particular user of the messaging system 100 has relationships or that the particular user is "following," and also includes identifying interests and other entities of a particular user.
[0032] System Architecture
[0033] Figure 2 1 is a block diagram showing additional details about the messaging system 100 according to some examples. Specifically, the messaging system 100 is shown to include a messaging client 108 and an application server 110. The messaging system 100 contains a number of subsystems that are supported on the client side by the messaging client 108 and on the server side by the application server 110. These subsystems include, for example, a transient timer system 202, a collection management system 204, an enhancement system 206, a mapping system 210, a gaming system 212, and a location sharing system 214.
[0034] The transient timer system 202 is responsible for implementing temporary or time-limited access to content by the messaging client 108 and the messaging server 114. The transient timer system 202 includes a plurality of timers that selectively enable acquisition of messages and associated content (e.g., for presentation and display) via the messaging client 108 based on duration and display parameters associated with a message or a collection of messages (e.g., a story). Additional details regarding the operation of the transient timer system 202 are provided below.
[0035] The collection management system 204 is responsible for managing collections or collections of media (e.g., collections of text, image video, and audio data). Collections of content (e.g., messages, including images, videos, text, and audio) can be organized into "event galleries" or "event stories." Such collections can be available for a specified period of time (e.g., the duration of an event related to the content). For example, content related to a concert can be made available as a "story" for the duration of the concert. The collection management system 204 can also be responsible for publishing an icon that provides notification of the existence of a particular collection to the user interface of the messaging client 108.
[0036] In addition, the collection management system 204 also includes a curation interface 208, which allows collection managers to manage and curate specific content collections. For example, the curation interface 208 enables an event organizer to curate a collection of content related to a specific event (e.g., to delete inappropriate content or redundant messages). In addition, the collection management system 204 uses machine vision (or image recognition technology) and content rules to automatically curate content collections. In some examples, compensation can be paid to users for including user-generated content in a collection. In such a case, the collection management system 204 operates to automatically pay such users for using their content.
[0037] The enhancement system 206 provides various functions that enable users to enhance (e.g., annotate or otherwise modify or edit) media content associated with a message. For example, the enhancement system 206 provides functions related to generating and publishing media overlays for messages processed by the messaging system 100. The enhancement system 206 is operable to provide media overlays or enhancements (e.g., image filters) to the messaging client 108 based on the geographic location of the client device 106. In another example, the enhancement system 206 is operable to provide media overlays to the messaging client 108 based on other information such as social network information of the user of the client device 106. The media overlay can include audio and visual content and visual effects. Examples of audio and visual content include pictures, text, logos, animations, and sound effects. Examples of visual effects include color overlays. Audio and visual content or visual effects can be applied to media content items (e.g., photos) at the client device 106. For example, the media overlay can include text or images that can be superimposed on photos taken by the client device 106. In another example, the media overlay includes a location identification overlay (e.g., Venice Beach), the name of a live event, or a business name overlay (e.g., Beach Cafe). In another example, the augmentation system 206 uses the geographic location of the client device 106 to identify a media overlay that includes the name of a business at the geographic location of the client device 106. The media overlay may include other tags associated with the business. The media overlay may be stored in the database 122 and accessed through the database server 116.
[0038] In some examples, the enhancement system 206 provides a user-based publishing platform that enables a user to select a geographic location on a map and upload content associated with the selected geographic location. The user can also specify the circumstances in which a particular media overlay should be provided to other users. The enhancement system 206 generates a media overlay that includes the uploaded content and associates the uploaded content with the selected geographic location.
[0039] In other examples, the enhancement system 206 provides a merchant-based publishing platform that enables merchants to select specific media overlays associated with geographic locations via a bidding process. For example, the enhancement system 206 associates the highest bidding merchant's media overlay with the corresponding geographic location for a predefined amount of time.
[0040] The mapping system 210 provides various geolocation functions and supports the presentation of map-based media content and messages through the messaging client 108. For example, the mapping system 210 enables the display of user icons or avatars on a map to indicate the current or past locations of the user's "friends", as well as media content (e.g., a collection of messages including photos and videos) generated by such friends within the context of the map. For example, a message posted by a user to the messaging system 100 from a particular geographic location can be displayed to a particular user's "friends" on the mapping interface of the messaging client 108 within the context of that particular location on the map. The user can also share his or her location and status information with other users of the messaging system 100 (e.g., using appropriate status avatars) via the messaging client 108, where the location and status information is similarly displayed to the selected user within the context of the mapping interface of the messaging client 108.
[0041] The gaming system 212 provides various gaming functions within the context of the messaging client 108. The messaging client 108 provides a gaming interface that provides a list of available games that can be launched by a user within the context of the messaging client 108 and played with other users of the messaging system 100. The messaging system 100 also enables a particular user to invite other users to participate in playing a particular game by sending an invitation to such other users from the messaging client 108. The messaging client 108 also supports both voice messaging and text messaging within the context of playing games (e.g., chatting), provides leaderboards for games, and also supports providing in-game rewards (e.g., coins and items).
[0042] In accordance with certain embodiments, the location sharing system 214 provides functionality that may include: enabling display of a map image depicting a location; accessing user profile data associated with a user profile, the user profile data comprising a user identifier and location data associated with the user profile; identifying a sequence of locations associated with the user profile based on the user profile data; and enabling display of presentation of a trajectory indicating the sequence of locations associated with the user profile, the trajectory terminating at the display of the user identifier.
[0043] Figure 3 1 is a flowchart illustrating the operation of the location sharing system 214 when performing the method 300 for presenting a user route according to one embodiment. The operation of the method 300 may be described above with respect to Figure 2 The described messaging system 100 may be implemented by one or more subsystems such as the location sharing system 214. Figure 3 As shown, method 300 includes one or more operations 302 , 304 , 306 , and 308 .
[0044] At operation 302 , the location sharing system 214 causes display of a map image depicting a location.
[0045] At operation 304 , the location sharing system 214 accesses user profile data associated with the user profile, the user profile data including a user identifier and location data associated with the user profile.
[0046] At operation 306, a sequence of locations associated with the user profile is identified in the user profile data based on the location data. For example, in some implementations, the location data may include corresponding time data that may indicate the sequence of locations identified in the location data.
[0047] At operation 308, a presentation of a track or route indicating a sequence of locations associated with the user profile is presented within the map image. In some implementations, the track may terminate at a display of a user identifier associated with the user profile, where the location of the user identifier is based on a current (or most recent) location associated with the user profile.
[0048] In some embodiments, the graphical attributes of the track can be based on user profile data associated with the user profile. For example, the user can provide input to define the graphical attributes of the track, where the graphical attributes can include color and line type (i.e., dotted, dashed, solid) associated with the track.
[0049] Figure 4 4 is a flowchart illustrating the operation of the location sharing system 214 when performing the method 400 for presenting a user route according to one embodiment. The operation of the method 400 may be described above with respect to Figure 2 The described messaging system 100 may be implemented by one or more subsystems such as the location sharing system 214. Figure 4 As shown, method 400 includes one or more operations 402 , 404 , and 406 .
[0050] At operation 402, the location sharing system 214 causes presentation of a map image to be displayed, wherein the presentation of the map image includes display of a user identifier. For example, the user identifier may be presented at a location based on a recent or last location associated with a user profile identified by the user identifier. The user identifier may include a graphical avatar, such as an emoji or bitmoji associated with the user profile, wherein the user may provide input to define attributes of the user identifier.
[0051] At operation 404, the location sharing system 214 receives input selecting a user identifier from within the map image. For example, a map image may be presented at the client device 106, and a user of the client device 106 may provide tactile input selecting the user identifier from within the map image.
[0052] At operation 406 , in response to the input selecting the user identifier, the location sharing system 214 accesses user profile data associated with the user profile identified by the user identifier to determine a path taken by the user based on the sequence of locations.
[0053] Figure 5 is a flow chart showing the operation of the location sharing system 214 when performing the method 500 for presenting a user route according to one embodiment. The operation of the method 500 may be described above with respect to Figure 2 The described messaging system 100 may be implemented by one or more subsystems such as the location sharing system 214. Figure 5 As shown, method 500 includes one or more operations 502 , 504 , and 506 .
[0054] At operation 502, a first location and a second location are identified in location data associated with a user profile.
[0055] At operation 504, the location sharing system 214 determines that the second location is more than a threshold distance from the first location. For example, the threshold distance may include a value defining a minimum distance.
[0056] At operation 506 , the location sharing system 214 includes the first location and the second location as different locations in the sequence of locations based on the second location being more than a threshold distance from the first location.
[0057] Figure 6 6 is a flowchart illustrating the operation of the location sharing system 214 when performing the method 600 for presenting a user route according to one embodiment. The operation of the method 600 may be described above with respect to Figure 2 The described messaging system 100 may be implemented by one or more subsystems such as the location sharing system 214. Figure 6 As shown, method 600 includes one or more operations 602 and 604 .
[0058] At operation 602, the location sharing system 214 determines permissions associated with the location data. For example, a user associated with a user profile can define permissions associated with sharing the location data for all or part of the location data of their user profile. As an illustrative example, a user can define access criteria for the location data, such as who can access the location data, or which location data can be accessed. In some embodiments, a user can provide input to indicate that location data corresponding to certain types of locations (i.e., hospitals, clinics) may not be publicly available or that location data for only certain types of locations may be publicly available.
[0059] At operation 604, the location sharing system 214 may identify a sequence of locations to be presented as a route based on the permissions. For example, a portion of the location data associated with the user profile may not be displayed due to lack of permissions.
[0060] Figure 7 is a flowchart illustrating the operation of the location sharing system 214 when performing the method 700 for presenting a user route according to one embodiment. The operation of the method 700 may be described above with respect to Figure 2 The described messaging system 100 may be implemented by one or more subsystems such as the location sharing system 214. Figure 7 As shown, method 700 includes one or more operations 702 and 704 .
[0061] At operation 702 , in response to receiving input selecting or otherwise identifying a user identifier, the location sharing system 214 may access user profile data associated with the selected user identifier to determine whether the user has opted in to use location sharing functionality.
[0062] At operation 704 , in response to determining that the user associated with the user profile has enabled the location sharing function, the location sharing system 214 identifies a location sequence associated with the user profile to present a path based on the location sequence within the map image.
[0063] Figure 8 800 is an interface diagram depicting the presentation of a user route 806 within a GUI 802, according to one embodiment. As seen in interface diagram 800, location sharing system 214 may display a user identifier 804 at a location within a map image within GUI 802.
[0064] like Figure 4 As discussed in method 400 depicted in , a user may provide input selecting a user identifier 804 , and in response, location sharing system 214 may display a user route 806 based on location data associated with a user profile identified by user identifier 804 .
[0065] In some implementations, the user route 806 may be presented based on the location of the user corresponding to the user identifier 804. For example, in some implementations, the user route 806 may be presented within the GUI 802 of the client device 106 when the most recent location data associated with the user account identified by the user identifier 804 is located at a location depicted by a map image presented within the GUI 802.
[0066] In some implementations, the location sharing system 214 may present a menu element 808 at a location within the GUI 802, wherein the menu element 808 includes a location sharing icon 810. For example, a user of the client device 106 may provide input selecting the location sharing icon 810 to share location data in real time with one or more user connections. In some implementations, the selection of the location sharing icon 810 may override one or more permissions associated with the user profile.
[0067] Fig. 9 is an interface diagram 900 depicting a presentation of a user route 908 according to one embodiment.
[0068] As seen in GUI 902, location sharing system 214 may present menu element 910 to receive input from a user of client device 106 to define attributes of user identifier 906. The user of client device 106 may provide input to change or update the attributes of user identifier 906. For example, menu element 910 may include a display of a plurality of graphical elements, wherein selecting a graphical element from the plurality of graphical elements may impose the attributes of the selected graphical element on the user identifier associated with the user account.
[0069] In some implementations, in response to receiving input to change or update the user identifier 906 based on the input received from the menu element 910, the location sharing system 214 can present an opt-in notification 912, as seen in the GUI 904. For example, by selecting the opt-in notification 912, the location sharing system 214 can update the permissions associated with the user account to present the user route 908 at one or more requesting devices.
[0070] Machine Architecture
[0071] Fig.101000 within which instructions 1010 (e.g., software, programs, applications, applet, app, or other executable code) may be executed for causing the machine 1000 to perform any one or more of the methods discussed herein. For example, the instructions 1010 may cause the machine 1000 to perform any one or more of the methods described herein. The instructions 1010 transform a general-purpose, unprogrammed machine 1000 into a specific machine 1000 that is programmed to perform the functions described and illustrated in the manner described. The machine 1000 may operate as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine 1000 may operate as a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine 1000 may include, but is not limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a personal digital assistant (PDA), an entertainment media system, a cellular phone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a web appliance, a network router, a network switch, a network bridge, or any machine capable of sequentially or otherwise executing instructions 1010 specifying actions to be taken by the machine 1000. In addition, although only a single machine 1000 is shown, the term "machine" should also be considered to include a collection of machines that individually or jointly execute instructions 1010 to perform any one or more of the methods discussed herein. For example, the machine 1000 may include a client device 106 or any one of a plurality of server devices forming part of the messaging server system 104. In some examples, the machine 1000 may also include both a client system and a server system, wherein certain operations of a particular method or algorithm are performed on the server side and certain operations of the particular method or algorithm are performed on the client side.
[0072] The machine 1000 may include a processor 1004, a memory 1006, and an input / output I / O component 638 that may be configured to communicate with each other via a bus 1040. In an example, the processor 1004 (e.g., a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio frequency integrated circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, a processor 1008 that executes instructions 1010 and a processor 1012. The term "processor" is intended to include multi-core processors, which may include two or more independent processors (sometimes referred to as "cores") that can execute instructions simultaneously. Although Fig.10 Multiple processors 1004 are shown, but the machine 1000 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiple cores, or any combination thereof.
[0073] The memory 1106 includes a main memory 1014, a static memory 1016, and a storage unit 1018, which are all accessible by the processor 1004 via the bus 1040. The main memory 1006, the static memory 1016, and the storage unit 1018 store instructions 1010 that embody any one or more of the methodologies or functions described herein. The instructions 1010 may also reside, completely or partially, within the main memory 1014, within the static memory 1016, within the machine-readable medium 1020 within the storage unit 1018, within at least one of the processors 1004 (e.g., within a cache memory of a processor), or within any suitable combination thereof during execution thereof by the machine 1000.
[0074] I / O components 1002 may include various components for receiving input, providing output, generating output, sending information, exchanging information, capturing measurements, etc. The specific I / O components 1002 included in a particular machine will depend on the type of machine. For example, a portable machine such as a mobile phone may include a touch input device or other such input mechanism, while a headless server machine will most likely not include such a touch input device. It should be appreciated that I / O components 1002 may include Fig.101020 may include a plurality of other components not shown in the drawings. In various examples, the I / O components 1002 may include a user output component 1026 and a user input component 1028. The user output component 1026 may include a visual component (e.g., a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)), an acoustic component (e.g., a speaker), a tactile component (e.g., a vibration motor, a resistance mechanism), other signal generators, etc. The user input component 1028 may include an alphanumeric input component (e.g., a keyboard, a touch screen configured to receive alphanumeric input, an optical keyboard, or other alphanumeric input component), a point-based input component (e.g., a mouse, a touch pad, a trackball, a joystick, a motion sensor, or other pointing instrument), a tactile input component (e.g., a physical button, a touch screen or other tactile input component that provides the location and force of a touch or a touch gesture), an audio input component (e.g., a microphone), etc.
[0075] In other examples, the I / O component 1002 may include a biometric component 1030, a motion component 1032, an environment component 1034, or a positioning component 1036, as well as various other components. For example, the biometric component 1030 includes components for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body postures, or eye tracking), measuring biosignals (e.g., blood pressure, heart rate, body temperature, sweat, or brain waves), identifying people (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or EEG-based recognition), etc. The motion component 1032 includes an acceleration sensor component (e.g., an accelerometer), a gravity sensor component, and a rotation sensor component (e.g., a gyroscope).
[0076] Environmental components 1034 include, for example, one or more cameras (with still image / photo and video capabilities), lighting sensor components (e.g., a photometer), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., a barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., an infrared sensor that detects nearby objects), gas sensors (e.g., a gas detection sensor that detects concentrations of hazardous gases for safety or measures pollutants in the atmosphere), or other components that can provide indications, measurements, or signals corresponding to the surrounding physical environment.
[0077] With respect to cameras, client device 106 may have a camera system including, for example, a front-facing camera on a front surface of client device 106 and a rear-facing camera on a rear surface of client device 106. The front-facing camera may, for example, be used to capture still images and videos (e.g., “selfies”) of a user of client device 106, which may then be enhanced with the enhancement data (e.g., filters) described above. The rear-facing camera may, for example, be used to capture still images and videos in a more conventional camera mode, where these images are similarly enhanced with the enhancement data. In addition to the front-facing camera and the rear-facing camera, client device 106 may also include a 360° camera for capturing 360° photos and videos.
[0078] Additionally, the camera system of the client device 106 may include dual rear cameras (e.g., a main camera and a depth sensing camera), or even triple, quad, or quintuple rear camera configurations on the front and back sides of the client device 106. For example, these multiple camera systems may include a wide-angle camera, an ultra-wide-angle camera, a telephoto camera, a macro camera, and a depth sensor.
[0079] The positioning component 1036 includes a position sensor component (for example, a GPS receiver component), an altitude sensor component (for example, an altimeter or a barometer that detects air pressure, and the altitude can be obtained based on the air pressure), an orientation sensor component (for example, a magnetometer), etc.
[0080] A variety of technologies may be used to achieve communication. The I / O component 1002 also includes a communication component 1038 that is operable to couple the machine 1000 to the network 1022 or device 1024 via a corresponding coupling or connection. For example, the communication component 1038 may include a network interface component or other suitable device that interfaces with the network 1022. In other examples, the communication component 1038 may include a wired communication component, a wireless communication component, a cellular communication component, a near field communication (NFC) component, Parts (e.g. Low energy consumption), Device 1024 may be another machine or any of a variety of peripherals (eg, a peripheral coupled via USB).
[0081] In addition, the communication component 1038 can detect the identifier or include a component that can be operated to detect the identifier. For example, the communication component 1038 can include a radio frequency identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., an optical sensor for detecting one-dimensional bar codes such as universal product code (UPC) bar codes, multi-dimensional bar codes such as Quick Response (QR) codes, Aztec codes, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D bar codes, and other optical codes) or an acoustic detection component (e.g., a microphone for identifying a tagged audio signal). In addition, various information can be obtained via the communication component 1038, such as location via Internet Protocol (IP) geolocation, location via NFC smart tag detection, etc. Signal triangulation to derive location, location via detection of NFC beacon signals that can indicate a specific location, etc.
[0082] Various memories (e.g., main memory 1014, static memory 1016, and memory of processor 1004) and storage unit 1018 may store one or more sets of instructions and data structures (e.g., software) implemented or used by any one or more of the methods or functions described herein. When executed by processor 1004, these instructions (e.g., instructions 1010) cause various operations to implement the disclosed examples.
[0083] The instructions 1010 may be sent or received over the network 1022 using a transmission medium via a network interface device (e.g., a network interface component included in the communication component 1038) and using any of a number of well-known transmission protocols (e.g., Hypertext Transfer Protocol (HTTP)). Similarly, the instructions 1010 may be sent or received via a coupling (e.g., a peer-to-peer coupling) with the device 1024 using a transmission medium.
[0084] Software Architecture
[0085] Fig.111100 is a block diagram illustrating a software architecture 1104 that may be installed on any one or more of the devices described herein. The software architecture 1104 is supported by hardware, such as a machine 1102 including a processor 1120, a memory 1126, and an I / O component 1138. In this example, the software architecture 1104 may be conceptualized as a stack of layers, where each layer provides specific functionality. The software architecture 1104 includes layers such as an operating system 1112, a library 1110, a framework 1108, and an application 1106. In operation, the application 1106 invokes an API call 1150 through the software stack and receives a message 1152 in response to the API call 1150.
[0086] The operating system 1112 manages hardware resources and provides public services. The operating system 1112 includes, for example, a kernel 1114, a service 1116, and a driver 1122. The kernel 1114 serves as an abstraction layer between the hardware and other software layers. For example, the kernel 1114 provides functions such as memory management, processor management (e.g., scheduling), component management, networking, and security settings. The service 1116 can provide other public services to other software layers. The driver 1122 is responsible for controlling the underlying hardware or interfacing with the underlying hardware. For example, the driver 1122 may include a display driver, a camera driver, or Low-power drivers, Flash drivers, Serial communication drivers (e.g., USB drivers), Drivers, audio drivers, power management drivers, etc.
[0087] The libraries 1110 provide a common low-level infrastructure used by the applications 1106. The libraries 1110 may include a system library 1118 (e.g., a C standard library) that provides functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. In addition, the libraries 1110 may include an API library 1124, such as a media library (e.g., a library for supporting the presentation and manipulation of various media formats, such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), a graphics library (e.g., an OpenGL framework for presenting in two dimensions (2D) and three dimensions (3D) in graphical content on a display), a database library (e.g., SQLite providing various relational database functions), a web library (e.g., WebKit providing web browsing functions), etc. The library 1110 may also include various other libraries 1128 to provide many other APIs to the application 1106 .
[0088] The framework 1108 provides a common high-level infrastructure used by the applications 1106. For example, the framework 1108 provides various graphical user interface (GUI) functions, high-level resource management, and high-level positioning services. The framework 1108 can provide a wide range of other APIs that can be used by the applications 1106, some of which can be specific to a particular operating system or platform.
[0089] In an example, applications 1106 may include a home application 1136, a contacts application 1130, a browser application 1132, a book reader application 1134, a positioning application 1142, a media application 1144, a messaging application 1146, a game application 1148, and a variety of other applications such as third-party applications 1140. Applications 1106 are programs that perform functions defined in the program. Various programming languages may be used to create one or more of the applications 1106 constructed in various ways, such as an object-oriented programming language (e.g., Objective-C, Java, or C++) or a procedural programming language (e.g., C or assembly language). In a specific example, third-party applications 1140 (e.g., provided by an entity other than the vendor of a particular platform using ANDROID TM or IOS TM Software Development Kit (SDK) can be used to develop applications on platforms such as IOS TM ANDROID TM , Mobile software running on the mobile operating system of the phone or other mobile operating systems. In this example, third-party applications 1140 can activate API calls 1150 provided by the operating system 1112 to facilitate the functions described herein.
[0090] Processing components
[0091] Now go to Fig.12 , a diagrammatic representation of a processing environment 1200 is shown, which includes a processor 1202, a processor 1206, and a processor 1208 (e.g., a GPU, a CPU, or a combination thereof).
[0092] According to the embodiments discussed herein, the processor 1202 is shown coupled to a power supply 1204 and includes modules (permanently configured or temporarily instantiated), namely, an X component 1210, a Y component 1212, and a Z component 1214, which are operatively configured to perform the following operations: Figure 3 Method 300 and Figure 4 The operations discussed in method 400.
[0093] Glossary
[0094] "Carrier signal" refers to any intangible medium capable of storing, encoding or carrying instructions for execution by a machine and includes digital or analog communications signals or other intangible media to facilitate the transmission of such instructions. Instructions may be sent or received over a network using a transmission medium via a network interface device.
[0095] "Client Device" refers to any machine that interfaces with a communications network to obtain resources from one or more server systems or other client devices. A client device may be, but is not limited to, a mobile phone, a desktop computer, a laptop computer, a portable digital assistant (PDA), a smart phone, a tablet computer, an ultrabook, a netbook, a notebook computer, a multiprocessor system, a microprocessor-based or programmable consumer electronics product, a game console, a set-top box, or any other communications device that a user may use to access a network.
[0096] "Communications Network" means one or more parts of a network, which may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), the Internet, a part of the Internet, a part of the Public Switched Telephone Network (PSTN), a Plain Old Telephone Service (POTS) network, a cellular telephone network, a wireless network, A network, other type of network, or a combination of two or more such networks. For example, the network or a portion of the network may include a wireless network or a cellular network, and the coupling may be a code division multiple access (CDMA) connection, a global system for mobile communications (GSM) connection, or other type of cellular or wireless coupling. In this example, the coupling may implement any of various types of data transmission technologies, such as single carrier radio transmission technology (1xRTT), evolution data optimized (EVDO) technology, general packet radio service (GPRS) technology, enhanced data rates for GSM evolution (EDGE) technology, the third generation partnership project (3GPP) including 3G, fourth generation wireless (4G) networks, universal mobile telecommunications system (UMTS), high speed packet access (HSPA), world wide interoperability for microwave access (WiMAX), long term evolution (LTE) standards, other data transmission technologies defined by various standard setting organizations, other long distance protocols, or other data transmission technologies.
[0097] "Component" refers to a device, physical entity or logic with a boundary, which is defined by a function or subroutine call, a branch point, an API or other technical definitions that provide partitioning or modularization for a specific processing or control function. Components can be docked with other components via their interfaces to perform machine processes. Components can be packaged functional hardware units designed for use with other components, and are part of a program that generally performs a specific function in a related function. Components can constitute software components (e.g., codes implemented on machine-readable media) or hardware components. "Hardware components" are tangible units that can perform certain operations and can be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems (e.g., independent computer systems, client computer systems, or server computer systems) or one or more hardware components (e.g., processors or processor groups) of a computer system can be configured by software (e.g., applications or application parts) to operate to perform certain operations described herein. Hardware components can also be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware component may include a dedicated circuit or logic that is permanently configured to perform certain operations. The hardware component can be a special processor, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). The hardware component can also include a programmable logic or circuit that is temporarily configured to perform certain operations by software. For example, the hardware component can include software executed by a general-purpose processor or other programmable processor. Once configured by such software, the hardware component becomes a specific machine (or a specific component of a machine) that is uniquely customized to perform the configured function, and is no longer a general-purpose processor. It will be recognized that it can be determined for cost and time considerations whether to mechanically implement the hardware component in a dedicated and permanently configured circuit or in a temporarily configured (e.g., configured by software) circuit to implement the hardware component. Therefore, the phrase "hardware component" (or "hardware-implemented component") should be understood to include a tangible entity, that is, an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in some way or perform certain operations described herein. Considering the embodiment in which the hardware component is temporarily configured (e.g., programmed), it is not necessary to configure or instantiate each of the hardware components at any time. For example, where a hardware component includes a general purpose processor that is configured by software to become a special purpose processor, the general purpose processor may be configured as different special purpose processors (e.g., including different hardware components) at different times. The software configures one or more specific processors accordingly, for example, to constitute a specific hardware component at one time and to constitute different hardware components at different times. Hardware components may provide information to other hardware components and receive information from other hardware components. Therefore, the described hardware components may be considered to be communicatively coupled.In the case of multiple hardware components being present at the same time, communication can be achieved by signal transmission (e.g., by appropriate circuits and buses) between or among two or more hardware components in the hardware components. In an embodiment where multiple hardware components are configured or instantiated at different times, communication between such hardware components can be achieved, for example, by storing information in a memory structure to which multiple hardware components have access rights and retrieving information in the memory structure. For example, a hardware component can perform an operation and store the output of the operation in a memory device coupled to it in communication. Then, other hardware components can access the memory device at a subsequent time to retrieve the stored output and process it. The hardware component can also initiate communication with an input device or an output device, and can operate on resources (e.g., a collection of information). The various operations of the example methods described herein can be performed at least in part by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform related operations. Whether it is temporarily configured or permanently configured, such a processor can constitute a processor-implemented component that operates to perform one or more operations or functions described herein. As used herein, "processor-implemented components" refer to hardware components implemented using one or more processors. Similarly, the method described in this article can be implemented at least in part by a processor, wherein specific one or more processors are examples of hardware. For example, at least some operations of the method can be performed by one or more processors 1004 or the parts implemented by the processor. In addition, one or more processors can also operate to support the execution of related operations in a "cloud computing" environment or as a "software as a service" (SaaS) operation. For example, at least some of the operations can be performed by a group of computers (as an example of a machine including a processor), wherein these operations can be accessed via a network (for example, the Internet) and via one or more appropriate interfaces (for example, API). The execution of certain operations can be distributed between processors, not only resident in a single machine, but deployed across several machines. In some example embodiments, a processor or a part implemented by a processor can be located in a single geographical location (for example, in a home environment, an office environment, or a server cluster). In other example embodiments, a processor or a part implemented by a processor can be distributed across several geographical locations.
[0098] "Computer-readable storage media" refers to both machine storage media and transmission media. Thus, the term includes both storage devices / media and carrier / modulated data signals. The terms "machine-readable medium," "computer-readable medium," and "device-readable medium" mean the same thing and may be used interchangeably in this disclosure.
[0099] "Transient message" refers to a message that is accessible for a limited duration. Transient messages can be text, images, videos, etc. The access time of a transient message can be set by the sender of the message. Alternatively, the access time can be a default setting or a setting specified by the recipient. Regardless of the setting technique, the message is transient.
[0100] "Machine storage media" refers to a single or multiple storage devices and media (e.g., centralized or distributed databases, and associated caches and servers) that store executable instructions, routines, and data. Thus, the term should be considered to include, but is not limited to, solid-state memory and optical and magnetic media, including memory internal or external to the processor. Specific examples of machine storage media, computer storage media, and device storage media include: non-volatile memory, including, for example, semiconductor memory devices such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGA, and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The terms "machine storage media," "device storage media," and "computer storage media" mean the same thing and may be used interchangeably in this disclosure. The terms "machine storage media," "computer storage media," and "device storage media" expressly exclude carrier waves, modulated data signals, and other such media, at least some of which are encompassed by the term "signal media."
[0101] “Non-transitory computer-readable storage medium” refers to tangible media capable of storing, encoding, or carrying instructions to be executed by a machine.
[0102] "Signal medium" refers to any intangible medium that is capable of storing, encoding or carrying instructions to be executed by a machine, and includes digital or analog communication signals or other intangible media that facilitate the communication of software or data. The term "signal medium" should be deemed to include any form of modulated data signals, carrier waves, etc. The term "modulated data signal" refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. The terms "transmission medium" and "signal medium" refer to the same thing and may be used interchangeably in this disclosure.
Claims
1. A method comprising: causing display of a map image depicting the location; accessing user profile data associated with a user profile, the user profile data comprising a user identifier and location data associated with the user profile; identifying a sequence of locations associated with the user profile based on the user profile data; and A presentation of a track indicative of a sequence of locations associated with the user profile is caused to be displayed, the track terminating at the display of the user identifier.
2. The method according to claim 1, wherein: The accessing user profile data associated with the user profile further comprises: receiving input selecting a user identifier associated with the user profile; and In response to the input, the user profile data is accessed.
3. The method according to claim 1, wherein: The location data includes time data, and identifying a sequence of locations associated with the user profile is performed based on the location data and the time data.
4. The method according to claim 1, wherein: The sequence of locations includes at least a first location and a second location, and identifying the sequence of locations associated with the user profile further includes: identifying the first location based on the location data; determining that the second location is more than a threshold distance from the first location; and Based on the second location being more than the threshold distance from the first location, the second location is identified as a location in the sequence of locations.
5. The method according to claim 1, wherein: The causing the map image to be displayed further comprises: causing display of a map image depicting the location, the map image including a display of the user identifier; receiving input selecting the user identifier from within the map image; and In response to the input selecting the user identifier from within the map image, a presentation of a track indicative of a sequence of locations associated with the user profile is caused to be displayed.
6. The method according to claim 1, wherein: The identifying a sequence of locations associated with the user profile based on the user profile data further comprises: determining permissions associated with the location data; and The sequence of locations is identified in the location data based on the permission.
7. The method according to claim 1, wherein: The accessing user profile data associated with the user profile further comprises: determining, based on the user profile data, that the user profile has location sharing functionality enabled; and In response to determining that the user profile has enabled the location sharing functionality, a location sequence associated with the user profile is identified.
8. A system comprising: Memory; as well as at least one hardware processor coupled to the memory and comprising instructions for causing the system to perform operations comprising: causing a map image depicting the location to be displayed; accessing user profile data associated with a user profile, the user profile data comprising a user identifier and location data associated with the user profile; identifying a sequence of locations associated with the user profile based on the user profile data; and A presentation of a track indicative of a sequence of locations associated with the user profile is caused to be displayed, the track terminating at the display of the user identifier.
9. The system according to claim 8, wherein: The accessing user profile data associated with the user profile further comprises: receiving input selecting a user identifier associated with the user profile; and In response to the input, the user profile data is accessed.
10. The system according to claim 8, wherein: The location data includes time data, and identifying a sequence of locations associated with the user profile is performed based on the location data and the time data.
11. The system according to claim 8, wherein: The sequence of locations includes at least a first location and a second location, and identifying the sequence of locations associated with the user profile further includes: identifying the first location based on the location data; determining that the second location is more than a threshold distance from the first location; and Based on the second location being more than the threshold distance from the first location, the second location is identified as a location in the sequence of locations.
12. The system according to claim 8, wherein: The causing the map image to be displayed further comprises: causing display of a map image depicting the location, the map image including a display of the user identifier; receiving input selecting the user identifier from within the map image; and In response to the input selecting the user identifier from within the map image, a presentation of a track indicative of a sequence of locations associated with the user profile is caused to be displayed.
13. The system according to claim 8, wherein: The identifying a sequence of locations associated with the user profile based on the user profile data further comprises: determining permissions associated with the location data; and The sequence of locations is identified in the location data based on the permission.
14. The system according to claim 8, wherein: The accessing user profile data associated with the user profile further comprises: determining, based on the user profile data, that the user profile has location sharing functionality enabled; and In response to determining that the user profile has enabled the location sharing functionality, a location sequence associated with the user profile is identified.
15. A non-transitory machine-readable storage medium comprising instructions that, when executed by one or more processors of a machine, cause the machine to perform operations comprising: causing a map image depicting the location to be displayed; accessing user profile data associated with a user profile, the user profile data comprising a user identifier and location data associated with the user profile; identifying a sequence of locations associated with the user profile based on the user profile data; and A presentation of a track indicative of a sequence of locations associated with the user profile is caused to be displayed, the track terminating at the display of the user identifier.
16. The non-transitory machine-readable storage medium of claim 15, wherein: The accessing user profile data associated with the user profile further comprises: receiving input selecting a user identifier associated with the user profile; and In response to the input, the user profile data is accessed.
17. The non-transitory machine-readable storage medium of claim 15, wherein: The location data includes time data, and identifying a sequence of locations associated with the user profile is performed based on the location data and the time data.
18. The non-transitory machine-readable storage medium of claim 15, wherein: The sequence of locations includes at least a first location and a second location, and identifying the sequence of locations associated with the user profile further includes: identifying the first location based on the location data; determining that the second location is more than a threshold distance from the first location; and Based on the second location being more than the threshold distance from the first location, the second location is identified as a location in the sequence of locations.
19. The non-transitory machine-readable storage medium of claim 15, wherein: The causing the map image to be displayed further comprises: causing display of a map image depicting the location, the map image including a display of the user identifier; receiving input selecting the user identifier from within the map image; and In response to the input selecting the user identifier from within the map image, a presentation of a track indicative of a sequence of locations associated with the user profile is caused to be displayed.
20. The non-transitory machine-readable storage medium of claim 15, wherein: The identifying a sequence of locations associated with the user profile based on the user profile data further comprises: determining permissions associated with the location data; and The sequence of locations is identified in the location data based on the permission.
