Interactive application sharing between endpoint devices

The described system allows endpoint devices to interactively share software applications by using a virtual device application on one device and a thin client application on others, addressing installation and resource challenges and simplifying application development.

WO2025128783A1PCT designated stage expired Publication Date: 2025-06-19GOOGLE LLC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
PCT/US2024/059709
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-12-15
Filing Date
2024-12-12
Publication Date
2025-06-19

AI Technical Summary

Technical Problem

Existing endpoint devices may face challenges in accessing and utilizing software applications due to lack of installation files, incompatible operating systems, or insufficient computing resources.

Method used

A method and system that enable a plurality of endpoint devices to share a software application installed and executed on one device, allowing interactive usage without the need for each device to execute the application independently. This is achieved through a virtual device application on the host device and a thin client application on the client devices, which facilitate the transmission and display of application states across devices.

Benefits of technology

Enables interactive application sharing among endpoint devices, overcoming installation and resource limitations, and simplifying application development by avoiding synchronization of application states across multiple instances.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2024059709_19062025_PF_FP_ABST
    Figure US2024059709_19062025_PF_FP_ABST
Patent Text Reader

Abstract

A method may include receiving, by way of a first user interface of a first endpoint device, a local interaction with a software application executed by the first endpoint device. Tire method may also include determining a first state of the software application based on the local interaction, and transmitting, by the first endpoint device and to a second endpoint device, a representation of the first state. The second endpoint device may display, using a second user interface of the second endpoint device, the representation of the first state. The method may additionally include receiving, from the second endpoint device, a remote interaction with the representation of the first state, determining a second state of the software application based on the remote interaction, and displaying, using the first user interface, a representation of the second state of the software application.
Need to check novelty before this filing date? Find Prior Art

Description

Interactive Application Sharing Between Endpoint DevicesCROSS-REFERENCE TO RELATED APPLICATIONS

[0001] The present application claims priority to U.S. Provisional Patent Application No. 63 / 610,799, filed December 15, 2023, the contents of which are hereby incorporated by reference in its entirety.BACKGROUND

[0002] In some cases, it may be difficult, impractical, and / or impossible to install and / or execute a particular software application on a computing device, such as an endpoint device. For example, the computing device might not have access to an installation file for the particular software application (e.g., due to lack of network connectivity), a version of the software application might not be available for an operating system of the computing device, and / or the computing device might not have sufficient computing resources to execute the particular software application, among other factors. Thus, it may be desirable to provide alternative ways for the computing device to access and / or utilize the particular software application.SUMMARY

[0003] A plurality of endpoint devices may be configured to share a software application that is installed on and / or executed by one of the endpoint devices. The software application might not be installed on and / or executed by other endpoint devices of the plurality of endpoint devices. The software application may be used interactively by the plurality of endpoint devices. For example, each of the endpoint devices may be configured to interact with the software application, and these interactions with the software application and / or the results thereof may be visible to each of the endpoint devices. The states of the software application may be determined and / or maintained by the endpoint device on which the software application is installed and / or by which the software application is executed, while the other endpoint devices might not execute any of the instructions that make up the software application.

[0004] In a first example embodiment, a method may include receiving, by way of a first user interface of a first endpoint device, a local interaction with a software application executed by the first endpoint device. The method may also include determining a first state of die software application based on the local interaction. The method may additionally include transmitting, by the first endpoint device and to a second endpoint device that is communicatively connected to the first endpoint device, a representation of the first state. Reception of the representation of the first state may cause the second endpoint device todisplay, using a second user interface of the second endpoint device, the representation of the first state. The method may yet additionally include receiving, from the second endpoint device, a remote interaction with the representation of the first state of the software application . The method may further include and determining a second state of the software application based on the remote interaction. The method may yet further include displaying, using the first user interface, a representation of the second state of the software application.

[0005] In a second example embodiment, a system may include a processor and a non- transitory computer-readable medium having stored thereon instructions that, when executed by the processor, cause the processor to perform operations in accordance with the first example embodiment.

[0006] In a third example embodiment, a non-transitory computer-readable medium may have stored thereon instructions that, when executed by a computing device, cause the computing device to perform operations in accordance with the first example embodiment.

[0007] In a fourth example embodiment, a system may include various means for carrying out each of the operations of the first example embodiment.

[0008] These, as well as other embodiments, aspects, advantages, and alternatives, will become apparent to those of ordinary skill in the art by reading the following detailed description, with reference where appropriate to the accompanying drawings. Further, this summary and other descriptions and figures provided herein are intended to illustrate embodiments by way of example only and, as such, that numerous variations are possible. For instance, structural elements and process steps can be rearranged, combined, distributed, eliminated, or otherwise changed, while remaining within the scope of the embodiments as claimed.BRIEF DESCRIPTION OF THE DRAWINGS

[0009] Figure 1 illustrates a computing device, in accordance with examples described herein.

[0010] Figure 2 illustrates a computing system, in accordance with examples described herein.

[0011] Figure 3 illustrates an arrangement of endpoint devices, in accordance with examples described herein.

[0012] Figures 4A, 4B, 4C, and 4D are message flow diagrams, in accordance with examples described herein.

[0013] Figure 5 is a flow chart, in accordance with examples described herein.

[0014] Figure 6 is a flow chart, in accordance with examples described herein.DETAILED DESCRIPTION

[0015] Example methods, devices, and systems are described herein. It should be understood that the words “example” and “exemplary” are used herein to mean “serving as an example, instance, or illustration.” Any embodiment or feature described herein as being an “example,” “exemplary,” and / or “illustrative” is not necessarily to be construed as preferred or advantageous over other embodiments or features unless stated as such. Thus, other embodiments can be utilized and other changes can be made without departing from the scope of the subject matter presented herein.

[0016] Accordingly, the example embodiments described herein are not meant to be limiting. It will be readily understood that the aspects of the present disclosure, as generally described herein, and illustrated in the figures, can be arranged, substituted, combined, separated, and designed in a wide variety of different configurations.

[0017] Further, unless context suggests otherwise, the features illustrated in each of the figures may be used in combination with one another. Thus, the figures should be generally viewed as component aspects of one or more overall embodiments, with the understanding that not all illustrated features are necessary' for each embodiment.

[0018] Additionally, any enumeration of elements, blocks, or steps in this specification or the claims is for purposes of clarity. Thus, such enumeration should not be interpreted to require or imply that these elements, blocks, or steps adhere to a particular arrangement or are carried out in a particular order. Unless otherwise noted, figures are not drawn to scale.I. Overview

[0019] A plurality of endpoint devices may be configured to share a software application that is installed on and executed by one of these endpoint devices. For example, a first endpoint device and a second endpoint device may share a software application that is installed on and executed by the first endpoint device but is not installed on and / or executed by the second endpoint device. Such application sharing may be facilitated by a virtual device application that is installed on and / or executed by the first endpoint device and a thin client application that is installed on and / or executed by the second endpoint device.

[0020] The first endpoint device may execute the software application both on behalf of itself and on behalf of the second endpoint device, and the second endpoint device thus might not need to execute its own instance of the software application. As the software application is executed, it may transition through a plurality of different states, thereby providing its intended functionality and / or features. The first endpoint device may generate afirst plurality of representations of the plurality of different states, and may output the first plurality of representations using, for example, a first user interface of the first endpoint device (e.g., a first display of the first endpoint device). The first endpoint device may also use the virtual device application to generate and transmit, to the second endpoint device, a second plurality of representations of the plurality of different states. The thin client application of the second endpoint device may be configured to receive the second plurality of representations and output the second plurality of representations using, for example, a second user interface of the second endpoint device (e.g., a second display of the second endpoint device).

