The current trend in computing is away from mainframe systems toward cloud computing. Cloud computing is Internet-based computing, whereby shared resources such as software and other information are provided to a variety of computing devices on-demand via the Internet. It represents a new consumption and delivery model for IT services where resources are available to all network-capable devices, as opposed to older network models where resources were stored locally across the devices. The move toward cloud computing opens up a new potential for mobile and other networked devices to work in conjunction with each other to provide greater interaction and a much richer experience with respect to third party and a user's own resources.
One advantage of cloud computing is that it offers enhanced connectivity between a user's various devices, such as for example smart phones, Internet-connected television or set-top boxes, laptops, netbooks, and desktop computers. Despite this enhanced connectivity, where a user wishes to transfer data such as a picture, document or a selection of text from one device to another, the user is still forced to perform a series of complex tasks to achieve this data transfer. These tasks may be time consuming and non-intuitive to perform.
The technology, briefly described, comprises a system and method for quickly and easily making data from one computing device available to the other devices in a user's collection of computing devices. In one example, the system includes a client-side clipboard application on each device in a user's collection of computing devices. The client-side clipboard application may be a software module running as part of a computing device's operating system, or as an application in communication with the operating system. The system further includes a cloud clipboard service resident on a server to which each of the user's computing devices are operatively connected.
For each computing device in a user's collection of computing devices, the client-side clipboard application monitors a local clipboard buffer to which data may be copied by a user performing a known cut or copy operation on data in a device-level application. The data which may be copied in the present system may be any data which can be copied to a local clipboard buffer in any of a wide variety of applications, including text, graphics, files, directories, and links to such data. Upon a change in the data in the local clipboard buffer, the client-side clipboard application retrieves that data and pushes it to the cloud clipboard service to which the computing device is connected.
Thereafter, the data in the cloud clipboard service is transmitted to the client-side clipboard applications in the other computing devices in a user's collection. Upon receipt, the client-side clipboard application takes the received data and stores it in the associated local clipboard buffer, replacing data that may have been there previously. Thereafter, a user may perform a known paste operation from any of his networked computing devices to paste the data received from the cloud clipboard service into one or more device-level applications.
In this way, data from one computing device may be easily propagated to other devices in a user's collection of devices. In a further embodiment, a similar system may be used to propagate data from one user's device to the devices of others in a friend network where permissions have been properly set.
In one example, the present technology relates to a method of propagating data between multiple computing devices, comprising: a) monitoring a local clipboard buffer of a first computing device of the multiple computing devices for a change in data stored in the local clipboard buffer; b) transmitting data from the local clipboard buffer of the first computing device to a storage location on a remote server to which the first computing device is operatively coupled upon detecting a change in the data stored in the local clipboard buffer of the first device; and c) propagating the data stored in the storage location in said step b) to a local clipboard buffer of a second computing device operatively coupled to the remote server.
In another example, the present technology relates to a system for propagating data between computing devices. The system includes: a first computing device including: a first application including data, a first local clipboard buffer capable of storing data copied to the first local clipboard buffer from the first application, and a first client clipboard application for synchronizing with the first local clipboard buffer and forwarding the data in the first local clipboard buffer to a remote location; a service at the remote location, the service including: a data store for storing the data from the first client clipboard application; and a second computing device operative coupled to the service at the remote location, the second computing device including: a second client clipboard application for synchronizing with the data store in the service at the remote location, a second local clipboard buffer, the second client clipboard application forwarding data received from the data store to the second local clipboard buffer, data in the second local clipboard buffer being replaced with data received from the second client clipboard application, and a second application, data from the second local clipboard buffer capable of being pasted into the application.
In a further example, the present technology relates to a computer-readable storage medium for programming a processor to perform a method of propagating data between a collection of computing devices of a single user. The performed method comprising: a) synchronizing a local clipboard buffer of a first computing device of a collection of computing devices of the single user to a first client clipboard application on the first computing device; b) transmitting data from the local clipboard buffer of the first computing device to a storage location on a remote server to which the first computing device is operatively coupled upon detecting a change in the data stored in the local clipboard buffer of the first device; and c) propagating the data stored in the storage location in said step b) to local clipboard buffers of a plurality of computing devices in the user's collection of computing devices that are operatively coupled to the remote server.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Embodiments of the present technology will now be described with reference to
A user may perform cut, copy and paste operations which are known for copying data to a local clipboard buffer and retrieving data from a local clipboard buffer. However, in accordance with the present system, any cut or copied data may also be automatically uploaded to the cloud clipboard service, whereupon it is automatically propagated to a user's other networked devices for use on those devices. In embodiments, data from one user uploaded to the cloud clipboard service may also be propagated to the devices of one or more other users. These principals and others of the present technology are explained below in greater detail.
Each of the various types of computing devices may store their data locally and “in the cloud,” for example on a storage location 130 in service 120 as explained below. The computing devices 112, 114, 116 shown in
The service 120 may for example be a large scale Internet service provider such as for example MSN® services or Xbox LIVE® gaming services, though it need not be in further embodiments. Service 120 may have one or more servers including one implementing a cloud-based clipboard service 126 as explained below. Service 120 may include other servers including for example a web server, a game server supporting gaming applications, a media server for organizing and distributing selected media, and/or an ftp server supporting file transfer and/or other types of servers. Other servers are contemplated.
In embodiments, each of the computing devices illustrated in
The service 120 also provides a collection of services which applications running on computing devices 112, 114, 116 may invoke and utilize. For example, computing devices 112, 114, 116 may invoke user login service 132, which is used to authenticate the user 110 seeking access to his or her secure resources from service 120. A user 110 may authenticate him or herself to the service 120 by a variety of authentication protocols, including for example with an ID such as a username and a password.
Where authentication is performed by the service 120, the ID and password may be stored in user account records 134 within a data structure 130. Data structure 130 may further include a cloud clipboard storage location 140 for storing a wide variety of clipboard data as explained below. While the cloud clipboard service 126, data structure 130 and login service 132 are shown as part of a single service 120, some or all of these components may be distributed across different services in further embodiments.
Referring now to the block diagram of
Device 1 includes a local clipboard buffer 150 receiving data from and sending data to one or more device-level applications 152 on device 1. Local clipboard buffer 150 may be a block of memory in the random access memory (RAM) of device 1. Data may be written to local clipboard buffer 150 via different user interface commands commonly referred to as cut and/or copy operations. Different user interfaces will have different forms of these commands.
In one common example, operating systems working with a keyboard could recognize a keyboard stroke shortcut of “Ctrl-x” to cut selected data objects, whereupon they are copied to the local clipboard buffer 150, and “Ctrl-c” to copy selected data objects to the local clipboard buffer 150. Such systems typically also recognize a shortcut keystroke of “Ctrl-v” to paste objects stored in local clipboard buffer 150 to a device-level application 152.
Each device may further include a client clipboard application 156 which may be a software module or a combination of hardware and software running on device 1. The client clipboard application may be part of the device's operating system, or may be an application in communication with the operating system. Client clipboard application 156 may monitor and synchronize with the local clipboard buffer 150 so that, upon a change in the data stored in local clipboard buffer 150, the client clipboard application automatically receives this data. The client clipboard application 156 may then automatically forward the received data to cloud clipboard service 126.
Client clipboard application 156 may monitor local clipboard buffer 150 continuously, or periodically. Alternatively, the local clipboard buffer 150 may be modified to push data from the buffer to client clipboard application 156 upon a change in the data in the local clipboard buffer 150. The type of data which can be forwarded by the client clipboard application 156 to the cloud clipboard service 126 may be any type of data which can be stored in a local clipboard buffer 150 in any application 152 running on device 1. This data may for example include text, graphics, one or more files, one or more file directories, and links to such data. Different applications 152 may have different types of data which it can operate with and store in local clipboard buffer 150. Client clipboard application 156 may receive any type of data from buffer 150 and forward it to cloud clipboard service 126.
Each user device may further include a configuration utility 158 allowing a user to configure aspects of the cloud-based clipboard service. The utility 158 may present a user interface through which a user can configure a desired implementation of the present system. The utility 158 may for example allow a user to define each of his or her devices which are to be included in the cloud-based clipboard service, as well as to provide logon credentials authenticating the user to his or her collection of computing devices. In this respect, the configuration utility may interact with the user logon service 132 described above. User login information may be cached so that a user need not enter login credentials each time a user uses the cloud-based clipboard service.
The user may set a variety of other user preferences via the configuration utility 158. In embodiments, the user may choose which types of data should be shared, which data connection to prioritize (e.g., on a phone, the user might prefer to use a wi-fi over a data-plan connection if both are available), which applications are excluded from the shared clipboard, and possibly configure conversion rules for data formats (for example, all images should be converted to jpeg format). Other configurations are possible via configuration utility 158.
Each of devices 1, 2, 3, 4, etc., may include a local clipboard buffer 150, applications 152, client clipboard application 156 and utility application 158 as described above.
An operation of the system shown in
In step 210, the client clipboard application 156 monitors the local clipboard buffer 150 for a cut or copy operation that causes data to be copied to the local clipboard buffer 150. Upon detecting new data in a local clipboard buffer 150, the client clipboard application 156 uploads the new data to cloud service 126 in step 214. In step 214, the client clipboard application 156 may additionally upload metadata associated with the data to be propagated. In particular, the metadata may include the type of device that generated the data, the application on the device which generated the data, the type of data (text, graphics, video, html) and a time stamp at which the data was copied to the local clipboard buffer 150 on the device. All this data and metadata may be sent to the cloud clipboard service 126 in step 214.
In step 220, the cloud clipboard service 126 may format the data to maximize its usability across different devices and different applications. Formatting step 220 may in examples include the step of stripping out formatting of the data uploaded in step 214. The data may be formatted per user preferences set forth via the configuration utility 158, or a default set of rules directed at optimizing the possibility that the stored data may be viewed on a maximum number of devices and in a maximum number of applications on those devices. In embodiments, multiple versions of the data may be generated in step 220, with each version having a different format to again maximize the usability of the data across different devices and applications. After formatting in step 220, the data may be stored in cloud clipboard storage 140 in step 224.
As in conventional local clipboard buffers, when new data is stored in cloud clipboard storage 140 in step 224, any data that was previously stored may be replaced. In embodiments, it is conceivable that replaced data may be maintained and that the user be provided with the ability to view data that was stored in cloud clipboard storage 140 at different times.
Device 2 (and/or device 3, 4, etc.) monitors the cloud clipboard service 126 for changes in the data stored in the clipboard in step 230. The devices in the user's collection 102 may monitor the cloud clipboard service 126 continuously or periodically for changes in the data stored in the cloud clipboard storage 140. In an alternative embodiment, instead of devices checking the cloud clipboard service 126 for changes in stored data and pulling data down, the cloud clipboard service 126 may automatically push new data down to the connected computing devices in the user's collection 102 upon a change of data in cloud clipboard storage 140.
Whether initiated by the client-side clipboard application or server-side clipboard service, when new data is to be propagated to other devices in a user's collection 102, the cloud clipboard service 126 first checks if a given device is permitted and is configured to receive data from the cloud clipboard service in step 228. If a device is not configured to receive data from the cloud clipboard service 126 then nothing is sent (step 234).
On the other hand, if a given device in a user's collection 102 is approved and configured to receive data from the cloud clipboard service in step 228, that data is downloaded to the device in step 232. Upon receipt, the client clipboard application 156 on the receiving device replaces any existing data in a local clipboard buffer 150 with the data received from the cloud clipboard service 126 in step 236. Thereafter, the received data may be pasted into any of a variety of device level applications 152 using a conventional paste operation.
Using the above-described system, data on one device may be automatically propagated to all the devices in a user's collection of computing devices having a continuous or intermittent connection with service 120. As noted above, data from any of the devices in a user's collection of computing devices may be propagated as described above. Thus, device 1 of
In the embodiments described above, a user is able to propagate data from one device to one or more other devices in the user's own collection of computing devices. In a further embodiment of the present system, a user may propagate data from one of his or her computing devices to the computing devices of one or more other users. Such an embodiment is shown in the block diagram of
In step 260, the client clipboard application 156 of a device of user 1 may look for a local cut or copy operation as described above. If one is found, the system checks in step 264 if it is a special “copy to” operation. In particular, a client clipboard application 156 may allow a user to perform a special cut or copy operation where the user is given the option not only to copy data but also to specify to whom the data is to be sent. The recipient may be a single user, multiple users, or a defined group of users. The identities of the users and user groups may be made by the users and stored in account records 134 in data structure 130 of service 120.
In step 264, the client clipboard application 156 of user 1 senses whether user 1 is performing a special copy operation. If not, the client clipboard application performs a data propagation across his or her own devices only, as described above with respect to the flowchart of
In step 278, the client clipboard application 156 on the computing device of user x may check for updates in the cloud clipboard storage 140. Upon an update, the cloud clipboard service 126 may check in a step 280 whether user x device is specified and has permission to receive data from user 1 via the cloud clipboard service 126. If not, data is not sent to the user x device (step 288).
On the other hand, if the permissions from user 1 and user x are such that user x may receive data from user 1 via the cloud clipboard service 126, the cloud clipboard service 126 writes the data to the cloud clipboard storage 140 for user x in step 282 and downloads the data in step 286 to the client clipboard application 156 in user x's collection of computing devices. In step 292, the client clipboard application 156 on user x's computing devices updates the local clipboard buffer 150 on each such device. Thereafter, user x may paste the data from local clipboard buffer 150 into an application from any device in user x's collection of computing devices.
As noted above, cut, copy and paste operations are well-known when performed using a keyboard and/or mouse user interactive devices.
The system 300 further includes a capture device 320 for capturing image and audio data relating to one or more users and/or objects sensed by the capture device. The capture device 320 may include a three-dimensional depth camera and a video camera such as an RGB camera to capture depth data and color and texture data related to a captured schene. In embodiments, the capture device 320 may be used to capture information relating to movements, gestures and speech of one or more users, which information is received by the computing environment and used to render, interact with and/or control aspects of a gaming or other application.
Embodiments of the target recognition, analysis and tracking system 300 may be connected to an audio/visual device 316 having a display 314. The device 316 may for example be a television, a monitor, a high-definition television (HDTV), or the like that may provide game or application visuals and/or audio to a user. For example, the computing environment 312 may include a video adapter such as a graphics card and/or an audio adapter such as a sound card that may provide audio/visual signals associated with the game or other application. The audio/visual device 316 may receive the audio/visual signals from the computing environment 312 and may then output the game or application visuals and/or audio associated with the audio/visual signals to the user 318. According to one embodiment, the audio/visual device 316 may be connected to the computing environment 312 via, for example, an S-Video cable, a coaxial cable, an HDMI cable, a DVI cable, a VGA cable, a component video cable, or the like.
The system 300 may be used to interpret user 318 movements as operating system and/or application controls that are outside the realm of games or the specific application running on computing environment 312. As one example, a user may scroll through and control interaction with a variety of menu options presented on the display 314. Virtually any controllable aspect of an operating system and/or application may be controlled by the movements of the user 318. For example, in accordance with the present technology, the user may perform movements that copy data objects to a local data buffer 150 (not shown in
In particular,
Thereafter, the user 318 may add a selected graphical object 320 to the local clipboard buffer 150 within computing system 312. The user may accomplish this by moving his hand so as to move one or more of the data objects 320 on the screen over to graphical clipboard 322. This display may for example show the selected object moving toward the graphical clipboard 322 with a variety of visual effects. This motion may add the selected data object 320 to local clipboard buffer 150 on system 312. A client clipboard application 156 on system 312 may then upload the data object to cloud clipboard service 126 as explained above.
Similarly, data from another device from user 318 (or another user) may be downloaded to system 312, whereupon the client clipboard application 156 within system 312 moves that data to the local clipboard buffer 150. A user may then paste that data, for example onto display 314, by “grabbing” the data from clipboard 322 and, upon further movement of his hand, place that data somewhere on display 314. It is understood that the above described system is by way of example only, and a wide variety of other NUI interface operations may be used to copy data from system 300 up to cloud clipboard service 126, and to download data from cloud clipboard service 126 to the system 300. Where this data is graphical in nature it may then be pasted onto display 314. Alternatively, for example where it is audio, it may be played over speakers associated with the system 300.
Suitable examples of a system 300 and components thereof are found in the following co-pending patent applications, all of which are hereby specifically incorporated by reference: U.S. patent application Ser. No. 12/475,094, entitled “Environment and/or Target Segmentation,” filed May 29, 2009; U.S. patent application Ser. No. 12/511,850, entitled “Auto Generating a Visual Representation,” filed Jul. 29, 2009; U.S. patent application Ser. No. 12/474,655, entitled “Gesture Tool,” filed May 29, 2009; U.S. patent application Ser. No. 12/603,437, entitled “Pose Tracking Pipeline,” filed Oct. 21, 2009; U.S. patent application Ser. No. 12/475,308, entitled “Device for Identifying and Tracking Multiple Humans Over Time,” filed May 29, 2009; U.S. patent application Ser. No. 12/575,388, entitled “Human Tracking System,” filed Oct. 7, 2009; U.S. patent application Ser. No. 12/422,661, entitled “Gesture Recognizer System Architecture,” filed Apr. 13, 2009; U.S. patent application Ser. No. 12/391,150, entitled “Standard Gestures,” filed Feb. 23, 2009; and U.S. patent application Ser. No. 12/474,655, entitled “Gesture Tool,” filed May 29, 2009.
The inventive system is operational with numerous other general purpose or special purpose computing systems, environments or configurations. Examples of well known computing systems, environments and/or configurations that may be suitable for use with the present system include, but are not limited to, personal computers, server computers, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, laptop and palm computers, hand held devices, distributed computing environments that include any of the above systems or devices, and the like.
With reference to
Computer 510 may include a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 510 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, random access memory (RAM), read only memory (ROM), EEPROM, flash memory or other memory technology, CD-ROMs, digital versatile discs (DVDs) or other optical disc storage, magnetic cassettes, magnetic tapes, magnetic disc storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 510. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
The system memory 530 includes computer storage media in the form of volatile and/or nonvolatile memory such as ROM 531 and RAM 532. A basic input/output system (BIOS) 533, containing the basic routines that help to transfer information between elements within computer 510, such as during start-up, is typically stored in ROM 531. RAM 532 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 520. By way of example, and not limitation,
The computer 510 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, DVDs, digital video tapes, solid state RAM, solid state ROM, and the like. The hard disc drive 541 is typically connected to the system bus 521 through a non-removable memory interface such as interface 540, magnetic disc drive 551 and optical media reading device 555 are typically connected to the system bus 521 by a removable memory interface, such as interface 550.
The drives and their associated computer storage media discussed above and illustrated in
The computer 510 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 580. The remote computer 580 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 510, although only a memory storage device 581 has been illustrated in
When used in a LAN networking environment, the computer 510 is connected to the LAN 571 through a network interface or adapter 570. When used in a WAN networking environment, the computer 510 typically includes a modem 572 or other means for establishing communication over the WAN 573, such as the Internet. The modem 572, which may be internal or external, may be connected to the system bus 521 via the user input interface 560, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 510, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
CPU 700, memory controller 702, and various memory devices are interconnected via one or more buses (not shown). The details of the bus that is used in this implementation are not particularly relevant to understanding the subject matter of interest being discussed herein. However, it will be understood that such a bus might include one or more of serial and parallel buses, a memory bus, a peripheral bus, and a processor or local bus, using any of a variety of bus architectures. By way of example, such architectures can include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnects (PCI) bus also known as a Mezzanine bus.
In one implementation, CPU 700, memory controller 702, ROM 704, and RAM 706 are integrated onto a common module 714. In this implementation, ROM 704 is configured as a flash ROM that is connected to memory controller 702 via a PCI bus and a ROM bus (neither of which are shown). RAM 706 is configured as multiple Double Data Rate Synchronous Dynamic RAM (DDR SDRAM) modules that are independently controlled by memory controller 702 via separate buses (not shown). Hard disk drive 708 and portable media drive 606 are shown connected to the memory controller 702 via the PCI bus and an AT Attachment (ATA) bus 716. However, in other implementations, dedicated data bus structures of different types can also be applied in the alternative.
A three-dimensional graphics processing unit 720 and a video encoder 722 form a video processing pipeline for high speed and high resolution (e.g., High Definition) graphics processing. Data are carried from graphics processing unit 720 to video encoder 722 via a digital video bus (not shown). An audio processing unit 724 and an audio codec (coder/decoder) 726 form a corresponding audio processing pipeline for multi-channel audio processing of various digital audio formats. Audio data are carried between audio processing unit 724 and audio codec 726 via a communication link (not shown). The video and audio processing pipelines output data to an A/V (audio/video) port 728 for transmission to a television or other display. In the illustrated implementation, video and audio processing components 720-728 are mounted on module 714.
In the implementation depicted in
MUs 640(1) and 640(2) are illustrated as being connectable to MU ports “A” 630(1) and “B” 630(2) respectively. Additional MUs (e.g., MUs 640(3)-640(6)) are illustrated as being connectable to controllers 604(1) and 604(3), i.e., two MUs for each controller. Controllers 604(2) and 604(4) can also be configured to receive MUs (not shown). Each MU 640 offers additional storage on which games, game parameters, and other data may be stored. In some implementations, the other data can include any of a digital game component, an executable gaming application, an instruction set for expanding a gaming application, and a media file. When inserted into console 602 or a controller, MU 640 can be accessed by memory controller 702.
A system power supply module 750 provides power to the components of gaming and media system 600. A fan 752 cools the circuitry within console 602.
An application 760 comprising machine instructions is stored on hard disk drive 708. When console 602 is powered on, various portions of application 760 are loaded into RAM 706, and/or caches 710 and 712, for execution on CPU 700, wherein application 760 is one such example. Various applications can be stored on hard disk drive 708 for execution on CPU 700.
Gaming and media system 600 may be operated as a standalone system by simply connecting the system to monitor 88 (
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.