Method and system for third-party modification of camera user interfaces
Through the camera user interface developer framework, the limitations of client applications in content distribution and modification functions are solved, allowing third-party application developers to customize the user interface, improving the user experience.
Patent Information
- Application Number
- CN202180046360.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-06-22
- Filing Date
- 2021-06-30
- Publication Date
- 2025-08-15
- Estimated Expiration
- 2041-06-30
AI Technical Summary
Existing client applications have limitations in content distribution and modification functions, and cannot effectively utilize the enhanced functions provided by third-party applications, resulting in limited user experience.
Provides a camera user interface developer framework, allowing developers of third-party applications to modify the camera user interface of client applications through SDKs, APIs and other tools, add or delete user interface elements, customize the user experience, and combine the content of third-party applications.
Developers who have realized that third-party applications can customize user interfaces in client applications, enhance content distribution and modification functions, and improve user experience.
Smart Images

Figure CN115769561B_ABST
Abstract
Description
[0001] Priority claim
[0002] This patent application claims the benefit of priority to U.S. Provisional Patent Application Serial No. 63 / 046,243, filed on June 30, 2020, and U.S. Patent Application Serial No. 17 / 354,995, filed on June 22, 2021, which are incorporated herein by reference in their entireties. Background Art
[0003] Applications executed by client devices can be used to generate content. For example, client applications can be used to generate message content, image content, video content, audio content, media overlays, documents, creative works, combinations thereof, and the like. In various cases, user content can be modified by augmented reality content. In at least some cases, the modified content can be obtained from a third-party application. BRIEF DESCRIPTION OF THE DRAWINGS
[0004] In the accompanying drawings, which are not necessarily drawn to scale, similar reference numerals may describe similar components in different views. To easily identify the discussion of any particular element or action, the highest-order digit or digits in the reference numerals refer to the figure number in which the element is first introduced. Some implementations are shown by way of example and not limitation.
[0005] Figure 1 is a pictorial representation of an architecture for exchanging data (eg, messages and associated content) over a network according to one or more example implementations.
[0006] Figure 2 is a pictorial representation of a system that may have both client-side and server-side functionality, according to some examples.
[0007] Figure 3 is a schematic diagram illustrating data that may be stored in a database of a server system according to one or more example implementations.
[0008] Figure 4 is a diagram illustrating an example framework for content accessible via a client application according to one or more example implementations.
[0009] Figure 5 is a diagram illustrating an architecture for modifying a camera user interface based on third-party modifications according to one or more example implementations.
[0010] Figure 6 is a flow diagram illustrating example operations for a process for implementing a framework used by a third party to modify a camera user interface of a client application, according to one or more example implementations.
[0011] Figure 7 is a flow diagram illustrating example operations of a process for generating a modified camera user interface based on information obtained from a third-party application developer, according to one or more example implementations.
[0012] Figure 8 is an illustration of a user interface showing a view of a camera and formatted according to a framework used by developers of third-party applications to include content from the third party in the user interface, according to one or more example implementations.
[0013] Figure 9 is an illustration of a user interface showing a view of a camera and enabling a user of a client application to modify third-party content included in the user interface, according to one or more example implementations.
[0014] Figure 10 is an illustration of an additional user interface showing an illustration of a camera and enabling a user of a client application to modify third-party content included in the user interface according to one or more example implementations.
[0015] Figure 11 is a block diagram illustrating components of a machine in the form of a computer system that can read and execute instructions from one or more machine-readable media to perform any one or more of the methods described herein, according to one or more example implementations.
[0016] Figure 12 is a block diagram illustrating a representative software architecture that may be used in conjunction with one or more hardware architectures described herein, according to one or more example implementations. DETAILED DESCRIPTION
[0017] Users can access content or create content via a plurality of applications that can be executed by a computing device (e.g., a mobile computing device, a smart phone, a tablet computing device, a laptop computing device, a portable gaming device, etc.). These applications may be referred to as "apps". In various instances, each application may be directed to one or more specific types of functions. For example, some applications may be related to merchants or service providers and used to access purchasable goods or services provided by the merchants or service providers. In other examples, applications may be used for communication in a social or business environment. Applications may also be used to create content, such as media content, word processing documents, spreadsheets, presentations, etc.
[0018] In a number of instances, users of an application may want to distribute content that is being created, accessed, or consumed via the application. In one or more examples, the application that a user uses to create, access, or consume content does not include functionality that enables the user to share content. In other cases, the application used to create, access, or consume content includes limited functionality for sharing content. To illustrate, an application used to create, access, or consume content may be limited in the distribution scope of the content. That is, a user of an application used to create, access, or consume content may not have access to one or more of the user's social networks. In addition, an application that can be used to create, access, or consume content may have limited functionality for modifying content. For example, a user may not be able to personalize or customize the content created, accessed, or consumed via a given application.
[0019] In a scenario where an application's functionality is limited with respect to at least one of the distribution or modification of content created, accessed, or consumed by the application, the application may enable a user to launch one or more additional applications that provide enhanced functionality with respect to at least one of the distribution or modification of content created, accessed, or consumed by the initial application. The systems, methods, techniques, instruction sequences, and computer program products described herein relate to modifications made by a developer of a third-party application to a camera user interface of a client application that can be used to distribute content related to the third-party application or to modify at least one of the content. A service provider with the ability to develop, maintain, or implement at least one of the client applications may provide a framework that enables developers of the third-party applications to access the functionality of the client application. The framework may include a software development kit (SDK) that includes at least one of tools, libraries, documentation, computer-readable code, procedures, requirements, or application programming interfaces (APIs) related to using the client application to distribute or modify at least one of the third-party content.
[0020] In one or more implementations, developers can utilize the framework to modify a client application's camera user interface. The camera user interface can display a field of view captured by one or more cameras of a client device. The default version of the camera user interface can also include a number of user interface elements that can be selected to invoke functionality of the client application. For example, the default version of the camera user interface can include a user interface element related to a search operation. To illustrate, the default version of the camera user interface can include a user interface element that captures information to search for at least one of contacts or content accessible via the client application. Additionally, the default version of the camera user interface can include one or more user interface elements related to navigation within the client application. One or more navigation user interface elements of the default camera user interface can be selected to access content via the client application.
[0021] The camera user interface developer framework may enable developers to modify the default version of the camera user interface by deleting one or more user interface elements included in the default version of the camera user interface. In one or more examples, the camera user interface developer framework may enable developers to delete at least one user interface element in the default camera user interface that is specific to search functionality for client applications. In one or more additional examples, the camera user interface developer framework may enable developers to delete at least one user interface element in the default camera user interface that is specific to navigation within a client application.
[0022] Additionally, the camera user interface developer framework enables developers to add at least one of information or user interface elements to customize the camera user interface. In some existing systems, image or video content can be provided from a third-party application to a client application for distribution via the client application. In the implementations described herein, the third-party application can provide information to the client application for display via the camera interface, information beyond the image or video content provided by the third-party application. In other scenarios, the third-party application may not provide image or video content to the client application, but may provide the client application with other content related to the information corresponding to the third-party application. In one or more examples, the third-party application may include media player functionality. In these cases, the modified version of the camera user interface can include information related to media being consumed by the third-party application. For example, the modified version of the camera user interface can include information related to the song title and artist or movie title of the media being consumed by the third-party application. In various examples, the modified version of the camera user interface can also include graphical content corresponding to the third-party application. For illustration, the modified version of the user interface can include a logo or image corresponding to the third-party application, or a logo or image related to the media content being consumed by the third-party application.
[0023] In one or more implementations, a user of the client application can also modify a modified version of the camera user interface that includes content related to a third-party application. In one or more scenarios, the user of the client application can delete at least a portion of the content related to the third-party application before using the client application to distribute image content or video content captured via the camera user interface. In one or more illustrative examples, the user of the client application can delete information describing media content consumed using the third-party application from the modified version of the camera user interface before using the client application to distribute the content captured via the camera user interface. Furthermore, the user of the client application can add or modify the image content or video content displayed in the modified version of the camera user interface. For illustration, at least one of an overlay, annotation, or augmented reality content can be added to the image content or video content displayed in the modified version of the camera user interface. In these scenarios, the content distributed via the client application can include image content or video content captured by at least one camera of a client device executing the client application, content related to the third-party application, and modifications to the image content or video content added using the client application.
[0024] The implementations described herein enable developers of third-party applications to leverage functionality of client applications that may be unavailable or limited in third-party applications, while also enabling developers of third-party applications to customize the user experience in the client applications. The customization of the camera user interface described in the implementations herein is made possible by a developer framework that includes software tools, computer-readable code, rules, API information, or a combination thereof, that are not available to developers with existing systems, methods, and client applications. Furthermore, users of the client applications are provided with the flexibility to include content related to the third-party application within other content generated using the client application, or to remove content related to the third-party application from other content generated using the client application.
[0025] Figure 1 1 is a diagrammatic representation of an architecture 100 for exchanging data (e.g., messages and associated content) over a network. The architecture 100 may include a plurality of client devices 102. The client devices 102 may individually include, but are not limited to, mobile phones, desktop computers, laptop computing devices, portable digital assistants (PDAs), smartphones, tablet computing devices, ultrabooks, netbooks, multi-processor systems, microprocessor-based or programmable consumer electronics systems, game consoles, set-top boxes, computers in vehicles, wearable devices, one or more combinations thereof, or any other communication device that a user may use to access one or more components included in the architecture 100.
[0026] Each client device 102 can host multiple applications, including a client application 104 and one or more third-party applications 106. Users can use the client application 104 to create content such as videos, images (e.g., photos), audio, and media overlays. In one or more illustrative examples, the client application 104 may include social networking functionality that enables users to create and exchange content. In various examples, the client application 104 may include messaging functionality that can be used to send messages between instances of the client application 104 executed by the various client devices 102. Messages created using the client application 104 may include video, one or more images, audio, media overlays, text, content made using one or more creation tools, annotations, etc. In one or more implementations, the client application 104 may be used to view and generate interactive messages, view the locations of other users of the client application 104 on a map, chat with other users of the client application 104, etc.
[0027] One or more users may be humans, machines, or other devices that interact with a client device (e.g., client device 102). In example implementations, a user may not be part of architecture 100, but may interact with one or more components of architecture 100 via client device 102 or other devices. In various examples, a user may provide input (e.g., touch screen input or alphanumeric input) to client device 102, and the input may be transmitted to other entities in architecture 100. In this case, the other entities in architecture 100 may transmit information to client device 102 in response to the user input for presentation to the user. In this manner, a user may interact with various entities in architecture 100 using client device 102.
[0028] The architecture 100 may also include one or more developer devices 108. The one or more developer devices 108 may individually include, but are not limited to, a mobile phone, a desktop computer, a notebook computing device, a portable digital assistant (PDA), a smartphone, a tablet computing device, an ultrabook, a netbook, a multi-processor system, a microprocessor-based or programmable consumer electronic system, a game console, a set-top box, a computer in a vehicle, a wearable device, one or more combinations thereof, or any other communication device that a user may use to access one or more components included in the architecture 100. The developer device 108 may be used by one or more developers to at least one of: create a third-party application 106 or modify a third-party application 106. As used herein, the terms "developer," "third-party developer," and "third-party application developer" are not limited to the actual developers themselves, but may include persons and entities that host, provide, maintain, create, or have ownership of a third-party application 106.
[0029] The developer device 108 can at least one of store a content access application 110 or execute the content access application 110. The content access application 110 can enable the developer device 108 to at least one of obtain, view, or communicate with a server, website, application, data repository, or other content repository. In one or more illustrative examples, the content access application 110 can include a browser application. In one or more additional examples, the content access application 110 can access content that can be used in connection with the development, modification, or creation of at least one of the third-party application 106 or the client application 104.
[0030] Each instance of the client application 104 and the content access application 110 is capable of communicating and exchanging data with at least one of another instance of the client application 104, one or more third-party applications 106, another instance of the content access application 110, or a server system 112. The data exchanged between instances of the client application 104, between third-party applications 106, between instances of the content access application 110, between instances of the client application 104 and third-party applications 106, between instances of the content access application 110 and the server system 112, and between instances of the client application 104 and the server system 112 includes functionality (e.g., commands to invoke functionality) and payload data (e.g., text, audio, image, video, or other multimedia data). Data exchanged between instances of client applications 104, between third-party applications 106, between at least one instance of client application 104 and at least one instance of content access application 110, and between at least one instance of client application 104 and at least one third-party application 106 can be exchanged directly from an instance of an application executed by client device 102 and an application executed by other client devices 102 or an instance of an application executed by developer device 108. In addition, data exchanged between client applications 104, between third-party applications 106, between content access application 110 and at least one of third-party applications 106 or client applications 104, and between at least one client application 104 and at least one third-party application 106 can be transferred indirectly (e.g., via one or more intermediary servers) from an instance of an application executed by client device 102 to another instance of an application executed by other client devices 102 or by developer device 108. In one or more illustrative examples, the one or more intermediary servers used in the indirect communication between applications can be included in server system 112.
[0031] The third-party application 106 can be separate and distinct from the client application 104. The third-party application 106 can be downloaded and installed by the client device 102 separately from the client application 104. In various implementations, the third-party application 106 is downloaded and installed by the client device 102 before or after the client application 104 is downloaded and installed. The third-party application 106 is an application provided by an entity or organization different from the entity or organization that provides the client application 104. The third-party application 106 can be accessed by the client device 102 using different login credentials than the client application 104. That is, the third-party application 106 can save a first user account, while the client application 104 can save a second user account. In one or more implementations, the third-party application 106 can be accessed by the client device 102 to perform various activities and interactions, such as listening to music, watching videos, tracking workouts, viewing graphical elements (e.g., stickers), communicating with other users, etc. As examples, third-party applications 106 may include social networking applications, dating applications, ride or car sharing applications, shopping applications, trading applications, gaming applications, imaging applications, music applications, video browsing applications, workout tracking applications, health monitoring applications, graphic element or sticker browsing applications, or any other suitable applications.
[0032] The server system 112 provides server-side functionality to at least one of the client application 104 or the content access application 110 via one or more networks 114. According to some example embodiments, the server system 112 may be a cloud computing environment. For example, in one illustrative example, the server system 112 and one or more servers associated with the server system 112 may be associated with a cloud-based application. In one or more implementations, the client device 102 and the server system 112 may be coupled via one or more networks 114.
[0033] The server system 112 supports various services and operations provided to the client applications 104. Such operations include sending data to the client applications 104; receiving data from the client applications 104; and processing data generated by the client applications 104. This data may include message content, media content, client device information, geolocation information, media annotations and overlays, message content persistence conditions, social network information, and life event information, as examples. Data exchange within the framework 100 is invoked and controlled by functions available through the user interface (UI) of the client applications 104. The server system 112 may be at least one implemented or maintained by a service provider that provides one or more services via the client applications 104. The one or more services may be related to social networking, messaging, content creation, content consumption, online retail, or one or more combinations thereof.
[0034] Although certain functionality of the framework 100 is described herein as being performed by the client application 104 or by the server system 112, it is a design choice to locate certain functionality within the client application 104 or within the server system 112. For example, it may be technically preferable to initially deploy certain techniques and functionality within the server system 112 but later migrate the techniques and functionality to the client application 104 where the client device 102 has sufficient processing power.
[0035] The server system 112 includes an application programming interface (API) server 116 that is coupled to an application server 118 and provides a programming interface to the application server 118. The application server 118 is communicatively coupled to a database server 120 that facilitates access to one or more databases 122. The one or more databases 122 may store data associated with information processed by the application server 118. The one or more databases 122 may be storage devices that store information such as unprocessed media content, original media content from a user (e.g., high-quality media content), processed media content (e.g., media content formatted to be shared with and viewed on a client device 102), contextual data associated with media content items, contextual data associated with a user device (e.g., a computing or client device 102), media overlays, media overlay smart components or smart elements, user data, user device information, media content (e.g., videos and images), media content data (e.g., data associated with videos and images), computing device contextual data, serialization data, session data items, user device location data, mapping information, interaction message usage data, interaction message metric data, etc. The one or more databases 122 may also store information related to third-party servers, client devices 102, client applications 104, users, third-party applications 106, etc.
[0036] The API server 116 receives and sends data (e.g., commands and message payloads) between at least one of the client device 102 or the developer device 108 and the application server 118. Specifically, the application program interface (API) server 116 provides a set of interfaces (e.g., routines and protocols) that can be called or queried by the client application 104 to invoke functionality of the application server 118. An application program interface (API) server 116 exposes various functions supported by application server 118, including account registration, login functionality, sending messages from one instance of client application 104 to another instance of client application 104 via application server 118, sending media files (e.g., images, audio, video) from client application 104 to application server 118 and possible access by another client application 104, setting up a collection of media content (e.g., a gallery, story, message collection, or media collection), retrieving a list of friends of the user of client device 102, retrieving such a collection, retrieving messages and content, adding and removing friends from a social graph, locating a friend's location within the social graph, and opening application events (e.g., related to client application 104). API server 116 may also provide developer devices 108 with access to frameworks that can be used to modify or customize the camera user interface associated with content corresponding to third-party applications 106.
[0037] The server system 112 may also include a web server 124. The web server 124 is coupled to the application server 118 and provides a web-based interface to the application server 118. To this end, the web server 124 handles incoming network requests via the Hypertext Transfer Protocol (HTTP) and several other related protocols.
[0038] The application server 118 hosts a number of applications and subsystems, including a messaging application system 126, a media content processing system 128, a social networking system 130, and a camera user interface system 132. The messaging application system 126 implements a variety of 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 client application 104. For example, the messaging application system 126 can deliver messages using electronic mail (email), instant messaging (IM), short message service (SMS), text, or fax, or can deliver voice (e.g., voice over IP (VoIP)) messages via a wired network (e.g., the Internet), plain old telephone service (POTS), or a wireless network (e.g., mobile, cellular, Wi-Fi, long-term evolution (LTE), or Bluetooth). The messaging application system 126 can aggregate text and media content from multiple sources into content collections. The messaging application system 126 then makes these collections available to the client application 104. Other processor- and memory-intensive data processing may also be performed by the messaging application system 126 on the server side in view of the hardware requirements for such processing.
[0039] The media content processing system 128 is dedicated to performing various media content processing operations, typically on images, audio, or video received within the payload of a message or other content item at the messaging application system 126. The media content processing system 128 can access one or more data storage devices (e.g., database 122) to retrieve stored data for use in processing media content and store the results of the processed media content.
[0040] The social networking system 130 supports various social networking features and services and makes them available to the messaging application system 126. To this end, the social networking system 130 maintains and accesses an entity graph within the database 122. Examples of features and services supported by the social networking system 130 include identifying other users of the client application 104 who have a relationship with a particular user or who a particular user is "following," and also identifying other entities and interests of a particular user. The social networking system 130 may access location information associated with each of the user's friends or other social network connections to determine where they geographically reside or are currently located. In addition, the social networking system 130 may maintain a location profile for each of the user's friends, indicating the geographic location where the user's friends reside.
[0041] A camera user interface (UI) system 132 may be used to generate a modified version of a camera user interface displayed via a client application 104. The camera user interface may display the field of view of at least one camera of the client device 102. The camera user interface may also include one or more user interface elements that are selectable to at least one of invoke functionality of the client application 104 or perform one or more operations supported by the client application 104. A default version of the camera user interface may include one or more first user interface elements that are selectable to access content via the client application 104. The default version of the camera user interface may also include one or more second user interface elements that are selectable to search for at least one of a user of the client application 104 or content related to the client application 104. Additionally, the default version of the camera user interface may include one or more third user interface elements that are selectable to access augmented reality content, which may be applied to at least one of the image content or the video content displayed in the camera user interface. In addition, the default version of the camera user interface may include one or more fourth user interface elements corresponding to one or more tools that can be applied to at least one of the image content or video content displayed in the camera user interface, such as a timer tool, a flash tool, a tool for displaying a grid in the camera user interface, one or more combinations thereof, and the like.
[0042] In one or more implementations, the camera UI system 132 can obtain information from the developer device 108 to modify a default or initial version of the camera user interface. In one or more examples, the camera UI system 132 can provide the developer device 108 with access to camera UI developer information 134 stored by the database 122. In various examples, the developer device 108 can access the camera UI developer information 134 via the content access application 110. The camera UI developer information 134 can include at least one of tools, libraries, documentation, computer-readable code, procedures, guidelines, one or more combinations thereof, and the like that can be used to generate a modified version of the camera user interface. In various examples, the camera UI developer information 134 can include an SDK that can be used to modify the camera user interface of the client application 104. In one or more additional examples, the camera UI developer information 134 can include one or more APIs that can be used to modify the camera user interface of the client application 104.
[0043] The camera UI system 132 can provide one or more user interfaces to the developer device 108 that can be used to modify the camera user interface of the client application 104 based on the camera UI developer information 134. For example, the camera UI system 132 can provide one or more user interfaces that enable the developer of the third-party application 106 to delete user interface elements that may be included in the initial version or default version of the camera user interface of the client application 104. For example, the camera UI system 132 can provide one or more user interfaces that enable the developer of the third-party application 106 to delete one or more user interface elements in the camera user interface that are directed to at least one of accessing content generated using the client application 104, sharing content generated by the client application 104, or modifying content displayed in the camera user interface of the client application 104. In one or more examples, the user interface elements that can be deleted from the default version of the camera user interface of the client application 104 can be indicated by the camera UI developer information 134.
[0044] The camera UI system 132 may also provide one or more user interfaces to the developer device 108 for adding content to a default version or initial version of the camera user interface of the client application 104. In various examples, the content added to the default version of the camera user interface of the client application 104 may include at least one of image content, text content, or video content corresponding to the third-party application 106. The image content, text content, video content, or one or more combinations thereof obtained from the developer of the third-party application 106 may be stored in the database 122 as third-party UI data 136. The third-party UI data 136 may include data related to a logo related to the third-party application 106, an identifier related to the third-party application 106 (e.g., a brand, company name, product name, etc.), an animation related to the third-party application 106, augmented reality content related to the third-party application 106, or one or more combinations thereof.
[0045] In one or more implementations, the third-party UI data 136 may also include data transmitted from the third-party application 106 to the client application 104 when the client application 104 is launched from an instance of the third-party application 106. In one or more scenarios, information related to data generated by the third-party application 106 or corresponding to at least one of content consumed via the third-party application 106 may be sent from the client device 102 executing the instance of the third-party application 106 to the server system 112 and stored as part of the third-party UI data 136. The third-party UI data 136 may also include an address, link, or other uniform resource indicator corresponding to content related to the third-party application 106, where the address, link, or other uniform resource indicator may be provided by the developer of the third-party application 106. At least one of the client application 104 or the server system 112 may use the address, link, or other uniform resource indicator to retrieve the content to be displayed in the modified version of the camera user interface of the client application 104.
[0046] In addition, the third-party UI data 136 may indicate at least one of formatting or placement related to information obtained from the developer device 108, which is to be displayed in the modified version of the camera user interface. In one or more examples, the third-party UI data 136 may indicate the location of at least one of image content, text content, or video content obtained from the developer device 108 within the modified version of the camera user interface. The third-party UI data 136 may also include size information, font information, visual effect information, color information, or one or more combinations thereof for at least one of the text content, video content, or image content obtained from the developer device 108 and to be displayed in the modified version of the camera user interface. Furthermore, the third-party UI data 136 may include layout information indicating the arrangement of content relative to each other within the modified version of the camera user interface.
[0047] In various examples, third-party UI data 136 can indicate user interface elements designed by a developer of third-party application 106 that can be selected to perform one or more actions within client application 104. In one or more examples, camera UI developer information 134 can provide the developer of third-party application 106 with one or more tools to design user interface elements that can be selected to perform actions within client application 104. In one or more additional examples, camera UI developer information 134 can include a plurality of previously generated user interface elements corresponding to one or more actions that can be performed by client application 102. In these scenarios, the developer of third-party application 106 can select one or more user interface elements from the plurality of previously generated user interface elements to include in the modified version of the camera user interface. In one or more illustrative examples, the action to be performed in response to selection of one or more user interface elements selected by the developer of the third-party application 106 may include at least one of: providing additional information about a media content item consumed via the third-party application 106, adding content related to the third-party application 106 to a message transmitted via the client application 104, or including content related to the third-party application 106 in social network content that can be transmitted using the client application 104.
[0048] Database 122 may also store camera UI data 138 corresponding to a camera user interface displayed via client application 104. For example, camera UI data 136 may indicate features of a default version of the camera user interface. In various examples, camera UI developer information 134 may indicate that a developer of a third-party application 106 may use tools corresponding to camera UI developer information 134 to at least one of modify or delete at least a portion of the features of the default version of the camera user interface. In one or more additional examples, camera UI developer information 134 may indicate that at least a portion of the features of the default version of the camera user interface may not be modified or deleted by a developer of a third-party application 106. In one or more implementations, camera UI data 138 may indicate one or more user interface elements included in the default version of the camera user interface displayed via client application 104. The one or more user interface elements may be related to a search function, a content sharing function, an authoring tool, augmented reality content, a content access function, or one or more combinations thereof.
[0049] The camera UI data 138 may include third-party modifications 140. The third-party modifications 140 indicate changes made to the default version of the camera user interface by the developer of the third-party application 106 based on the camera UI developer information 134. In one or more examples, the third-party modifications 140 may indicate one or more corresponding modifications corresponding to each third-party application 106. That is, the modifications to the default version of the camera user interface corresponding to the corresponding third-party application 106 may be stored such that, in response to launching the client application 104 from the corresponding third-party application 106, the modifications are retrieved from the database 122 and implemented by the client application 104. In various examples, the modifications included in the third-party modifications 140 for the corresponding third-party application 106 may be stored in association with an identifier of the corresponding third-party application 106.
[0050] In one or more illustrative examples, a user of client device 102 can launch an instance of third-party application 106. The instance of third-party application 106 can be launched in response to selecting a user interface element, such as an icon, corresponding to third-party application 106. Selection of the user interface element corresponding to third-party application 106 can cause at least one user interface of third-party application 106 to be displayed via a display device of client device 102. In one or more examples, the at least one user interface of third-party application 106 can include a user interface element that can be selected to launch an instance of client application 104 on client device 102. In various examples, launching the instance of client application 104 from third-party application 106 can cause at least one user interface of client application 104 to be displayed via client device 102. In one or more scenarios, third-party application 106 can operate in the background after the instance of client application 104 has been launched from third-party application 106. The user interface element corresponding to client application 104 included in the user interface of third-party application 106 can be associated with a uniform resource identifier, such as a link or address, that causes a camera user interface of client application 104 to be displayed.
[0051] Launching client application 104 from third-party application 106 can cause the camera user interface of client application 104 to be displayed via a display device of client device 102. In one or more examples, content previously displayed via third-party application 106 can be included in the camera user interface. For example, at least one of textual content, video content, or image content displayed via the user interface of third-party application 106 can be displayed in the camera user interface of client application 104, from which the instance of client application 104 was launched. In this manner, client application 104 can obtain content to be included in the camera user interface from third-party application 106. In another example, audio content consumed via third-party application 106 can continue to be played via one or more output devices of client device 102 when the instance of client application 104 is launched from third-party application 106.
[0052] In one or more examples, the client application 104 can obtain content to be included in the modified version of the camera user interface from the server system 112. For example, the camera UI system 132 can send a portion of the third-party UI data 136 related to the third-party application 106 to the client application 104 so that information related to the third-party application 106 can be displayed in the modified version of the camera user interface. The camera UI system 132 can also send information to the client application 104 in response to launching the client application 104 from the third-party application 106, indicating at least one of user interface elements or layout information of the modified version of the camera interface to be displayed via the client application 104.
[0053] In various examples, in response to receiving an indication from at least one of the client application 104 or the third-party application 106, the camera UI system 132 can query the database 122 for at least one of the third-party UI data 136 or the third-party modifications 140 to determine data to send to the client application 104 corresponding to the modified camera user interface of the client application 104. The information provided by the camera UI system 132 to the client application 104 can indicate at least one of one or more user interface elements, text content, video content, or image content to be included in the modified version of the camera user interface. In this manner, the client application 104 can use the information obtained from the server system 112 to generate a customized version of the camera user interface of the client application 104 that corresponds to the third-party application 106 that the client application 104 launched.
[0054] In one or more implementations, the user of client application 104 can also change the content displayed via the modified version of the camera user interface. For illustration, augmented reality content can be applied to at least one of the image content or video content displayed in the modified version of the camera user interface. Additionally, at least one of an overlay or an annotation can be applied to at least one of the image content or video content displayed in the modified version of the camera user interface of client application 104. The user of client application 104 can also delete content from the modified version of the camera user interface. In one or more examples, the user of client application 104 can delete content related to third-party application 106 included in the modified version of the camera user interface.
[0055] Content displayed in the modified version of the camera user interface can be captured and shared with additional users of client application 104. For example, image content captured via at least one camera of client device 102 can be displayed in the modified version of the camera user interface. Additionally, content related to a third-party application 106 launched from client application 104 can also be displayed in conjunction with the image content. Client application 104 can generate additional content that includes image content captured by at least one camera of client device 102 and information related to third-party application 106 obtained from at least one of the instance of third-party application 106 that launched client application 104 or server system 112. In one or more illustrative examples, the additional content can include an image of the user of client application 104 captured via at least one camera of client device 102 and information indicating a song the user is listening to via third-party application 106. In one or more further illustrative examples, the additional content can include an image of the user of client application 104 captured via at least one camera of client device 102 and fitness information generated by third-party application 106, such as a workout routine or cycling route.
[0056] Figure 2 1 is a block diagram illustrating further details regarding the server system 112 according to some examples. Specifically, the server system 112 is shown as including the client application 104 and the application server 118. The server system 112 contains several subsystems that are supported on the client side by the client application 104 and on the server side by the application server 118. These subsystems include, for example, a transient timer system 202, a collection management system 204, an augmentation system 206, a mapping system 208, a gaming system 210, and a camera UI system 132.
[0057] The short-term timer system 202 is responsible for enforcing temporary or time-limited access to content by the client application 104 and the messaging application system 126. The short-term timer system 202 includes several timers that selectively enable access (e.g., for presentation and display) of messages and associated content via the client application 104 based on duration and display parameters associated with the message or message collection (e.g., a story). Further details regarding the operation of the short-term timer system 202 are provided below.
[0058] The collection management system 204 is responsible for managing groups or collections of media (e.g., collections of text, images, 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 made available for a specified time period (e.g., the duration of the event to which the content relates). 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 icons that provide notification to the user interface of the client application 104 of the existence of a particular collection.
[0059] In addition, the collection management system 204 includes a curation interface 212 that enables collection managers to manage and curate specific content collections. For example, the curation interface 212 enables event organizers to curate content collections related to a specific event (e.g., removing 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, users can be paid compensation for including user-generated content in a collection. In such cases, the collection management system 204 operates to automatically pay such users for using their content.
[0060] The enhancement system 206 provides various functions that enable users to enhance (e.g., annotate or otherwise modify or edit) media content, such as messages, associated with content generated via the client application 104. For example, the enhancement system 206 provides functions related to generating and publishing media overlays for content processed by the server system 112. The enhancement system 206 is operable to supply media overlays or enhancements (e.g., image filters) to the client application 104 based on the geographic location of the client device 102. In another example, the enhancement system 206 is operable to supply media overlays to the client application 104 based on other information (e.g., social network information of the user of the client device 102). Media overlays 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 102. For example, a media overlay can include text or images that can be overlaid on top of a photo taken by the client device 102. 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 enhancement system 206 uses the geographic location of the client device 102 to identify a media overlay that includes the name of a business at the geographic location of the client device 102. 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.
[0061] 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 circumstances under 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.
[0062] In other examples, the enhancement system 206 provides a merchant-based publishing platform that enables merchants to select specific media coverage associated with a geographic location via a bidding process. For example, the enhancement system 206 associates the media coverage of the highest-bidding merchant with the corresponding geographic location within a predefined amount of time.
[0063] The mapping system 208 provides various geo-location functions and supports presentation of map-based media content and messages by the client application 104. For example, the mapping system 208 enables display of (e.g., stored in) a map on a map. Figure 3308) 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 those friends within the context of the map. For example, on the map interface of the client application 104, messages posted by the user to the server system 112 from a particular geographic location can be displayed to the particular user's "friends" within the context of that particular location on the map. In addition, the user can also share his or her location and status information with other users of the server system 112 via the client application 104 (e.g., using an appropriate status avatar), which is similarly displayed to the selected user within the context of the map interface of the client application 104.
[0064] The gaming system 210 provides various gaming functions within the context of the client application 104. The client application 104 provides a gaming interface that provides a list of available games that can be launched by a user within the context of the client application 104 and played with other users of the server system 112. The server system 112 also enables a particular user to invite other users to play a particular game by issuing an invitation to such other users from the client application 104. The client application 104 also supports both voice messaging and text messaging (e.g., chat) within the context of gaming, provides leaderboards for gaming, and also supports the provision of in-game rewards (e.g., coins and items).
[0065] The camera UI system 132 can obtain information from the developer of the third-party application that can be used to generate a modified version of the client application 104. In one or more examples, the camera UI system 132 can enable the developer of the third-party application 106 to at least one of: add or delete content from the default camera user interface of the client application 104 to create a modified version of the camera user interface. The modified version of the camera user interface can be used to generate additional content that can be distributed to additional users of the client application 104 via the client application 104. In one or more examples, the additional content generated using the modified version of the camera interface of the client application 104 can include augmented reality content applied via the augmentation system 206.
[0066] Figure 3 is a diagram illustrating a data structure 300 that may be stored in the database 122 of the server system 112 according to one or more example implementations. Although the contents of the database 122 are shown as including a plurality of tables, it should be understood that the data may be stored in other types of data structures (e.g., as an object-oriented database).
[0067] The database 122 includes message data stored in a message table 302. For any particular message, the message data includes at least message sender data, message recipient (or receiver) data, and a payload.
[0068] The entity table 304 stores entity data and is linked (e.g., by reference) to the entity graph 306 and profile data 308. Entities whose records are stored within the entity table 304 may include individuals, corporate entities, organizations, objects, places, events, and the like. Regardless of the entity type, any entity for which the server system 112 stores data may be an identified entity. Each entity is provided with a unique identifier and an entity type identifier (not shown).
[0069] The entity graph 306 stores information about relationships and associations between entities. By way of example only, such relationships may be interest-based or activity-based social relationships, professional relationships (e.g., working in a common company or organization).
[0070] The profile data 308 stores various types of profile data about a particular entity. Based on the privacy settings specified by the particular entity, the profile data 308 can be selectively used and presented to other users of the architecture 100. In the case where the entity is a person, the profile data 308 includes, for example, the user's name, phone number, address, settings (e.g., notification and privacy settings), and an avatar representation (or a collection of such avatar representations) selected by the user. The particular user can then selectively include one or more of these avatar representations within the content of messages or other data transmitted via the architecture 100, as well as on a map interface displayed to other users by the client application 104. The collection of avatar representations can include a "status avatar," which presents a graphical representation of the status or activity that the user may choose to communicate at a particular time.
[0071] Where the entity is a group, the profile data 308 for the group may similarly include one or more avatar representations associated with the group, in addition to the group name, members, and various settings (eg, notifications) of the relevant group.
[0072] Database 122 also stores enhancement data, such as overlays or filters, in enhancement table 310. The enhancement data is associated with and applied to videos (whose data is stored in video table 314) and images (whose data is stored in image table 316).
[0073] In one example, a filter is an overlay that is displayed as an overlay on an image or video during presentation to a recipient user. Filters can be of various types, including user-selected filters from a set of filters presented to a sending user by the client application 104 while the sending user is composing a message. Other types of filters include geolocation filters (also known as geofilters), which can be presented to a sending user based on geographic location. For example, a geolocation filter specific to a nearby or special location can be presented by the client application 104 within the user interface based on geographic location information determined by a global positioning system (GPS) unit of the client device 102.
[0074] Another type of filter is a data filter, which can be selectively presented to the sending user by the client application 104 based on other input or information collected by the client device 102 during the message creation process. Examples of data filters include the current temperature at a particular location, the current speed the sending user is traveling, the battery life of the client device 102, or the current time.
[0075] Other augmented data that can be stored in the image table 316 include augmented reality content items (eg, corresponding to application lenses or augmented reality experiences). Augmented reality content items can be real-time special effects and sounds that can be added to images or videos.
[0076] As described above, augmented data includes augmented reality content items, overlays, image transformations, AR images, and similar items involving modifications that can be applied to image data (e.g., video or images). This includes real-time modifications, which modify the image as it is captured using the device sensors of the client device 102 (e.g., one or more cameras) and then display the image on the screen of the client device 102 with the modifications. This also includes modifications to stored content (e.g., video clips in a gallery that can be modified). For example, on a client device 102 that has access to multiple augmented reality content items, a user can use a single video clip with multiple augmented reality content items to see how different augmented reality content items will modify the stored clip. For example, by selecting different augmented reality content items for the content, multiple augmented reality content items applying different pseudo-random motion models can be applied to the same content. Similarly, real-time video capture can be used with illustrated modifications to show how the video image currently captured by the sensors of the client device 102 will modify the captured data. Such data can be simply displayed on the screen without being stored in memory, or the content captured by the device sensors can be recorded and stored in memory with or without modifications (or both). In some systems, a preview function can show how different augmented reality content items will look in different windows on the display at the same time. For example, this can enable viewing multiple windows with different pseudo-random animations on the display at the same time.
[0077] Thus, using data from augmented reality content items and various systems or other such transformation systems that use this data to modify content can involve detecting objects (e.g., faces, hands, bodies, cats, dogs, surfaces, objects, etc.) in video frames, tracking these objects as they leave, enter, and move around the field of view, and modifying or transforming these objects as they are tracked. In various implementations, different methods for implementing such transformations can be used. Some examples can involve generating a three-dimensional mesh model of one or more objects and using transformations and animated textures of the model within the video to implement the transformations. In other examples, tracking of points on the objects can be used to place images or textures (which can be two-dimensional or three-dimensional) at the tracked locations. In further examples, neural network analysis of video frames can be used to place images, models, or textures within content (e.g., images or video frames). Thus, augmented reality content items refer to both the images, models, and textures used to create transformations within the content, as well as the additional modeling and analysis information required to implement such transformations through object detection, tracking, and placement.
[0078] Real-time video processing can be performed using any type of video data (e.g., video streams, video files, etc.) stored in the memory of any type of computerized system. For example, a user can load a video file and store it in the device's memory, or a video stream can be generated using the device's sensors. In addition, computer animation models can be used to process any object, such as a human face and parts of a human body, an animal, or an inanimate object such as a chair, a car, or other objects.
[0079] In some examples, when a specific modification is selected along with the content to be transformed, the element to be transformed is identified by a computing device and then, if present in a frame of a video, is detected and tracked. The elements of the object are modified according to the modification request, thereby transforming the frame of the video stream. For different types of transformations, the transformation of the frame of the video stream can be performed using different methods. For example, for a frame transformation primarily involving changing the form of an element of an object, feature points for each element of the object are calculated (e.g., using an active shape model (ASM) or other known methods). A mesh based on the feature points is then generated for each of at least one element of the object. This mesh is used to subsequently track the elements of the object in the video stream. During the tracking process, the mesh referenced for each element is aligned with the position of each element. Additional points are then generated on the mesh. A first set of first points is generated for each element based on the modification request, and a second set of points is generated for each element based on the set of first points and the modification request. The frame of the video stream can then be transformed by modifying the elements of the object based on the set of first and second points and the mesh. In such a method, the background of the modified object can also be altered or distorted by tracking and modifying the background.
[0080] In some examples, a transformation that changes some areas of an object using the elements of the object can be performed by calculating feature points for each element of the object and generating a grid based on the calculated feature points. Points are generated on the grid, and then various areas are generated based on these points. The elements of the object are then tracked by aligning the area of each element with the position of each of at least one element, and the properties of the area can be modified based on the modification request, thereby transforming the frame of the video stream. Depending on the specific modification request, the properties of the mentioned area can be transformed in different ways. Such modifications can involve: changing the color of the area; deleting at least some partial areas from the frame of the video stream; including one or more new objects in the area based on the modification request; and modifying or distorting elements of the area or object. In various implementations, any combination of such modifications or other similar modifications can be used. For certain models to be animated, some feature points can be selected as control points for the entire state space to be used to determine options for model animation.
[0081] In some examples of computer animation models that use face detection to transform image data, faces are detected on an image using a specific face detection algorithm (e.g., Viola-Jones). An active shape model (ASM) algorithm is then applied to the face region of the image to detect facial feature reference points.
[0082] Other methods and algorithms suitable for face detection can be used. For example, in some implementations, features are located using landmarks that represent distinguishable points that are present in most of the images considered. For example, for facial landmarks, the location of the left eye pupil can be used. If the initial landmarks are not recognizable (for example, if the person has an eye patch), secondary landmarks can be used. Such a landmark recognition process can be used for any such object. In some examples, a set of landmarks forms a shape. The shape can be represented as a vector using the coordinates of the points in the shape. One shape is aligned with another shape using a similarity transformation (allowing translation, scaling, and rotation) that minimizes the average Euclidean distance between the shape points. The average shape is the mean of the aligned training shapes.
[0083] In various examples, the landmark search begins with an average shape aligned with the position and size of the face determined by the global face detector. This search then iterates until convergence occurs, suggesting tentative shapes by adjusting the positioning of shape points through template matching of the image texture surrounding each point, and then fitting the tentative shapes to the global shape model. In one or more systems, individual template matches are unreliable, and the shape model pools the results of weak template matches to form a stronger overall classifier. This entire search is repeated at each level in the image pyramid, from coarse to fine resolution.
[0084] The transformation system can capture an image or video stream on a client device (e.g., client device 102) and perform complex image manipulations locally on the client device 102 while maintaining an appropriate user experience, computational time, and power consumption. Complex image manipulations can include size and shape changes, emotion transformations (e.g., changing a face from a frown to a smile), state transitions (e.g., aging an object, reducing apparent age, changing gender), style transfer, application of graphical elements, and any other suitable image or video manipulations enabled by a convolutional neural network that has been configured to execute efficiently on the client device 102.
[0085] A computer-animated model for transforming image data can be used by a system in which a user can capture an image or video stream of the user (e.g., a selfie) using a client device 102 having a neural network operating as part of a client application 104 operating on the client device 102. A transformation system operating within the client application 104 determines the presence of a face in the image or video stream and provides a modification icon associated with the computer-animated model to transform the image data, or the computer-animated model can be presented in association with an interface described herein. The modification icon includes changes that can be the basis for modifying the user's face within the image or video stream as part of the modification operation. Once the modification icon is selected, the transformation system initiates a process that transforms the user's image to reflect the selected modification icon (e.g., generating a smiley face on the user). Once the image or video stream is captured and the specified modification is selected, the modified image or video stream can be presented in a graphical user interface displayed on the client device 102. The transformation system can implement a complex convolutional neural network on a portion of the image or video stream to generate and apply the selected modification. That is, once the modification icon is selected, the user can capture the image or video stream and be presented with the modified result in real time or near real time. Furthermore, while the video stream is being captured, the modifications can be persistent and the selected modification icon remains toggled. A machine learning neural network can be used to implement such modifications.
[0086] The graphical user interface presenting the modifications performed by the transformation system can provide the user with additional interactive options. Such options can be based on the interface used to initiate the selection of a particular computer animation model and content capture (e.g., initiated from a content creator user interface). In various implementations, the modifications can be persistent after the initial selection of the modification icon. The user can turn the modifications on or off by tapping or otherwise selecting a face modified by the transformation system, and store it for later review or browsing to other areas of the imaging application. In the case of multiple faces being modified by the transformation system, the user can globally turn the modifications on or off by tapping or selecting a single face modified and displayed within the graphical user interface. In some implementations, each face in a group of multiple faces can be individually modified, or such modifications can be individually turned on, by clicking or selecting a single face or a series of single faces displayed within the graphical user interface.
[0087] The story table 312 stores data about a collection of messages and associated images, video, or audio data that are compiled into a collection (e.g., a story or library). The creation of a particular collection can be initiated by a particular user (e.g., each user whose record is stored in the entity table 304). A user can create a "personal story" in the form of a collection of content that has been created and sent / broadcasted by that user. To this end, the user interface of the client application 104 can include a user-selectable icon that enables the sending user to add specific content to his or her personal story.
[0088] A collection may also constitute a "live story" that is a collection of content from multiple users, created manually, automatically, or using a combination of manual and automatic techniques. For example, a "live story" may constitute a curated stream of user-submitted content from different locations and events. Users whose client devices have location services enabled and who are at a common location event at a particular time may be presented with an option, for example via the user interface of the client application 104, to contribute content to a particular live story. Live stories may be identified to a user by the client application 104 based on his or her location. The end result is a "live story" told from a community perspective.
[0089] Another type of content collection is called a "location story," which enables users whose client devices 102 are located within a particular geographic location (e.g., on a college or university campus) to contribute to a particular collection. In some examples, contributions to location stories may require secondary authentication to verify that the end user belongs to a particular organization or other entity (e.g., is a student on a university campus).
[0090] As mentioned above, video table 314 stores video data that, in one example, is associated with a message whose record is stored in message table 302. Similarly, image table 316 stores image data that is associated with a message whose message data is stored in entity table 304. Entity table 304 may associate various enhancements from enhancement table 310 with the various images and videos stored in image table 316 and video table 314.
[0091] The database 122 may also store a third-party UI data table 318. The third-party UI data table 318 may include data structures for each third-party application 106 that can be used to launch an instance of the client application 104. The data structures included in the UI data table 318 for the respective third-party application 106 may indicate information that can be used to generate a modified version of the camera user interface of the client application 104. This information may indicate at least one of textual content, image content, or video content that can be added to the camera user interface of the client application 104. In various examples, the data structures included in the third-party UI data table 318 may indicate the storage location of information to be included in the modified version of the camera user interface of the client application 104, such as at least one of one or more uniform resource indicators, one or more links, one or more addresses, or one or more file paths. The data structures included in the third-party UI data table 318 may also store information indicating the layout of the modified version of the camera user interface of the client application 104. The layout may include one or more user interface elements to be included in the modified version of the camera user interface and the corresponding positions of the one or more user interface elements. The layout may also include location information of content related to the corresponding third-party application 106 within the modified version of the camera user interface of the client application 104. In one or more additional examples, for the corresponding third-party application 106, the data structure included in the third-party UI data table 318 may include, for example, at least one of information indicating editing actions that a user of the client application 104 can perform on content included in the modified version of the camera user interface or information indicating actions within the client application 104 that can be performed on content generated using the modified version of the camera user interface of the client application 104.
[0092] Figure 4 is a diagram illustrating an example framework of content 400 according to some implementations. Content 400 may be generated by a client application 104. In various examples, content 400 may be generated by a first instance of client application 104 and transmitted to at least one of a second instance of client application 104 or a server system 112. Where content 400 includes messages, content 400 may be used to populate a message table 302 stored within database 122 and accessible by application server 114. In one or more implementations, content 400 may be stored in memory as "in-transit" or "in-flight" data for at least one of client device 102 or application server 114. Content 400 is illustrated as including at least some of the following components:
[0093] Content identifier 402 : a unique identifier that identifies the content 400 .
[0094] Message text payload 404 : text to be generated by the user via the user interface of the client device 102 and included in the content 400 .
[0095] Content image payload 406 : Image data captured by the camera component of the client device 102 or retrieved from the memory component of the client device 102 and included in the content 400 . The image data of the content 400 sent or received may be stored in the image table 316 .
[0096] Content video payload 408 : Video data captured by the camera component or retrieved from the memory component of the client device 102 and included in the content 400 . The video data of the content 400 that is sent or received may be stored in the video table 314 .
[0097] • Content audio payload 410 : audio data captured by a microphone or retrieved from a memory component of the client device 102 and included in the content 400 .
[0098] Content enhancement data 412: represents enhancement data (e.g., filters, stickers, or other annotations or enhancements) to be applied to the content image payload 406, content video payload 408, or content audio payload 410 of the content 400. Enhancement data for the transmitted or received content 400 may be stored in the enhancement table 310.
[0099] Content duration parameter 414: A parameter value in seconds that indicates the amount of time that one or more portions of the content 400 (e.g., content image payload 406, content video payload 408, content audio payload 410) will be presented to or made accessible to the user via the client application 104.
[0100] Content geolocation parameters 416: Geolocation data (e.g., latitude and longitude coordinates) associated with the content payload of the message. Multiple content geolocation parameter 416 values may be included in the payload, with each of these parameter values being associated with a content item included in the content (e.g., a specific image within the content image payload 406 or a specific video within the content video payload 408).
[0101] Content story identifier 418: An identifier value that identifies one or more content collections (e.g., a "story" identified in stories table 312) associated with a particular item in content image payload 406 of content 400. For example, the identifier value can be used to associate multiple images within content image payload 406 with multiple content collections.
[0102] Content tags 420: Each content 400 may be tagged with a plurality of tags, each of which indicates the subject matter of the content included in the content payload. For example, if a particular image included in the content image payload 406 depicts an animal (e.g., a lion), a tag value may be included in the content tags 420 indicating the relevant animal. The tag value may be manually generated based on user input or may be automatically generated using, for example, image recognition.
[0103] • Content sender identifier 422: An identifier (eg, a messaging system identifier, an email address, or a device identifier) that indicates the user of the client device 102 on which the content 400 was generated and from which the content 400 was sent.
[0104] • Content recipient identifier 424: Indicates an identifier (eg, a messaging system identifier, an email address, or a device identifier) of the user of the client device 102 to which the content 400 is addressed.
[0105] Modified camera user interface identifier 426: One or more identifiers of additional content related to the third-party application 106 may be included in the content 400 or accessible via the client application 104. The modified camera user interface identifier 426 may correspond to textual content, image content, video content, audio content, or one or more combinations thereof related to the third-party application 106.
[0106] The data (e.g., values) of various components of content 400 may correspond to pointers to locations in a table in which the data is stored. For example, the image value in content image payload 406 may be a pointer to a location (or its address) in image table 316. Similarly, the value in content video payload 408 may point to data stored in video table 314, the value stored in content enhancement data 412 may point to data stored in enhancement table 310, the value stored in content story identifier 418 may point to data stored in story table 312, and the values stored in content sender identifier 422 and content recipient identifier 424 may point to user records stored in entity table 304. Modified camera user interface identifier 426 may point to information related to third-party application 106 stored in third-party UI data table 318, which may be presented by client application 104 in conjunction with content 400.
[0107] Figure 5is a diagrammatic representation illustrating an architecture 500 for modifying a camera user interface based on third-party modifications, according to one or more example implementations. The architecture 500 may include a server system 112 that includes a camera user interface system 132. The camera user interface system 132 may enable a developer of a third-party application 106 to customize the camera user interface of a client application 104. For example, an instance of a client application 104 may be launched from an instance of a third-party application 106, and the target user interface displayed when the client application 104 is launched may include a modified version of the camera user interface of the client application 104. In this manner, in response to launching the client application 104 from a third-party application 106 rather than the default home page of the client application 104, a customized version of the camera user interface of the client application 104 may be displayed.
[0108] The camera user interface system 132 can provide a camera user interface developer framework 502 that developers of third-party applications 106 can use to generate customized versions of the camera user interface of the client application 104. The camera user interface developer framework 502 can include a number of tools that developers of third-party applications 106 can use to modify the camera user interface of the client application 104. For example, the camera user interface developer framework 502 can include a software developer toolkit that can be used to modify the camera user interface of the client application 104. In addition, the camera user interface developer framework 502 can include example software code, rules, one or more application programming interfaces, or one or more combinations thereof. In various examples, the rules included in the camera user interface developer framework 502 can include specifications regarding the content and parameters of modifications that can be made to the camera user interface of the client application 104 so that the customized version of the camera user interface of the client application 104 can be efficiently implemented by the server system 144. In one or more examples, the rules of the camera user interface developer framework 502 can indicate the file types supported by the camera user interface of the client application 104. The rules of the camera user interface developer framework 502 may also indicate modifiable features of the camera user interface of the client application 104 and non-modifiable features of the camera user interface of the client application 104. Additionally, the camera user interface developer framework 502 may indicate a number of user interface elements that may be included in a customized version of the camera user interface of the client application 104, actions that may be performed with respect to content included in the camera user interface of the client application 104, or a combination thereof.
[0109] The server system 112 can provide developer devices 108 of developers of third-party applications 106 with access to the camera user interface developer framework 502. In various examples, the camera user interface system 132 can provide camera user interface developer framework information 504 to one or more developer devices 108. In one or more examples, the camera user interface developer framework information 504 can include or be provided via one or more user interfaces that can display information related to the camera user interface developer framework 502 and can include one or more user interface elements that can be selected to implement features of the camera user interface developer framework 502. The camera user interface developer framework information 504 can include one or more user interface elements that can capture input indicating at least one of user interface elements to be included in a customized camera user interface for a client application 104, information related to a third-party application 106 to be displayed within the customized camera user interface for a client application 104, or an information layout and user interface elements for a customized camera user interface for a client application 104.
[0110] In one or more implementations, the developer device 108 may send third-party application information 506 to the server system 112 in accordance with the camera user interface developer framework 502. The third-party application information 506 may include information related to the third-party application 106 to be displayed within the camera user interface of the client application 104. The third-party application information 506 may indicate information to be passed from the third-party application 106 to the client application 104 and to be displayed in the camera user interface of the client application 104. In the case where the third-party application 106 is a media player application, the third-party application information 506 may indicate one or more identifiers of media consumed via the third-party application 106 to be passed to the client application 104 for display in the camera user interface of the client application 104. The third-party application information 506 may also indicate branding information related to the third-party application 106, such as the name of the third-party application, a logo of the third-party application 106, and the like. In other examples, the third-party application information 506 may include at least one of image content, video content, audio content, or text content related to the third-party application 106. In one or more examples, the third-party application information 506 may include location information from which portions of the third-party application information 506 may be retrieved, such as a uniform resource indicator, a path, an address, etc. In one or more further examples, the third-party application information 506 may include a copy of content related to the third-party application 106 that may be stored in one or more databases accessible to the server system 112.
[0111] The developer device 108 may also send camera user interface modifications 508 to the server system 112 according to the camera user interface developer framework 502. The camera user interface modifications 508 may indicate changes to the camera user interface of the client application 104 to generate the customized version of the camera user interface. In one or more examples, the camera user interface modifications 508 may indicate at least one of one or more user interface elements that can be added to the camera user interface or one or more user interface elements that can be deleted from the camera user interface. The camera user interface modifications 508 may also indicate changes to the information layout or user interface element layout of the camera user interface of the client application 104. In other examples, the camera user interface modifications 508 may indicate operations that can be performed on content that can be displayed via the camera user interface.
[0112] In various implementations, a user 510 of a client device 102 can launch an instance of a third-party application 106. The third-party application 106 can include a gaming application, a health and fitness application, a media consumption application, a content access application, a navigation application, an e-commerce application, a social networking application, or one or more combinations thereof. A third-party application user interface 512 can be displayed via the third-party application 106 and can include content 514. The third-party application user interface 512 can also include a user interface element 516 that can be selected to launch an instance of the client application 104 on the client device 102. In one or more examples, the third-party application 106 can continue to operate after launching the instance of the client application 104.
[0113] In various examples, in response to selection of the user interface element 516, a client application launch request 518 can be sent to the server system 112. The client application launch request 518 can be sent to the server system 112 to obtain information related to the third-party application 106 that can be displayed within the client application 104. In one or more examples, the server system 112 can access at least a portion of the information related to the third-party application 106 displayed via the client application 104. In one or more additional examples, at least a portion of the information related to the third-party application 106 displayed via the client application 104 is stored by the client device 102.
[0114] In response to receiving the client application launch request 518, the camera user interface system 132 can retrieve information related to the third-party application 106 for use in presenting a camera user interface for the client application 104. The information retrieved by the camera user interface system 132 in response to the client application launch request 518 can include at least portions of the third-party application information 506. Additionally, the information retrieved by the camera user interface system 132 in response to the client application launch request 518 can include at least portions of the camera user interface modifications 508. In various examples, the client application launch request 518 can include an identifier of the third-party application 106, and the camera user interface system 132 can use the identifier of the third-party application 106 to retrieve information related to the third-party application 106 to send to the client device 102 to generate a camera user interface for the client application 104. The camera user interface system 132 can compile the information related to the third-party application 106 used to generate the camera user interface for the client application 104 into modified camera user interface data 520 and send the modified camera user interface data 520 to the client device 102. The client application 104 can then use the modified camera user interface data 520 to generate a modified camera user interface 522 for the client application 104. In one or more examples, the camera user interface system 132 can direct another system, such as a system implemented and maintained by a third party providing the third party application 106, to send information used to generate the modified camera user interface 522 to the client device 102.
[0115] Modified camera user interface 522 may include content 524. Content 524 may include at least one of image content or video content captured in the field of view of at least one camera of client device 102. For example, content 524 may include live content being captured by at least one camera of client device 102. Additionally, modified camera user interface 522 may include user interface element group 526. User interface element group 526 may include a plurality of user interface elements that can be selected to at least one of modify settings of the client device 102's camera or activate one or more tools (e.g., a timer tool, a grid tool) that can be used to generate user content based on content 524. Modified camera user interface 522 may also include additional content 528. Additional content 528 may be related to third-party application 106. In various examples, additional content 528 may be related to content that is at least one of consumed or accessed by third-party application 106 when client application launch request 518 is made. In another example, at least a portion of additional content 528 may include at least a portion of third-party application information 506 provided by developer device 108. Additionally, modified camera user interface 522 may include another user interface element 530. Another user interface element 530 can be selected to generate user content based on content 524. For example, another user interface element 530 can be selected to generate a photo that includes image content included in content 524. In one or more additional examples, another user interface element 530 can be selected to generate a video that includes content 524 captured over a period of time. In one or more illustrative examples, selection of another user interface element 530 can result in the generation of data for a period of time that includes image data or video data generated by client device 102 corresponding to content 524.
[0116] In various examples, after user content is generated in response to selection of another user interface element 530, a subsequent user interface ( Figure 5). In one or more examples, a subsequent user interface may include a user interface element that can be selected to apply one or more authoring tools to the user content. The one or more authoring tools may apply at least one of text content, audio content, video content, or image content to the user content. The one or more authoring tools may also modify the appearance of one or more objects included in the user content by applying one or more visual effects to the user content. The one or more authoring tools may implement at least one of overlays, annotations, filtering, or augmented reality content for the user content. In addition, the subsequent user interface may include one or more user interface elements that can be selected to distribute the user content or a modified version of the user content. In one or more illustrative examples, the user content or the modified version of the user content may be shared with one or more additional users of the client application 104, such as one or more users of the client application 104 included in the social network of user 510.
[0117] In one or more implementations, the modified camera user interface 522 can be generated relative to a default camera user interface 532. The default camera user interface 532 can be displayed via the client application 104 in situations where the client application 104 is not launched directly from the third-party application 106. That is, the default camera user interface 532 can be accessed when navigating through the client application 104 or when the client application 104 is launched by selection of an icon included in a group of icons displayed in a user interface of the client device 102, such as a home page of an operating system of the client device 102. The modified camera user interface 522 can be generated based on modifications to the default camera user interface 532, where the modifications are provided by one or more developers of the third-party application 106 in accordance with the camera user interface developer framework 502.
[0118] The default camera user interface 532 can include content 534 that includes at least one of image content or video content captured in a field of view of at least one camera of the client device 102. In various examples, the content 534 can correspond to the content 524. The default camera user interface 532 can also include a group of user interface elements 526 and another user interface element 530. In one or more examples, the camera user interface developer framework 502 can indicate that one or more features of the default camera user interface 532 are to be saved from the default camera user interface 532 to the modified camera user interface 522, such as the group of user interface elements 526 and the another user interface element 530.
[0119] The default camera user interface 532 may also include features that may be modified or deleted by one or more developers of the third-party application 106. For example, the default camera user interface 532 may include a user interface element 536 that corresponds to a search function of the client application 104. To illustrate, the user interface element 536 may be used to search for one or more additional users of the client application 104, such as one or more users of the client application 104 included in the social network of the user 510.
[0120] Additionally, the default camera user interface 532 may include an additional user interface element group 538. The additional user interface element group 538 may include a first user interface element 540 that can be selected to access content provided by one or more content sources. For illustration, the first user interface element 540 can be selected to access content related to the user 510's contacts, such as content of additional users of the client application 104 included in the user 510's social network or content of additional users of the client application 104 that the user 510 is following. The additional user interface element group 538 may also include a second user interface element 542. The second user interface element 542 can be selected to invoke a messaging function of the client application 104. In one or more examples, the second user interface element 542 can be selected to generate a message including the content 534. Additionally, the additional user interface element group 538 may include a third user interface element 544. The third user interface element 544 can be selected to access content of the user 510 that has been generated using the client application 104, such as at least one of image content or video content generated using the client application 104. Content generated using client application 104 can be stored in association with the user 510's account and a service provider that, via server system 112, at least one of implements or maintains client application 104. In one or more illustrative examples, third user interface element 544 can be selected to access a collection of content related to user 510. Additionally, additional user interface element group 538 can include fourth user interface element 546. Fourth user interface element 546 can be selected to search for augmented reality content items that can be applied to content 534. Selection of fourth user interface element 546 can generate a group of options corresponding to respective augmented reality content items. Selection of an option in the group of options can cause the corresponding augmented reality content item to be applied to content 534.
[0121] Figure 6 and Figure 7A flowchart of one or more implementations of processes for modifying a camera user interface of a client application 104 based on content associated with a third-party application 106 is shown. These processes may be embodied as computer-readable instructions executed by one or more processors, such that the operations of these processes may be performed in part or in whole by functional components of at least one of the client application 104 or the server system 112. Therefore, in some cases, the processes are described below with reference thereto by way of example. However, in other implementations, the processes may be executed in part or in whole by functional components of at least one of the client application 104 or the server system 112. Figure 6 and Figure 7 At least some operations of the described processes may be deployed on various other hardware configurations. Figure 6 and Figure 7 The described processes are not intended to be limited to the server system 112 or the client device 102 and may be implemented in whole or in part by one or more additional components. Although the described flowcharts may illustrate the operations as sequential processes, many of the operations may be performed in parallel or simultaneously. In addition, the order of the operations may be rearranged. A process terminates when its operations are completed. A process may correspond to a method, procedure, algorithm, etc. The operations of a method may be performed in whole or in part, may be performed in combination with some or all of the operations of other methods, and may be performed by any number of different systems, such as the systems described herein, or any portion thereof, such as a processor included in any system.
[0122] Figure 6 6 is a flow diagram illustrating example operations for implementing a process 600 for a third party to modify a camera user interface of a client application using a framework, according to one or more example implementations. Process 600 may include, at operation 602, generating a framework associated with modifying an initial version of a camera user interface displayed via a client application. The framework may provide at least one of parameters or features corresponding to the modification to the camera user interface. In one or more examples, the framework may include at least one of a software developer toolkit, computer-readable instructions, one or more application programming interfaces, or one or more rules for modifying the initial version of the camera user interface. In one or more illustrative examples, the initial version of the camera user interface may correspond to a default version of the camera user interface. Furthermore, the framework may enable information to be passed from the third-party application to the client application, and the client application may display the information or the modified version of the information within the modified version of the camera user interface.
[0123] At operation 604, process 600 may include enabling camera user interface developer information corresponding to the framework to be accessed by an additional computing device of a developer of a third-party application. In various examples, the camera user interface developer information may be accessed via one or more user interfaces. The one or more user interfaces may include user interface elements that capture input related to modifications to the initial version of the camera user interface. In one or more examples, the one or more user interfaces may capture a first input for modifying one or more user interface elements of the initial version of the camera user interface. For example, the first input may involve adding one or more user interface elements to the initial version of the camera user interface. The first input may also involve deleting one or more user interface elements from the initial version of the camera user interface. The user interface elements included in the initial version of the camera user interface can be selected to cause one or more operations supported by the client application to occur. The one or more user interfaces associated with the framework may also capture a second input for adding content to the initial version of the camera user interface. For illustration, the second input may correspond to adding content associated with a third-party application to the initial version of the camera user interface. In one or more illustrative examples, the content associated with the third-party application added to the initial version of the camera user interface may correspond to content that is at least one of being displayed by the third-party application or being accessed by the third-party application.
[0124] In one or more implementations, the framework may indicate features of the initial version of the camera user interface that cannot be deleted from the initial version of the camera user interface. That is, the framework may include one or more restrictions on features included in the initial version of the camera user interface. In one or more examples, the framework may indicate at least one of one or more user interface elements of the initial version of the camera user interface that can be modified or one or more user interface elements of the initial version of the camera user interface that cannot be modified. In various examples, the framework may enable developers of third-party applications to specify the layout of features included in the modified version of the camera user interface. To illustrate, the framework may enable one or more positions of features included in the initial version of the camera user interface to be changed. Additionally, the framework may enable developers of third-party applications to specify the location within the modified version of the camera user interface for features added to the initial version of the camera user interface.
[0125] Additionally, at operation 606, process 600 may include receiving at least one of one or more camera user interface modifications based on the framework or third-party camera user interface data from an additional computing device of the developer. In one or more examples, the developer of the third-party application may utilize the user interface corresponding to the framework to modify the initial version of the camera user interface. The modifications may be stored in one or more databases. In various examples, the modifications may be stored in association with an identifier of the third-party application. In this manner, when the client application is launched from the third-party application, the modifications associated with the third-party application may be retrieved and used to generate a modified version of the camera user interface that is displayed when the client application is launched from the third-party application.
[0126] Furthermore, at operation 608, process 600 may include receiving an indication from the client device of a request to access the client application from the third-party application. The indication may be provided in response to a selection of a user interface element in a user interface of the third-party application. For example, a user of the third-party application may select the user interface element. The indication may include an identifier of the third-party application. Alternatively, the indication may include an identifier of a user of the third-party application.
[0127] Process 600 may include, at operation 610, determining one or more modifications to be made to an initial version of the camera user interface to generate a modified version of the camera user interface. In one or more examples, an identifier of a third-party application may be used to query one or more databases containing information regarding modifications made to the initial version of the camera user interface by the developer of the third-party application using a camera user interface developer framework. In this manner, the modifications to the initial version of the camera user interface corresponding to the third-party application may be applied to generate the modified version of the camera user interface. In various examples, content associated with the third-party application may be obtained and used to generate the modified version of the camera user interface. In one or more illustrative examples, a uniform resource indicator corresponding to the content associated with the third-party application may be retrieved and used to obtain the third-party application content. In one or more additional examples, user interface elements associated with the modified version of the modified version of the camera user interface associated with the third-party application may also be identified. In one or more other examples, a layout of the user interface elements and content may be determined. In yet other examples, content that is at least one of displayed or accessed by the third-party application upon input for launching the client application from the client application may be identified, and information associated with the content may be used to generate the modified version of the camera user interface.
[0128] At 612, process 600 may include sending modified camera user interface data corresponding to one or more modifications to the initial version of the camera user interface to a client device that launched the client application from the third-party application. The client device may then analyze the modified camera user interface data and implement the modified camera user interface data to display the modified version of the camera user interface.
[0129] Figure 7 7 is a flow chart illustrating example operations of a process 700 for generating a modified camera user interface based on information obtained from a third-party application developer, according to one or more example implementations. At operation 702, process 700 may include generating a user interface for a third-party application, the user interface including a user interface element that can be selected to launch an instance of a client application. In various examples, the developer of the third-party application may provide access to the client application from the third-party application by adding a user interface element to one or more user interfaces of the third-party application that causes the client application to be launched.
[0130] Additionally, at operation 704, process 700 may include receiving input indicating a selection of a user interface element. In one or more examples, in response to the selection of the user interface element, at least one request may be sent to a service provider to obtain information that may be used to present and display a camera user interface element for the client application. In one or more examples, the selection of the user interface element may enable identification of a uniform resource indicator corresponding to a target user interface generated when the client application is launched. In one or more illustrative examples, the target user interface may include a camera user interface of the client application that partially displays a field of view of at least one camera of the client device. In one or more additional examples, in response to the selection of the user interface element, information related to content of a third-party application that is at least one of displayed or accessed via the third-party application may be identified and communicated to the client application. The client application may use the third-party application content to generate at least a portion of the camera user interface.
[0131] Process 700 may include, at operation 706, obtaining modified camera user interface data indicating one or more modifications to an initial version of a camera user interface of a client application. The modified camera user interface data may indicate user interface elements to be included in the modified version of the camera user interface associated with the third-party application. The modified camera user interface data may also indicate a layout of features of the modified version of the camera user interface. Additionally, the modified camera user interface data may indicate information related to the third-party application that may be displayed in the modified version of the camera application, such as an identifier of the third-party application or information corresponding to content that is at least one of displayed by or accessible to the third-party application.
[0132] At operation 708, process 700 may include generating a modified version of the camera user interface based on the one or more modifications. Furthermore, at operation 710, process 700 may include displaying the modified version of the camera user interface, the modified version including information related to the third-party application and at least one of image content or video content captured by a camera of a client device executing an instance of the client application. In one or more examples, the modified version of the camera user interface may include one or more user interface elements to modify at least one of the image content or video content displayed in the modified version of the camera user interface. For example, the modified version of the camera user interface may include one or more user interface elements that can be selected to apply one or more augmented reality content items to at least one of the image content or video content. In one or more additional examples, the modified version of the camera user interface may include one or more user interface elements to create user content, such as image content or video content, that includes content captured in the camera's field of view and also includes content related to the third-party application. The user content may be shared with additional users of the client application. The user content may also be included in a message that can be sent to one or more recipients. In various examples, information related to the third-party application can be edited by a user of the client application before generating the user content and distributing the user content via the client application. For illustration, before generating the user content to be distributed via the client application, the identifier of the third-party application can be removed from the content displayed in the modified version of the camera user interface.
[0133] Figure 8is an illustration of a user interface 800 showing a camera view and formatted according to a framework used by developers of third-party applications to include content from a third party into a user interface according to one or more example implementations. The user interface 800 can be displayed via a display device of the client device 102 and generated by a client application (such as the client application 104) executed by the client device 102. The user interface 800 can be displayed in response to launching the client application 104 from the third-party application 106. Figure 8 In the illustrative example of , third-party application 106 can include a media player application. In one or more examples, user interface 800 can include a modified version of the camera user interface of client application 104 that has been designed by one or more developers of the media player application using a framework provided by a service provider associated with client application 104.
[0134] User interface 800 may include information about a modified version of the camera user interface of client application 104 designed by one or more developers of third-party applications 106 and a layout of user interface elements. For example, user interface 800 may include field of view content 802 captured within the field of view of camera 804 of client device 102. Additionally, user interface 800 may include an identifier 806 for a media player application. In one or more examples, identifier 806 may correspond to third-party application information provided by the developer of the media player application. User interface 800 may also include a group of user interface elements 808. Group of user interface elements 808 may include a plurality of user interface elements that can be selected to implement various actions related to generating user content from field of view content 802, such as capturing at least one of image content or video content based on field of view content 802. In one or more examples, group of user interface elements 808 may include a user interface element that rotates the view of field of view content 802, such as from a portrait view to a landscape view or vice versa. Additionally, user interface element group 808 may include a user interface element for modifying a flash setting of camera 804, a user interface element for implementing a timer for capturing content within the field of view of camera 804, and a user interface element that can be selected to add a grid to user interface 800. In one or more examples, the camera user interface developer framework may specify that user interface element group 808 is not removable from user interface 800.
[0135] Furthermore, the user interface 800 may include additional third-party information 810 indicating media content that is at least one of consumed or accessible by the third-party media player application from which the client application 104 was launched. Figure 8In the illustrative example of , additional third-party information 810 may include information related to a song being played by the media player application when the client application 104 is launched. In various examples, the song may continue to play while the media player application operates in the background as a user of the client application 104 interacts with the user interface 800. The additional third-party information 810 may be displayed based on data passed from the media player application to the client application 104, the data indicating the name of the song, the artist associated with the song, the album associated with the song, and graphics associated with the song. In one or more examples, one or more developers of the media player application may use the camera user interface developer framework to specify the location and appearance of the additional third-party information 810. The user interface 800 may also include an indication 812 indicating functionality associated with the additional third-party information 810. For illustration, the additional third-party information 810 may correspond to a user interface element that can be navigated upwards to display further information about the song being played by the media player application from which the client application 104 was launched.
[0136] In one or more implementations, user interface 800 may further include a user interface element 814 that can be selected to create user content that includes at least one of the image content or video content shown in the field of view of camera 804. In one or more examples, selection of user interface element 814 may cause the content shown in user interface 800 to persist for a period of time to create the user content. In various examples, the user content may be stored in at least one of the memory of client device 102 or a remote storage location. Additionally, user interface 800 may include a user interface element 816 that can be selected to share the user content created based on the field of view content 802. In one or more scenarios, user content can be shared by sending a message that includes the content captured in the field of view of camera 804. The message may also include information about a media player application. In one or more illustrative examples, the message may include a user interface element that can be selected by one or more recipients of the message to launch a media player application and play a song corresponding to the additional third-party information 810. In one or more additional examples, user interface element 816 can be selected to enable user content to be accessed by one or more users of client application 104 included in a social network of users of client application 104, where client application 104 generates the user content based on at least one of field of view content 802 or third-party application information included in user interface 800.
[0137] Figure 9is an illustration of user interface 900 that shows a camera's view and enables a user of a client application to modify third-party content included in the user interface according to one or more example implementations. User interface 900 can be displayed via a display device of client device 102 and generated by a client application (such as client application 104) executed by client device 102. In various examples, user interface 900 can be displayed after user interface 800, or can include a modified version of user interface 800 after selecting a user interface element to modify content included in user interface 800. Figure 9 In the illustrative example of FIG, user interface 900 may include user interface element 902 that can be implemented to remove content from user interface 800. For example, user interface element 902 can be used to remove additional third-party information 810 from user interface 800. In this manner, a user of client application 104 can generate user content that does not include additional third-party information 810.
[0138] Figure 10 is an illustration of an additional user interface 1000 that shows a camera's view and enables a user of a client application to modify third-party content included in the user interface, according to one or more example implementations. The user interface 1000 can be displayed via a display device of the client device 102 and generated by a client application (such as the client application 104) executed by the client device 102. The user interface 1000 can include a user interface element 1002 that can be displayed in response to selection of the user interface element to share user content generated based on the field of view content 802, or include a user interface element that can be selected to modify a message or social network post related to the user content. Figure 10 In the illustrative example of , user interface element 1002 may include instructions for deleting a link from a message or from a social network post, where the link enables a recipient of the message or a user of client application 104 viewing the social network post to launch a third-party media player application. User interface element 1002 may include a first additional user interface element 1004 that can be selected to delete the link from the message or social network post, and a second additional user interface element 1006 that can be selected to delete user interface element 1002 and cancel any action related to deleting the link from the message or social network post.
[0139] Figure 11 is a block diagram illustrating components of a machine 1100 capable of reading instructions from a machine-readable medium (e.g., a machine-readable storage medium) and performing any one or more of the methodologies discussed herein, according to some example implementations. Specifically, Figure 11A diagrammatic representation of a machine 1100 in the example form of a computer system is shown within which instructions 1102 (e.g., software, programs, applications, applet, apps, or other executable code) may be executed for causing the machine 1100 to perform any one or more of the methodologies discussed herein. Thus, the instructions 1102 may be used to implement the modules or components described herein. The instructions 1102 transform a general-purpose, unprogrammed machine 1100 into a specific machine 1100 that is programmed to perform the functions described and illustrated in the manner described. In alternative implementations, the machine 1100 may operate as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine 1100 may operate as a server 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 1100 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 executing, sequentially or otherwise, instructions 1102 specifying actions to be taken by the machine 1100. Furthermore, while only a single machine 1100 is shown, the term "machine" shall also be taken to include any collection of machines that individually or jointly execute instructions 1102 to perform any one or more of the methodologies discussed herein.
[0140] The machine 1100 may include a processor 1104, a memory / storage 1106, and an I / O component 1108, which may be configured to communicate with each other, for example, via a bus 1110. In an example implementation, the processor 1104 (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 1112 that may execute instructions 1102 and a processor 1114. The term "processor" is intended to include a multi-core processor 1104 that may include two or more independent processors (sometimes referred to as "cores") that may execute instructions 1102 concurrently. Although Figure 11Multiple processors 1104 are shown, but the machine 1100 may include a single processor 1112 with a single core, a single processor 1112 with multiple cores (e.g., a multi-core processor), multiple processors 1112 with a single core, multiple processors 1112 with multiple cores, or any combination thereof.
[0141] The memory / storage 1106 may include memory, such as a main memory 1116 or other memory storage device, and a storage unit 1118, both of which are accessible to the processor 1104, for example, via the bus 1110. The storage unit 1118 and the main memory 1116 store instructions 1102 that embody any one or more of the methodologies or functions described herein. The instructions 1102 may also reside, completely or partially, within the main memory 1116, within the storage unit 1118, within at least one of the processors 1104 (e.g., within a cache memory of the processor), or any suitable combination thereof during execution thereof by the machine 1100. Thus, the main memory 1116, the storage unit 1118, and the memory of the processor 1104 are examples of machine-readable media.
[0142] The I / O components 1108 may include various components for receiving input, providing output, generating output, transmitting information, exchanging information, capturing measurements, etc. The specific I / O components 1108 included in a particular machine 1100 will depend on the type of machine. For example, a portable machine such as a mobile phone will likely include a touch input device or other such input mechanism, while a headless server machine will likely not include such a touch input device. It will be understood that the I / O components 1108 may include Figure 10Many other components are not shown. The I / O components 1108 are grouped by function only to simplify the following discussion, and this grouping is in no way limiting. In various example implementations, the I / O components 1108 may include a user output component 1120 and a user input component 1122. The user output component 1120 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 1122 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, touchpad, trackball, joystick, motion sensor, or other pointing instrument), a tactile input component (e.g., a physical button, a touch screen that provides the location or force of a touch or touch gesture, or other tactile input component), an audio input component (e.g., a microphone), etc.
[0143] In other example implementations, the I / O component 1108 may include a biometric component 1124, a motion component 1126, an environment component 1128, or a positioning component 1130, as well as various other components. For example, the biometric component 1124 may include 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 electroencephalogram-based recognition), etc. The motion component 1126 may include an acceleration sensor component (e.g., an accelerometer), a gravity sensor component, a rotation sensor component (e.g., a gyroscope), etc. The environment component 1128 may include, for example, an illumination sensor component (e.g., a photometer), a temperature sensor component (e.g., one or more thermometers that detect ambient temperature), a humidity sensor component, a pressure sensor component (e.g., a barometer), an auditory sensor component (e.g., one or more microphones that detect background noise), a proximity sensor component (e.g., an infrared sensor that detects nearby objects), a gas sensor (e.g., a gas detection sensor that detects the concentration 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. The positioning component 1130 may include a position sensor component (e.g., a GPS receiver component), an altitude sensor component (e.g., an altimeter or barometer from which the air pressure is detected, from which the altitude can be derived), an orientation sensor component (e.g., a magnetometer), etc.
[0144] A variety of technologies can be used to implement communications. The I / O components 1108 may include a communications component 1132 operable to couple the machine 1100 to a network 1134 or device 1136. For example, the communications component 1132 may include a network interface component or other suitable device for interfacing with the network 1134. In other examples, the communications component 1132 may include a wired communications component, a wireless communications component, a cellular communications component, a near field communications (NFC) component, a Components (e.g. Low energy consumption), Device 1136 may be another machine 1100 or any of a variety of peripheral devices (eg, a peripheral device coupled via USB).
[0145] In addition, the communication component 1132 can detect an identifier or include a component operable to detect an identifier. For example, the communication component 1132 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 an audio signal of a tag). In addition, various information can be derived via the communication component 1132, such as a location via an Internet Protocol (IP), a geographic location via a location, a ... Location of signal triangulation, location of NFC beacon signals that can indicate a specific location via detection, etc.
[0146] Figure 12 is a block diagram illustrating a system 1200 including an example software architecture 1202 that can be used in conjunction with the various hardware architectures described herein. Figure 12 is a non-limiting example of a software architecture, and it should be understood that many other architectures can be implemented to facilitate the functionality described herein. The software architecture 1202 can be implemented in a system such as Figure 11 1100, which includes, among other things, a processor 1104, memory / storage 1106, and input / output (I / O) components 1108. Representative hardware layers 1204 are shown and may represent, for example, Figure 111100. A representative hardware layer 1204 includes a processing unit 1206 having associated executable instructions 1208. Executable instructions 1208 represent executable instructions of the software architecture 1202, including implementations of the methods, components, and the like described herein. Hardware layer 1204 also includes at least one of a memory or storage module memory / storage 1210, also having executable instructions 1208. Hardware layer 1204 may also include other hardware 1212.
[0147] exist Figure 12 In the example architecture of , software architecture 1202 can be conceptualized as a stack of layers, where each layer provides specific functionality. For example, software architecture 1202 may include layers such as an operating system 1214, libraries 1216, framework / middleware 1218, applications 1220, and a presentation layer 1222. In operation, applications 1220 and / or other components within a layer may activate API calls 1224 through the software stack and receive messages 1226 in response to API calls 1224. The layers shown are representative in nature, and not all software architectures have all layers. For example, some mobile operating systems or dedicated operating systems may not provide framework / middleware 1218, while other operating systems may provide such a layer. Other software architectures may include additional or different layers.
[0148] The operating system 1214 can manage hardware resources and provide common services. The operating system 1214 can include, for example, a kernel 1228, services 1230, and drivers 1232. The kernel 1228 can serve as an abstraction layer between the hardware and other software layers. For example, the kernel 1228 can be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, etc. The services 1230 can provide other common services to other software layers. The drivers 1232 are responsible for controlling or interfacing with the underlying hardware. For example, depending on the hardware configuration, the drivers 1232 include display drivers, camera drivers, drivers, flash memory drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), Drivers, audio drivers, power management drivers, etc.
[0149] Libraries 1216 provide common infrastructure used by at least one of the applications 1220, other components, or layers. Libraries 1216 provide functionality that allows other software components to perform tasks more easily than by directly interfacing with the functionality of the underlying operating system 1214 (e.g., kernel 1228, services 1230, or drivers 1232). Libraries 1216 may include system libraries 1234 (e.g., C standard libraries), which may provide functionality such as memory allocation functions, string manipulation functions, mathematical functions, and the like. Furthermore, libraries 1216 may include API libraries 1236, such as media libraries (e.g., libraries that support rendering and manipulation of various media formats such as MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG), graphics libraries (e.g., OpenGL frameworks that can be used to render two-dimensional and three-dimensional graphical content on a display), database libraries (e.g., SQLite that can provide various relational database functions), web libraries (e.g., WebKit that can provide web browsing functionality), and the like. The library 1216 may also include various other libraries 1238 to provide many other APIs to the applications 1220 and other software components / modules.
[0150] Framework / middleware 1218 (sometimes also referred to as middleware) provides a higher-level common infrastructure that can be used by applications 1220 or other software components / modules. For example, framework / middleware 1218 can provide various graphical user interface functions, advanced resource management, advanced location services, etc. Framework / middleware 1218 can provide a wide range of other APIs that can be utilized by applications 1220 and / or other software components / modules, some of which can be specific to a particular operating system 1214 or platform.
[0151] Applications 1220 include built-in applications 1240 and / or third-party applications 1242. Examples of representative built-in applications 1240 may include, but are not limited to, contact applications, browser applications, book reader applications, location applications, media applications, messaging applications, or game applications. Third-party applications 1242 may include applications that are developed by entities other than the vendor of a particular platform using Android TM or IOS TM Software Development Kit (SDK) for developing applications and can be used on platforms such as IOS TM 、ANDROIDTM、 Mobile software running on the phone's mobile operating system or other mobile operating system. Third-party applications 1242 can call API calls 1224 provided by the mobile operating system (e.g., operating system 1214) to facilitate the functionality described herein.
[0152] Applications 1220 may create a UI to interact with users of the system using built-in operating system functionality (e.g., kernel 1228, services 1230 drivers 1232), libraries 1216, and framework / middleware 1218. Alternatively or additionally, in some systems, interaction with the user may occur through a presentation layer, such as presentation layer 1222. In these systems, application / component "logic" may be separated from aspects of the application / component that interact with the user.
[0153] Glossary:
[0154] A "carrier signal" in this context refers to any intangible medium capable of storing, encoding, or carrying instructions 1102, transitory or non-transitory, for execution by the machine 1100 and includes digital or analog communication signals or other intangible media to facilitate communication of such instructions. Instructions 1102 may be sent or received over the network 114, 1134 using a transitory or non-transitory transmission medium via a network interface device and using any of a number of well-known transmission protocols.
[0155] A “client device” in this context refers to any machine 1100 that interfaces with a communication network 114, 1134 to obtain resources from one or more server systems or other client devices 102. A client device 102 may be, but is not limited to, a mobile phone, a desktop computer, a laptop computer, a PDA, a smartphone, a tablet computer, an ultrabook, a netbook, a laptop computer, a multiprocessor system, a microprocessor-based or programmable consumer electronics product, a game console, a set-top box, or any other communication device that a user may use to access a network 114, 1134.
[0156] In this context, a "communication network" refers to one or more portions of a network 114, 1134, 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 portion of the Internet, a portion of the public switched telephone network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, 1 network, other types of networks, or a combination of two or more such networks. For example, the network 114, 1134, 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 types 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 standards defined by various standards setting organizations, other long range protocols, or other data transmission technologies.
[0157] In this context, a "transient message" is a message that can be accessed for a limited duration. A short message can be text, an image, a video, etc. The access time for a short 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.
[0158] In this context, a "machine-readable medium" refers to a component, device, or other tangible medium capable of temporarily or permanently storing instructions 1102 and data, and may include, but is not limited to, random access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of storage devices (e.g., erasable programmable read-only memory (EEPROM)), and / or any suitable combination thereof. The term "machine-readable medium" should be taken to include a single medium or multiple media (e.g., a centralized or distributed database or associated cache memory and servers) that can store instructions 1102. The term "machine-readable medium" may also be taken to include any medium or combination of multiple media capable of storing instructions 1102 (e.g., code) for execution by the machine 1100, such that the instructions 1102, when executed by one or more processors 1104 of the machine 1100, causes the machine 1100 to perform any one or more of the methods described herein. Accordingly, a "machine-readable medium" refers to a single storage device or device, as well as a "cloud-based" storage system or storage network comprising multiple storage devices or devices. The term "machine-readable medium" does not include the signal itself.
[0159] "Component" in this context refers to a device, physical entity or logic with boundaries defined by function or subroutine calls, branch points, APIs or other technical definitions that provide partitioning or modularization for a specific processing or control function. Components can be combined with other components via their interfaces to perform machine processing. A component can be a packaged functional hardware unit designed for use with other components, and a part of a program that generally performs a specific function of a related function. A component can constitute a software component (e.g., a code implemented on a machine-readable medium) or a hardware component. A "hardware component" is a tangible unit that can perform certain operations and can be configured or arranged in a certain physical manner. In various example implementations, one or more computer systems (e.g., a stand-alone computer system, a client computer system or a server computer system) or one or more hardware components (e.g., a processor or a processor group) of a computer system can be configured as a hardware component for performing certain operations as described herein by software (e.g., an application or an application portion).
[0160] Hardware components may also be implemented mechanically, electronically, or in any suitable combination thereof. For example, a hardware component may include dedicated circuitry or logic that is permanently configured to perform certain operations. A hardware component may be a dedicated processor, such as a field programmable gate array (FPGA) or an ASIC. A hardware component may also include programmable logic or circuitry that is temporarily configured to perform certain operations through software. For example, a hardware component may include software executed by a general-purpose processor 1104 or other programmable processor. Once configured through such software, the hardware component becomes a specific machine (or a specific component of the machine 1100) that is uniquely customized to perform the configured function and is no longer a general-purpose processor 1104. It will be understood that cost and time considerations may drive the decision to mechanically implement a hardware component in a dedicated and permanently configured circuit or in a temporarily configured circuit (e.g., configured by software). Accordingly, 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 a certain manner or perform certain operations described herein. Given implementations where hardware components are temporarily configured (e.g., programmed), it is not necessary to configure or instantiate each hardware component at any one time. For example, where the hardware components include a general-purpose processor 1104 that is configured by software to become a special-purpose processor, the general-purpose processor 1104 can be configured as different special-purpose processors (e.g., including different hardware components) at different times. The software accordingly configures the specific processors 1112, 1114 or processor 1104 to, for example, constitute a specific hardware component at one time and constitute a different hardware component at a different time.
[0161] Hardware components can provide information to other hardware components and receive information from other hardware components. Therefore, the hardware components of description can be considered to be coupled in communication. In the case of having multiple hardware components simultaneously, communication can be realized by the signal transmission between two or more hardware components or in the middle of (for example, by suitable circuit and bus). In the implementation mode that multiple hardware components are configured or instantiated at different times, communication between such hardware components can be realized, for example, by storing information in the memory structure that multiple hardware components access and retrieving information in this memory structure. For example, a hardware component can perform an operation, and the output of this operation is stored in the memory device coupled in communication. Then, other hardware components can access the memory device at a subsequent time to retrieve and process the output of storage.
[0162] The hardware component can also initiate communication with an input device or an output device and can operate on a resource (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 1104 that are temporarily configured (e.g., by software) or permanently configured to perform related operations. Whether temporarily configured or permanently configured, such a processor 1104 can constitute a processor-implemented component that operates to perform one or more operations or functions described herein. As used herein, a "processor-implemented component" refers to a hardware component implemented using one or more processors 1104. Similarly, the method described herein can be at least partially implemented by a processor, wherein specific processors 1112, 1114 or processor 1104 are examples of hardware. For example, at least some of the operations of the method can be performed by one or more processors 1104 or processor-implemented components. In addition, one or more processors 1104 can also be operated to support the performance of related operations in a "cloud computing" environment or operate as "software as a service" (SaaS). For example, at least some operations may be performed by a group of computers (as an example of a machine 1100 including a processor 1104), which may be accessed via a network 114 (e.g., the Internet) and via one or more appropriate interfaces (e.g., APIs). The execution of certain operations may be distributed among the processors, not only residing within a single machine, but also deployed across multiple machines. In some example implementations, the processor 1104 or a processor-implemented component may be located in a single geographic location (e.g., in a home environment, an office environment, or a server farm). In other example implementations, the processor 1104 or a processor-implemented component may be distributed across multiple geographic locations.
[0163] A "processor" in this context refers to any circuit or virtual circuit (a physical circuit emulated by logic executed on an actual processor 1104) that manipulates data values according to control signals (e.g., "commands," "opcodes," "machine codes," etc.) and generates corresponding output signals used to operate the machine 1100. For example, the processor 1104 may be a CPU, a RISC processor, a CISC processor, a GPU, a DSP, an ASIC, an RFIC, or any combination thereof. The processor may also be a multi-core processor having two or more independent processors 1104 (sometimes referred to as "cores") that can execute instructions 1102 simultaneously.
[0164] A "timestamp" in this context refers to a series of characters or coded information that identifies when some event occurred (eg, giving a date and time of day), sometimes to within a fraction of a second.
[0165] Changes and modifications may be made to the disclosed implementations without departing from the scope of the present disclosure. These and other changes or modifications are intended to be included within the scope of the present disclosure and are expressed in the appended claims.
[0166] Example Aspects of Disclosure
[0167] Aspect 1. A method comprising: generating, by one or more computing devices, a framework associated with a modification to an initial version of a camera user interface displayed via a client application; enabling, by at least one of the one or more computing devices, camera user interface developer information corresponding to the framework to be accessed by an additional computing device of a developer of a third-party application; receiving, by at least one of the one or more computing devices, from the developer's additional computing device, at least one of one or more camera user interface modifications or third-party camera user interface data, the one or more camera user interface modifications indicating at least one modification to the initial version of the camera user interface, and the third-party camera user interface data corresponding to the modification to the initial version of the camera user interface displayed via the client application. a modified version of the camera user interface to display information related to the third-party application; receiving, by at least one of the one or more computing devices, from a client device, a request indication for accessing the client application from the third-party application; determining, by at least one of the one or more computing devices, one or more modifications to be made to an initial version of the camera user interface to generate a modified version of the camera user interface based on at least one of the one or more camera user interface modifications or the third-party camera user interface data; and sending, by at least one of the one or more computing devices, modified camera user interface data to the client device, the modified camera user interface data corresponding to the one or more modifications.
[0168] Aspect 2. The method according to Aspect 1 includes: storing, by at least one of the one or more computing devices, at least one of the one or more camera user interface modifications or the third-party camera user interface data in association with an identifier of the third-party application in one or more databases; determining, by at least one of the one or more computing devices, that the identifier of the third-party application is included in the request indication for accessing the client application from the third-party application; and querying, by at least one of the one or more computing devices, one or more databases based on the identifier to retrieve at least one of the one or more camera user interface modifications or the third-party camera user interface data.
[0169] Aspect 3. The method according to Aspect 2 includes: determining, by at least one of the one or more computing devices, a uniform resource indicator of content corresponding to the third-party application based on the third-party camera user interface data; and retrieving, by at least one of the one or more computing devices, the content based on the uniform resource indicator; and wherein the modified camera user interface data includes the content.
[0170] Aspect 4. The method according to any one of Aspects 1 to 3, comprising: obtaining, by at least one of the one or more computing devices, content to be included in the modified version of the camera user interface from the third-party application; and sending, by at least one of the one or more computing devices, the content to the client device.
[0171] Aspect 5. The method according to any one of Aspects 1 to 4 comprises: receiving, by at least one of the one or more computing devices, a message from a user of the client application to one or more recipients, the message comprising at least one of image content or video content captured via at least one camera of the client device and at least a portion of information related to the third-party application displayed in a modified version of the camera user interface; and sending, by at least one of the one or more computing devices, the message to one or more additional client devices of the one or more recipients.
[0172] Aspect 6. The method according to any one of Aspects 1 to 5 comprises: adding content to a content collection of a user of the client application by at least one computing device among the one or more computing devices, wherein the content includes at least one of image content or video content captured via at least one camera of the client device and at least a portion of information related to the third-party application displayed in a modified version of the camera user interface; and providing access to the content to several users of the client application by at least one computing device among the one or more computing devices.
[0173] Aspect 7. A method according to any one of Aspects 1 to 6, wherein the initial version of the camera user interface includes multiple user interface elements, and the one or more camera user interface modifications include at least one of: adding a first user interface element to the multiple user interface elements, or deleting a second user interface element from the multiple user interface elements.
[0174] Clause 8. The method of clause 7, wherein the camera user interface developer information indicates that at least a portion of the plurality of user interface elements cannot be deleted from the initial version of the camera user interface.
[0175] Aspect 9. The method of any one of aspects 1 to 8, wherein the one or more camera user interface modifications indicate information related to the third-party application at one or more locations within the modified version of the camera user interface.
[0176] Aspect 10. A method according to any one of Aspects 1 to 9, comprising: receiving, by at least one of the one or more computing devices, an indication to apply an augmented reality content item to at least one of the image content or the video content displayed in a modified version of the camera user interface; and causing, by at least one of the one or more computing devices, the appearance of one or more objects included in at least one of the image content or the video content to be modified based on the application of the augmented reality content item to at least one of the image content or the video content.
[0177] Aspect 11. A system comprising: one or more hardware processors; and one or more non-transitory computer-readable storage media comprising computer-readable instructions, wherein the computer-readable instructions, when executed by the one or more hardware processors, cause the one or more hardware processors to perform the following operations: generate, by one or more computing devices, a framework associated with a modification of an initial version of a camera user interface displayed via a client application; enable, via at least one of the one or more computing devices, camera user interface developer information corresponding to the framework to be accessible to an additional computing device of a developer of a third-party application; receive, by at least one of the one or more computing devices, from the developer's additional computing device, at least one of one or more camera user interface modifications or third-party camera user interface data, the one or more camera user interface modifications indicating modifications to the client application; at least one modification of the initial version of the camera user interface, and the third-party camera user interface data corresponding to information related to the third-party application to be displayed via the modified version of the camera user interface; receiving, by at least one of the one or more computing devices, a request indication for accessing the client application from the third-party application from a client device; determining, by at least one of the one or more computing devices, one or more modifications to be made to the initial version of the camera user interface to generate the modified version of the camera user interface based on at least one of the one or more camera user interface modifications or the third-party camera user interface data; and sending, by at least one of the one or more computing devices, modified camera user interface data to the client device, the modified camera user interface data corresponding to the one or more modifications.
[0178] Aspect 12. The system of aspect 11, wherein the framework comprises at least one of: a software developer toolkit, computer-readable instructions, one or more application programming interfaces, or one or more rules regarding modification of the initial version of the camera user interface.
[0179] Aspect 13. A system according to aspect 11 or 12, wherein the one or more non-transitory computer-readable storage media include additional computer-readable instructions that, when executed by the one or more hardware processors, cause the one or more hardware processors to perform the following additional operations, the additional operations including: generating user interface data corresponding to one or more user interfaces, the one or more user interfaces capturing at least one of the following: a first input for modifying one or more user interface elements included in the initial version of the camera user interface, or a second input for adding content to the initial version of the camera user interface; and sending the user interface data to an additional computing device of the developer.
[0180] Aspect 14. The system of aspect 13, wherein the one or more non-transitory computer-readable storage media include additional computer-readable instructions that, when executed by the one or more hardware processors, cause the one or more hardware processors to perform the following additional operations, the additional operations comprising: receiving data from an additional computing device of the developer, the data being captured by the one or more user interfaces and indicating one or more modifications to be made to the modified version of the camera user interface, the one or more modifications comprising at least one of: one or more first user interface elements to be added to the initial version of the camera user interface, one or more second user interface elements to be deleted from the initial version of the camera user interface, or at least one of information related to the third-party application to be displayed via the modified version of the camera user interface; and generating the modified camera user interface data based on the one or more modifications.
[0181] Aspect 15. A method comprising: generating, by one or more computing devices, a user interface for a third-party application, the user interface including a user interface element that can be selected to initiate execution of an instance of a client application; receiving, by at least one of the one or more computing devices, input indicating a selection of the user interface element; obtaining, by at least one of the one or more computing devices, modified camera user interface data, the modified camera user interface data indicating one or more modifications to an initial version of the camera user interface of the client application; generating, by at least one of the one or more computing devices, a modified version of the camera user interface based on the one or more modifications; and displaying, by at least one of the one or more computing devices, the modified version of the camera user interface, the modified version of the camera user interface including at least one of image content or video content captured by a camera of a client device executing the instance of the client application and information related to the third-party application.
[0182] Aspect 16. The method according to Aspect 15 includes: determining a uniform resource indicator by at least one of the one or more computing devices in response to a selection of the user interface element, wherein the uniform resource indicator corresponds to the camera user interface of the client application; and navigating to a modified version of the camera user interface based on the uniform resource indicator by at least one of the one or more computing devices.
[0183] Aspect 17. The method according to Aspect 15 or 16 includes: receiving, by at least one of the one or more computing devices, user input for deleting at least a portion of the information related to the third-party application from the modified version of the camera user interface; and generating, by at least one of the one or more computing devices, content that includes at least one of image content or video content captured by the camera of the client device and does not include at least a portion of the information related to the third-party application.
[0184] Aspect 18. A method according to any one of Aspects 15 to 17, comprising: determining, by at least one of the one or more computing devices, that third-party content experiences at least one of the following when the user interface element is selected: being displayed by the third-party application, or being accessed by the third-party application; and wherein the information related to the third-party application displayed in the modified version of the camera user interface corresponds to the third-party content.
[0185] Aspect 19. The method according to any one of Aspects 15 to 18 comprises: generating user content by at least one of the one or more computing devices, the user content including at least one of the image content or the video content captured by the camera of the client device and at least a portion of the information related to the third-party application; receiving user input by at least one of the one or more computing devices, the user input indicating a selection of one or more creative tools and indicating one or more modifications to be made to at least one of the image content or the video content to generate modified user content; and enabling one or more users of the client application to access the modified user content through at least one of the one or more computing devices.
[0186] Aspect 20. The method according to any one of Aspects 15 to 19 comprises: determining, by at least one of the one or more computing devices, an augmented reality content item to be applied to at least one of the image content or the video content captured by a camera of the client device; modifying, by at least one of the one or more computing devices, the appearance of one or more objects included in at least one of the image content or the video content to generate modified user content; and enabling one or more users of the client application to access the modified user content through at least one of the one or more computing devices.
Claims
1. A method comprising: generating, by one or more computing devices, a frame associated with a modification of an initial version of a camera user interface displayed via a client application; enabling, by at least one of the one or more computing devices, camera user interface developer information corresponding to the framework to be accessible to an additional computing device of a developer of a third-party application; receiving, by at least one of the one or more computing devices, one or more camera user interface modifications from an additional computing device of the developer, the one or more camera user interface modifications indicating at least one modification to an initial version of the camera user interface to produce a modified version of the camera user interface; receiving, by at least one of the one or more computing devices, third-party camera user interface data from an additional computing device of the developer, the third-party camera user interface data indicating third-party application information to be added to the initial version of the camera user interface in a modified version of the camera user interface and a layout of the third-party application information in the modified version of the camera user interface; determining, by at least one of the one or more computing devices, that a client device has launched an instance of the client application from the third-party application; generating, by at least one of the one or more computing devices, modified camera user interface data corresponding to a modified version of the camera user interface, the modified version of the camera user interface including the third-party application information and the user content arranged according to the layout, in response to determining that the client device has launched an instance of the client application from within the third-party application; as well as The modified camera user interface data is sent to the client device by at least one computing device of the one or more computing devices.
2. The method according to claim 1, comprising: storing, by at least one of the one or more computing devices, at least one of the one or more camera user interface modifications or the third-party camera user interface data in one or more databases in association with an identifier of the third-party application; determining, by at least one of the one or more computing devices, that an identifier of the third-party application is included in a request to launch the client application from the third-party application; as well as One or more databases are queried, by at least one of the one or more computing devices, based on the identifier to retrieve at least one of the one or more camera user interface modifications or the third-party camera user interface data.
3. The method according to claim 2, comprising: determining, by at least one of the one or more computing devices, a uniform resource indicator of content corresponding to the third-party application based on the third-party camera user interface data; as well as retrieving, by at least one of the one or more computing devices, the content based on the uniform resource indicator; as well as The modified camera user interface data includes the content.
4. The method according to claim 1, comprising: obtaining, by at least one of the one or more computing devices, content from the third-party application to be included in the modified version of the camera user interface; as well as The content is sent to the client device by at least one computing device of the one or more computing devices.
5. The method according to claim 1, comprising: receiving, by at least one of the one or more computing devices, a message from a user of the client application to one or more recipients, the message including at least one of image content or video content captured via at least one camera of the client device and at least a portion of the third-party application information displayed in a modified version of the camera user interface; as well as The message is sent, by at least one of the one or more computing devices, to one or more additional client devices of the one or more recipients.
6. The method according to claim 1, comprising: adding, by at least one of the one or more computing devices, content to a content collection of a user of the client application, wherein the content comprises at least one of image content or video content captured via at least one camera of the client device and at least a portion of the third-party application information displayed in a modified version of the camera user interface; and Access to the content is provided to users of the client application by at least one computing device of the one or more computing devices.
7. The method according to claim 1, wherein The initial version of the camera user interface includes a plurality of user interface elements, and the one or more camera user interface modifications include at least one of: adding a first user interface element to the plurality of user interface elements, or deleting a second user interface element from the plurality of user interface elements.
8. The method according to claim 7, wherein: The camera user interface developer information indicates that at least a portion of the plurality of user interface elements cannot be deleted from an initial version of the camera user interface.
9. The method according to claim 1, wherein The one or more camera user interface modifications indicate one or more locations of the third-party application information within a modified version of the camera user interface.
10. The method according to claim 1, comprising: receiving, by at least one of the one or more computing devices, an indication to apply an augmented reality content item to at least one of image content or video content displayed in the modified version of the camera user interface; as well as The appearance of one or more objects included in at least one of the image content or the video content is modified based on applying the augmented reality content item to at least one of the image content or the video content by at least one of the one or more computing devices.
11. A system comprising: one or more hardware processors; as well as One or more non-transitory computer-readable storage media comprising computer-readable instructions that, when executed by the one or more hardware processors, cause the one or more hardware processors to: generating a framework associated with a modification of an initial version of a camera user interface displayed via a client application; enabling camera user interface developer information corresponding to the framework to be accessible to an additional computing device of a developer of a third-party application; receiving one or more camera user interface modifications from an additional computing device of the developer, the one or more camera user interface modifications indicating at least one modification to an initial version of the camera user interface to produce a modified version of the camera user interface; receiving third-party camera user interface data from an additional computing device of the developer, the third-party camera user interface data indicating third-party application information to be added to the initial version of the camera user interface in the modified version of the camera user interface and a layout of the third-party application information in the modified version of the camera user interface; determining that the client device has launched an instance of the client application from the third-party application; generating, in response to determining that the client device has launched an instance of the client application from within the third-party application, modified camera user interface data corresponding to a modified version of the camera user interface, the modified version of the camera user interface including the third-party application information and the user content arranged according to the layout; as well as The modified camera user interface data is sent to the client device.
12. The system according to claim 11, wherein The framework includes at least one of a software developer's toolkit, computer-readable instructions, one or more application programming interfaces, or one or more rules regarding modification of an initial version of the camera user interface.
13. The system according to claim 11, wherein: The one or more non-transitory computer-readable storage media include additional computer-readable instructions that, when executed by the one or more hardware processors, cause the one or more hardware processors to perform the following additional operations, the additional operations including: generating user interface data corresponding to one or more user interfaces that capture at least one of: a first input for modifying one or more user interface elements included in the initial version of the camera user interface, or a second input for adding content to the initial version of the camera user interface; and The user interface data is sent to the developer's attached computing device.
14. The system according to claim 13, wherein: The one or more non-transitory computer-readable storage media include additional computer-readable instructions that, when executed by the one or more hardware processors, cause the one or more hardware processors to perform the following additional operations, the additional operations including: receiving data from an additional computing device of the developer, the data being captured by the one or more user interfaces and indicating one or more camera user interface modifications to be made with respect to the modified version of the camera user interface, the one or more camera user interface modifications comprising at least one of: one or more first user interface elements to be added to the initial version of the camera user interface, one or more second user interface elements to be deleted from the initial version of the camera user interface, or the third-party application information to be displayed via the modified version of the camera user interface; and The modified camera user interface data is generated based on the one or more modifications.
15. A method comprising: generating, by one or more computing devices, a user interface for the third-party application, the user interface including a user interface element selectable to initiate execution of an instance of the client application; receiving, by at least one of the one or more computing devices, input indicating a selection of the user interface element; generating, by at least one of the one or more computing devices, modified camera user interface data indicating one or more modifications to an initial version of a camera user interface of the client application, in response to determining that the instance of the client application has been launched from within the third-party application; generating, by at least one of the one or more computing devices, a modified version of the camera user interface based on the one or more modifications; as well as A modified version of the camera user interface is displayed by at least one of the one or more computing devices, the modified version of the camera user interface including at least one of image content or video content captured by a camera of a client device executing an instance of the client application and third-party application information, wherein the third-party application information is arranged according to a customized layout of the camera user interface based on the modified camera user interface data and includes an identifier of the third-party application.
16. The method according to claim 15, comprising: determining, by at least one of the one or more computing devices in response to selection of the user interface element, a uniform resource indicator corresponding to a camera user interface of the client application; as well as Navigating to the modified version of the camera user interface based on the uniform resource indicator is performed by at least one of the one or more computing devices.
17. The method according to claim 15, comprising: receiving, by at least one of the one or more computing devices, user input for deleting at least a portion of the third-party application information from the modified version of the camera user interface; as well as Content is generated by at least one of the one or more computing devices, including at least one of image content or video content captured by a camera of the client device and excluding at least a portion of the third-party application information.
18. The method according to claim 15, comprising: determining, by at least one of the one or more computing devices, that the third-party content, when the user interface element is selected, is at least one of: displayed by the third-party application, or accessed by the third-party application; and The third-party application information displayed in the modified version of the camera user interface corresponds to the third-party content.
19. The method according to claim 15, comprising: generating, by at least one computing device of the one or more computing devices, user content, the user content comprising at least one of the image content or the video content captured by a camera of the client device and at least a portion of the third-party application information; receiving, by at least one of the one or more computing devices, user input indicating a selection of one or more creative tools and indicating one or more modifications to be made to at least one of the image content or the video content to generate modified user content; as well as The modified user content is made accessible to one or more users of the client application via at least one of the one or more computing devices.
20. The method according to claim 15, comprising: determining, by at least one of the one or more computing devices, an augmented reality content item to be applied to at least one of the image content or the video content captured by a camera of the client device; modifying, by at least one of the one or more computing devices, an appearance of one or more objects included in at least one of the image content or the video content by applying the augmented reality content item to the one or more objects to generate modified user content; as well as The modified user content is made accessible to one or more users of the client application via at least one of the one or more computing devices.
Citation Information
Patent Citations
On-Demand Creation Of Reports
US20140049651A1
System relating to 3d, 360 degree or spherical for refering to and / or embedding posts, videos or digital media within other posts, videos, digital data or digital media and posts within anypart of another posts, videos, digital data or digital media
US20170034112A1