[0021] The second plurality of representations may be generated by the first endpoint device based on one or more physical properties of a form factor of the second endpoint device, including, for example, a display size, display resolution, display orientation, available output devices, and / or available input devices, among other possibilities. Because the second plurality of representations are generated by the first endpoint device, the thin client application may be application-agnostic. That is, the thin client application may be configured to display the representations of different states of any software application executed by the first endpoint device, where the representations are generated by the virtual device application of the first endpoint device on behalf of the second endpoint device.

[0022] The plurality of endpoint devices may be configured to use the software application interactively (e.g., collaboratively and / or competitively). The software application may be configured to receive (e.g., by way of the first user interface) local interactions (i.e., “local” from the perspective of the software application and the first endpoint device) with the first plurality of representations of the different states, and update the state of the software application based on the local interactions. Additionally, the thin client application may be configured to receive remote interactions (i.e., “remote” from the perspective of the software application and the first endpoint device) with the second plurality of representations of the different states, and transmit the remote interactions to the virtual device application. The virtual device application may be configured to provide the remote interactions to the software application, which may be configured to update the state of the software application based on the remote interactions. Thus, both the local interactions and the remote interactions may be received and processed by the software application executing on the first endpoint device, and the application states resulting from these interactions may be represented on both the first endpoint device and the second endpoint device, thereby allowing for interactive usage of the software application by multiple endpoint device while the software application is installed on and executed by only one of these endpoint devices.

[0023] For example, the software application may be in an initial state, with the first endpoint device displaying a first representation of the initial state and the second endpoint device displaying a second representation of the initial state. A first user of die first endpoint device may interact with the software application by providing, by way of the first user interface, a first local interaction with the first representation of the initial state. Based on the first local interaction, the software application may transition from the initial state to a first state, generate a first representation of the first state, cause the first representation of the first state to be output using the first user interface, and provide an indication of the first state to the virtual device application. The virtual device application may be configured to generate and transmit a second representation of the first state to the thin client application of the second endpoint device, possibly based on modifying the indication of the first state according to physical properties of the second endpoint device.

[0024] Reception of the second representation of the first state by the thin client application may be configured to cause the second endpoint device to output, using the second user interface, tire second representation of the first state. Thus, the first local interaction and / or the results thereof may be presented both (i) using the first user interface of the first endpoint device to the first user thereof and (ii) using the second user interface of the second endpoint device to a second user of the second endpoint device. That is, both the first user and the second user may be able to see how the first user interacted with the software application being shared by both users and / or the effect of this interaction on the software application.

[0025] The second user of the second endpoint device may also interact with die software application by providing, by way of the second user interface, a first remote interaction with the second representation of the first state. The thin client application may be configured to transmit the first remote interaction to the virtual device application of the first endpoint device, which may be configured to provide the first remote interaction to the software application. Based on the first remote interaction, the software application may transition from the first state to a second state, generate a first representation of the second state, cause the first representation of the second state to be output using the first user interface, and provide an indication of the second state to the virtual device application. The virtual device application may be configured to generate and transmit a second representation of the second state to the thin client application of the second endpoint device, possibly based on modifying the indication of the second state according to the physical properties of the second endpoint device.

[0026] Reception of the second representation of the second state by the thin client application may be configured to cause the second endpoint device to output, using the second user interface, the second representation of the second state. Thus, the first remote interaction and / or the results thereof may be presented both (i) using tire first user interface of tire first endpoint device to the first user thereof and (ii) using the second user interface of the second endpoint device to the second user thereof. That is, both the first user and the second user may be able to see how the second user interacted with the software application being shared by both users and / or the effect of this interaction on the software application.

[0027] This interactive use of the software application may be repeated by having either the first user provide one or more additional local interactions with a current state of the software application, and / or the second user provide one or more remote interactions with the current state. Based on these local and / or remote interactions, the software application may transition from the current state to a subsequent state, generate a first representation of the subsequent state, cause the first representation of the subsequent state to be output using tire first user interface, and provide an indication of the subsequent state to the virtual device application. The virtual device application may be configured to generate and transmit a second representation of the subsequent state to the thin client application of the second endpoint device, and the thin client application may be configured to cause the second endpoint device to output, using the second user interface, the second representation of the subsequent state.

[0028] The first endpoint device and the second endpoint device may be communicatively connected by a direct local connection (e.g., Wi-Fi Aware, BLUETOOTH®, etc.), which may be wired and / or wireless. Thus, the second endpoint device may be able to use the software application even when the second endpoint device is unable to independently install the software application. For example, when the first endpoint device is available to share the software application, the second endpoint device may be able to use the software application even if the second endpoint device is not connected to a computer network, and thus unable to independently download and install the software application from an application repository.

[0029] As another example, when the first endpoint device is available to share the software application, the second endpoint device may be able to use the software application even if a system-specific and / or device-specific version of the software application is not available for the second endpoint device. Thus, for example, when the software application that is available for a first operating system utilized by the first endpoint device, but not fbr a secondoperating system utilized by the second endpoint device, the second endpoint device may nevertheless be able to use the software application by sharing it with the first endpoint device.

[0030] Although the examples provided above discuss two endpoint devices, the first endpoint device may be configured to share the software application with a plurality of endpoint devices, where none of the plurality of endpoint devices include an installation of the software application (i.e., only the first endpoint device executes the software application). The software application may include a multiplayer game, a map application, a video player, a document editor, and / or any other collaborative and / or competitive application that may be shared by multiple users. In some cases, the software application may be intended and / or configured to be used by a single user, but nonetheless may be shared among multiple users in the manner described above.

[0031] Because inputs from both the first endpoint device and the second endpoint device are handled by a single instance of the software application, sharing the software application in this manner may avoid the need for synchronization of application states across multiple instances of the software application, thereby simplifying the application development process, reducing utilization of network bandwidth, and / or improving user experience (e.g., by avoiding synchronization lag and / or errors). Additionally, when the first endpoint device and the second endpoint device include different input sensors, each user may interact with the software application using a different interaction modality. For example, the first user may provide touch screen inputs to the first endpoint device to interact with the software application, while the second user may control an orientation of the second endpoint device (e.g., as measured by an inertial measurement unit thereof) to interact with the software application.II. Example Computing Devices and Systems

[0032] Figure 1 illustrates an example computing device 100. Computing device 100 is shown in the form factor of a mobile phone. However, computing device 100 may be alternatively implemented as a laptop computer, a tablet computer, and / or a wearable computing device, among other possibilities. Computing device 100 may include various elements, such as body 102, display 106, and buttons 108 and 110. Computing device 100 may further include one or more cameras, such as front-facing camera 104 and rear-feeing camera 112.

[0033] Front-feeing camera 104 may be positioned on a side of body 102 typically feeing a user while in operation (e.g., on the same side as display 106). Rear-feeing camera 112 may be positioned on a side of body 102 opposite front-facing camera 104. Referring to thecameras as front and rear facing is arbitrary, and computing device 100 may include multiple cameras positioned on various sides of body 102.

[0034] Display 106 could represent a cathode ray tube (CRT) display, a light emitting diode (LED) display, a liquid crystal (LCD) display, a plasma display, an organic light emitting diode (OLED) display, or any other type of display known in the art. In some examples, display 106 may display a digital representation of the current image being captured by front-facing camera 104 and / or rear-facing camera 112, an image that could be captured by one or more of these cameras, an image that was recently captured by one or more of these cameras, and / or a modified version of one or more of these images. Thus, display 106 may serve as a viewfinder for the cameras. Display 106 may also support touchscreen functions that may be able to adjust the settings and / or configuration of one or more aspects of computing device 100.

