System and method for connecting devices and protecting data
By establishing data channels between devices and generating geolocation-based route suggestions, the problems of data protection and device connectivity are solved, enabling secure communication and adaptive playback of audiovisual media, thereby improving media consumption and user experience.
Patent Information
- Application Number
- CN202480036872.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-04-07
- Filing Date
- 2024-04-05
- Publication Date
- 2026-02-03
AI Technical Summary
In a networked computer environment, existing technologies struggle to effectively connect devices while protecting data, especially for secure communication and data sharing among multiple devices. Furthermore, traditional audiovisual media playback methods cannot adapt to the duration of a trip, resulting in incomplete media consumption.
By establishing a data channel and connecting the devices of the inviter and the invitee, the system generates geolocation-based suggested routes and provides route information through a graphical user interface. It also collects environmental data, adjusts the playback rate of audiovisual media to suit the duration of the trip, and provides booking contacts based on social media trends.
It enables secure connection of multiple devices while protecting data, and improves the consumption rate and user experience of audiovisual media, ensuring that each user fully consumes media content during their trip.
Smart Images

Figure CN121464609A_ABST
Abstract
Description
[0001] Cross-referencing of related patent applications
[0002] This application claims priority to U.S. Provisional Application No. 63 / 494,947, filed April 7, 2023, which is incorporated herein by reference in its entirety and for all purposes. Background Technology
[0003] In computer-networked environments such as the internet, entities such as individuals or companies access content for display in mobile applications. Individuals and companies providing content may want to connect devices and protect data. Summary of the Invention
[0004] Some implementations relate to a computer-implemented method for connecting devices and protecting data, the computer-implemented method comprising receiving, by one or more processors, a contact request associated with a contact location from an inviting device. The method further comprises establishing one or more data channels with the inviting device by the one or more processors. The method further comprises providing the contact request, including a contact location, to each of a plurality of invited devices by the one or more processors. The method further comprises establishing one or more data channels with the first invited device by the one or more processors in response to receiving a first acceptance of the contact request from a first invited device among the plurality of invited devices. The method further comprises generating a first suggested route to the contact location and at least one first location of one of the invited devices or the inviting device by the one or more processors, and providing the first suggested route to the first invited device via a first graphical user interface (GUI) of an application, wherein the first suggested route is based on a first geographical location of the first invited device. The method further comprises establishing one or more data channels with the second invited device by the one or more processors in response to receiving a second acceptance of the contact request from a second invited device among the plurality of invited devices. The method further includes generating a second suggested route to a contact location by one or more processors and presenting the second suggested route to a second invited device via a second GUI of an application, wherein the second suggested route is based on a second geographic location of the second invited device. The method further includes collecting environmental data from the inviting device and multiple invited devices via one or more data channels by one or more processors. The method further includes providing the inviting device with the locations of a first and second invited device based on the environmental data via a third GUI of an application by one or more processors, wherein the locations of the first and second invited devices are presented on the third GUI of the application. The method further includes disconnecting one or more data channels connecting one or more processors to at least one of the first or second invited devices at the contact location in response to determining that at least one of the first or second invited devices has completed a contact request at the contact location by one or more processors.
[0005] In some implementations, the contact request is associated with a predetermined contact with a predetermined invitee device, and the computer-implemented method further includes determining the predetermined contact by one or more processors based on social media data, wherein the predetermined contact is determined based on identifying trends in the social media data; and wherein a first suggested route is presented on a first invitee device, and wherein the estimated time of arrival (ETA) of each of the inviting device, the first invitee device, and the second invitee device is presented.
[0006] In some implementations, the method further includes one or more processors determining a stop point along a first suggested route or a second suggested route, and one or more processors providing an intermediate location to at least one of a first invited party device or a second invited party device.
[0007] In some implementations, the method further includes receiving a list of items associated with a contact request by one or more processors; determining one or more stops within a geographic area of the contact request, the geographic area including one or more items in the inventory list; providing one or more stops as optional elements by one or more processors via a first GUI of an application in response to receiving a first acceptance; wherein determining the stops and providing intermediate locations is done in response to receiving a selection of one of the optional elements; and updating the item list by one or more processors, indicating that at least one item in the item list belongs to a first inviting party device.
[0008] In some implementations, the method further includes updating one or more stop points by one or more processors based on a first suggested route or a second suggested route, wherein each of the one or more stop points provided further includes an incentive presented together with one of the optional elements.
[0009] In some implementations, the method further includes, in response to determining that at least one of the first invited device or the second invited device has arrived at the contact location, one or more processors sharing the geographic location of the inviting device with at least one of the first invited device or the second invited device.
[0010] In some implementations, the contact request is a public contact request configured to be shared to a contact marketplace. The computer-implemented method further includes generating the contact request by one or more processors and providing the contact request to a plurality of public invitee devices via an application. The contact request includes a contact location, wherein the plurality of public invitee devices are determined based on a registration dataset.
[0011] In some implementations, the first acceptance includes privacy parameters for sharing data from a first invited party device, wherein the privacy parameters include multiple data sharing levels associated with the type and amount of data shared.
[0012] In some implementations, a first level of a plurality of data sharing levels configures one or more processors to share data of a first invited device with at most the inviting device, and a second level of a plurality of data sharing levels configures one or more processors to share data of the first invited device with at most the inviting device and one of the plurality of invited devices, and a third level of a plurality of data sharing levels configures one or more processors to share data of the first invited device with the inviting device and one of the plurality of invited devices.
[0013] In some implementations, a first level of a plurality of data sharing levels configures one or more processors to share, with at most, unprotected data in the data of a first invited device with the inviting device; a second level of a plurality of data sharing levels configures one or more processors to share, with the inviting device and one of the plurality of invited devices, unprotected data in the data of the first invited device; and a third level of a plurality of data sharing levels configures one or more processors to share, with the inviting device and one of the plurality of invited devices, both unprotected and protected data in the data of the first invited device.
[0014] In some implementations, the first invited device is associated with a configuration file of the application, and the first suggested route is based on the default location of the configuration file.
[0015] In some implementations, the first GUI and the second GUI form a visual (LF) theme based on the contact request or contact location. The contact request provided to multiple invited devices includes a custom invitation letter, which includes content corresponding to the contact request or contact location. When one of the invited devices or the inviting device shares its location, the first location of the invited device or the inviting device is a first visual indicator. And when one of the invited devices or the inviting device does not share its location, the first location of the invited device or the inviting device is a second visual indicator.
[0016] In some implementations, in response to receiving a first acceptance, the computer-implemented method further includes activating one or more security features on the first invited device, wherein the one or more security features include enabling a third-party device to track the first invited device, and establishing another data channel between the third-party device and the first invited device to exchange communications or messages.
[0017] In some implementations, the received contact location is a general location, and the computer-implemented method further includes, in response to receiving a first acceptance of a contact request, one or more processing circuits determining a central location of the contact location based on a first geographic location of a first invited device and a geographic location of the inviting device, wherein a first suggested route to the contact location is a route to the central location.
[0018] In some implementations, generating a first suggested route to the contact location and providing the first suggested route through a first GUI of the application includes at least one of the following: a first optional element, the first optional element including a ride-sharing or carpooling request for the contact; a second optional element, the second optional element including a pick-up and drop-off invitation from the inviting device or multiple invited devices; or a third optional element, the third optional element including media recommendations that the first invited device may output in audio form during the first suggested route to the contact location.
[0019] Some embodiments relate to a data protection system for connecting devices and protecting data, the data protection system including a data processing system comprising a memory and one or more processors configured to receive a contact request associated with a contact location from an inviting device. The one or more processors are further configured to establish one or more data channels with the inviting device. The one or more processors are further configured to provide a contact request to each of a plurality of invited devices, the contact request including a contact location. The one or more processors are further configured to establish one or more data channels with a first invited device in response to receiving a first acceptance of the contact request from a first invited device among the plurality of invited devices. The one or more processors are further configured to generate a first suggested route to the contact location and at least one first location of one of the invited devices or the inviting device, and to provide the first suggested route to the first invited device via a first graphical user interface (GUI) of an application, wherein the first suggested route is based on a first geographic location of the first invited device. The one or more processors are further configured to establish one or more data channels with a second invited device in response to receiving a second acceptance of the contact request from a second invited device among the plurality of invited devices. The one or more processors are further configured to generate a second suggested route to the contact location and present the second suggested route to a second invited device via a second GUI of the application, wherein the second suggested route is based on a second geographic location of the second invited device. The one or more processors are further configured to collect environmental data from the inviting device and multiple invited devices via one or more data channels. The one or more processors are further configured to provide the inviting device with the locations of the first and second invited devices based on the environmental data via a third GUI of the application, wherein the locations of the first and second invited devices are presented on the third GUI of the application. The one or more processors are further configured to, in response to determining that at least one of the first or second invited devices has completed a contact request at the contact location, disconnect the connection data processing system from one or more data channels of at least one of the first or second invited devices.
[0020] In some implementations, the contact request is associated with a predetermined contact with a predetermined invitee device, and the one or more processors are further configured to determine the predetermined contact based on social media data, wherein the predetermined contact is determined based on identifying trends in the social media data, and wherein a first suggested route is presented on a first invitee device, and wherein the estimated time of arrival (ETA) of each of the inviting device, the first invitee device, and the second invitee device is presented.
[0021] In some implementations, the one or more processors are further configured to determine a stop along a first suggested route or a second suggested route and to provide an intermediate location to at least one of a first invited party device or a second invited party device.
[0022] In some implementations, the one or more processors are further configured to: receive a list of items associated with a contact request; determine one or more stops within a geographic area of the contact request, the geographic area including one or more items in the inventory list; in response to receiving a first acceptance, provide one or more stops as optional elements via a first GUI of an application, wherein determining the stops and providing intermediate locations is done in response to receiving a selection of one of the optional elements; update the item list indicating that at least one item in the item list belongs to a first inviting party device; and update the one or more stops based on a first suggested route or a second suggested route, wherein each of the one or more stops provided further includes an incentive presented along with one of the optional elements.
[0023] Some embodiments relate to a computer-implemented method for connecting devices and protecting data, the computer-implemented method comprising receiving a contact request, including a contact location, by one or more processors. The method further comprises the one or more processors providing acceptance of the contact request to a protection system. The method further comprises, in response to the acceptance, the one or more processors establishing a data channel with the protection system. The method further comprises the one or more processors receiving and presenting, via a graphical user interface (GUI) of an application, a suggested route to the contact location and at least one location of one of a plurality of invited party devices or an inviting party device, wherein the suggested route is based on a first geographic location of the one or more processors. The method further comprises the one or more processors collecting and providing environmental data via the data channel. The method further comprises the one or more processors receiving and presenting, via the application's GUI, the location of at least one of a plurality of invited party devices or an inviting party device. The method further comprises, in response to determining that the one or more processors have completed the contact request at the contact location, the one or more processors disconnecting the data channel connecting the one or more processors to the protection system.
[0024] Some implementations relate to a user device including one or more processing circuits configured to: receive a contact request containing a contact location; provide an acceptance of the contact request to a protection system; establish a data channel with the protection system in response to the acceptance; receive and present, via a graphical user interface (GUI) of an application, a suggested route to the contact location and at least one location of one of a plurality of invited party devices or an inviting party device, wherein the suggested route is based on a first geographic location of the one or more processors; collect and provide environmental data via the data channel; receive and present, via the application's GUI, the location of at least one of the plurality of invited party devices or an inviting party device; and disconnect the data channel connecting the one or more processors to the protection system in response to determining that the one or more processors have completed the contact request at the contact location. Attached Figure Description
[0025] Figure 1 This is a block diagram depicting an implementation of a system for connecting devices and protecting data according to some embodiments.
[0026] Figure 2 This is a flowchart of a computer-implemented method for connecting devices and protecting data, according to some embodiments.
[0027] Figure 3 This is a flowchart of a computer-implemented method for connecting devices and protecting data, according to some embodiments.
[0028] Figure 4A-4K These are example illustrations of a graphical user interface according to some embodiments.
[0029] Figures 5A-5C These are example illustrations of a graphical user interface according to some embodiments.
[0030] Figure 6 These are example illustrations illustrating the protection and association of data according to some embodiments.
[0031] Figures 7A-7B These are example illustrations of a graphical user interface according to some embodiments.
[0032] Figure 8 This is a block diagram illustrating example computing systems applicable to the various arrangements described herein.
[0033] Figure 9 This is a flowchart of a computer-implemented method for recommending and playing media based on predicted trip duration, according to some embodiments.
[0034] It will be appreciated that some or all of the figures are illustrative representations for purposes of illustration. The purpose of providing the figures is to illustrate one or more embodiments, and it is clearly understood that these figures are not intended to limit the scope or meaning of the claims. Detailed Implementation
[0035] This disclosure relates to systems and methods for protecting data and connecting devices. Protecting data and connecting devices provides improvements in the privacy of personally identifiable consumer data, while a graphical user interface (GUI) that performs contact requests provides further improvements to the mapping system, enabling it to connect devices while protecting data. This approach allows data / mapping systems and architectures to maintain consumer data privacy while providing connectivity between multiple devices, thereby improving the overall design of the data / mapping system and architecture. Therefore, aspects of this disclosure address problems in data protection by designing and providing connectivity systems that obscure consumer data while allowing multiple consumers to contact each other.
[0036] Furthermore, various aspects of the methods and systems described herein relate to recommending audiovisual media based on the predicted duration of the trip along the navigation route and playing the audiovisual media at an adjusted playback rate. Adjusting the playback rate of audiovisual media provides an improved method for consuming media during a trip, achieved by increasing the completion rate of audiovisual media within a single trip period, thereby increasing the enjoyment, retention, comprehension, and value (e.g., monetary value) of the reproduced audiovisual media. Additionally, various aspects of this disclosure provide various technical improvements to audiovisual playback technology and media sharing technology. Traditional audiovisual media playback methods involve reproducing content at a single, default playback rate (e.g., speed), which results in media consumption not being completed during the trip when the media duration exceeds the trip duration. Various aspects of this disclosure allow for automatic adjustment of the playback rate of the output audiovisual media based on dynamic navigation conditions, so that the media can be fully consumed during the trip even when the default playback duration of the media exceeds the trip duration. Further aspects of this disclosure provide targeted media recommendations to users based on the predicted trip duration. In addition, this disclosure allows for better sharing of audiovisual content among the parties in the group by providing a single audiovisual medium to multiple users within the group for consumption during their journey to a common destination, while ensuring that each user can fully consume the audiovisual medium while navigating to the common destination separately.
[0037] Now for reference Figure 1This is a block diagram depicting embodiments of a system 100 for connecting devices and protecting data, according to some embodiments. System 100 includes client devices 110a and 110b (collectively referred to herein as "client device 110"), a connection system 130, a data source 160, and a data acquisition engine 180. In various embodiments, components of system 100 communicate via network 120. Network 120 may include computer networks such as the Internet, local area networks, wide area networks, metropolitan area networks or other regional networks, intranets, satellite networks, other computer networks (such as voice or data mobile phone communication networks), combinations thereof, or any other type of electronic communication network. In various embodiments, network 120 facilitates secure communication between components of system 100. As a non-limiting example, network 120 may implement Transport Layer Security (TLS), Secure Sockets Layer (SSL), Hypertext Transfer Protocol Security (HTTPS), and / or any other secure communication protocols.
[0038] Generally, client device 110 can execute software applications (such as application 112, e.g., a web browser, an installed application, or other applications) to retrieve content from other computing systems and devices via network 120. Such applications can be configured to retrieve interfaces (e.g., navigation interfaces for navigating to contacts) from connection system 130. In one embodiment, client device 110 can execute a web browser application that provides an interface (e.g., from contact circuitry 135) on the viewport of client device 110. The web browser application providing the interface can be operated by receiving Uniform Resource Locator (URL) input (such as a website address) from an input device (such as input / output circuitry 118, e.g., a pointing device, keyboard, touchscreen, or another form of input device). In response, one or more processors of client device 110 executing instructions from the web browser application can request data from another device (e.g., connection system 130) connected to network 120 indicated by the URL address. The other device can then provide web page data and / or other data to client device 110, thereby rendering the interface on the viewport of client device 110. Therefore, the browser window will display an interface so that the user can interact with it.
[0039] In another embodiment, client device 110 may execute a mobile application that provides an interface (e.g., from contact circuitry 135) on the viewport of client device 110. The mobile application providing the interface can be operated by receiving input from an input device (such as input / output circuitry 118) selecting the mobile application (e.g., to open the application) on the viewport of the client device. In response, one or more processors of client device 110 executing instructions from the mobile application may request data from another device (e.g., connection system 130) connected to network 120 indicated by the URL address. The other device can then provide application data and / or other data to client device 110, thereby causing the viewport of client device 110 to display the interface. Thus, the mobile application presents an interface for the user to interact with.
[0040] Client device 110 (sometimes referred to herein as a "mobile device") may be a mobile computing device, smartphone, tablet computer, smartwatch, smart sensor, or any other device configured to receive, display, and interact with content (e.g., web pages, mobile applications, etc.). Client device 110 may include application 112 (shown as applications 112a and 112b) for receiving and displaying content and receiving user interactions with the content. For example, application 112 may be a web browser. Alternatively, application 112 may be a mobile application associated with a specific entity. Client device 110 may also include input / output circuitry 118 for transmitting data over network 120 (e.g., receiving and transmitting to connection system 130).
[0041] In various embodiments, application 112 interacts with connectivity system 130 to receive and provide environmental data (sometimes referred to as "activity data"), application content, web content, and online content. For example, application 112 may receive information resources from connectivity system 130. Information resources may include web-based content (e.g., web pages) or application-based content (e.g., applications installed on client device 110). Information resources may include instructions (e.g., scripts, executable code, etc.) that, when interpreted by application 112, cause application 112 to display a graphical user interface (GUI), such as an interactive web page and / or an interactive mobile application, to a user. In various embodiments, application 112 may include one or more application interfaces for presenting an application (e.g., a mobile application, a web-based application, a virtual reality / augmented reality application, a smart TV application, etc.).
[0042] Application 112 is shown as including libraries 114 (shown as libraries 114a and 114b) having interface circuitry 116 (shown as interface circuitry 116a and 116b). Library 114 may include a collection of interfacing tools contained in packages (e.g., application programming interfaces (APIs), network services, debuggers, pass-through network interfaces, etc.). For example, library 114 may include one or more APIs. In another instance, library 114 may include network services. In yet another instance, library 114 may be an interfacing suite including APIs, debuggers, and network services, etc. In some embodiments, library 114 includes one or more libraries with reusable functionality that interfacing with specific system software (e.g., iOS, Android, Linux, etc.). Library 114 can facilitate the embedding of functionality within application 112. For example, whenever contact is made using application 112, contact participants can use library 114 to automatically transmit real-time location information (or near-real-time location information, or last location information) of client device 110. As another example, library 114 may include functions configured to collect and report device analysis, and a user may insert these functions into the instructions of application 112 to invoke them during specific actions of application 112 (e.g., during a contact as described in detail below). In some embodiments, the functionality of interface circuitry 116 is provided by library 114.
[0043] Interface circuitry 116 can be configured to provide one or more interfaces. In various embodiments, the interface may be presented on the application interface of application 112, which is displayed in the viewport of client device 110. The interface provided by interface circuitry 116 (e.g., a user interface including a graphical user interface (GUI), head-up display (HUD), text user interface (TUI), etc.) may include various functions, such as enabling users to create contact requests, accept contact requests, monitor participants in contact requests (invitees and inviters), access contact marketplaces, configure contact stops and incentives, communicate with other people on the contact, configure settings (e.g., profiles and privacy), etc. Interface circuitry 116 may further generate a navigation interface associated with the location of client device 110 and other devices, current geographic location, suggested routes or current routes (e.g., accepted suggested routes), one or more stops on the current route, and any changes to the contact, including real-time data (or delayed data from near real-time or periodic data reception).
[0044] In another example implementation, application 112, executed by client device 110, can display an interface on client device 110. For example, a user (e.g., via network 120) can open or access a mobile application stored on client device 110, which is configured to host the interface. In various implementations, the interface may include infrastructure such as, but not limited to, a host device (e.g., a computing device) and a collection of files that define the interface and are stored on the host device (e.g., in database 140). The mobile application operates by receiving a selection of an application (e.g., an icon) on the viewport of client device 110. In response, interface circuitry 116, which executes the interface in the mobile application, can request data from database 140, such as data from content (e.g., contact information, settings, current contacts, public contacts, previous contacts, future contacts, privacy settings, other interfaces, etc.). The mobile application may include other functionalities such as navigation controls (e.g., back and forward buttons, home button). In some implementations, interface circuitry 116 may include both a client-side interface and a server-side interface. For example, the client-side interface may be written in one or more general programming languages and may be executed by client device 110. For example, the server-side interface can be written in one or more general-purpose programming languages and can be executed by the connection system 130. Further details of the interface are described in detail with reference to Figures 4-5.
[0045] Interface circuitry 116 can detect events within application 112. In various embodiments, interface circuitry 116 can be configured to trigger additional functions based on the detection of specific events (e.g., acceptance of a contact request, in-app purchase, configuration of privacy settings, first opening of the application, spending a certain amount of time interacting with the application, selecting a public contact, etc.). For example, interface circuitry 116 can trigger a pop-up window (overlaying the interface) when an operable object within the interface (e.g., a button, drop-down button, input box, etc.) is selected. In various embodiments, library 114 includes functions embedded in application 112 to trigger interface circuitry 116. For example, a user can include functions of library 114 in the transaction confirmation function of application 112 to allow interface circuitry 116 to track the location of the user's device and transmit the location to connection system 130. It should be understood that events can include any action a user takes within the application and are not limited to the instances explicitly considered herein. In various embodiments, interface circuitry 116 is configured to distinguish between different types of events. For example, interface circuit 116 can trigger a first set of actions based on a first type of detected event (e.g., selecting a contact icon), and can trigger a second set of actions based on a second type of detected event (e.g., contact completed). In various embodiments, interface circuit 116 is configured to collect event logs associated with one and / or more detected events and transmit the collected event logs to contact circuit 135.
[0046] In various implementations, interface circuitry 116 can collect event logs based on a specified session. In one instance, the specified session can be active from opening / selecting application 112 to closing / exiting application 112. In another instance, the specified session can be active based on user requests to start and end the session. Within each session, interface circuitry 116 can collect event logs while the session is active. Once complete, the event logs can be made available to any system described herein. During a session, the event logs can track each event in the session, such that events are organized in ascending and / or descending order. In some implementations, various other techniques (e.g., by event type, by timestamp, by fault, etc.) can be used to organize events.
[0047] In various embodiments, the interface circuitry 116 of the client device 110 (or third-party device 150) may begin collecting event logs when the application 112 is opened (e.g., selected by the user via the input / output device 118 of the client device 110), thereby initiating a session. In some embodiments, the interface circuitry 116 stops collecting event logs once the user closes the application, thereby ending the session. In various embodiments, the user may force clear the event logs or force reset the application 112, allowing the current session to be reset, thereby ending a specific session and starting a new one. Further details regarding the function of the interface circuitry 116 and the interface presented within the viewport of the client device 110 are described in further detail with reference to Figures 4-5.
[0048] Input / output circuitry 118 is configured to send and receive communications (e.g., communications with connection system 130 and / or other client devices 110) via network 120. Input / output circuitry 118 is configured to exchange data (e.g., environmental data, activity data, interface information, interactions), communications, instructions, etc., with input / output components of connection system 130, other client devices, and / or data sources 160. In one embodiment, input / output circuitry 118 includes a communication circuitry system for facilitating the exchange of data, values, information, etc., between input / output circuitry 118 and connection system 130. In yet another embodiment, input / output circuitry 118 includes a machine-readable medium for facilitating information exchange between client device 110 and connection system 130. In still another embodiment, input / output circuitry 118 includes any combination of hardware components, communication circuitry systems, and machine-readable medium.
[0049] In some embodiments, input / output circuitry 118 includes suitable input / output ports and / or interconnects with a local display (e.g., a touchscreen display) and / or a keyboard / mouse device (where applicable) via an interconnect bus (not shown) to serve as a local user interface for programming and / or data input, retrieval, or other user interaction purposes. Thus, input / output circuitry 118 can provide an interface for a user to interact with various applications (e.g., application 112) stored on client device 110. For example, input / output circuitry 118 may include a keyboard, keypad, mouse, joystick, touchscreen, microphone, haptic sensor, automotive sensor, IoT sensor, biometric sensor, accelerometer, virtual reality headset, smart glasses, smart head-mounted device, etc. As another example, input / output circuitry 118 may include, but is not limited to, a television monitor, computer monitor, printer, fax machine, speaker, etc. As used herein, virtual reality, augmented reality, and mixed reality are used interchangeably, but refer to any kind of extended reality, including virtual reality, augmented reality, and mixed reality.
[0050] In some implementations, the input / output circuitry 118 of the client device 110 can receive user input from a user (e.g., via a sensor or any other input / output device / port described herein). User input can be multiple inputs, including but not limited to gestures (e.g., tapping the client device 110, shaking the client device 110, user-defined custom gestures (e.g., defined using an API), biometric data (e.g., stress level, heart rate, hand geometry, facial geometry, psychology, etc.) and / or behavioral data (e.g., haptic feedback, gestures, voice patterns, movement patterns (e.g., hand, food, arm, face, iris, etc.) or combinations thereof). In some embodiments, various actions can be performed on the client device 110 using one or more user inputs. For example, a user performing a gesture can invoke a contact request or end a contact session (e.g., indicate completion or cancellation).
[0051] Input / output circuitry 118 can exchange and transmit data information with all the devices described herein via network 120. In various embodiments, input / output circuitry 118 transmits data via network 120. Input / output circuitry 118 can acknowledge data transmission. For example, input / output circuitry 118 can transmit requests and / or information to connection system 130 based on the selection of one or more optional (or operable) items within the interface described herein. In another instance, input / output circuitry 118 can transmit requests and / or information to another client device operated by another user (e.g., another invitee, inviter). In various embodiments, input / output circuitry 118 can transmit data periodically. For example, input / output circuitry 118 can transmit data at predefined times. As another example, input / output circuitry 118 can transmit data at regular intervals (e.g., every 10 seconds, every ten minutes, every ten hours, etc.).
[0052] The connectivity system 130 can receive event logs from the library 114 and facilitate the analysis of the received data to generate information. For example, the connectivity system 130 can receive data packets including event logs from the library 114 and securely associate the received data with data stored in the database 140 to generate information. In this example, the data packet may include one or more registration datasets and one or more data sharing levels of registered mobile devices in the one or more registration datasets. Alternatively or in combination, in this example, the data packet may include one or more invitees to a contact request and one or more data sharing levels of the invitees and / or inviters of the contact request. As another example, the connectivity system 130 can receive first data associated with the location and real-time (or near real-time) information of the invitees and inviters of an ongoing or pending contact from the library 114, and second data associated with the metadata of the contact request (including contact location and data sharing level), and associate the first data and the second data.
[0053] In various embodiments, connectivity system 130 generates summary information. For example, connectivity system 130 may determine how many users arrived at the contact location after interacting with the mobile application and accepting the contact request. The summary information may describe the number or grouping of contact requests (e.g., planned or pending contact requests). Alternatively or additionally, the summary information may describe individual contact request interactions (e.g., the user's experience during the contact, including but not limited to traffic conditions experienced by the user, the route taken by the user, whether the user made any stops along the way, when the user arrived, the user's current location, etc.). The summary information may include a unique identifier. In some embodiments, the identifier identifies the contact request. In some embodiments, the summary information describes one or more interactions associated with the contact request. For example, the summary information may include the time, date, and / or contact location of the contact request. Contact requests described by anonymous contact data (e.g., the invitee does not share their information with others in the contact request) may include when the contact was accepted, how long it took for the user to accept the contact after receiving the notification, whether the user chose to make any stops along the way, and other navigation performed in the mobile application (e.g., selecting / clicking an optional element, hovering over an optional element, and / or performing other interactions with the optional element).
[0054] The connectivity system 130 may be a server, a distributed processing cluster, a cloud processing system, or any other computing device. The connectivity system 130 may include or execute at least one computer program or at least one script. In some embodiments, the connectivity system 130 includes a combination of software and hardware, such as one or more processors configured to execute one or more scripts.
[0055] The connectivity system 130 is shown as including a database 140 and data processing circuitry 132. Database 140 may store received data. For example, database 140 may store, but is not limited to, contact request information, including ongoing real-time information (e.g., a user's current location, or a user's near-real-time location, or a user's previously recorded location), planned or pending contact information, metadata for one or more contact requests, sharing levels, scheduled and public contacts, contact marketplace code packages, software development kits (SDKs) and application programming interfaces (APIs), and graphical user interface code packages (e.g., for implementing mobile applications). In some embodiments, database 140 stores identifiers. For example, database 140 may store logs (e.g., event logs of past, current, and future contacts) and supplemental data for shared intermediate identifiers. Identifiers may later be used to associate anonymous contact data. Database 140 may include one or more storage media. Storage media may include, but are not limited to, magnetic storage devices, optical storage devices, flash storage devices, and / or RAM. Connectivity system 130 may implement or facilitate various APIs to perform database functions (i.e., manage the data stored in database 140). The API can be, but is not limited to, SQL, ODBC, JDBC, NoSQL, and / or any other data storage and manipulation API.
[0056] Data processing circuitry 132 includes a processor 133 and a memory 134. Instructions may be stored on the memory 134, which, when executed by the processor 133, cause the data processing circuitry 132 to perform the various operations described herein. The operations described herein may be implemented using software, hardware, or a combination thereof. The processor 133 may include a microprocessor, an ASIC, an FPGA, or a combination thereof. In many embodiments, the processor 133 may be a multi-core processor or a processor array. The memory 134 may include, but is not limited to, electronic storage devices, optical storage devices, magnetic storage devices, or any other storage device capable of providing program instructions to the processor 133. The memory 134 may include floppy disks, CD-ROMs, DVDs, magnetic disks, memory chips, ROMs, RAMs, EEPROMs, EPROMs, flash memory, optical media, or any other suitable memory from which the processor 133 may read instructions. Instructions may include code from any suitable computer programming language, such as, but not limited to, C, C++, C#, Java, JavaScript, Perl, HTML, XML, Python, and Visual Basic.
[0057] Memory 134 may include contact circuitry 135. Broadly speaking, contact circuitry 135 can receive data and generate information related to that data. In some embodiments, contact circuitry 135 can receive contact requests (e.g., from an inviting device) and provide the contact request to each of a plurality of invited devices. For example, a user of library 114b can register a user account on a client device, enabling the client device to execute library 114b and fulfill the contact request. Registering a client device may include, but is not limited to, providing various identifying information (e.g., device name, geolocation, identifier, etc.), platform names (e.g., iOS, Android, WebOS, BlackBerry OS, etc.), user actions (e.g., activation gestures, haptic feedback, biometrics, etc.), and authentication information (e.g., username, password, two-step verification, security questions, address information, etc.). Once contact circuitry 135 approves or receives a registration request, the information associated with the request is stored in database 140. Additionally, a notification may be transmitted to the client device indicating that the client device has registered and can utilize contact features associated with one or more applications.
[0058] In some implementations, the contact circuit 135 may facilitate and manage contact requests, including but not limited to: communicating with the inviting and invited parties to the contact; accessing the client devices of the inviting and invited parties to obtain real-time (or near real-time) information; modifying the contact of one or more of the inviting or invited parties (e.g., adding intermediate stops); controlling data sharing based on the data sharing level set by the inviting and invited parties; identifying unprotected and protected data and controlling access to protected data; scheduling contacts; accessing social media data and other third-party data to schedule contacts and update ongoing or pending contacts; providing a graphical user interface for the application; determining and generating routes; and any other information used before, during, or after the contact.
[0059] In various implementations, the contact circuit 135 performs statistical operations on the received data to generate statistical measurements describing the received data. For example, the contact circuit 135 may determine the acceptance and timeliness of the inviter and inviter associated with the contact request (e.g., whether they arrived at the correct location on time). In some implementations, the contact circuit 135 generates demographic information (e.g., user distribution, etc.), geographic results (e.g., location distribution, etc.), and / or audiences (e.g., a target user group based on one or more parameters, such as users who have purchased more than a threshold). For example, for public contacts (e.g., a pre-match football party, a concert, or any other event), the generated demographic information may be used to determine who should be invited to the public contact. In some implementations, the contact circuit 135 correlates contact logs with supplementary data. For example, the contact circuit 135 may use an intermediate identifier to correlate contact logs associated with a contact with supplementary data associated with social media data to determine potential contacts to be made with potential invitees. In various implementations, the contact circuit 135 generates information. This information may include contact metadata, data describing the operation of the application 112, interactions between invitees and the application 112, etc.
[0060] Additionally, the statistical operations performed by the contact circuit 135 can generate usage metrics for the client device (e.g., client device 110) and the library 114. Some usage metrics may include, but are not limited to, device registration metrics, feedback metrics (e.g., the percentage of users submitting feedback), and content network testing metrics (e.g., the percentage of users performing contact actions). The statistical operations performed by the contact circuit 135 can also generate impact metrics for the client device (e.g., client device 110) and the library 114. Some impact metrics may include, but are not limited to, the acceptance rate of contact requests specific to the inviter or invitee, popular or common contact locations, popular or common intermediate stops, acceptance and cancellation rates before completion, and the completion rate of contact requests specific to the inviter or invitee.
[0061] In various implementations, usage metrics and impact metrics can be calculated based on performing various statistical operations and analyses. Usage metrics and impact metrics can be further prioritized based on various factors (e.g., geographic region, inviter, language preference, new or existing users, etc.). In some implementations, machine learning models can be trained using received data and previously collected data stored in database 140 (e.g., contact logs, past, current, pending, and planned contacts). That is, predictions about contact locations, intermediate stops, and contact invitees can be based on artificial intelligence (AI) or machine learning models (MLM). For example, a first MLM can be trained to identify specific contact locations within a specific geographic region and output predictions. In this example, a second MLM can be trained to identify invitees based on previous contacts. In various implementations, machine learning algorithms can include, but are not limited to, neural networks, convolutional neural networks, recurrent neural networks, linear regression models, and sparse vector machines. The various computing systems / devices described herein can input various data (e.g., event logs, debugging information, etc.) into the machine learning model and receive outputs from the model indicating specific actions to be performed.
[0062] Data source 160 can provide data to connection system 130. In some arrangements, data source 160 may be configured to collect data from other devices on network 120 (e.g., client devices 110a and 110b) and transmit the collected data to connection system 130. In one instance, users and / or entities may have servers and databases (e.g., agents, enterprise resource planning (ERP) systems) storing contact information associated with users and / or entities (e.g., historical information, default information, social media information (including user pictures and locations), public contact information). In this instance, connection system 130 may request data associated with specific data stored in a user or entity's data source (e.g., data source 160). For example, in some embodiments, data source 160 may host or otherwise support a search or discovery engine for internet-connected devices. The search or discovery engine may provide data to connection system 130 via data collection engine 180. In some embodiments, data source 160 may be scanned to provide additional data. Other data may include news feed data (e.g., articles, breaking news, and television content), social media data (e.g., Facebook, Twitter, Snapchat, and TikTok), user geolocation data on the internet (e.g., GPS, triangulation, and IP addresses), government databases (e.g., FBI databases, CIA databases, COVID-19 databases, no-fly lists, terrorist databases, vulnerability databases, cyber threat intelligence databases, and certificate databases), and / or any other data associated with users and contact requests.
[0063] System 100 may include a data acquisition engine 180. In various embodiments, a connection system 130 may be communicatively and operatively coupled to the connection system 130. The connection system 130 may include one or more processing circuits configured to execute various instructions. In various embodiments, the connection system 130 may be configured to facilitate communication between the connection system 130 and the system described herein (e.g., via network 120). Facilitation of communication may be achieved through application programming interfaces (APIs) (e.g., REST APIs, Web APIs, custom APIs), batch files, and / or queries. In various embodiments, the data acquisition engine 180 may also be configured to control access to resources of the connection system 130 and the database 140.
[0064] The data acquisition engine 180 and / or computing system can use an API to exchange data and make function calls in a structured format. The API can be configured to use appropriate Electronic Data Interchange (EDI) standards or technologies to specify suitable communication protocols. EDI standards (e.g., messaging standards and / or supporting technologies) can include any of the following: SQL datasets, protocol-buffered information streams, instantiated classes implemented in a suitable object-oriented programming language (e.g., Java, Ruby, C#), XML files, text files, Excel files, and web service messages using a suitable web service message format (e.g., Representational State Transfer (REST), Simple Object Access Protocol (SOAP), Web Services Definition Language (WSDL), JavaScript Object Notation (JSON), XML Remote Procedure Call (XMLRPC)). Therefore, EDI messages can be implemented using any of the above or other suitable technologies.
[0065] In some implementations, components of the data acquisition engine 180 use network services to exchange data. When exchanging data using an API configured to exchange network service messages, some or all components of the computing environment may include, or be associated with, one or more network service nodes (e.g., as client devices). Network services can be identified using unique network addresses such as IP addresses and / or URLs. Some or all components of the computing environment may include circuitry configured to access and exchange data using one or more remote procedure call protocols (e.g., Java Remote Method Invocation (RMI), Windows Distributed Component Object Model (DCOM)). Network service nodes may include a network service library that includes callable code functions. Callable code functions can be constructed according to a predefined format, which may include service names (interface names), operation names (e.g., read, write, initialization classes), operation input parameters and data types, operation return values and data types, service message formats, etc. In some implementations, callable code functions may include APIs configured to access and / or receive data feeds from a search or discovery engine on demand from an internet-connected device. This article further provides additional examples of callable code functionality, as exemplified in various components of the data acquisition engine 180.
[0066] Data source 160 may provide data to connection system 130 based on a data acquisition engine 180 that scans the Internet (e.g., various data sources and / or data feeds) to obtain data associated with a user or contact request. That is, data acquisition engine 180 may store (e.g., in non-transitory memory, in cache memory, and / or in database 140) an executable file that performs the scanning activity on data source 160. Further, connection system 130 may initiate a scanning operation. For example, connection system 130 may initiate a scanning operation by retrieving a domain identifier or other user / entity identifier from a computer-implemented DBMS or queue. In various embodiments, data source 160 may facilitate data communication between client devices 110 (e.g., 110a and 110b) such that data source 160 (e.g., via network 120) receives data from client devices 110a and 110b and then transmits the data to other systems described herein (e.g., connection system 130). In other embodiments and as described herein, client device 110 and data source 160 may send data directly to any system described herein via network 120, and data source 160 may provide any information not provided by client device 110.
[0067] Now for reference Figure 2A flowchart of a method 200 for connecting devices and protecting data, according to some embodiments, is shown. A connection system 130 can be configured to perform method 200. Furthermore, any computing device described herein can be configured to perform method 200.
[0068] In a broad overview of method 200, at block 210, one or more processing circuits (e.g., Figure 1 The connection system 130 in the middle can receive contact request 210. At block 220, one or more processing circuits can set the contact request. At block 230, one or more processing circuits can monitor the contact request. Depending on the specific arrangement, additional operations, fewer operations, or different operations can be performed. In some embodiments, some or all of the operations of method 200 can be performed by one or more processors running on one or more computing devices, systems, or servers. In various embodiments, each operation can be reordered, added, removed, or repeated.
[0069] At box 210, one or more processing circuits may receive a contact request associated with a contact location from an inviting device. The inviting device may be a contact facilitator, and the contact request may include metadata such as invitee information, potential stopover points, contact location, and various other data related to the contact. In some embodiments, the contact request is associated with a predetermined contact with a predetermined invitee device. Furthermore, one or more processing circuits may determine the predetermined contact based on social media data, where the predetermined contact is determined by identifying trends in the social media data. For example, a pre-configured contact may be established based on a group of people meeting at an amusement park on the first Friday of the month (e.g., as shown in a post on a social media website). In another instance, social media platforms may be used to coordinate time and location to tailor contact requests for educational groups aiming to organize study sessions at local libraries. In some embodiments, one or more processing circuits may receive (e.g., from the inviting device) a list of items associated with the contact request. In some embodiments, the contact request is a public contact request configured to be shared to a contact marketplace. For example, public connections within a community can be established based on activity centers or locations (e.g., football matches, movie theaters, political rallies, etc.), enabling the sharing of contact requests in a contact marketplace or online. Specifically, a contact marketplace could be another application (online or mobile) configured to provide public or private connections to user accounts or unregistered users and allow users to select one or more connections. For instance, users might discover local art exhibition connections through a marketplace, leading to a more engaging cultural experience.
[0070] In some implementations, public connections can be created and shared through a contact marketplace, allowing users to discover and participate in a variety of events such as football matches, movie screenings, or political rallies. For example, a local community center might post a public invitation for a volunteer cleanup event in a nearby park. To enhance the user experience, the system can intelligently identify subgroups of participants in public events, enabling users to connect and interact with people they know or who share common interests, such as friends or acquaintances. For instance, in a public connection for a pre-game party, the system could analyze participant data, such as their social relationships, previous connections, and interests, to identify potential subgroups. In another instance, a concert connection might leverage attendees' musical preferences to suggest gatherings with fans of similar genres. By suggesting smaller gatherings within larger public events, this information can be used to create a more personalized experience, where users can connect with acquaintances or people with similar preferences. Contact marketplaces can be integrated into another online or mobile application, providing public and private connections for registered users and unregistered visitors. For example, an app specifically designed for local community engagement might incorporate contact marketplace features to encourage residents to participate in a variety of events and activities tailored to their interests and social circles. Users can browse and select various contacts to further customize their experience to suit their preferences and comfort levels. This approach fosters more meaningful and enjoyable interactions in public events while protecting user privacy and autonomy.
[0071] At box 220, one or more processing circuits may set a contact request. Setting the contact request may include establishing one or more data channels with the inviting device (box 221), providing a contact request (box 222), establishing one or more data channels with the invited device (box 223), and generating and providing suggested routes (box 224). At box 221, one or more processing circuits may establish one or more data channels with the inviting device. For example, one or more processing circuits may establish a secure wireless connection with the inviting device, thereby ensuring a reliable communication channel for transmitting contact details. Each data channel may include a network connection (e.g., wired, wireless, cloud) between one or more processing circuits and the connection system 130. Generally, each of the multiple data channels may be communicatively connected to one or more processors via a data channel communication network, such that each device or system connected to a data channel can be a computing device capable of storing, generating, and collecting data.
[0072] At box 222, one or more processing circuits may provide a contact request to each of a plurality of invited devices, the contact request including a contact location. In some embodiments, one or more processing circuits may determine one or more stops within a geographic area of the contact request, the geographic area including one or more from a list of inventory items. For example, contact circuit 135 may analyze data source 160 (e.g., local grocery stores and online data sources). In some embodiments, each invitee and inviter may be associated with a user account of the application (sometimes referred to as a "profile"). For example, a first invited device may be associated with a profile of the application, and a first suggested route may be based on the default location of the profile. In another instance, the suggested route may take into account historical traffic data and current road conditions to optimize the travel time for each invitee.
[0073] At box 223, one or more processing circuits may establish one or more data channels with the first invited device in response to receiving a first acceptance of the contact request from a first invited device among a plurality of invited devices. For example, the processing circuits may use Bluetooth or Wi-Fi Direct to establish a secure connection for real-time sharing of contact details and updates. In some embodiments, in response to receiving the first acceptance, one or more processing circuits may offer one or more stops as optional elements via a first GUI of the application, wherein determining the stops and providing intermediate locations is done in response to receiving a selection of one of the optional elements. For example, a stop at a local café offering discounts to participants in the contact could be suggested, thereby enhancing the overall experience and providing a relaxed environment for participants to gather before the main event. Furthermore, one or more processing circuits may update the item list to indicate that at least one item in the item list belongs to the first inviting device. Additionally, each of the one or more stops offered further includes incentives (e.g., configured by the inviting party or set by one or more processing circuits) presented along with one of the optional elements (e.g., offering the best seat in a game, offering a first choice of one or more food items, offering better parking, offering free or beverage items associated with the contact location, etc.). For example, participants who choose to meet at a pre-selected promotional event location could be offered a special access code to the VIP area of a concert as an incentive.
[0074] At block 224, one or more processing circuits may generate a first suggested route to the contact location and at least one first real-time location of one of a plurality of invited devices or the inviting device, and provide the first suggested route to the first invited device via a first graphical user interface (GUI) of the application, wherein the first suggested route is based on a first geographic location of the first invited device. For example, the processing circuits may dynamically update the route in real time to avoid traffic congestion, thereby ensuring the fastest possible arrival time. In some embodiments, one or more processing circuits may generate a second suggested route to the contact location and present the second suggested route to a second invited device via a second GUI of the application, wherein the second suggested route is based on a second geographic location of the second invited device. For example, if time permits, the application may suggest scenic routes to the second invited device, thereby providing a pleasant trip.
[0075] In some implementations, a first suggested route is presented on a first invited device, and said presentation includes the estimated time of arrival (ETA) for each of the inviting device, the first invited device, and the second invited device. For example, each client device receiving a contact request may be provided with the ETA for each other. In another instance, adjustments may be made for people arriving via different modes of transport, such as providing public transport routes for those without cars. In some implementations, one or more processing circuits may update one or more stops based on a first suggested route or a second suggested route. In some implementations, for public contacts, one or more processing circuits may generate contact requests and provide said contact requests via an application to multiple public invited devices, said contact requests including contact locations, said multiple public invited devices being determined based on a registration dataset. Specifically, the registration dataset may be determined from a data source 160 or provided by the inviting party (e.g., a customer list). For example, contact requests for large-scale community clean-up events may be broadcast to local residents who have previously participated in similar events, thereby encouraging greater participation and promoting community engagement.
[0076] In some implementations, the first acceptance includes privacy parameters for sharing data from a first invited device, wherein the privacy parameters include multiple data sharing levels associated with the type and amount of data shared. For example, a user may be allowed to set their personal privacy settings. In some implementations, one or more processing circuits may allow the inviter or invitee to set their personal privacy settings based on multiple levels relating to who can see the data. For example, a first level of multiple data sharing levels configures one or more processors to share data from the first invited device with at most the inviter device, a second level of multiple data sharing levels configures one or more processors to share data from the first invited device with at most one invited device and one of the multiple invited devices, and a third level of multiple data sharing levels configures one or more processors to share data from the first invited device with the inviter device and one of the multiple invited devices. Specifically, the third level only allows sharing location and contact information with people directly involved in the gathering.
[0077] In another example, a first level of multiple data-sharing levels configures one or more processors to share at most unprotected data from the data of a first invited device with the inviting device; a second level of multiple data-sharing levels configures one or more processors to share unprotected data from the data of the first invited device with both the inviting device and one of the invited devices; and a third level of multiple data-sharing levels configures one or more processors to share both unprotected and protected data from the data of the first invited device with both the inviting device and one of the invited devices. In other words, the processing circuitry allows users to fine-tune their privacy preferences, enabling a mix of public and private data sharing based on the user's comfort level with each participant. For example, a user could choose to share their real-time location with close friends but only their estimated arrival time with acquaintances.
[0078] In some implementations, the system allows invitees to opt in and provides greater control over their privacy by allowing them to select various privacy parameters in each contact session. For example, an invitee attending a large music festival could choose to share their precise location only with friends, enhancing security without compromising privacy. On one hand, the system allows invitees to customize the sharing of protected and unprotected data based on the nature of the contact session. In another instance, users attending professional networking events could choose to share their business contact information but not their personal phone numbers. This allows users to differentiate between trusted contacts (such as those with familiar participants) and untrusted contacts (such as public events where users might prefer to maintain a higher level of privacy). For example, during trusted contacts, invitees know other participants are people they have interacted with before and can confidently share both protected and unprotected data. On the other hand, in untrusted or public events, invitees can choose more restrictive settings, such as sharing only unprotected data or choosing to remain completely anonymous. For example, someone attending a large conference might share their location with all attendees in the official app but choose to remain invisible on broader social media feeds. The ability to customize privacy parameters for each session allows users to maintain control over their data, ensuring that their privacy preferences are respected in different types of contact events.
[0079] At box 230, one or more processing circuits may monitor contact requests. Monitoring contact requests may include collecting environmental data (box 231), providing real-time location (box 232), and disconnecting one or more data channels (box 233). At box 231, one or more processing circuits may collect (e.g., continuously, at specified times, or over a period of time) environmental data of the inviting device and multiple invited devices through one or more data channels. Environmental data may include device data, such as, but not limited to, the current location of the device, interactions with the device, information about the contact location, cancellation or completion of the contact, etc. In some embodiments, one or more processing circuits may determine stop points along a first suggested route or a second suggested route and provide intermediate locations to at least one of the first invited device or the second invited device. For example, one or more processing circuits may establish stop points for the individual making the contact request before reaching the contact point (e.g., the inviting party forgot to bring ketchup to the pre-game party).
[0080] At box 232, one or more processing circuits can provide the inviting device with the real-time location (or near real-time delayed location based on delay data) of a first and second invited device via the application's third GUI, where the real-time locations of the first and second invited devices are displayed on the application's third GUI. For example, the processing circuits can highlight the path of each participant as they converge at the meeting location, thus providing the inviting party with a visual representation of all arrivals. In another instance, the processing circuits may alert the inviting party when an invited party is within a certain distance of the contact location, allowing for better scheduling of the event. In yet another instance, the processing circuits can provide real-time notifications to the inviting party of ETA adjustments for invited parties due to traffic conditions.
[0081] At block 233, one or more processing circuits may, in response to determining that at least one of the first or second invited device has completed the contact request at the contact location, disconnect one or more data channels connecting the one or more processors to at least one of the first or second invited devices. In some embodiments, one or more processing circuits may, in response to determining that at least one of the first or second invited device has arrived at the contact location, share the geographic location of the inviting device with at least one of the first or second invited devices. For example, the inviting party (or the invited party) may share a fixed location upon arrival, such as in a large parking lot. In some embodiments, upon confirming the arrival of the invited party, the processing circuits may enable a feature allowing the inviting party to send a welcome message or instructions on exactly where they can meet within said location, thereby further facilitating the contact process. For example, this could be particularly useful at crowded events where finding each other can be challenging, and sharing a specific meeting point can significantly enhance the experience.
[0082] In some implementations, when the processing circuitry determines that at least one invited device has arrived at the contact location, it activates a feature that allows the user to privately message or notify other invited parties or the inviter of their presence. In various implementations, the private messaging feature can be enabled throughout the contact process. This is particularly useful when participants are gathered in large or crowded areas, such as large parking lots, concerts, or festivals. Upon arrival at the contact location, the invited party can choose to share their precise geographic location, such as a fixed location on a map, with the inviter and other attendees. This location data sharing can be done via private messaging or notifications, allowing participants to easily locate each other without broadcasting their whereabouts to the entire group or event. Furthermore, once the contact request is complete, the system automatically disconnects the data channel connecting the invited device to the processing circuitry. This ensures that user location information is shared only when necessary, protects user privacy, and minimizes potential security risks.
[0083] In some implementations, the processing circuitry may employ a "safe home" feature that alerts parents, guardians, or other important individuals if a child (or other user) does not follow the contact location route home (or return from the contact location). For example, if a child deviates from a designated route after school activities, the system sends an alert to the parent's device. This allows parents, guardians, or other important individuals to view the user and receive reassurance. In other words, the feature may offer a real-time tracking option, allowing guardians to see the child's current location. For example, the processing circuitry may issue a notification if the child's device stops moving for a period of time, or if unusual movement patterns are detected.
[0084] In some implementations, during the contact request setup at box 220, the processing circuitry can determine and suggest a central location for the contact based on the geographic location of all or some of the participants. For example, if the participants are evenly distributed across a city, the system might suggest popular central cafes equidistant (or substantially equidistant) from all attendees, maximizing convenience and minimizing travel time. In another instance, if the contact involves participants' outdoor activity preferences, the system could suggest highly rated parks located centrally at each person's location. In some implementations, the processing circuitry can determine and suggest a central location based on real-time traffic data and the participants' current locations to ensure the most efficient route for everyone. For example, a central museum could serve not only as a convenient meeting point but also provide the group with engaging activities. In some implementations, the central location can be based on specific characteristics or traits of the participants, such as a preference for vegetarian restaurants or an interest in art galleries, ensuring that the suggested location aligns with the group's interests.
[0085] In some implementations, the application presenting the GUI, provided by the processing circuitry, can further include connections to other applications. That is, during a connection, the GUI can present audiobook applications, music applications, podcast applications, etc., so that connection participants receive similar audio or content (e.g., music from a specific band or artist if attending a music festival) or the same audio or content (e.g., the same podcast about wedding planning if connection participants are gathering at a wedding planning conference). In other words, the GUI can facilitate seamless switching between different audio sources based on individual preferences or group consensus. For example, as a user approaches the location of a book festival (e.g., collecting environmental data at box 231), the processing circuitry can suggest starting to play the latest audiobook by a popular author. In another instance, the GUI can display a notification prompting others to join when most of the group begins playing a pre-event promotional playlist. In some arrangements, the processing circuitry can provide recommended playlists or audiobook chapters that end precisely (or immediately after) when a participant arrives at the connection location. For example, playlists with durations matching the expected travel time might be automatically generated. Additionally, one or more participants in a group can share favorite podcast episodes, initiating synchronized playback across devices. For example, one participant might press a "Share and Play" button, causing all participants to start listening to the same podcast at the same time. In another instance, group members might share curated playlists that are dynamically updated based on the group's progress toward its destination. Furthermore, other individuals can receive real-time updates on the progress of other participants listening to audio, such as a live indication of which song is currently playing in a shared playlist. For example, the GUI could display that most participants are listening to Chapter 3 of a shared audiobook, allowing others to synchronize their playback.
[0086] In some implementations, the processing circuitry, the first GUI, and the second GUI can form a visual (LF) theme based on the contact request or contact location. For example, the GUI theme can be automatically adjusted to display pumpkin and ghost motifs, thereby creating a festive user interface for a Halloween-themed contact. In some implementations, a contact request provided to multiple invitee devices can include a customized invitation that includes content corresponding to the contact request or contact location. For example, a customized invitation could be decorated with floral patterns and elegant handwriting suitable for a wedding-themed party.
[0087] In some implementations, when one of the invited or inviting devices among a plurality of invited devices shares its location, the first location of that invited or inviting device can be a first visual indicator, and when one of the invited or inviting devices among a plurality of invited devices does not share its location, the first location of that invited or inviting device can be a second visual indicator. For example, when location sharing is active, the first visual indicator can be a bright pink to indicate presence, while when location sharing is off, the first visual indicator turns light gray to indicate privacy.
[0088] In some implementations, in response to receiving a first acceptance, the processing circuitry may activate one or more security features on the first invited device, wherein the one or more security features include enabling a third-party device to track the first invited device and establishing another data channel between the third-party device and the first invited device to exchange communications or messages. For example, a secure home feature may allow designated contacts (such as family members) to monitor a user's journey home after an incident, thereby enhancing security and peace of mind.
[0089] In some implementations, the received contact location is a general location, and the processing circuitry can, in response to receiving a first acceptance of the contact request, determine a central location for the contact location based on a first geographic location of the first invited device and the geographic location of the inviting device, wherein a first suggested route to the contact location is a route to the central location. For example, a central contact location based on a user's personal location could involve calculating a midpoint that minimizes the overall travel time for all participants, thereby determining a convenient meeting place.
[0090] In some implementations, generating a first suggested route to the contact location and providing the first suggested route via a first GUI of the application includes at least one of the following: (1) a first optional element including a ride-sharing or carpooling request for the contact; (2) a second optional element including a pick-up invitation from the inviting device or multiple invited device devices; or (3) a third optional element including media recommendations that the first invited device may output in audio form during the first suggested route to the contact location. For example, the first optional element may include an option to select a ride-sharing service based on the fastest arrival time or the most cost-effective option. For example, the second optional element may coordinate pick-up plans among the invited parties to optimize the route for each person based on the location of the invited party. For example, the third optional element may suggest playlists or podcasts that are popular or trending in the group's shared interests. In another instance, the third optional element may curate a music playlist related to the topic of the contact or select podcast episodes that match the expected arrival time at the destination to ensure that the entertainment time is perfectly matched to the duration of the trip.
[0091] Now for reference Figure 3 A flowchart of a method 300 for connecting devices and protecting data, according to some embodiments, is shown. Client devices 110 (e.g., 110a and 110b) may be configured to perform method 300. Furthermore, any computing device described herein may be configured to perform method 300.
[0092] In a broad overview of method 300, at block 310, one or more processing circuits (e.g., Figure 1 The client device 110 can receive a contact request that includes a contact location. For example, the request might come from a user planning to meet up with friends at a football match, indicating a specific entrance gate as the contact location. In some arrangements, the contact request may include identifiers of the devices of the invited parties to join. For example, the request could specify the mobile device IDs of all attendees, facilitating a more secure and targeted connection.
[0093] At box 320, one or more processing circuits may provide the protection system with acceptance of the contact request. For example, an attendee's device may send back confirmation information with their current location data. In some arrangements, the acceptance may include a verification token for authenticating the response. For example, each device may include a unique QR code or digital signature in its acceptance to ensure security and verify the attendee's identity.
[0094] At box 330, one or more processing circuits may establish a data channel with the protection system in response to the acceptance. For example, a secure connection may be established to share location updates and notifications. In some arrangements, establishing the data channel may include setting up encrypted communication to protect the privacy of participants. The protection system may facilitate contact, and the user device (e.g., the processing circuitry) may monitor the real-time location of all participants. For example, an app may display the real-time location of all attendees on a map, updating their location as they move.
[0095] At box 340, one or more processing circuits can receive and present suggested routes to at least one real-time location (or near-real-time location, or past location) of a contact location and one of a plurality of invited device devices, or an inviting device, via a graphical user interface (GUI) of an application. The suggested routes are based on a first geographic location of the user device. For example, the app can suggest the most efficient route to a designated meeting point for each attendee. In some arrangements, the suggested routes can be adjusted in real time based on changes in attendee location and traffic conditions. For example, if a road closure occurs, the app can immediately suggest an alternative route to the meeting point.
[0096] At box 350, one or more processing circuits can collect and provide environmental data via data channels. This could include, for example, weather updates, crowd density information, or event-specific alerts. In some arrangements, collecting and providing environmental data could include integration with external APIs for real-time updates. For instance, an app could obtain data from weather services and social media feeds to give attendees a comprehensive overview of their location. In another instance, processing circuits might alert users to leave early due to a forecast of a storm.
[0097] At box 360, one or more processing circuits can receive and present the real-time location of at least one of the invited or inviting devices among multiple invited devices via the application's GUI. For example, attendees can see how far their friends are from the meeting point. For example, the organizer can monitor the expected arrival time of each guest and coordinate accordingly. The real-time location can be displayed on an interactive map within the app. In some setups, the presentation may include options for attendees to communicate directly through the app, allowing them to coordinate or adjust meeting details as needed. For example, attendees can send messages or share updates on their expected arrival times directly through the app.
[0098] At box 370, one or more processing circuits may, in response to determining that one or more processors have completed the contact request at the contact location, disconnect the data channel connecting the one or more processors from the protection system. For example, once all attendees have arrived, the app may automatically shut down the contact event and stop location tracking to protect battery life and privacy. In some setups, disconnecting the channel may include sending a final notification to all participants to confirm the event's success. For example, when the contact request is completed, the app might send a "Contact Successful" message and offer the option to send a group photo or event check-in to a social media platform.
[0099] Depending on the specific arrangement, additional, fewer, or different operations may be performed. In some embodiments, some or all of the operations of method 300 may be performed by one or more processors running on one or more computing devices, systems, or servers. In various embodiments, each operation may be reordered, added, removed, or repeated.
[0100] In some embodiments, when one or more processing circuits are not geographically moving, they can present real-time location data of the inviter's or inviter's device. In one aspect, location sharing can only be activated when the processing circuits determine that the device is stationary. For example, if a user is at a designated contact location and has not moved, other participants will have access to their real-time location data. Conversely, if a user is en route or moving around, their real-time location data will not be shared to protect their privacy. This dynamic location sharing feature gives users greater control over their personal information while still allowing them to connect with others during contact events.
[0101] Referring generally to Figures 4-5, which are example illustrations of graphical user interfaces according to some embodiments. Generally, Figure 4A-5K illustrates a graphical user interface (GUI) that can be presented at client device 110 to perform and make contacts. The GUI may include multiple interfaces, objects, and optional elements. For example, client device 110 may provide contact information (e.g., initiate a contact, ongoing contact data, historical contact data) to the GUI based on events executed in application 112. A graphical user interface (GUI) may include multiple interfaces, objects, and elements, enabling an individual (e.g., a user or operator) to provide biometric data (e.g., stress level, heart rate, hand geometry, facial geometry, psychological state, etc.) and / or behavioral data (e.g., haptic feedback, gestures, voice patterns, movement patterns (e.g., hands, food, arms, face, iris, etc.), and intangible feedback (e.g., selection of intangible content displayed on client device 110, response to stimuli, etc.) to interact with multiple interfaces, objects, and / or elements. In various embodiments, client device 110 may have different sizes, such as mobile phones, IoT devices, smartwatches, smart equipment, helmets, virtual reality headsets, augmented reality headsets, smart glasses, hats, headwear, and / or any type of mobile electronic device. Therefore, the display and / or client device 110 is not limited to any particular combination of hardware circuitry and software.
[0102] In some implementations, application 112 can modify the appearance of its graphical user interface (GUI) (e.g., GUI 400 and GUI 500) based on the time of year (e.g., season), a specific day (e.g., July 4th), the user's religion, age, location, or contact type (e.g., attending a Halloween party). That is, the GUI theme and features can be modified to align with seasonal events or holiday celebrations, thereby enhancing user engagement and the festive atmosphere. For example, during Halloween, the GUI might display a spooky theme with interactive elements such as pumpkins and ghosts, revealing contact details or Halloween party locations when these elements are clicked. In another instance, on Valentine's Day, the GUI could feature a romantic theme with hearts and roses, providing suggestions for couples' activities and events. In yet another instance, during Christmas, the GUI could be updated to reflect a winter wonderland, with snowflake touchpoints leading to holiday market gatherings. In yet another instance, for Hindu users, the GUI could display the bright festive colors of Holi. Therefore, the graphical user interface provided by application 112 can dynamically adjust its presentation and content to improve the user experience in the context of seasonal or celebratory themes of contact. In another implementation, application 112 can modify the appearance of destination icons on the GUI. For example, when a contact destination is selected, a destination-specific icon may appear. A destination-specific icon may include, for example, a large logo icon of the destination. For instance, if the selected contact destination is Warner Bros. Studios, the Warner Bros. Studios logo may appear above the destination location on the map. In another instance, if the contact destination is a coffee shop, a large cup of coffee may appear above the destination location. In this way, the GUI can help the user navigate to the destination by displaying relevant image information.
[0103] In some implementations, application 112 can create or allow the creation of custom contact invitations for events, such as stylized digital invitation cards. That is, the GUI (e.g., GUI 400 or GUI 500) can provide inviters with a set of tools to design personalized invitations featuring themed graphics, interactive elements, and contact information tailored to the nature of the event, such as a birthday party or wedding. For example, for a birthday celebration, the GUI could provide a template incorporating balloons and a cake, where clicking a balloon displays the time to contact and clicking the cake displays the location. In another instance, for wedding contacts, the invitation could be designed with a floral border, and selecting a flower would allow guests to reply and contact the destination. In yet another instance, for corporate events, the GUI could provide a template with the company brand, where interactive elements outline the contact agenda. Therefore, the graphical user interface provided by application 112 can be adapted to allow users to customize event-specific invitations. For example, when planning a wedding, application 112 can be used to send contact requests to all guests through a wedding-themed interface. These requests can simultaneously serve as digital invitations, and once accepted, the couple can track the invitees' progress on the wedding day. The application 112 on the GUI can also play wedding music chosen by the couple as guests walk to the wedding location. On the wedding day, everyone's location (or everyone sharing a location) can be seen on the GUI, providing real-time updates on who has arrived.
[0104] Now for reference Figure 4A-4K This is an example illustration of a graphical user interface according to some embodiments. Figure 4A-4K A method for setting up and executing a contact is disclosed. The method includes setting the contact location (or destination), inviting a friend or other individual (invited by the inviter), adding any stops, and starting the process towards the contact. For example, in... Figure 4A In this context, the user can open application 112 to present a graphical user interface (GUI) 400. The GUI 400 allows the user to interact with it and select interactive elements 402 to invite one or more individuals to contact them. Figure 4B In this setup, users can interact with the GUI 400 and select interactive element 404 to search for contact locations. In some layouts, contact locations should be added before inviting individuals to make contact. Figure 4C In the context of the interface, after a user selects a contact location, the user can interact with GUI 400 and select interactive element 406 to invite one or more individuals to contact them at that specific location. Figure 4DIn the GUI 400, pop-up windows or other interactive elements can be presented, allowing users to interact with the pop-up windows to invite individuals to contact them. In some arrangements, users can add one to n individuals to the contact list. Additionally, another pop-up window or interactive element can be presented in the GUI, which users can interact with to allow application 112 to access the user's contacts.
[0105] exist Figure 4E In this context, the user can interact with the GUI 400 and select an interactive element 408 to invite one or more individuals. Additionally, another pop-up window or interactive element can be presented in the GUI 400, which the user can interact with to allow the application 112 to send messages (e.g., SMS messages, emails, phone calls). Furthermore, once someone is invited, that individual will appear under the contact information in the GUI 400. Figure 4F In this context, GUI 400 can indicate that a contact request has been sent and delivered, and the invited individual can receive text messages as described in GUI 410 (e.g., a messaging application) on the invited individual's computing device. Figure 4G In this context, after an invited individual downloads the application or visits the portal, the GUI 400 can allow the invited individual to interact with the GUI 400 to accept a contact request by selecting an interactive element 412. In some configurations, various details of the contact can be presented in the GUI 400.
[0106] exist Figure 4H In this application, the user (invitee or inviter) can initiate a contact trip on the GUI 400 by selecting interactive element 414. In some setups, after accepting the contact request, the inviter's or inviter's GUI 400 can automatically start the trip. Once the trip has started, the GUI 400 can display the route to the contact location. In some setups, the GUI 400 allows pausing and resuming the trip. Figure 4I In this setup, other individuals in the group can see that someone has accepted a contact request by checking a checkmark next to their avatar (e.g., John AndroidDev). In some setups, GUI 400 allows the individual who accepted the trip to view the locations of all users by selecting interactive element 416. In some setups, various details of the contact can be presented in GUI 400.
[0107] exist Figure 4JIn the process, users (invitees or inviters) can view other users in the contact on the GUI 400 by selecting interactive element 416 (also shown in Figure 4), and in response, application 112 can present additional optional elements, including the "View Contact Map" optional element 418. Upon selection, content items 420 can be presented on the GUI 400, allowing one of the contact participants to view one or more locations of other contact recipients. In some arrangements, content items can be colored, highlighted, or otherwise identified based on whether a user has actively shared their location. For example, pink can be displayed on the GUI 400 to indicate that a user is actively sharing their location with other contact participants. In another instance, gray can be displayed on the GUI 400 to indicate that a user has not actively shared their location with other contact participants. Therefore, the GUI 400 uses visual indicators such as color coding, highlighting, and icons to represent the location-sharing status of each participant and other relevant details, thereby providing an overview that enhances group coordination and interaction during the contact. Figure 4K In this context, GUI 400 allows individuals in a contact process to complete (or terminate) a contact by selecting an interactive element 422. In some arrangements, the location of the individual who has completed the contact can be shared with other individuals in the contact. For example, a location can be shared with other individuals who have terminated a contact. In another instance, consecutive locations can be shared with other individuals so that other users in the contact can view them before completing the contact.
[0108] Now for reference Figures 5A-5C This is an example illustration of a graphical user interface according to some embodiments. Figures 5A-5C A method for setting up and executing a contact is disclosed. The method includes setting the contact location (or destination), inviting a friend or other individual (invited by the inviter), adding any stops, and starting the journey towards the contact. For example, in... Figure 5A In this context, the user can open application 112 to display a graphical user interface (GUI) 500. The GUI 500 may include... Figure 4A-4K Similar features and functions to GUI400. In some layouts, GUI 500 can allow individuals to create contacts, invite individuals, and add one or more intermediate stops to a contact. Additionally, after the contact creator enters the invitee's information, a pop-up window of the messaging application GUI 510 can be displayed, allowing the creator to send invitations to one or more individuals to join the contact. Figure 5BIn this setup, invited individuals can interact with GUI 500 to similarly invite other individuals to contact them. In some layouts, the individual's name may appear above the "Invite" indicator on GUI 500 before the avatar has a checkmark (e.g., indicating acceptance of contact). In some layouts, one or more individuals who are contacting can view the route and any stops. Figure 5C In this setup, GUI 500 allows users to select their travel mode (e.g., car, bicycle, walking / running, public transport) using one or more interactive elements. In some configurations, GUI 500 can provide, or application 112 can request ride-sharing or carpooling to pick up and drop off the contacting user at their designated location. Additionally, during the trip, pop-ups on GUI 500 can be displayed to the user to modify the trip or adjust settings (e.g., route settings, alternative routes, adding stops, editing or ending the route, closing, etc.). In some configurations, the next and final stops can be displayed on GUI 500.
[0109] In some setups, contact participants can send notifications or requests for pick-up / drop-off to another contact participant (e.g., because this person is on their way to the contact location), or have a rideshare vehicle used by one contact participant pick up another. For example, on a trip to the contact location, Sarah, as part of the contact, finds herself delayed due to unexpected traffic. Sarah discovers she will be passing another contact participant, Tom, who is still at home. She uses GUI 500 to notify Tom, suggesting she can pick him up along the way. GUI 500 facilitates this interaction by allowing Sarah to send a request directly to Tom, thus streamlining their coordination and ensuring they arrive at the contact location together. In another instance, Mike uses a rideshare service to reach the contact location and discovers his route will pass by Jenna's location. Through the app's GUI 500, Mike uses the app's integration to send a request to the rideshare driver, asking him to stop an extra stop to pick up Jenna. This feature within GUI 500 ensures efficient route planning and enhances the user experience by facilitating easy coordination between contact participants. In some setups, a contact participant can send a request to pick up another individual who is walking. For example, Alex decides to walk to the contact location, but finds the walk takes longer than expected. Observing this, Jordan, who is driving to the same location and is nearby, sends a pick-up request to Alex via GUI 500, thus providing a ride for the remaining distance. The functionality of application 112 for communication between participants and providing real-time solutions facilitates this interaction to improve the overall experience and convenience of the group.
[0110] Now for reference Figure 6This is an example illustration of protecting data associated with connections. As shown, when using connections, information can be protected from being stolen by other third parties or other unknown entities. Data protection frameworks can protect individual data, thereby improving the security of mapping systems and collaborative applications. For example, a typical map app may include a user's name, gender, age, birthday, relationship status, past actions (e.g., pizza orders, pizza types, other item orders), previously listened-to music, etc. However, the data protection framework described in this article can anonymize users and protect various other types of data.
[0111] Now for reference Figures 7A-7B This is an example illustration of a graphical user interface according to some embodiments. Figures 7A-7B The wildcard functionality of the contact application described in this article has been disclosed. Figure 7A The graphical user interface 700 shown in -B may include multiple interactive elements 702 associated with various available wildcards. For example, the GUI 700 may update in response to the selection of a wildcard. Figure 7B The system can display COVID-19 testing centers. Wildcard functionality allows individuals to specify locations of interest. For example, an individual can configure specific locations of interest on their user account, such as COVID-19 testing sites, specific gas stations, specific grocery stores (e.g., a grocery store brand or store selling a certain product, such as kombucha), specific coffee shops (e.g., a coffee shop brand or coffee shop selling a certain beverage, such as cortado), specific restaurants, specific types of beer (e.g., a brewery selling sour beer), etc., instead of general locations of interest like grocery stores and coffee shops. For each wildcard, users can further configure the populated results based on preferences. For example, the location's star rating (e.g., only locations higher than 4.5 stars), the location's current wait time (e.g., the current wait time for the location is one hour or less), locations that allow bookings, etc.
[0112] In some implementations, the wildcard functionality can be extended to include time-sensitive events or availability, such as weekend farmers markets or happy hours at restaurants. That is, users can specify that they are only interested in events that occur on specific dates or at specific times, allowing the application to provide targeted recommendations that match their schedules. For example, a user could set their preferences to include outdoor concerts on Friday nights, ensuring they only receive notifications or suggestions for events that meet this criterion. In another instance, the functionality could allow users to set reminders when specific conditions are met at preferred locations, such as when a popular restaurant has no wait or a specific product is in stock at a nearby store. In other words, the application can monitor these conditions in real time and notify the user immediately, making this feature highly useful in time-sensitive or high-demand scenarios. For example, a user might receive a reminder when a local library has a new book release, allowing them to reserve it in advance.
[0113] Figure 8 A depiction of a computer system 800 is shown, which may be used, for example, to implement the illustrative client device 110, illustrative connection system 130, and / or various other illustrative systems described herein. The computing system 800 includes a bus 805 or other communication components for transmitting information, and a processor 810 coupled to the bus 805 to process information. The computing system 800 also includes a main memory 815, such as random access memory (RAM) or other dynamic storage device, coupled to the bus 805 to store information and instructions to be executed by the processor 810. During instruction execution by the processor 810, the main memory 815 may also be used to store location information, temporary variables, or other intermediate information. The computing system 800 may further include a read-only memory (ROM) 820 or other static storage device coupled to the bus 805 to store static information and instructions for the processor 810. Storage devices 825, such as solid-state devices, disks, or optical disks, are coupled to the bus 805 to persistently store information and instructions.
[0114] The computing system 800 can be coupled to a display 835, such as a liquid crystal display or an active matrix display, via a bus 805 to display information to a user. An input device 830, such as a keyboard including alphanumeric keys and other keys, can be coupled to the bus 805 to transmit information and command selections to the processor 810. In another embodiment, the input device 830 has a touchscreen display 835. The input device 830 may also include cursor controls such as a mouse, trackball, or arrow keys to transmit directional information and command selections to the processor 810 and control cursor movement on the display 835.
[0115] In some implementations, computing system 800 may include a communication adapter 840, such as a networking adapter. Communication adapter 840 may be coupled to bus 805 and may be configured to enable communication with computing or communication network 120 and / or other computing systems. In various illustrative implementations, communication adapter 840 may be used to implement any type of networking configuration, such as wired (e.g., via Ethernet), wireless (e.g., via Wi-Fi, Bluetooth, etc.), pre-configured, ad-hoc, LAN, WAN, etc.
[0116] According to various embodiments, the process of implementing the illustrative embodiments described herein can be implemented by an arrangement of computing system 800 in response to processor 810 executing instructions contained in main memory 815. Such instructions may be read into main memory 815 from another computer-readable medium (such as storage device 825). An arrangement for executing the instructions contained in main memory 815 causes computing system 800 to perform the illustrative process described herein. One or more processors in a multiprocessor arrangement may also be used to execute the instructions contained in main memory 815. In alternative embodiments, hardwired circuitry may be used in place of or in combination with software instructions to implement the illustrative embodiments. Therefore, the embodiments are not limited to any particular combination of hardware circuitry and software.
[0117] Despite Figure 8 Example processing systems have been described, but implementations of the subjects and functional operations described in this specification can be performed using other types of digital electronic circuit systems, or in computer software, firmware, or hardware (including the structures disclosed in this specification and their structural equivalents) or a combination thereof.
[0118] Now for reference Figure 9 A flowchart according to some embodiments is shown, illustrating a computer-implemented method 900 for recommending and / or playing media (e.g., audiovisual media) based on predicted trip duration. System 100 can be configured to perform method 900. Furthermore, any computing device described herein can be configured to perform method 900.
[0119] In a broad overview of method 900, at step 910, one or more processors may receive route parameters and playback parameters. At step 920, one or more processors predict the trip duration. At step 930, one or more processors access one or more media sources. At step 940, one or more processors identify multiple media. At step 950, one or more processors generate a subset of media. At step 960, one or more processors present the subset of media for display. At step 970, one or more processors receive media selection. At step 980, one or more processors activate an audio source to output media. Depending on the specific arrangement, additional, fewer, or different operations may be performed. In some embodiments, some or all of the operations of method 900 may be performed by one or more processors executing on one or more computing devices, systems, or servers. In various embodiments, each operation may be reordered, added, removed, or repeated.
[0120] At step 910, one or more processors of the user device receive route parameters and playback parameters. Route parameters may include various data associated with the navigation route. Such data may include location information of the navigation route and the mode of transportation for the navigation route. Location data may include the starting location of the navigation route, the destination location of the navigation route, and real-time status of the navigation route (e.g., construction, tolls, traffic conditions). Additional information included in the location data may include additional stops along the navigation route, such as temporary stops at restaurants, gas stations, tourist attractions, or for errands. Location data may also include the time of day and / or the time of year for the trip. For example, location data may include the departure time or the expected arrival time. In some embodiments, location data is received by one or more processors as user input to the user device. In some embodiments, location data is received from a standalone application (such as a map or navigation application) running on the user device. It may be received via a network (e.g., Figure 1 The network (120) is used to receive location data. Return to... Figure 9 The mode of transportation can be one or more modes of transportation. For example, the mode of transportation can be, but is not limited to, cars, subways, walking, bicycles, public transportation, buses, airplanes, shared bicycles, trains, rail vehicles, animals (e.g., horses), skiing, skating, sleds, off-road vehicles, motorcycles, helicopters, ferries, trams, cable cars, hot air balloons, personal vehicles, jet skis, paddle boats, rickshaws, or boats.
[0121] Playback parameters may include one or more media attribute preferences and playback rate thresholds. According to at least one embodiment, media attribute preferences may be associated with a user's media history or user input, and may include preferred media types (e.g., podcasts, songs, music videos, movies, audiobooks, spoken documents, text-to-speech, voice recordings, voicemail, lectures, training videos, seminars, presentations, new broadcasts, sports commentary, talk shows, predicted calls, radio broadcasts), preferred media content (e.g., sports, entertainment, music, science, engineering, art, specific topics), and authors / speakers (e.g., book authors, podcast hosts, news anchors, celebrities, athletes). Media attributes can be categorized by length (e.g., less than 10 minutes, less than one hour, more than 30 minutes), media source (e.g., music app, news app, website, video player app, radio station), content depth (e.g., broad overview of a topic, in-depth exploration of a topic), media time period (e.g., 1950s, 21st century, contemporary, classical), media genre (e.g., jazz, rock, classical), media language (e.g., English, Spanish, Latin, ASL), and closed captions (e.g., media with or without closed captions). Media attribute preferences can be received from user input or historical user preferences, determined by previous selections and adjustments received during playback of different content. Historical user preferences, selections, and / or adjustments can be stored in a user profile at a remote electronic storage location or locally on the user device.
[0122] In some embodiments, media attributes are associated with the time of day during navigation. For example, user history stored in a user profile could include data showing that a user listened to financial news when navigating from home to work in the morning and listened to classical music when navigating from work to home in the evening. This differentiated media preference can be used to recommend media based on the time and location of navigation throughout the day.
[0123] According to some embodiments, the playback rate threshold corresponds to the maximum media playback speed. For example, the playback rate threshold could be 2x playback speed. In such embodiments, the maximum media playback speed would be 2x, or in other words, playback at twice the default (e.g., nominal) speed. Different types of media content may have different playback rate thresholds. For example, the playback rate threshold for music could be 1x speed (e.g., nominal speed). The playback rate threshold for podcast media could be 1.5x speed. The playback rate threshold for seminars or lectures could be 2x speed. Various playback rate thresholds can be received through user input or historical user preferences, which are determined by previous adjustments received during media playback of audiovisual media content. In some embodiments, one or more processors receive and / or select default playback rates for various media content types.
[0124] It should be understood that in some implementations of the methods and systems described herein, step 910 need not include receiving route parameters. For example, the systems and methods described in method 900 need not be applicable to navigation embodiments, as further described below. Instead, in some embodiments, route parameters can be replaced by “waiting parameters.” For example, waiting parameters may include data associated with waiting time. For example, a user may enter the amount of time a user must wait before the next activity in an electronic device. In another instance, one or more processors may query one or more calendars, messages, voicemails, etc., to obtain event or activity information with associated location and / or time. For example, a mother may be waiting to pick up her son from school. The “pick up son” activity may be in the mother’s calendar at 4:00 p.m. One or more processors may receive the current time (e.g., 3:39 p.m.) and the calendar event time (e.g., 4:00 p.m.). These two times may be included in the received waiting parameters. Similarly, the mother may enter (e.g., through a separate application unrelated to navigation) how much time she has left until an activity (e.g., 21 minutes) in an electronic device without the processor accessing event information from a calendar, etc. This waiting time can be included in the waiting parameters. Therefore, any discussion in this document relating to trip parameters / duration also applies to waiting parameters / duration.
[0125] At step 920, one or more processors predict the duration of the navigation route based at least on travel modes. In some embodiments, one or more processors estimate the time to travel from the starting location to the destination location while passing through any other temporary locations. One or more processors consider received travel modes to determine the length of the journey. In some embodiments, one or more processors predict the journey duration based on real-time traffic data or route information (high-congestion and low-congestion areas and corresponding delays), construction data (e.g., road closures, detours, etc.), and toll data (e.g., toll amounts and options).
[0126] While in some embodiments the one or more processors predict the trip duration, it should be understood that one or more additional processors may also predict the trip duration and transmit the predicted trip duration to the one or more processors. For example, a remote server may execute one or more prediction schemes to predict the trip duration and transmit the predicted trip duration to one or more processors on the user device. In some embodiments, the predicted trip duration is a time range (e.g., 30-40 minutes). The predicted trip duration may be based on real-time route information received from one or more traffic data sources. For example, real-time route information may include detours, traffic conditions, closures, congestion, etc.
[0127] In this embodiment, the travel mode may be commercial transportation (e.g., commercial aircraft, buses, trains, subways, etc.). In such embodiments, the predicted trip duration may additionally or alternatively be based at least in part on the planned departure time and / or planned arrival time.
[0128] As discussed above, in some embodiments, method 900 is related to waiting time, not travel time. In such embodiments, one or more processors determine the waiting duration, rather than the travel duration. For example, in the example provided above, if the current time is 3:39 PM and the mother is picking up her son at 4:00 PM, then the waiting duration (rather than the travel duration) can be determined (e.g., 21 minutes). This allows the user (e.g., the mother) to utilize the methods and systems described herein in situations other than travel (e.g., while waiting in line to pick up her child from school).
[0129] At step 930, one or more processors may access one or more media sources. Media sources may be associated with one or more media content platforms, such as Netflix®, YouTube®, Hulu®, Amazon Prime Video®, Disney+®, Spotify®, Apple Music®, and SoundCloud®. Additional media content platforms may include media databases remotely or locally hosted by one or more processors (e.g., Figure 1 (Data source 160). A media database can host media files for access, retrieval, and / or playback by one or more processors.
[0130] At step 940, one or more processors may identify multiple media from one or more media sources that have one or more media attributes matching one or more media attribute preferences. According to embodiments, one or more processors may run one or more computer comparison schemes to compare the media attributes of individual or batch media stored in one or more media sources with received media attribute preferences. Similarly, various filtering techniques may be used to filter media within one or more media sources based on one or more media attributes. When media has one or more media attributes that satisfy the received media attribute preferences, one or more processors identify the satisfactory media as having one or more media attributes matching one or more received media attribute preferences.
[0131] At step 950, one or more processors generate a media subset from multiple media. In one embodiment, each media within the media subset may share one or more common attributes. In an exemplary embodiment, each media within the generated media subset has a minimum playback duration within a certain playback range.
[0132] In some embodiments, each media has multiple playback durations. For example, a media may have a nominal playback duration, a minimum playback duration, a maximum playback duration, and / or an adjusted playback duration.
[0133] The nominal playback duration can correspond to the length of media playback at a nominal (e.g., default) playback rate (e.g., playback speed). In an exemplary embodiment, the nominal playback rate is 1x speed. This can be considered the default speed of media output through playback settings or properties of the media file.
[0134] The media may also have a minimum playback duration. Based on the media being output at a maximum playback rate (e.g., maximum playback speed), the minimum playback duration may correspond to the shortest playback length of the media. In an exemplary embodiment, the maximum playback rate is 2x speed. In some embodiments, as discussed above, different media types and / or content may have different maximum playback rates. In at least one embodiment, the maximum playback rate corresponds to the playback rate threshold received in step 910.
[0135] Based on the media output at a minimum playback rate (e.g., minimum playback speed), the maximum playback duration can correspond to the longest playback length of the media. In an exemplary embodiment, the minimum playback rate is 0.75x speed. In some embodiments, different media types and / or content may have different minimum playback rates. The minimum playback rate may correspond to the playback rate threshold received in step 910.
[0136] Based on the media output at an adjusted playback rate (e.g., adjusted playback speed), the adjusted playback duration can correspond to an adjusted playback length. The adjusted playback rate can be any playback speed multiplier that increases or decreases the playback speed of the media, but in an exemplary embodiment, the adjusted playback rate is within a range of minimum and maximum playback rates.
[0137] It should be understood that the media can have one or more playback durations of equal length. For example, in some embodiments, the maximum playback rate of the music can be the same as the nominal playback rate of the music (e.g., 1x speed), as it may be preferable not to increase the playback rate of the music. In such embodiments, the nominal playback duration and the minimum playback duration can be the same. Similarly, the minimum playback rate can be the same as the nominal playback rate and the maximum playback rate. In such embodiments, the longest playback duration, the nominal playback duration, and the shortest playback duration can be the same.
[0138] In some embodiments, the playback range extends from a lower limit to an upper limit. In various embodiments, the lower limit is 0 minutes, while the upper limit is the predicted trip duration (or a higher / lower predicted trip duration within a numerical range). In some embodiments, the lower limit may be longer than 0 minutes and may be received by one or more processors as user input / preference (e.g., at least half of the predicted trip duration).
[0139] In some embodiments, one or more processors generate a subset of media without first identifying multiple media having one or more media attributes. In such embodiments, one or more processors may not receive any media attribute preferences, and one or more processors generate a subset of media where each individual media within the subset satisfies the minimum playback duration, regardless of the media attributes.
[0140] When determining the minimum playback duration, one or more processors may consider pre-defined segments of a single media. For example, when determining whether the minimum playback duration of an audiobook matches the expected or predicted duration of a program, one or more processors may look at the lengths of individual chapters. Individual chapters can be considered pre-defined segments of the media; similarly, chapters created by authors or publishers for podcasts, videos, performances, lectures, etc., can be considered pre-defined segments of the media. When determining whether the media can be played back within the expected duration of the program, one or more processors may consider the lengths of individual chapters as the “minimum playback duration.”
[0141] At step 960, one or more processors present a subset of media on a user device via a GUI or AUI (audio-visual user interface) of an application executed by the one or more processors. In one embodiment, the media subset is presented as an optional graphical component on the GUI. The media subset may present various media attributes associated with the media. For example, media attributes may include various playback durations (and corresponding playback rates), genres, titles, authors, presenters, descriptions, etc. At step 970, one or more processors receive media selections from the media subset. One or more processors may make and receive selections as user input.
[0142] At step 980, in response to receiving a media selection from a media subset, one or more processors activate an audio source from a user device or external device to output media from the media subset. The user device may be... Figure 1 The client device 110a. External devices may be vehicles or other audio playback devices, such as audio transducers (e.g., speakers, headphones, etc.). In various embodiments, one or more processors activate an audio source to output media at a playback rate less than a playback rate threshold, thereby reproducing the entire media file at a speed within the playback rate threshold for a predicted travel duration.
[0143] As a non-limiting example, one or more processors may receive user input (preferred media attributes of the user associated with one or more processors) for playing podcast episodes at a playback rate threshold of 1.5x. Upon receiving the mode of travel (e.g., by car) and the origin and destination locations, the one or more processors determine a navigation route between the origin and destination locations. The one or more processors predict a trip duration of 1 hour based on real-time traffic conditions, the length of the navigation route, and the average speed of the car (or the user's historical speed). The one or more processors access various media sources associated with the user profile associated with the one or more processors. While accessing the various media sources, the one or more processors identify various media files (e.g., podcast episodes) that satisfy the preferred media attributes. Upon identifying various media files that satisfy the preferred media attributes, the one or more processors then determine the minimum playback duration for each media file among the various media files that satisfy the preferred media attributes by adjusting the nominal playback duration of each media file to the 1.5x playback rate threshold and determining the resulting playback duration. The one or more processors then generate and present a list showing media files whose minimum playback duration is less than the predicted trip duration. When presenting a media file whose shortest playback duration is less than the predicted trip duration, any media file can be selected and fully reproduced within the predicted trip duration. Once one or more processors receive a selection for one or more media files to be presented, the one or more processors output the media file as audio and / or visual at the playback rate. In some embodiments, if the nominal (or other default) playback duration is within the predicted trip duration, the one or more processors reproduce the media file at the nominal (or other default) playback rate. If the nominal playback duration is longer than the predicted trip duration, the one or more processors may reproduce the media file at an adjusted playback rate, which is a minimum increment rate such that the adjusted playback duration is shorter than the predicted trip duration. In some embodiments, during user navigation along a navigation route (determined by one or more processors), the predicted trip duration is continuously updated (e.g., updated at periodic intervals), and the one or more processors continuously adjust the adjusted playback rate of the media file (up to a playback rate threshold) such that the adjusted playback duration remains within the updated predicted trip duration while remaining at the maximum media playback speed. Some implementations utilize filtering of the predicted trip duration to avoid jumps during playback rate adjustment. Similarly, one or more attributes of the playback adjustment may prevent one or more processors from adjusting the playback rate to a rate of change exceeding a specific playback rate (i.e., increasing or decreasing the playback rate too quickly).
[0144] In addition, the systems and methods described herein allow for better sharing of audiovisual content among parties in a group by providing a single audiovisual medium to multiple users within the group for consumption during their journey to a common destination, while ensuring that each user can fully consume the audiovisual medium while navigating to the common destination separately.
[0145] In such embodiments, one or more processors are configured to receive multiple route parameters and multiple playback parameters associated with users within a group. The one or more processors determine the predicted travel time for each user in the group to reach a common destination. The predicted travel time for each user is based on the received multiple route parameters and multiple playback parameters associated with each individual user in the group. While identifying the predicted travel times for all users in the group, the one or more processors determine the shortest predicted travel time corresponding to the user with the shortest predicted travel time. The one or more processors then generate a subset of media with the associated shortest playback time within a second playback range. As described above, the second playback range may correspond to the shortest predicted travel time. This subset of media is transmitted to the electronic devices of each user in the group, so that each user in the group listens to the same media in its entirety before reaching the common destination. In some embodiments, one user in the group selects media to share with all users in the group. In some embodiments, the one or more processors may access a calendar or schedule to determine meetings and suggest playback media to all participants in the meeting based on the system and methods described herein.
[0146] In another embodiment, the methods and systems discussed herein may include recommending and presenting corporate-sponsored media content to a user via one or more electronic devices configured for audio / media playback. As a non-limiting example, the user selects a destination location to travel to. The user can select a location on a standalone navigation application, a standalone media playback application, or an integrated navigation / media playback application. The user can use gestures, voice commands, hardware input, etc., to select the destination location. In addition to the destination location, the user can also select a starting location (e.g., the location where the journey begins), temporary locations (e.g., locations traversed from the starting location to the destination location), and travel mode. As described above, the system can receive these selections and determine a navigation route (and corresponding estimated journey duration) from the starting location to the destination location, passing through any temporary locations. The navigation route may be associated with the shortest journey duration, shortest journey distance, minimum carbon output, minimum altitude change, and / or may include several sponsored locations between the starting location and the destination location (e.g., the system may change the navigation route to pass through sponsored locations or locations with sponsored content / media).
[0147] When determining a navigation route, the system determines whether the route is associated with any sponsored media. In other words, the system determines whether the route passes through any locations associated with sponsored media. These locations can include a starting point, a destination, temporary locations, and / or any locations along (or near) the route. In an example, a user might select a theater as the destination location. Entities associated with the selected theater (e.g., the theater owner, the owner of a production currently being performed at the theater, or the director of a production currently being performed at the theater) can create and publish content associated with the theater or the production currently being performed. The system can transmit requests for instructions on a list of events occurring at the theater (along with their corresponding times and locations), receive responses to said instructions from a server or electronic storage location, and identify sponsored media corresponding to events occurring close to the expected arrival or departure time. Alternatively, the system may automatically receive sponsored media when transmitting the navigation route to a second server.
[0148] Sponsored media can be any type of media, but in the exemplary embodiment, it can contain location-related historical or informational data. In an embodiment where a user navigates to a theater, the sponsored media can include information about the work being performed at the theater. This data can include audio or audiovisual information about the work's director, author, cast, history, schedule, and / or sponsors. Therefore, the user can listen to and / or view relevant background information before arriving at their destination. While a theater is used in the exemplary embodiment, it should be understood that sponsored media can relate to any location or event, including cinemas, sporting events, seminars, conferences, symposiums, restaurants, banquets, award ceremonies, business events, etc.
[0149] In some embodiments, the system may access a user's calendar or schedule to determine the event the user is navigating to. The system may search for sponsored media associated with the event and present any identified sponsored media on the user's device for selection.
[0150] Upon receiving sponsored media, the system determines whether the minimum playback duration of the sponsored media falls within the playback range. As described herein, the minimum playback duration may be related to the playback duration at the maximum playback speed determined by the user's playback parameters and / or preferences. In response to the minimum playback duration of the sponsored media being within a playback threshold (which corresponds to the expected travel duration along the navigation route), the system presents the sponsored media for selection. The system may present the sponsored media configured for user selection (with or without an indication of its sponsored status) as an interactive graphical component on the user's device display. Alternatively, the system may access one or more user attributes in the user profile associated with the user to determine whether to automatically select playback of sponsored media. For example, a user may choose not to receive a subscription service for sponsored content / media, in which case the user may have subscription attributes associated with the selected subscription service. In such embodiments where the user selects a subscription service (and has the corresponding subscription attributes), the system receives an indication of the subscription attributes and does not automatically select sponsored content for playback. In such embodiments, the system may still present sponsored media for user selection. In other embodiments, if the user has subscription attributes, sponsored media is not presented to the user. If the user profile does not have a subscription attribute, the system can automatically select a sponsoring media for playback.
[0151] Upon receiving a selection (either automatically by the system or via the user device), the system activates the audio source of the sponsored media on the user device or an external device (e.g., a speaker or car audio system) to output the sponsored media. In some embodiments, the system activates the audio source after receiving an indication that the user has begun traveling along the navigation route. This indication may come from the user selecting a "Start Navigation" graphical element on the user device, the vehicle beginning to travel along the navigation trajectory, or the user device determining that it is traveling along the navigation route. The sponsored media may be played at an adjusted playback rate as described herein, while ensuring that the playback rate does not exceed the maximum playback rate (e.g., user preferences associated with the fastest allowed playback rate).
[0152] In various embodiments, sponsored media refers to content or media sponsored by a company. Other embodiments may include restaurant sponsorship of media related to its menu and / or specialties, Emmy Award sponsorship of media related to nominees, company sponsorship of media related to its commercial products, university sponsorship of media related to its various courses, sports team sponsorship of media related to the team's performance during the season, and developer sponsorship of media related to nearby new real estate development projects.
[0153] It should be understood that while the destination location can be associated with sponsored media, locations along the navigation route can also be associated with sponsored media. For example, when driving past a new real estate development, the system can automatically play sponsored media related to upcoming products in the new real estate development (e.g., prices and square feet of new homes for sale). In some embodiments, the systems and methods described herein may also include direction information. For example, the processor may determine the direction of travel based on route parameters, current and / or past location data, or sensor data (e.g., image data from one or more cameras). In such embodiments, the system may automatically play sponsored media related to upcoming products in a new real estate development and include direction information (e.g., “If you look to your right, you will see the new real estate development Shady Acres, which has new homes for sale starting at $300,000”).
[0154] The embodiments of the subject matter and operation described in this specification can be executed using a digital electronic circuit system, or in computer software embodied on a tangible medium, firmware, or hardware (including the structures disclosed in this specification and their structural equivalents), or in a combination of one or more of these. Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on one or more computer storage media for execution by a data processing apparatus or for controlling the operation of a data processing apparatus. Alternatively or additionally, the program instructions can be encoded on artificially generated propagated signals, such as machine-generated electrical, optical, or electromagnetic signals, which are generated to encode information for transmission to a suitable receiver device for execution by the data processing apparatus. A computer-readable storage medium can be or is included in a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or apparatus, or a combination of one or more of these. Furthermore, although a computer storage medium is not a propagated signal, it can be a source or destination of computer program instructions encoded as artificially generated propagated signals. A computer storage medium can also be or be included in one or more separate components or media (e.g., multiple CDs, disks, or other storage devices). Therefore, computer storage media are tangible and non-transitory.
[0155] The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
[0156] The terms "data processing device" or "computing device" encompass all kinds of devices, apparatuses, and machines for processing data, including, for example, programmable processors, computers, systems-on-a-chip, and multiple or combinations of the foregoing. The device may include special-purpose logic circuit systems, such as field-programmable gate arrays (FPGAs) or application-specific integrated circuits (ASICs). In addition to hardware, the device may also include code that creates an execution environment for the computer program in question, such as code constituting processor firmware, protocol stacks, database management systems, operating systems, cross-platform runtime environments, virtual machines, or combinations thereof. The device and execution environment can implement various different computing model infrastructures, such as network services, distributed computing, and grid computing infrastructures.
[0157] Computer programs (also known as programs, software, software applications, scripts, or code) can be written in any programming language, including compiled or interpreted languages, declarative or procedural languages, and can be deployed in any form, including as standalone programs or as modules, components, subroutines, objects, or other units suitable for use in a computing environment. A computer program may, but does not necessarily, correspond to a file in a file system. A program may be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinating files (e.g., a file storing portions of one or more modules, subroutines, or code). A computer program can be deployed to be executed on a single computer or on multiple computers located at a site or distributed across multiple sites and interconnected via a communication network.
[0158] The processes or logic flows described in this specification can be executed by one or more programmable processors that execute one or more computer programs to perform actions by manipulating input data and generating outputs. The processes and logic flows can also be executed by a dedicated logic circuit system, and the device can also be implemented as a dedicated logic circuit system, such as an FPGA (Field-Programmable Gate Array) or an ASIC (Application-Specific Integrated Circuit).
[0159] For example, processors suitable for executing computer programs include both general-purpose microprocessors and special-purpose microprocessors, as well as any one or more processors in any type of digital computer. Typically, a processor receives instructions and data from read-only memory or random access memory, or both. The basic components of a computer are a processor for performing actions according to instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include one or more mass storage devices (e.g., disks, magneto-optical disks, or optical disks) for storing data, or operatively coupled to receive data from or transfer data to mass storage devices, or both. However, a computer does not need to have such devices. Furthermore, a computer can be embedded in another device, such as a mobile phone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a global positioning system (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), and so on. Suitable devices for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, such as semiconductor memory devices like EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. Processors and memory may be supplemented by or incorporated into dedicated logic circuitry systems.
[0160] To provide user interaction, embodiments of the subject matter described in this specification can be performed using a computer with a display device for displaying information to the user, such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, and a keyboard and pointing device, such as a mouse or trackball, that the user can use to provide input to the computer. Other types of devices can also be used to provide user interaction; for example, feedback provided to the user can be any form of sensory feedback, such as visual, auditory, or tactile feedback; and input from the user can be received in any form, including sound input, voice input, or tactile input. Additionally, the computer can interact with the user by sending documents to and receiving documents from the device used by the user; for example, by sending a webpage to a web browser on the user's client device in response to a request received from a web browser.
[0161] Implementations of the subject matter described in this specification can be performed using a computing system that includes back-end components (e.g., as a data server), or middleware components (e.g., an application server), or front-end components (e.g., a client computer with a graphical user interface or web browser through which a user can interact with implementations of the subject matter described in this specification), or any combination of one or more such back-end components, middleware components, or front-end components. The components of the system can be interconnected via digital data communication (e.g., a communication network) of any form or medium. Examples of communication networks include local area networks (“LANs”) and wide area networks (“WANs”), interconnected networks (e.g., the Internet) and peer-to-peer networks (e.g., self-organizing peer-to-peer networks, distributed ledger networks).
[0162] A computing system may include clients and servers. Clients and servers are typically geographically separated and usually interact via a communication network. The client-server relationship is established by means of computer programs running on respective computers and having a client-server relationship with each other. In some embodiments, the server transmits data (e.g., HTML pages) to the client device (e.g., for the purpose of displaying data to a user interacting with the client device and receiving user input from said user). Data generated at the client device (e.g., the result of user interaction) can be received from the client device at the server.
[0163] In some illustrative embodiments, the features disclosed herein can be implemented on a smart TV module (or connected TV module, hybrid TV module, etc.) that may include processing circuitry configured to integrate an internet connection with more traditional television program sources, such as cable TV, satellite, over-the-air, or other signal reception. The smart TV module may be physically integrated with a television set or may include separate devices such as set-top boxes, Blu-ray or other digital media players, game consoles, hotel TV systems, and other complementary devices. The smart TV module may be configured to allow viewers to search for and find videos, movies, photos, and other content on the internet, local cable TV channels, satellite TV channels, or stored on a local hard drive. A set-top box (STB) or set-top unit (STU) may include an information appliance device that may contain a tuner and be connected to the television set and an external signal source to tune the signal to content, which is then displayed on a television screen or other display device. The smart TV module can be configured to provide a home screen or top-level screen, which includes icons for various applications such as web browsers and multiple streaming services (e.g., Netflix, Vudu, Hulu, Disney+, etc.), connected cable or satellite media sources, and other network "channels." The smart TV module can be further configured to provide users with an electronic program guide. Companion applications for the smart TV module can operate on mobile computing devices to provide users with additional information about available programming, thereby allowing users to control the smart TV module, etc. In alternative implementations, these features can be implemented on laptops or other personal computers, smartphones, other mobile phones, handheld computers, smartwatches, tablet PCs, or other computing devices.
[0164] While this specification contains numerous details of specific embodiments, these details should not be construed as limiting the scope of any invention or potentially claimed content, but rather as descriptions of features specific to particular embodiments of a particular invention. Certain features described in this specification within the context of individual embodiments may also be implemented in combination or in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented individually or in any suitable sub-combination in multiple embodiments. Furthermore, although features may be described above as functioning in certain combinations, and even initially claimed in this way, in some cases one or more features from a claimed combination may be removed from the combination, and the claimed combination may involve sub-combinations or variations thereof. Additionally, features described with respect to a particular heading may be used with respect to and / or in conjunction with illustrative embodiments described under other headings; headings (if provided) are included only for readability purposes and should not be construed as limiting any features provided with respect to such headings.
[0165] Similarly, although operations are described in a specific order in the accompanying drawings, this should not be construed as requiring such operations to be performed in the specific order shown or sequentially, or that all shown operations should be performed to achieve the desired result. In some cases, multitasking and parallel processing may be advantageous. Furthermore, the separation of the various system components in the above embodiments should not be construed as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products embodied in a tangible medium.
[0166] Therefore, specific embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. In some cases, the actions listed in the claims can be performed in a different order and still achieve the desired result. Furthermore, the processes depicted in the drawings do not necessarily require the specific order or sequence shown to achieve the desired result. In some embodiments, multitasking and parallel processing may be advantageous.
Claims
1. A computer-implemented method for connecting devices and protecting data, the computer-implemented method comprising: One or more processors receive a contact request associated with the contact location from the inviting device; One or more data channels with the inviting device are established by the one or more processors; The contact request is provided by the one or more processors to each of the plurality of invited party devices, the contact request including the contact location; In response to receiving a first acceptance of the contact request from a first invited device among the plurality of invited devices, one or more data channels are established by the one or more processors with the first invited device; The one or more processors generate a first suggested route to the contact location and at least one first location of one of the plurality of invited devices or the inviting device, and provide the first suggested route to the first invited device through a first graphical user interface (GUI) of the application, wherein the first suggested route is based on a first geographical location of the first invited device. In response to receiving a second acceptance of the contact request from a second invited device among the plurality of invited devices, one or more data channels are established by the one or more processors with the second invited device; A second suggested route to the contact location is generated by the one or more processors and presented to the second invited device via a second GUI of the application, wherein the second suggested route is based on a second geographic location of the second invited device; The one or more processors collect environmental data from the inviting device and the plurality of invited devices through the one or more data channels; The one or more processors provide the inviting device with the locations of the first invited device and the second invited device based on the environmental data through the third GUI of the application, wherein the locations of the first invited device and the second invited device are displayed on the third GUI of the application; as well as In response to determining that at least one of the first invited device or the second invited device has completed the contact request at the contact location, the one or more processors disconnect the one or more data channels connecting the one or more processors to at least one of the first invited device or the second invited device.
2. The computer-implemented method of claim 1, wherein the contact request is associated with a predetermined contact with a predetermined invited party device, the computer-implemented method further comprising: The predetermined connection is determined by the one or more processors based on social media data, wherein the predetermined connection is determined based on identifying trends in the social media data; and The first suggested route is presented on the first invited device, and the presentation includes the estimated time of arrival (ETA) of each of the inviting device, the first invited device, and the second invited device.
3. The computer-implemented method according to claim 1, further comprising: The one or more processors determine the stop points along the first suggested route or the second suggested route; and The one or more processors provide an intermediate location to at least one of the first invited device or the second invited device.
4. The computer-implemented method according to claim 3, further comprising: The one or more processors receive a list of items associated with the contact request; The one or more processors determine one or more stops within a geographic area of the contact request, the geographic area containing one or more items from the inventory list; In response to receiving the first acceptance, the one or more processors provide the one or more stop points as optional elements via the first GUI of the application, wherein determining the stop point and providing the intermediate position is performed in response to receiving a selection of one of the optional elements; as well as The project list is updated by the one or more processors to indicate that at least one project in the project list belongs to the first inviting device.
5. The computer-implemented method according to claim 4, further comprising: The one or more processors update the one or more stop points based on the first suggested route or the second suggested route, wherein each of the one or more stop points provided further includes an incentive presented together with one of the optional elements.
6. The computer-implemented method according to claim 1, further comprising: In response to determining that at least one of the first invited device or the second invited device has arrived at the contact location, the one or more processors share the geographical location of the inviting device with the at least one of the first invited device or the second invited device.
7. The computer-implemented method of claim 1, wherein the contact request is a public contact request configured to share the contact request with a contact marketplace, the computer-implemented method further comprising: The contact request is generated by one or more processors and provided to a plurality of public invitee devices through the application. The contact request includes the contact location, wherein the plurality of public invitee devices are determined based on a registration dataset.
8. The computer-implemented method of claim 1, wherein the first acceptance includes privacy parameters for sharing data of the first invited party device, and wherein the privacy parameters include a plurality of data sharing levels associated with the type and amount of the shared data.
9. The computer-implemented method of claim 8, wherein a first level of the plurality of data sharing levels configures the one or more processors to share the data of the first invited device with at most the inviting device, and wherein a second level of the plurality of data sharing levels configures the one or more processors to share the data of the first invited device with at most one invited device from the inviting device and one of the plurality of invited devices, and wherein a third level of the plurality of data sharing levels configures the one or more processors to share the data of the first invited device with the inviting device and one of the plurality of invited devices.
10. The computer-implemented method of claim 8, wherein a first level of the plurality of data sharing levels configures the one or more processors to share, at most, unprotected data in the data of the first invited device with the inviting device; wherein a second level of the plurality of data sharing levels configures the one or more processors to share, with the inviting device and one of the plurality of invited devices, the unprotected data in the data of the first invited device; and wherein a third level of the plurality of data sharing levels configures the one or more processors to share, with the inviting device and one of the plurality of invited devices, the unprotected data and protected data in the data of the first invited device.
11. The computer-implemented method of claim 8, wherein the first invited device is associated with a configuration file of the application, and wherein the first suggested route is based on the default location of the configuration file.
12. The computer-implemented method according to claim 1, wherein: The first GUI and the second GUI form a perception (LF) theme based on the contact request, user attributes, or contact location; The contact request provided to the plurality of invited devices includes a custom invitation letter, which contains content corresponding to the contact request or contact location. When one of the invited devices or the inviting device shares its location, the first location of the invited device or the inviting device is a first visual indicator; and When one of the invited devices or the inviting device does not share its location, the first location of the invited device or the inviting device is a second visual indicator.
13. The computer-implemented method of claim 1, wherein in response to receiving the first acceptance, the computer-implemented method further comprises: Activate one or more security features on the first invited device, wherein the one or more security features include enabling a third-party device to track the first invited device, and establishing another data channel between the third-party device and the first invited device to exchange communications or messages.
14. The computer-implemented method of claim 1, wherein the received contact location is a general location, the computer-implemented method further comprising: In response to receiving a first acceptance of the contact request, one or more processing circuits determine the central location of the contact location based on the first geographic location of the first invited device and the geographic location of the inviting device, wherein the first suggested route to the contact location is a route to the central location.
15. The computer-implemented method of claim 1, wherein generating the first suggested route to the contact location and providing the first suggested route via the first GUI of the application comprises at least one of the following: A first optional element, comprising a ride-sharing or carpooling request for the connection; A second optional element, comprising a pick-up and drop-off invitation from the inviting device or the plurality of invited devices; or A third optional element includes media recommendations that the first invited party's device can output in audio form during the first suggested route to the contact location.
16. A data protection system for connecting devices and protecting data, the data protection system comprising: A data processing system comprising a memory and one or more processors, the one or more processors being configured to: Receive a contact request associated with the contact location from the inviting device; Establish one or more data channels with the inviting device; The contact request is provided to each of a plurality of invited party devices, the contact request including the contact location; In response to receiving a first acceptance of the contact request from a first invited device among the plurality of invited devices, one or more data channels are established with the first invited device. A first suggested route is generated to the contact location and at least one first location of one of the plurality of invited devices or the inviting device, and the first suggested route is provided to the first invited device through a first graphical user interface (GUI) of the application, wherein the first suggested route is based on a first geographical location of the first invited device. In response to receiving a second acceptance of the contact request from a second invited device among the plurality of invited devices, one or more data channels are established with the second invited device; A second suggested route to the contact location is generated and presented to the second invited device via a second GUI of the application, wherein the second suggested route is based on a second geographic location of the second invited device; Environmental data of the inviting device and the plurality of invited devices are collected through one or more data channels; The third GUI of the application provides the inviting device with the locations of the first invited device and the second invited device based on the environmental data, wherein the locations of the first invited device and the second invited device are displayed on the third GUI of the application. and In response to determining that at least one of the first invited device or the second invited device has completed the contact request at the contact location, the data processing system is disconnected from one or more data channels connected to the data processing system and the ... are disconnected.
17. The data protection system of claim 16, wherein the contact request is associated with a predetermined contact with a predetermined invited party device, and the one or more processors are further configured to: The predetermined contact is determined based on social media data, wherein the predetermined contact is determined by identifying trends in the social media data; and The first suggested route is presented on the first invited device, and the presentation includes the estimated time of arrival (ETA) of each of the inviting device, the first invited device, and the second invited device.
18. The data protection system of claim 16, wherein the one or more processors are further configured to: Determine the stop point along either the first suggested route or the second suggested route; and Provide an intermediate location to at least one of the first invited party device or the second invited party device.
19. The data protection system of claim 18, wherein the one or more processors are further configured to: Receive the list of items associated with the contact request; Identify one or more stops within the geographic area of the contact request, the geographic area comprising one or more items from the inventory list; In response to receiving the first acceptance, the application provides the one or more stop points as optional elements via the first GUI, wherein determining the stop point and providing the intermediate location is done in response to receiving a selection of one of the optional elements; Update the project list to indicate that at least one project in the project list belongs to the first inviting device; and The one or more stop points are updated based on the first suggested route or the second suggested route, wherein each of the one or more stop points provided further includes an incentive presented together with one of the optional elements.
20. A computer-implemented method for connecting devices and protecting data, the computer-implemented method comprising: One or more processors receive a contact request containing the contact location; The one or more processors provide acceptance of the contact request to the protection system; In response to the acceptance, the one or more processors establish a data channel with the protection system; A suggested route received by the one or more processors and presented via the application's graphical user interface (GUI) to the contact location and at least one location of one of the invited or inviting devices, wherein the suggested route is based on a first geographic location of the one or more processors; Environmental data is collected and provided by the one or more processors through the data channel; The location of at least one of the plurality of invited devices or the location of the inviting device is received by the one or more processors and presented through the GUI of the application; as well as In response to determining that the one or more processors have completed the contact request at the contact location, the one or more processors disconnect the data channel connecting the one or more processors from the protection system.