[0035] Front-feeing camera 104 may include an image sensor and associated optical elements such as lenses. Front-feeing camera 104 may offer zoom capabilities or could have a fixed focal length. In other examples, interchangeable lenses could be used with front-feeing camera 104. Front-facing camera 104 may have a variable mechanical aperture and a mechanical and / or electronic shutter. Front-feeing camera 104 also could be configured to capture still images, video images, or both. Further, front-facing camera 104 could represent, for example, a monoscopic, stereoscopic, or multiscopic camera. Rear-feeing camera 112 may be similarly or differently arranged. Additionally, one or more of front-feeing camera 104 and / or rear-feeing camera 112 may be an array of one or more cameras.

[0036] Computing device 100 could be configured to use display 106 and front-facing camera 104 and / or rear-facing camera 112 to capture images of a target object. The captured images could be a plurality of still images or a video stream. The image capture could be triggered by activating button 108, pressing a softkey on display 106, or by some other mechanism. Depending upon the implementation, the images could be captured automatically at a specific time interval, for example, upon pressing button 108, upon appropriate lighting conditions of the target object, upon moving computing device 100 a predetermined distance, or according to a predetermined capture schedule.

[0037] Figure 2 is a simplified block diagram showing some of the components of an example computing system 200. By way of example and without limitation, computing system 200 may be a cellular mobile telephone (e.g., a smartphone), a computer (such as a desktop, notebook, tablet, server, or handheld computer), a home automation component, a digital video recorder (DVR), a digital television, a remote control, a wearable computing device, a gamingconsole, a robotic device, a vehicle, or some other type of device. Computing system 200 may represent, for example, aspects of computing device 100.

[0038] As shown in Figure 2, computing system 200 may include communication interface 202, user interface 204, processor 206, data storage 208, and camera components 224, all of which may be communicatively linked together by a system bus, network, or other connection mechanism 210.

[0039] Communication interface 202 may allow computing system 200 to communicate, using analog or digital modulation, with other devices, access networks, and / or transport networks. Thus, communication interface 202 may facilitate circuit-switched and / or packet-switched communication, such as plain old telephone service (POTS) communication and / or Internet protocol (IP) or other packetized communication. For instance, communication interface 202 may include a chipset and antenna arranged for wireless communication with a radio access network or an access point. Also, communication interface 202 may take the form of or include a wireline interface, such as an Ethernet, Universal Serial Bus (USB), or High- Definition Multimedia Interface (HDMI) port, among other possibilities. Communication interface 202 may also take the form of or include a wireless interface, such as a Wi-Fi, BLUETOOTH®, global positioning system (GPS), or wide-area wireless interface (e.g., WiMAX or 3GPP Long-Term Evolution (LTE), 5G), among other possibilities. However, other forms of physical layer interfaces and other types of standard or proprietary communication protocols may be used over communication interface 202. Furthermore, communication interface 202 may comprise multiple physical communication interfaces (e.g., a Wi-Fi interface, a BLUETOOTH® interface, and a wide-area wireless interface).

[0040] User interface 204 may function to allow computing system 200 to interact with a human or non-human user, such as to receive input from a user and to provide output to the user. Thus, user interface 204 may include input components such as a keypad, keyboard, touch-sensitive panel, computer mouse, trackball, joystick, microphone, and so on. User interface 204 may also include one or more output components such as a display screen, which, for example, may be combined with a touch-sensitive panel. The display screen may be based on CRT, LCD, LED, and / or OLED technologies, or other technologies now known or later developed. User interface 204 may also be configured to generate audible output(s), via a speaker, speaker jack, audio output port, audio output device, earphones, and / or other similar devices. User interface 204 may also be configured to receive and / or capture audible utterance(s), noise(s), and / or signal(s) by way of a microphone and / or other similar devices.

[0041] In some examples, user interface 204 may include a display that serves as a viewfinder for still camera and / or video camera fimctions supported by computing system 200. Additionally, user interface 204 may include one or more buttons, switches, knobs, and / or dials that facilitate the configuration and focusing of a camera function and the capturing of images. It may be possible that some or all of these buttons, switches, knobs, and / or dials are implemented by way of a touch-sensitive panel.

[0042] Processor 206 may comprise one or more general purpose processors - e.g., microprocessors - and / or one or more special purpose processors - e.g., digital signal processors (DSPs), graphics processing units (GPUs), floating point units (FPUs), network processors, application-specific integrated circuits (ASICs), and / or tensor processing units (TPUs). In some instances, special purpose processors may be capable of image processing, image alignment, and merging images, among other possibilities. Data storage 208 may include one or more volatile and / or non-volatile storage components, such as magnetic, optical, flash, or organic storage, and may be integrated in whole or in part with processor 206. Data storage 208 may include removable and / or non-removable components.

[0043] Processor 206 may be capable of executing program instructions 218 (e.g., compiled or non-compiled program logic and / or machine code) stored in data storage 208 to carry out the various functions described herein. Therefore, data storage 208 may include a non-transitory computer-readable medium, having stored thereon program instructions that, upon execution by computing system 200, cause computing system 200 to carry out any of the methods, processes, or operations disclosed in this specification and / or the accompanying drawings. The execution of program instructions 218 by processor 206 may result in processor 206 using data 212.

[0044] By way of example, program instructions 218 may include an operating system 222 (e.g., an operating system kernel, device drivers), and / or other modules) and one or more application programs 220 (e.g., camera fimctions, address book, email, web browsing, social networking, audio-to-text fimctions, text translation functions, and / or gaming applications) installed on computing system 200. Similarly, data 212 may include operating system data 216 and application data 214. Operating system data 216 may be accessible primarily to operating system 222, and application data 214 may be accessible primarily to one or more of application programs 220. Application data 214 may be arranged in a file system that is visible to or hidden from a user of computing system 200.

[0045] Application programs 220 may communicate with operating system 222 through one or more application programming interfeces (APIs). These APIs may facilitate,for instance, application programs 220 reading and / or writing application data 214, transmitting or receiving information via communication interface 202, receiving and / or displaying information on user interface 204, and so on.

[0046] In some cases, application programs 220 may be referred to as “apps” for short. Additionally, application programs 220 may be downloadable to computing system 200 through one or more online application stores or application markets. However, application programs can also be installed on computing system 200 in other ways, such as via a web browser or through a physical interface (e.g., a USB port) on computing system 200.

[0047] Camera components 224 may include, but are not limited to, an aperture, shutter, recording surface (e.g., photographic film and / or an image sensor), lens, shutter button, infrared projectors, and / or visible-light projectors. Camera components 224 may include components configured for capturing of images in the visible-light spectrum (e.g., electromagnetic radiation having a wavelength of 380 - 700 nanometers) and / or components configured for capturing of images in the infrared light spectrum (e.g., electromagnetic radiation having a wavelength of 701 nanometers - 1 millimeter), among other possibilities. Camera components 224 may be controlled at least in part by software executed by processor 206.III. Example Endpoint Device Arrangement

[0048] Figure 3 represents an example arrangement of a plurality of endpoint devices configured to share a software application executed by one of these endpoint devices. Specifically, endpoint device 300 may be communicatively connected to each of endpoint device 310, endpoint device 312, and / or one or more other endpoint devices as indicated by the ellipsis, collectively referred to herein as “endpoint devices 310-312.” Endpoint devices 300 and / or 310-312 may represent computing device 100, computing system 200, and / or components thereof. Endpoint devices 300 and / or 310-312 may differ in form factor, computing capabilities, operating systems, and / or software applications installed thereon. Each of endpoint devices 300 and 310-312 may be, for example, a mobile device.

[0049] Endpoint device 300 may include input / output (I / O) devices 302, software application 304, and virtual device application 306. Endpoint device 310 may include I / O devices 314 and thin client application 318. Endpoint device 312 may include I / O devices 316 and thin client application 320. The input devices of I / O devices 302, 314, and / or 316 may include a touch screen, a mouse, a keyboard, an inertial measurement unit, a haptic sensor, a joystick, a camera, a microphone, a light detection and ranging (LIDAR) device, and / or any other type of sensor configured to detect input to a computing device. The output devices ofI / O devices 302, 314, and / or 316 may include a display, a projector, a speaker, a haptic feedback device, and / or any other type of device configured to represent the output of a computing device.

[0050] Software application 304 may be shared among endpoint devices 300 and 310- 312. Specifically, software application 304 may be installed on and / or executed by endpoint device 300, but might not be installed on and / or executed by any of endpoint devices 310-312. Thus, endpoint device 300 may be configured to execute software application 304 on behalf of itself and one or more of endpoint devices 310-312. Accordingly, endpoint device 300 may sometimes be referred to as a host endpoint device and / or a sharing endpoint device, while endpoint devices 310-312 ma}' be referred to as client endpoint devices.

[0051] Sharing of software application 304 may be facilitated by virtual device application 306 of endpoint device 300, thin client application 318 of endpoint device 310, thin client application 320 of endpoint device 312, and / or other thin client applications of the one or more other endpoint devices as indicated by the ellipsis. The thin client applications of endpoint devices 310-312 are herein referred to as thin client applications 318-320. Virtual device application 306 may be configured to generate representations of states of software application 304 for each of thin client applications 318-320. Additionally, virtual device application 306 may be configured to receive, from thin client applications 318-320, user interactions with the representations of the states of software application 304, and provide these user interactions to software application 304, thereby allowing endpoint devices 310-312 to remotely interact with software application 304. Virtual device application 306 may represent, for example, an Android Virtual Device Manager application.

[0052] Software application 304 may be used interactively by endpoint device 300 and one or more of endpoint devices 310-312. Specifically, using I / O devices 302, endpoint device 300 may allow (i) a first user of endpoint device 300 to provide local inputs to software application 304 and (ii) software application 304 to provide outputs to the first user. Using I / O devices 314, endpoint device 310 may allow (i) a second user of endpoint device 310 to provide remote inputs to software application 304 via thin client application 318 and virtual device application 306 and (ii) software application 304 to provide outputs to the second user via virtual device application 306 and thin client application 318. Using I / O devices 316, endpoint device 312 may allow (i) a third user of endpoint device 312 to provide remote inputs to software application 304 via thin client application 318 and virtual device application 306 and (ii) software application 304 to provide outputs to the third user via virtual device application 306 and thin client application 318.

[0053] Virtual device application 306 and / or thin client applications 318-320 may be application-agnostic in that these applications may be configured to allow any application installed on and / or executed by endpoint device 300 to be shared with one or more of endpoint devices 310-312. For example, virtual device application 306 may be configured to account for any differences in I / O capabilities between endpoint device 300 and one or more of endpoint devices 310-312 by transforming data generated by software application 304 into a format that can be output using endpoint devices 310-312, and / or transforming inputs obtained using endpoint devices 310-312 into a format that can be processed by software application 304. Thus, software application 304 can treat inputs obtained from and / or outputs destined for any of endpoint devices 310-312 the same as inputs obtained from and / or outputs destined for, respectively, endpoint device 300.

[0054] In some implementations, one or more of endpoint devices 310-312 may be communicatively connected to endpoint device 300 using a direct local connection. Once established, the direct local connection may allow data to be transmitted directly from one endpoint device to another, without traversing any intermediary- devices. Thus, using the direct location connection may reduce a latency of communications transmitted between endpoint device 300 and one or more of endpoint devices 310-312. The direct local connection may be implemented using, for example, Wi-Fi Aware, Wi-Fi Direct, and / or BLUETOOTH®, among other possibilities. The direct local connection may utilize wide area network (WAN) chipsets (e.g., 4G, 5G, etc.), local area network (LAN) chipsets (e.g., Wi-Fi, Ethernet, etc.), and / or personal area network (PAN) chipsets (e.g., BLUETOOTH®) of endpoint devices 300 and / or 310-312. In other implementations, one or more of endpoint devices 310-312 may be communicatively connected to endpoint device 300 using one or more indirect connections (e.g., via the Internet, a mesh network, etc.).

[0055] In some implementations, virtual device application 306 may form part of an operating system of endpoint device 300. Additionally or alternatively, thin client applications 318-320 may form part of the respective operating systems of endpoint devices 310-312. For example, the operating systems of each of endpoint devices 300 and 310-312 may each include a corresponding instance of a virtual device application and a thin client application, thus allowing each of these devices to operate as a host and / or client. Accordingly, two or more endpoint devices that utilize an operating system equipped with the virtual device application and / or the thin client application may be used for application sharing. Further, in cases where endpoint device 300 includes a thin client application, another endpoint device (e.g., one of endpoint devices 310-312, when equipped with a virtual device application) may be used toshare a software application with endpoint device 300 without this software application being installed on and / or executed by endpoint device 300.

[0056] In some implementations, software application 304 may be executed by endpoint device 300 within virtual device application 306. For example, virtual device application 306 may provide an environment within which software application 304 can be executed and one or more interfaces by way of which I / O devices 302 can interact with software application 304.IV. Example Message Flow Diagrams

[0057] Figures 4A, 4B, 4C, and 4D illustrate example interactions among endpoint devices 300, 310, and / or 312 that allow a software application to be shared and interactively used by these endpoint devices. Figure 4A illustrates operations involved in initiating sharing of a software application between two endpoint devices. Specifically, virtual device application 306 may be configured to receive a sharing request for sharing software application 304 between endpoint device 300 and endpoint device 310, as indicated by block 400. For example, virtual device application 306 may be configured to allow a first user of endpoint device 300 to view a list of other endpoint devices that are available for application sharing, and select endpoint device 310 therefrom. Virtual device application 306 may be configured to identify the other endpoint devices that are available fbr application sharing based on one or more contacts stored on endpoint device 300 and / or signal strengths of wireless signals detected at endpoint device 300, among other data.

[0058] In some implementations, endpoint device 310 may be available fbr application sharing when it includes thin client application 318 installed thereon. In other implementations, endpoint device 310 may be available for application sharing regardless of whether it includes thin client application 318 installed thereon. For example, endpoint device 300 may include an installation package of thin client application 318 that may be transmitted from endpoint device 300 to endpoint device 310 and installed on endpoint device 310. In such implementations, sharing of software application 304 may be possible as long as endpoint devices 300 and 310 are capable of establishing a communicative connection with one another.

[0059] Based on and / or in response to reception of the sharing request at block 400, virtual device application 306 may be configured to provide the sharing request to thin client application 318 of endpoint device 310, as indicated by arrow 402. The transmission of arrow 402, as well as any other interaction between endpoint devices 300, 310, and / or 312 may be carried out using one or more direct local connections therebetween.

[0060] Based on and / or in response to reception of the sharing request at arrow 402, thin client application 318 may be configured to output the sharing request (e.g., using I / O devices 314), as indicated by block 404. The sharing request may prompt the second user of endpoint device 310 to accept or reject sharing of software application 304 with endpoint device 300. Based on and / or in response to outputting the sharing request at block 404, thin client application 318 may be configured to obtain acceptance of the sharing request, as indicated by block 406. For example, the second user may select an “accept” button from a graphical user interface of thin client application 318 on endpoint device 310.

[0061] Based on and / or in response to obtaining the acceptance of the sharing request at block 406, thin client application 318 may be configured to provide the acceptance of the sharing request to virtual device application 306, as indicated by arrow 408. In some implementations, sharing of software application 304 may instead be initiated by thin client application 318 and accepted using virtual device application 306.

[0062] Thin client application 318 may also be configured to determine one or more physical properties of endpoint device 310, as indicated by block 410. For example, the determination of the one or more physical properties may be carried out based on and / or in response to obtaining the acceptance of the sharing request at block 406. The one or more physical properties may include physical properties of a form factor of endpoint device 310. Based on and / or in response to determination of the one or more physical properties at block 410, thin client application 318 may be configured to provide the one or more physical properties to virtual device application 306, as indicated by arrow 412.

[0063] Specifically, when one or more physical properties of endpoint device 310 differ from corresponding physical properties of endpoint device 300, inputs to software application 304 received from endpoint device 310 and / or outputs of software application 304 destined for endpoint device 310 may be modified by virtual device application 306 to facilitate interoperability between endpoint device 310 and software application 304. The one or more physical properties of endpoint device 310 may include attributes of one or more of I / O devices 314, including display size, display resolution, display orientation, input device types, and / or any other attributes that affect how input to and / or output of software application is arranged / formatted to account for differences between endpoint device 300 and endpoint device 310.

[0064] Based on and / or in response to reception of the acceptance of the sharing request at arrow 408, reception of the one or more physical properties at arrow 412, and / or user input received by virtual device application 306, virtual device application 306 may be configuredto request initiation of execution of software application 304, as indicated by arrow 414. Based on and / or in response to reception of the request for initiation of execution of software application 304, software application 304 may be configured to determine an initial state of software application 304, as indicated by block 416. For example, the initial state of software application 304 may correspond to a menu screen, a welcome screen, and / or a screen representing a previously-saved state of software application 304, among other possibilities. In some implementations, sharing of software application 304 may instead be initiated using software application 304 (e.g., by initiating execution thereof and / or selecting a “share” option from there within).

[0065] Turning to Figure 4B, software application 304 may be configured to receive a first local interaction with software application 304, as indicated by block 418. The first local interaction may represent a user input provided based on and / or in response to a representation of the initial state of software application 304. For example, the first local interaction may be a touch screen input obtained while endpoint device 300 is displaying a visual representation of the initial state of software application 304. In general, the local interactions and the remote interactions discussed herein may include user input detected using one or more sensors of an endpoint device and representing an interaction with a representation of at least one state of a software application (e.g., document editing inputs, game control inputs, user interface navigation inputs, etc.). The terms ‘local interaction” and “remote interaction” are used herein to denote interactions from the perspective of software application 304 and / or endpoint device 300 (rather than from the perspective of thin client application 318 and / or endpoint device 310).

[0066] Based on and / or in response to reception of the first local interaction at block 418, software application 304 may be configured to determine a first state of software application 304, as indicated by block 420. For example, software application 304 may respond to the first local interaction by performing operations corresponding to the first local interaction, thereby transitioning from the initial state to the first state. Based on and / or in response to determination of the first state at block 420, software application 304 may be configured to generate a first representation of at least part of the first state, as indicated by block 422. The first representation of the first state may be visual, audible, and / or haptic, among other possibilities, and may be configured to inform the first user that software application 304 is in the first state.

[0067] Based on and / or in response to determination of the first state at block 420, software application 304 may be configured to output the first representation of the first state using one or more output devices of endpoint device 300, as indicated by block 423.Additionally, based on and / or in response to determination of the first state at block 420 and / or generation of the first representation of the first state at block 422, software application 304 may be configured to provide an indication of the first state to virtual device application 306, as indicated by arrow 424. Providing the indication of the first state to virtual device application 306 may include providing a definition and / or representation of the first state that virtual device application 306 can use to generate a user-interpretable representation of the first state for output by endpoint device 310. Accordingly, based on and / or in response to reception of the indication of the first state at arrow 424, virtual device application 306 may be configured to generate a second representation of the first state, as indicated by block 426.

[0068] The operations performed by virtual device application 306 to generate, based on the indication of the first state, the second representation of the first state may depend on software application 304. For example, some software applications, when shared among multiple endpoint devices, may provide each of these endpoint devices with the same user interface content (e.g., all users may see the same screen). Thus, the second representation of the first state and the first representation of the first state may include the same content (albeit possibly in a different arrangement in view of form factor differences, as discussed below). For example, when software application 304 is a document editing application, both endpoint devices 300 and 310 may have access to the same content of the same document.

[0069] Other software applications, when shared among multiple endpoint devices, may provide each of these endpoint devices with different user interface content (e.g., each user may see a user-specific screen). Thus, the second representation of the first state and the first representation of the first state may include different content. For example, when software application 304 is a multiplayer game, endpoint device 300 may output first content while endpoint device 310 may output second content, where the first content and the second content are different. The first state may include both the first content and the second content, the first representation of the first state may include the first content but not the second content, and the second representation of the first state may include the second content but not the first content. For example, the multiplayer game may involve different users simultaneously viewing different aspects of the game (e .g., in a Battleship game, a given user can view the given user’s game grid, but not other user’s game grids), resulting the first representation of the first state being specific to the first user and the second representation of the first state being specific to the second user.

[0070] Additionally or alternatively, the operations performed by virtual device application 306 to generate, based on the indication of the first state, the second representationof the first state may depend on physical differences between endpoint devices 300 and 310. In cases where endpoint devices 300 and 310 are devices of the same model and the content to be output by each of them is the same, the first representation of the first state and the second representation of the first state may be the same (e.g., visual representations generated by software application 304 may be displayable using both endpoint devices 300 and 310). In cases where endpoint devices 300 and 310 are physically different in a manner that affects how information is output by and / or input to these devices, tire indication of the first state may be used to generate the second representation to match the form factor of endpoint device 310. For example, the second representation of the first state may have a different size, resolution, and / or data types than the first representation of the first state, depending on physical differences between endpoint devices 300 and 310.

[0071] Based on and / or in response to generation of the second representation of the first state at block 426, virtual device application 306 may be configured to provide, to thin client application 318, the second representation of the first state, as indicated by arrow 428. Based on and / or in response to reception of the second representation of the first state at arrow 428, thin client application 318 may be configured to output the second representation of the first state (e.g., using I / O devices 314), as indicated by block 430. For example, thin client application 318 may be configured to display the second representation of the first state. Thus, the second user of endpoint device 310 may view the local interaction provided to software application 304 at block 418 and / or the resulting effect thereof on the state of software application 304.

[0072] Tinning to Figure 4C, based on and / or in response to outputting the second representation of the first state at block 430, thin client application 318 may be configured to receive a first remote interaction with the second representation of the first state, as indicated by block 432. The first remote interaction may represent a user input provided while endpoint device 310 outputs the second representation of the first state of software application 304. For example, the first remote interaction may be a touch screen input obtained while endpoint device 310 is displaying the second representation of the first state of software application 304.

[0073] Based on and / or in response to reception of the first remote interaction at block 432, thin client application 318 may be configured to provide, to virtual device application 306, the first remote interaction, as indicated by arrow 434. Based on and / or in response to reception of the first remote interaction at arrow 434, virtual device application 306 may be configured to provide the first remote interaction to software application 304, as indicated by arrow 436.

[0074] Based on and / or in response to reception of the first remote interaction at arrow 436, software application 304 may be configured to determine a second state of software application 304, as indicated by block 438. For example, software application 304 may respond to the first remote interaction by performing operations corresponding to the first remote interaction, thereby transitioning from the first state to the second state.

[0075] Based on and / or in response to determination of the second state of software application 304 at block 438, software application 304 may be configured to generate a first representation of the second state, as indicated by block 440. Based on and / or in response to generation of the first representation of the second state at block 440, software application 304 may be configured to output the first representation of the second state, as indicated by block 443. The first representation of the second state may be visual, audible, and / or haptic, among other possibilities, and may inform the first user that software application 304 is in the second state. Thus, the first user of endpoint device 300 may view the remote interaction provided to software application 304 at block 432 and / or the resulting effect thereof on the state of software application 304.

[0076] Based on and / or in response to determination of the second state at block 438 and / or generation of the first representation of the second state at block 440, software application 304 may be configured to provide an indication of the second state to virtual device application 306, as indicated by arrow 442. Based on and / or in response to reception of the indication of the second state at arrow 442, virtual device application 306 may be configured to generate a second representation of the second state, as indicated by block 444. Generating the second representation of the second state may include operations analogous to those discussed in connection with block 426.

[0077] Based on and / or in response to generation of the second representation of the second state at block 444, virtual device application 306 may be configured to provide the second representation of the second state to thin client application 318, as indicated by arrow 446. Based on and / or in response to reception of the second representation of the second state at arrow 446, thin client application 318 may be configured to output the second representation of the second state, as indicated by block 448. Thus, the second user of endpoint device 310 may view the remote interaction provided to software application 304 at block 432 and / or the resulting effect thereof on the state of software application 304.

[0078] Turning to Figure 4D, based on and / or in response to reception of the indication of the second state at arrow 442, virtual device application 306 may also be configured to generate a third representation of the second state, as indicated by block 450. Generating thethird representation of the second state may include operations analogous to those discussed in connection with block 426. The third representation of the second state may be generated for endpoint device 312, and may thus be based on the physical properties of endpoint device 312.

[0079] Based on and / or in response to generation of the third representation of the second state at block 450, virtual device application 306 may be configured to provide, to thin client application 320 of endpoint device 312, the third representation of the second state, as indicated by arrow 452. Based on and / or in response to reception of the third representation of the second state at arrow 452, thin client application 320 may be configured to output the third representation of the second state, as indicated by block 454. Thus, the third user of endpoint device 310 may view the remote interaction provided to software application 304 at block 432 using endpoint device 310 and / or the resulting effect thereof on the state of software application 304. That is, the second user of endpoint device 310 and the third user of endpoint device 312 may interactively use software application 304, where software application 304 is not installed on and / or executed by either one of endpoint device 310 or endpoint device 312.

[0080] Based on and / or in response to outputting the third representation of the second state at block 454, thin client application 320 may be configured to receive a second remote interaction with die third representation of the second state, as indicated by block 456. The second remote interaction obtained at block 456 may be similar to tire first remote interaction obtained at block 432, and may be obtained using the same or different types of sensors. Based on and / or in response to reception of the second remote interaction at block 456, thin client application 320 may be configured to provide, to virtual device application 306, the second remote interaction, as indicated by arrow 458.

[0081] Based on and / or in response to reception of the second remote interaction at arrow 458, virtual device application 306 may be configured to provide the second remote interaction to software application 304, as indicated by arrow 460. Based on and / or in response to reception of the second remote interaction at arrow 460, software application 304 may be configured to determine a third state of software application 304, as indicated by block 462. Based on and / or in response to determining the third state of software application 304 at block 462, software application 304 may be configured to generate a first representation of the third state, as indicated by block 464. Based on and / or in response to generation of the first representation of the third state at block 464, software application 304 may be configured to output the first representation of the third state, as indicated by block 466. Thus, the first user of endpoint device 300 may view the remote interaction provided to software application 304 at block 456 and / or the resulting effect thereof on the state of software application 304.

[0082] One or more operations of Figures 4A, 4B, 4C, and 4D may be repeated one or more times to allow software application 304 to continue to be used interactively by endpoint devices 300, 310, and 312. For example, based on and / or in response to generation of the first representation of the third state at block 464, the operations of arrow 442 through block 448 may be carried out with respect to the third state to allow endpoint device 310 to output a second representation of the third state. Thus, the second user of endpoint device 310 may view tire remote interaction provided to software application 304 at block 456 and / or the resulting effect thereof on the state of software application 304.

[0083] The outputs at blocks 430, 448, and 454 may each be generated without endpoint devices 310 and 312 executing any code of software application 304. Instead, states of software application 304 reached as a result of interactions with software application 304 by each of endpoint devices 300, 310, and 312 may be represented using one or more processes running on endpoint device 300. Such an arrangement may improve the security of software application 304 at least because the number of potential attack points may be reduced compared to, for example, an arrangement in which each of endpoint devices 300, 310, and 312 executes a corresponding instance of software application 304.

[0084] The operations of Figures 4A, 4B, 4C, and / or 4D may allow endpoint device 310-312 to access software application 304 even when software application 304 is not available for installation on and / or execution by endpoint devices 310-312. For example, by having endpoint device 300 share software application 304, endpoint devices 310-312 may be able to utilize software application 304 when (i) endpoint devices 310-312 lack network connectivity and are thus unable to download software application 304, (ii) a version of software application 304 is not available for an operating system executed by endpoint devices 310-312, and / or (iii) endpoint devices 310-312 have insufficient computing resources to install and / or execute software application 304, among other possibilities.V. Additional Example Operations

[0085] Figure 5 illustrates a flow chart of operations related to interactive sharing of a software application among two or more endpoint devices, where the software application is installed on and / or executed by only one of the endpoint devices. The operations may be carried out by computing device 100, computing system 200, and / or endpoint device 300, among other possibilities. The embodiments of Figure 5 may be simplified by the removal of any one or more of the features shown therein. Further, these embodiments may be combined with features, aspects, and / or implementations of any of the previous figures or otherwise described herein.

[0086] Block 500 may involve receiving, by way of a first user interface of a first endpoint device, a local interaction with a software application executed by the first endpoint device.

[0087] Block 502 may involve determining a first state of the software application based on the local interaction.

[0088] Block 504 may involve transmitting, by the first endpoint device and to a second endpoint device that is communicatively connected to the first endpoint device, a representation of the first state. Reception of the representation of the first state may cause the second endpoint device to display, using a second user interface of the second endpoint device, the representation of the first state.

[0089] Block 506 may involve receiving, from the second endpoint device, a remote interaction with the representation of the first state of the software application.

[0090] Block 508 may involve determining a second state of the software application based on the remote interaction.

[0091] Block 510 may involve displaying, using the first user interface, a representation of the second state of the software application.

[0092] In some examples, a second local interaction with the representation of the second state of the software application may be received by way of the first user interface. A third state of the software application may be determined based on the second local interaction. A first representation of the third state of the software application may be displayed using the first user interface.

[0093] In some examples, a second representation of the third state may be transmitted by the first endpoint device to the second endpoint device. Reception of the second representation of the third state may cause the second endpoint device to display, using the second user interface, the second representation of the third state. A second remote interaction with the second representation of the third state of the software application may be received from the second endpoint device. A fourth state of the software application may be determined based on the second remote interaction. A representation of the fourth state may be displayed using the first user interface.

[0094] In some examples, a second representation of the second state may be transmitted by the first endpoint device to the second endpoint device. Reception of the second representation of the second state may cause the second endpoint device to display, using the second user interface, the second representation of the second state. A second remote interaction with the second representation of the second state of the software application maybe received from the second endpoint device. A third state of the software application may be determined based on the second remote interaction. A representation of the third state may be displayed using the first user interface.

[0095] In some examples, a second representation of the second state may be transmitted by the first endpoint device to a third endpoint device that is communicatively connected to the first endpoint device. Reception of the second representation of the second state may cause the third endpoint device to display, using a third user interface of the third endpoint device, the second representation of the second state. A second remote interaction with the second representation of the second state of the software application may be received from the third endpoint device. A third state of tire software application may be determined based on the second remote interaction. A representation of the third state may be displayed using the first user interface.

[0096] In some examples, the remote interaction may be obtained by the second endpoint device using tire second user interface while the second user interface displays the representation of the first state.

[0097] In some examples, the representation of the first state may include a graphical representation of the first state rendered by the first endpoint device on behalf of the second endpoint device.

[0098] In some examples, determining the second state may include providing the remote interaction as an input to the software application and processing the remote interaction by the software application to cause the software application to transition from the first state to the second state.

[0099] In some examples, a second representation of the first state of the software application may be displayed using the first user interface.

[0100] In some examples, one or more physical properties of the second endpoint device may be obtained by the first endpoint device from the second endpoint device. The representation of the first state may be rendered based on the one or more physical properties.

[0101] In some examples, one or more other endpoint devices that are available for sharing of the software application may be detected by the first endpoint device. The one or more other endpoint devices may include the second endpoint device. A selection of the second endpoint device may be obtained by way of the first user interface. Based on obtaining the selection, sharing of the software application with the second endpoint device may be initiated.

[0102] In some examples, the software application might not be installed on tire second endpoint device. The second endpoint device might not execute the software application.

[0103] In some examples, display of the second user interface may be facilitated by a thin client application installed on the second endpoint device. The thin client applications may be configured to (i) display graphical representations generated by the first endpoint device and representing states of the software application and (ii) obtain, from the second endpoint device and on behalf of the software application, remote interactions with the graphical representations.

[0104] In some examples, transmission of the representation of the first state may be facilitated by a virtual device application executed by the first endpoint device. The virtual device application may be configured to generate graphical representations of states of the software application for display by the second endpoint device.

[0105] In some examples, the second endpoint device may be communicatively connected to the first endpoint device by way of a direct local connection.

[0106] In some examples, the software application may include one or more of a multiplayer game, a map application, a video player, or a document editor.

[0107] In some examples, the local interaction may be obtained using a first sensor type provided on the first endpoint device. The remote interaction may be obtained using a second sensor type provided on the second endpoint device. The first sensor type may be different from the second sensor type.

[0108] In some examples, the representation of the first state may include audio data. Reception of the representation of the first state may cause the second endpoint device to generate, using a speaker associated with die second endpoint device, an audible representation of the audio data.

[0109] In some examples, states of the software application resulting from interactions between the first endpoint device and the second endpoint device may each be represented using a software process executed by the first endpoint device.

[0110] Figure 6 illustrates another flow chart of operations related to interactive sharing of the software application among two or more endpoint devices, where the software application is installed on and / or executed by only one of the endpoint devices. The operations may be carried out by computing device 100, computing system 200, and / or one or more of endpoint devices 310-312, among other possibilities. The embodiments of Figure 6 may be simplified by the removal of any one or more of the features shown therein. Further, these embodiments may be combined with features, aspects, and / or implementations of any of the previous figures or otherwise described herein.

[0111] Block 600 may involve receiving, by a second endpoint device and from a first endpoint device that is communicatively connected to the second endpoint device, a representation of a first state of a software application executed by the first endpoint device. The first state may have been determined by the first endpoint device based on a local interaction with the software application. The local interaction may have been received by way of a first user interface of the first endpoint device.

[0112] Block 602 may involve, based on receiving the representation of the first state, displaying, using a second user interface of the second endpoint device, the representation of the first state.

[0113] Block 604 may involve receiving, by the second endpoint device and using the second user interface, a remote interaction with the representation of the first state of the software application.

[0114] Block 606 may involve transmitting, by the second endpoint device and to the first endpoint device, the remote interaction. Reception of the remote interaction may cause tire first endpoint device to determine a second state of the software application based on the remote interaction and display, using the first user interface, a representation of the second state of the software application.

[0115] In some examples, the second endpoint device may receive, from the first endpoint device, a representation of a third state of the software application. The third state of the software application may be based on a second local interaction with the representation of tire second state of the software application. The second local interaction may be received by way of the first user interface. Based on receiving the representation of the third state, the second endpoint device may display, using the second user interface, the representation of the third state.

[0116] In some examples, a second remote interaction with a second representation of the third state of the software application may be received by the second endpoint device and using the second user interfree. The second endpoint device may transmit, to the first endpoint device, the second remote interaction. Reception of the remote interaction may cause the first endpoint device to determine a fourth state of the software application based on the second remote interaction and display, using the first user interface, a representation of the fourth state of the software application.

[0117] In some examples, the second endpoint device may receive, from the first endpoint device, a second representation of the second state. Based on receiving the second representation of the second state, the second endpoint device may display, using the seconduser interface, the second representation of the second state. The second endpoint device may receive, using the second user interface, a second remote interaction with the second representation of the second state. The second endpoint device may transmit, to the first endpoint device, the second remote interaction. Reception of the remote interaction may cause the first endpoint device to determine a third state of the software application based on the second remote interaction and display, using the first user interface, a representation of the third state of the software application.

[0118] In some examples, the second endpoint device may receive, from the first endpoint device, a representation of a third state of the software application. The third state may be determined by the first endpoint device based on a second remote interaction with a second representation of the second state of the software application that has been transmitted by the first endpoint device to a third endpoint device that is communicatively connected to the first endpoint device. The second representation of the second state may be displayed by a third user interface of the third endpoint device, and the second remote interaction may be received by way of the third user interface. The second endpoint device may display, using the second user interface, a representation of the third state.

[0119] In some examples, the remote interaction may be received by the second endpoint device using the second user interface while the second user interface displays the representation of the first state.

[0120] In some examples, the representation of the first state may include a graphical representation of the first state rendered by the first endpoint device on behalf of the second endpoint device.

[0121] In some examples, the first endpoint device may be configured to determine the second state by providing the remote interaction as an input to the software application and processing the remote interaction by the software application to cause the software application to transition from the first state to the second state.

[0122] In some examples, the first endpoint device may be configured to display, using tire first user interface, a second representation of the first state of the software application.

[0123] In some examples, the second endpoint device may provide, to the first endpoint device, one or more physical properties of the second endpoint device. The first endpoint device may be configured to render the representation of the first state based on the one or more physical properties.

[0124] In some examples, the second endpoint device may detect one or more other endpoint devices that are available fbr sharing of the software application. The one or moreother endpoint devices may include the first endpoint device. A selection of the first endpoint device may be obtained by way of the second user interface. Based on obtaining the selection, the second endpoint device may initiate sharing of the software application with the first endpoint device.

[0125] In some examples, the software application might not be installed on the second endpoint device, and the second endpoint device might not execute the software application.

[0126] In some examples, display of the second user interface may be facilitated by a thin client application installed on the second endpoint device and configured to (i) display graphical representations generated by the first endpoint device and representing states of the software application and (ii) obtain, from the second endpoint device and on behalf of the software application, remote interactions with the graphical representations.

[0127] In some examples, transmission of the representation of the first state may be facilitated by a virtual device application executed by the first endpoint device and configured to generate graphical representations of states of the software application for display by the second endpoint device.

[0128] In some examples, the second endpoint device may be communicatively connected to tire first endpoint device by way of a direct local connection.

[0129] In some examples, the software application may include one or more of a midtiplayer game, a map application, a video player, or a document editor.

[0130] In some examples, the local interaction may be obtained using a first sensor type provided on the first endpoint device. The remote interaction may be obtained using a second sensor type provided on the second endpoint device. The first sensor type may be different from the second sensor type.

[0131] In some examples, the representation of the first state may include audio data. Based on receiving tire representation of the first state, the second endpoint device may generate, using a speaker associated with the second endpoint device, an audible representation of the audio data.

[0132] In some examples, states of the software application resulting from interactions between the first endpoint device and the second endpoint device may be each be represented using a software process executed by the first endpoint device.VI. Conclusion

[0133] The present disclosure is not to be limited in terms of the particular embodiments described in this application, which are intended as illustrations of various aspects. Many modifications and variations can be made without departing from its scope, aswill be apparent to those skilled in the art. Functionally equivalent methods and apparatuses within the scope of the disclosure, in addition to those described herein, will be apparent to those skilled in the art from the foregoing descriptions. Such modifications and variations are intended to fall within the scope of the appended claims.

[0134] The above detailed description describes various features and operations of the disclosed systems, devices, and methods with reference to the accompanying figures. In the figures, similar symbols typically identify similar components, unless context dictates otherwise. The example embodiments described herein and in the figures are not meant to be limiting. Other embodiments can be utilized, and other changes can be made, without departing from the scope of the subject matter presented herein. It will be readily understood that the aspects of the present disclosure, as generally described herein, and illustrated in the figures, can be arranged, substituted, combined, separated, and designed in a wide variety of different configurations.

[0135] With respect to any or all of the message flow diagrams, scenarios, and flow charts in the figures and as discussed herein, each step, block, and / or communication can represent a processing of information and / or a transmission of information in accordance with example embodiments. Alternative embodiments are included within the scope of these example embodiments. In these alternative embodiments, for example, operations described as steps, blocks, transmissions, communications, requests, responses, and / or messages can be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved. Further, more or fewer blocks and / or operations can be used with any of the message flow diagrams, scenarios, and flow charts discussed herein, and these message flow diagrams, scenarios, and flow charts can be combined with one another, in part or in whole.

[0136] A step or block that represents a processing of information may correspond to circuitry that can be configured to perform the specific logical functions of a herein-described method or technique. Alternatively or additionally, a block that represents a processing of information may correspond to a module, a segment, or a portion of program code (including related data). The program code may include one or more instructions executable by a processor for implementing specific logical operations or actions in the method or technique. The program code and / or related data may be stored on any type of computer readable medium such as a storage device including random access memory (RAM), a disk drive, a solid state drive, or another storage medium.

[0137] The computer readable medium may also include non-transitory computer readable media such as computer readable media that store data for short periods of time like register memory, processor cache, and RAM. The computer readable media may also include non-transitory computer readable media that store program code and / or data for longer periods of time. Thus, the computer readable media may include secondary or persistent long term storage, like read only memory (ROM), optical or magnetic disks, solid state drives, compactdisc read only memory (CD-ROM), for example. The computer readable media may also be any other volatile or non-volatile storage systems. A computer readable medium may be considered a computer readable storage medium, for example, or a tangible storage device.

[0138] Moreover, a step or block that represents one or more information transmissions may correspond to information transmissions between software and / or hardware modules in the same physical device. However, other information transmissions may be between software modules and / or hardware modules in different physical devices.

[0139] The particular arrangements shown in the figures should not be viewed as limiting. It should be understood that other embodiments can include more or less of each element shown in a given figure. Further, some of the illustrated elements can be combined or omitted. Yet further, an example embodiment can include elements that are not illustrated in the figures.

[0140] While various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for purpose of illustration and are not intended to be limiting, with the true scope being indicated by the following claims.

Claims

CLAIMSWhat is claimed is:

1. A method comprising: receiving, by way of a first user interface of a first endpoint device, a local interaction with a software application executed by the first endpoint device; determining a first state of the software application based on the local interaction; transmitting, by the first endpoint device and to a second endpoint device that is communicatively connected to the first endpoint device, a representation of the first state, wherein reception of the representation of the first state causes the second endpoint device to display, using a second user interface of the second endpoint device, the representation of the first state; receiving, from the second endpoint device, a remote interaction with the representation of the first state of the software application; determining a second state of the software application based on the remote interaction; and displaying, using the first user interface, a representation of the second state of the software application.

2. The method of claim 1, further comprising: receiving, by way of the first user interface, a second local interaction with tire representation of the second state of the software application; determining a third state of the software application based on the second local interaction; and displaying, using the first user interface, a first representation of the third state of the software application.

3. The method of claim 2, further comprising: transmitting, by the first endpoint device and to the second endpoint device, a second representation of the third state, wherein reception of the second representation of the third state causes the second endpoint device to display, using the second user interface, the second representation of the third state; receiving, from the second endpoint device, a second remote interaction with the second representation of the third state of the software application;determining a fourth state of the software application based on the second remote interaction; and displaying, using the first user interface, a representation of the fourth state.

4. The method of claim 1, further comprising: transmitting, by the first endpoint device and to the second endpoint device, a second representation of the second state, wherein reception of the second representation of the second state causes the second endpoint device to display, using the second user interface, the second representation of the second state; receiving, from the second endpoint device, a second remote interaction with the second representation of the second state of the software application; determining a third state of the software application based on the second remote interaction; and displaying, using the first user interface, a representation of the third state.

5. The method of claim 1, further comprising: transmitting, by the first endpoint device and to a third endpoint device that is communicatively connected to the first endpoint device, a second representation of the second state, wherein reception of the second representation of the second state causes the third endpoint device to display, using a third user interface of the third endpoint device, the second representation of the second state; receiving, from the third endpoint device, a second remote interaction with the second representation of the second state of the software application; determining a third state of the software application based on the second remote interaction; and displaying, using the first user interface, a representation of the third state.

6. The method of any of claims 1-5, wherein the remote interaction is obtained by die second endpoint device using the second user interface while the second user interface displays the representation of the first state.

7. The method of any of claims 1 -6, wherein the representation of the first state comprises a graphical representation of the first state rendered by the first endpoint device on behalf of the second endpoint device.

8. The method of any of claims 1-7, wherein determining the second state comprises: providing the remote interaction as an input to the software application; and processing die remote interaction by the software application to cause the software application to transition from the first state to the second state.

9. The method of any of claims 1-8, further comprising: displaying, using the first user interface, a second representation of the first state of the software application.

10. The method of any of claims 1-9, further comprising: obtaining, by the first endpoint device and from the second endpoint device, one or more physical properties of the second endpoint device; and rendering the representation of the first state based on the one or more physical properties.

11. The method of any of claims 1-10, further comprising: detecting, by the first endpoint device, one or more other endpoint devices that are available for sharing of the software application, wherein the one or more other endpoint devices comprise the second endpoint device; obtaining, by way of the first user interface, a selection of the second endpoint device; and based on obtaining the selection, initiating sharing of the software application with the second endpoint device.

12. The method of any of claims 1-11, wherein the software application is not installed on the second endpoint device, and wherein the second endpoint device does not execute the software application.

13. The method of any of claims 1-12, wherein display of the second user interface is facilitated by a thin client application installed on the second endpoint device and configured to (i) display graphical representations generated by the first endpoint device and representing states of the software application and (ii) obtain, from the second endpoint device and on behalf of the software application, remote interactions with the graphical representations, and whereintransmission of the representation of the first state is facilitated by a virtual device application executed by the first endpoint device and configured to generate graphical representations of states of the software application for display by the second endpoint device.

14. The method of any of claims 1-13, wherein the second endpoint device is communicatively connected to the first endpoint device by way of a direct local connection.

15. The method of any of claims 1-14, wherein the software application comprises one or more of a multiplayer game, a map application, a video player, or a document editor.

16. The method of any of claims 1-15, wherein the local interaction is obtained using a first sensor type provided on the first endpoint device, wherein the remote interaction is obtained using a second sensor type provided on the second endpoint device, and wherein the first sensor type is different from the second sensor type.

17. The method of any of claims 1-16, wherein the representation of the first state comprises audio data, and wherein reception of the representation of the first state causes the second endpoint device to generate, using a speaker associated with the second endpoint device, an audible representation of the audio data.

18. The method of any of claims 1-17, wherein states of the software application resulting from interactions between the first endpoint device and the second endpoint device are each represented using a software process executed by the first endpoint device.

19. A system comprising: a processor; and a non-transitory computer-readable medium having stored thereon instructions that, when executed by the processor, cause the processor to perform the method of any of claims 1-18.

20. A non-transitory computer-readable medium having stored thereon instructions that, when executed by a computing device, cause the computing device to perform the method of any of claims 1-18.

Citation Information

Patent Citations

  • Electronic device for sharing application and control method thereof

    EP2869188A1

  • Tab based browser content sharing

    US20160147400A1

  • Application sharing between endpoint devices

    WO2023069693A1