This disclosure relates generally to interactions with shared content in a virtual meeting and, more particularly, to enabling a meeting participant to interact with content shared by a presenter during a virtual meeting.
In recent years, there has been a significant increase in the use of virtual meeting applications to conduct meetings. This may be because more and more people work from home or collaborate with colleagues or other people remotely from different locations. The use of these applications enables participant to hear and/or view each other and as such freely exchange ideas and information without the need to be in the same room, thus greatly reducing the cost and time associated with conducting in-person meetings.
As part of conducting a meeting, one or more participants may desire to present information or documents to the other participants in the group. During in-person meetings, this may be done by handing out print-outs to each participant or presenting a document via an electronic device that displays the content on a screen in the room. In a virtual meeting, this may occur by enabling one or more participants to share content with the other participants. This is generally done by displaying the shared content on each participants' display screen. In such cases, control of the shared content remains with the presenter who can move through the document to, for example, show various portions. This limits the ability of the participants to review the shared content at their own pace and based on their individual needs.
Hence, there is a need for an improved method and system for enabling user interactions with presented content during a virtual meeting.
In one general aspect, the instant application describes a device having a processor and a memory in communication with the processor where the memory stores executable instructions that, when executed by the processor, cause the device to perform multiple functions. The function may include receiving a request from a presenter client device to initiate presentation of the document during the virtual meeting, accessing a copy of the document, enabling display of the document at a meeting participant client device, enabling the meeting participant to interact with the document via the participant client device by moving to a first portion of the document different from a second portion of the document being currently presented by the presenter client device, receiving a request via the participant client device to synchronize with the presentation being presented by the presenter client device, providing a synchronization signal for synchronizing with the presentation, and enabling display of the second portion of the document at the participant client device.
In yet another general aspect, the instant application describes a method for enabling interactions with a document being presented during a virtual meeting where the method includes the steps of receiving a request from a presenter client device to initiate presentation of the document during the virtual meeting, accessing a copy of the document, enabling display of the document at a participant client device, enabling the participant to interact with the document via the participant client device by moving to a first portion of the document different from a second portion of the document being currently presented by the presenter client device, receiving a request via the participant client device to synchronize with the presentation being presented by the presenter client device, providing a synchronization signal for synchronizing with the presentation, and enabling display of the second portion of the document at the participant client device.
In a further general aspect, the instant application describes a non-transitory computer readable medium on which are stored instructions that when executed cause a programmable device to receive a request from a presenter client device to initiate presentation of the document during the virtual meeting, access a copy of the document, enable display of the document at a participant client device, enable the participant to interact with the document via the participant client device by moving to a first portion of the document different from a second portion of the document being currently presented by the presenter client device, receive a request via the participant client device to synchronize with the presentation being presented by the presenter client device, provide a synchronization signal for synchronizing with the presentation, and enable display of the second portion of the document at the participant client device.
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 to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure.
The drawing figures depict one or more implementations in accord with the present teachings, by way of example only, not by way of limitation. In the figures, like reference numerals refer to the same or similar elements. Furthermore, it should be understood that the drawings are not necessarily to scale.
In the following detailed description, numerous specific details are set forth by way of examples in order to provide a thorough understanding of the relevant teachings. It will be apparent to persons of ordinary skill, upon reading this description, that various aspects can be practiced without such details. In other instances, well known methods, procedures, components, and/or circuitry have been described at a relatively high-level, without detail, in order to avoid unnecessarily obscuring aspects of the present teachings.
One limitation of existing virtual meeting software applications is that participants do not have an ability to interact with a document that is being presented by a presenter during the meeting. In general, when a meeting attendee decides to present some information to the other participants during a virtual meeting, a view of his/her screen is shared with the other participants. The presenter may then have sole control over how the information is presented. For example, if the presenter chooses to present information within a Microsoft Word® document, he/she may open the document and move through the pages. The other participant or participants may have the ability to view the shared screen as the presenter moves through the document. However, they may not be able to interact with the document individually. This limits the ability of the participants to make use of the information at their own pace and based on their individual needs. For example, a participant desiring to move back to a previous page to more carefully review a portion will not have the opportunity to do so.
Currently, the only way individual participants can interact with a document being presented is if the presenter chooses to share the document with them directly. This may be done via the virtual meeting application by, for example, enabling each participant to download the document to their electronic device or by using a separate method of sharing the document, such as email. In either case, the presenter would need to agree to share the document with the other participants, which may not always be the case. For example, the presenter may not desire to allow the participants to have a copy of the document for confidential or privacy reasons, or because the document is a work-in-progress and is not yet available for release. Moreover, even if the presenter agrees to share the document, making the request to the presenter, taking steps to share it and then to download it may take valuable time away from the meeting and cause distraction. Thus, there is a need in the art for a method and system of enabling meeting participants to interact with documents asynchronously during a virtual meeting without downloading it to their computing device.
To address these issues and more, in an example, this description provides technology implemented for an improved method and system of enabling a meeting participant to interact asynchronously with content shared by a presenter during a virtual meeting. To improve the current methods of presenting information in a meeting, the improved system and method may share a copy of a document being presented during a virtual meeting, with each participant's virtual meeting application or may provide direct access to it via an online virtual meeting service. To achieve this, a copy of the document may be sent from the presenter's device to a server, which may in turn, make the copy available to each participant. This may be done by storing a copy in a data store, encrypting the document and sending a copy to each participant's device. Alternatively, it may be achieved by providing access to the document via an online virtual meeting service. Having direct limited access to the document may enable each participant to view and interact with the document asynchronously during the meeting, while preventing the user to have access to the document outside of the meeting. To further improve the participants' experience during the meeting, the server may continue receiving screen data from the presenter as the presenter interacts with the document (e.g., moves to the next page or makes changes to the document) to enable synching each participant's view with the presenter's view when needed. This may be done, for example, by the server forwarding the latest screen data or the data indicating differences between the last time a participant was viewing the presenter's screen and the current view to the participant's devices such that when a participant finishes interacting with the document, they may return back to the presenter's screen (e.g., the location of the document the presenter is in at the moment).
Furthermore, the server may allow asynchronous operations by various participants on the document. For example, participants may have limited or full editing capabilities (e.g., highlight or underline a portion or insert a comment in the document) via the virtual meeting application, in which case, an updated copy of the document may be sent to the server. In such an event, the server may transmit the updated portion to the other participants in the meeting to replace the previous version. This may enable a participant to bring attention to a particular portion or a ask a question without interrupting the presenter. As a result, the solution provides an improved user experience for participants of a virtual meeting in an efficient and secure manner.
As will be understood by persons of skill in the art upon reading this disclosure, benefits and advantages provided by such implementations can include, but are not limited to, a solution to the technical problems of participants not being able to interact with a document that is being presented during a virtual meeting. Technical solutions and implementations provided here optimize and improve the process of presenting a document during a virtual meeting. The benefits provided by these solutions include improving user experience in a timely and efficient manner.
The system 100 may also include a presenter client device 114 and multiple participant client devices 116, 118 and 120, each of which are connected via a network 130 to the server 110. Each of the client devices 112, 116, 118 and 120 may include or have access to a virtual meeting application which enables users of each device to participate in virtual meetings. It should be noted, that although client device 114 is labeled as a presenter device and client devices 116, 118 and 120 are labeled as participant devices, each of the client devices 112, 116, 118 and 120 may become a presenter during a virtual meeting. The presenter client device may be the host of the virtual meeting or any of the other participant devices.
The client devices 112, 116, 118 and 120 may be personal or handheld computing devices having or being connected to both input and output elements. For example, the client devices 112, 116, 118 and 120 may be one of: a mobile telephone; a smart phone; a tablet; a phablet; a smart watch; a wearable computer; a personal computer; a desktop computer; a laptop computer; a gaming device/computer; a television; and the like. This list is for example purposes only and should not be considered as limiting. The network 110 may be a wired or wireless network(s) or a combination of wired and wireless networks that connect one or more elements of the system 100.
The UI screen 200 may also include a start presentation button 230 which may enable the user to begin sharing a portion of his/her screen, a document to which the presenter has access to, or any other sharable information. In one implementation, upon pressing the presentation button 230, a menu may be presented to the user to enable selection of portion(s) of the screen the user wishes to share with the other participants. For example, the user may have the option of selecting to share one or more portions of any of the user's screens (e.g., when the user has access to multiple display devices and/or virtual display areas or virtual desktops), or a file (e.g. a document stored on the user's device or in a cloud storage device to which the user has access from the user's device). The user may also have the ability to choose to share only portions of the screen displaying a particular application, such as Microsoft Word®, Microsoft PowerPoint®, or any other Microsoft Office® application. The selection may be made for example via a pop-up menu.
When the user chooses to share one or more portions of the screen, screen data of the user's screen may be transmitted to the server which may in turn transfer the data to the other participants. In this instant, the user may be able to open an application, open a document, play a video or perform any other operations that the user can normally perform on the user's device and transmission of screen data may enable the other meeting attendees to view the user's operations in real-time. Screen data may include image data, video data or any other type of data that enables capture, transmission and displaying of a copy of a user's screen. This may be achieved by utilizing a screen capture mechanism to capture and provide the screen data by any available means. For example, the screen capture mechanism may obtain an image of the screen or a representation of the screen in any type of form. A screen data processing mechanism may then be used to process (e.g. convert, translate, etc.) the representation into screen data that is suitable for transmission. In one implementation, an application programming interface (API) (e.g. an operating system API) may be used to capture, process and/or provide the screen data. The screen data may represent the screen as tiles, thus providing a tile representation of the screen. In one implementation, the screen data may provide a pixel or bit-image representation of the screen. Any other suitable screen data may be captured and utilized.
When the user chooses to share a document, a pop-up menu may enable the user to browse to a location (e.g., on the user's device) at which the document is stored. By clicking on the document, the presenter may be able to open the document in the virtual meeting application in a pane such as pane 250 of UI screen 200. Consequently, the presenter may interact with the document (e.g., scroll through different portions of the document, highlight a portion, make edits to the document, add a new portion, and the like) and the other participants may be able to view the interactions in real-time. For example, the user may use the curser 250 to move to different portions of the document. As the user moves to the different portion, the participants' display will also move to the different portion. This may be done by a detecting mechanism utilized to detect changes to the shared screen. The changes may include any user interface elements being added, removed, maximized, minimized and/or changing positions. For example, the detecting mechanism may detect if a new user interface element is being displayed. This may be done, by for example detecting if there is a change in the pixels in the image data. Once changes are detected, updated screen data relating to the change may be captured, processed and transmitted to the server which may in turn transfer those to the other participants such that the change can be replicated on the participant's screens.
This may allow the participants to see any changes to the presenter's screen in real-time, but it does not provide the capability for them to interact with the document. For example, if the presenter moves to a different part of the document, there is no way for the participants to move back to the previous portion other than asking the presenter to do so or requesting that the presenter sends them the document. This may cause distraction, disrupt the flow of the meeting, waste time and create an uncomfortable environment if the presenter is unable or unwilling to send a copy of the document to the requester. Technical solutions provided here address these issues by providing the participants restricted access to a presented document while the virtual meeting is taking place.
In addition to buttons 210, 220, and 230, the UI screen 200 may also include a disconnect button 240. The disconnect button 240 may be used during the meeting to end the user's participation in the meeting. This may occur at the end of the meeting or while the meeting is still ongoing. For example, if the user needs to leave early.
It should be noted that various other buttons and options may be available to users in different virtual meeting applications. However, currently available virtual meeting applications do not provide an option for a participant to interact with a document being presented without first downloading the document.
To address these issues and more, an improved example UI screen, such as the screen 300A depicted in
In one implementation, this may be done by a curser 385 which the participant may move as desired using input/output features available to their device. Thus, in addition to the curser 380 which displays the curser used by the presenter to move through or make changes to the document, each participant may make use of their own curser to move to different portions of the document. This may be achieved by using a layered windows technique to create and manage separate user interface elements within the virtual meeting application. For example, data relating to the presenter's curser position and activities with respect to the document may be transmitted by the presenter's device to the server which may in turn make use of or transfer the data to the participant's device, as appropriate. This data may be used to add a layer on top of the document in the participant's screen to show the presenter's curser movement and activities.
In one implementation, when the participant uses their device to move to a different page of the document than the one the presenter is currently on, they may not be able to view the presenter's current screen (e.g., the presenter's curser, or any changes made on the presenter's screen). For example, if the presenter highlights a portion of the document, the participant may not be able to see that immediately, if they are viewing a different portion of the document. In other words, once the participant starts interacting with the document (e.g., starts scrolling the pages of the document), the user interface may pause adding a layer on top of the document to show the presenter's curser movement and activities. This is illustrated in
While the participant is reviewing the previous page, the presenter may interact with the current page (e.g., make changes to the document), move to a different page, or even open a new document. For example, the presenter may highlight a portion of the text such as text portion 410 on the current page using their curser 480. The participant may not be able to view any of these changes, as long as he/she is interacting asynchronously with the document. Instead, the participant may view the pages of the original document by moving through the document. In one implementation, the server may continue receiving updated screen data from the presenter and may forward the data to the participant device. This data may then be used at the participant device to compare with the page the participant is on. If the participant happens to move to a page the presenter is currently on, the virtual meeting application (or the server) may determine that the locations now coincide. In such a case, the participant's screen may display the presenter's pane (e.g., the presenter's curser movement and/or any changes the presenter may have made while the participant was interacting with the document).
Furthermore, updated screen data may continue to be received by the server and transmitted to the participant's device, such that when the participant is done exploring the document on their own, they may press a return button 470 to go back to the latest screen view being presented by the presenter (e.g. the page of the document the presenter is on). Once they do, they may be taken directly to the page the presenter is on. This is illustrated in
In one implementation, once the participant starts interacting with the document, a signal may be sent to the server indicating that they have began exploring the document on their own. This may stop transmission of updated screen data to the participant. However, once the participant selects the return button 470, a signal may be sent to the server indicating their desire to go back to viewing the presenter's screen at which point the server may transmit the latest updated screen data to that client device. In one implementation, along with the signal indicating the participant's desire to synchronize their display with the presenter, the participant's device may also send screen data indicating the participant's latest screen information. This information may be compared with the latest screen data received from the presenter at the server and only data required to display the presenter's screen may be sent to the participant device. Alternatively, the server may transmit all the information to the participant's device and the process of comparison may occur at the participant device. In yet another alternative (e.g., for online virtual meeting services), the entire process may be performed by the sever.
In an alternative implementation, when the participant begins interacting with the document, a new pane may be opened in the UI screen of the virtual meeting application (or within the online virtual meeting page) that displays the document and the participant's interaction with it. This new pane may be displayed alongside the presenter pane such that the participant can view the presenter's screen at the same time as he/she is interacting with the document asynchronously. This is illustrated in
In one implementation, if while the participant is exploring the document, the presenter closes the document, updated screen data indicating the closure may be transmitted to the server and forwarded to the participant device such that the document is automatically closed on the participant's device. This may prevent a participant to view the document any longer than the presenter wishes them to. Alternatively, the participant may receive a notification that the presenter has closed the document but be given an opportunity to continue exploring the document for a period after it has closed. The period could be predetermined (e.g. set by the virtual meeting application) or changeable by the presenter. In one implementation, a participant interacting with the document may be allowed to continue their interactions for the entire duration of the meeting. In either case, however, once the meeting concludes or the participant gets disconnected from the meeting (e.g., they get disconnected from the network or they choose to leave the meeting), the server may send a notification to the participant's device to close and delete the document in order to prevent future access to the document.
It should be noted that changes made by each participant (e.g. those discussed with respect to
The other participants may be connected to the server via a connection between their client devices and the server through one or more networks. The participant may attend the meeting via a virtual meeting application on their devices or via an online virtual meeting service. In one implementation, in addition to the screen data, the server may send an indication to the other client devices and/or the online service that a presentation request has been received, thus enabling the client devices to prepare their virtual meeting applications, for example by moving elements of the user interface around to provide space for the presentation.
In addition to receiving screen data which may include image data showing the presenter's screen, the server may also receive a copy of the document being presented, at 515. This may occur automatically, for example, via the virtual meeting application of the presenter or may involve the server sending a request for the document. Alternative, in cases where the document is stored in a data store such as a data store connected to the server, the server may simply receive a pointer to the document to identify which document the server should use for the presentation. Once the document (or a pointer to it) is received, the server may encrypt the document, at 520, via one or more encryption mechanisms known in the art. This may be done to ensure limited access to the document will be available at each participant device. For example, by encrypting the document and sending the encryption key via the virtual meeting application, the server may ensure that the document cannot be opened outside of the virtual meeting application.
Once the document is encrypted, a copy of the encrypted document may be stored in a data store, at 525. In one implementation, in addition to the encrypted copy, an original copy of the document may also be stored. This may enable the server to identify changes made to the document by one or more participant devices during the meeting. It may also enable the server to share the unencrypted copy via the online virtual meeting service since that may not require encrypting the document.
The document (encrypted or unencrypted version as needed) may then be shared with the participants at 530, to enable their individual interactions with the document. This may be done by transmitting the encrypted copy to one or more participating devices and/or making the unencrypted copy available via the online virtual meeting service. When the encrypted copy is sent to participating devices, in addition to transmitting the encrypted document, the server may also transmit an encryption key separately to each participating device's virtual meeting application to enable the applications to have access to the file.
Once the file is transmitted, the server may continue receiving updated screen data from the presenter's device and sharing the data with the other participants, at 535. This may include for example data showing how the presenter has moved through the document. Anytime updated screen data is received, the server may share the updated screen data with the other participants to ensure they have a real-time view of the presentation as it occurs on the presenter's device. This may include transmitting the data to their devices or sharing it via the online service.
At any point during the virtual meeting, the server may determine that a participant has begun interacting asynchronously with the document, at 540. This may occur by receiving an indication from the participant's device. For example, once the participant begins scrolling the document, the virtual meeting application may send a signal to the server to inform the server. This may be done so that the server temporarily ceases sharing updated screen data with the presenter who is actively engaged in interaction with the document, at 545. This may reduce the amount of data transfer required by the server and thus save bandwidth.
Once the participant finishes their individual interaction with the document and choose to return to the presenter's screen (e.g., by pressing a return button), a request may be received by the server to resume viewing the presenter's screen, at 550. The request may be transmitted by the participant device and may include screen data of the participant's current screen and screen data and/or timing information regarding when the participant began interacting with the document. This information may be shared such that the server can determine all the changes that may have occurred on the presenter's screen and/or to the document since the participant stopped receiving updated screen data. To determine that, the server may compare the latest screen data from the participant with the latest screen data from the presenter to identify all the changes. Furthermore, for pages that are not currently being displayed (e.g., if the presenter made some changes to a different page of the document than the one currently being displayed on the presenter's screen), data relating to changes in the document may also be compared with the current version of the document as displayed to the participant. Based on this information, the server may transmit required synchronization data to the participant to enable the participant, at 555, to return to the presenter's screen.
At any point during the virtual meeting, the server may determine that the presentation is finished. This may occur, for example, by receiving an indication from the presenter's device when the presenter closes the document. Alternatively, it may occur when the server determines that the virtual meeting has ended. In one implementation, the server may make this determination by examining the updated screen data and identifying that the document is no longer part of the screen. This may require comparing the updated screen data with the content of the stored document. Regardless of the mechanism for making the determination, method 500 may proceed to determine, at 560, if the presentation has finished.
When the server determines that the presentation has been completed, the server may proceed to send a request to each participating device to stop displaying the document, at 565. For devices which utilize a virtual meeting application and/or have received and stored a copy of the document, the request may also include an instruction to delete the local copy of the document.
When, however, it is determined that the presentation is still ongoing, method 500 may return to step 535 to receive and transmit updated screen data to participant devices. It should be noted that in addition to receiving updated screen data from the presenter, the updated screen data received by the server may include updated screen data and/or a revised version(s) of the document received from one or more other participants as they make modifications to the document. As discussed above, in one implementation, participant modifications may be received by the server and transmitted to all other meeting participants including the presenter.
After sending a request to stop displaying the document, method 500 may proceed to determine if the meeting has been completed, at 570. This may occur, for example, when an indication is received from the client device identified as the host of the meeting that they have closed the meeting. When it is determined that the meeting is finished, then the server may send instructions to all meeting attendees to stop the meeting, at 580. In one implementation, this may involve automatically changing the UI screen of the virtual meeting application to indicate that the meeting is over.
When it is determined, at 570, that the meeting is still ongoing, then the server may continue receiving and transmitting signals that enable the meeting, at 575. This may include receiving and transmitting audio/video signals or receiving another indication that a user intends to present a document, in which case, method 500 may return to step 510. Alternatively, the server may continue receiving and transmitting the necessary signals until it is determined at 550 that the meeting is complete.
Thus, in different implementations, an improved method and system may be provided to enable a meeting participant to interact with content shared by a presenter during a virtual meeting. In one implementation, a server responsible for managing the virtual meeting via a network may receive and transmit a copy of a document being presented by one of the meeting attendees. The server may encrypt the document to ensure it can only be used within the virtual meeting application framework and/or for a limited time period (e.g., duration of the meeting). The server may then transmit the encrypted copy to all other meeting attendees or share an unencrypted copy via an online service, where each meeting attendee may be enabled to move through and make some changes to the document separate from the presenter. During the presentation, the server may continue to receive updated screen data from the presenter as the presenter moves through the document and/or makes changes to it. The updated screen data may be forwarded by the server to each meeting attendee such that even when they are interacting with the document, they can always return to the same screen as the presenter. Thus, participants in a meeting can interact with a document being presented during the meeting as needed in an efficient manner that both saves time and protects the security of the document.
The hardware layer 604 also includes a memory/storage 610, which also includes the executable instructions 608 and accompanying data. The hardware layer 604 may also include other hardware modules 612. Instructions 608 held by processing unit 608 may be portions of instructions 608 held by the memory/storage 610.
The example software architecture 602 may be conceptualized as layers, each providing various functionality. For example, the software architecture 602 may include layers and components such as an operating system (OS) 614, libraries 616, frameworks 618, applications 620, and a presentation layer 624. Operationally, the applications 620 and/or other components within the layers may invoke API calls 624 to other layers and receive corresponding results 626. The layers illustrated are representative in nature and other software architectures may include additional or different layers. For example, some mobile or special purpose operating systems may not provide the frameworks/middleware 618.
The OS 614 may manage hardware resources and provide common services. The OS 614 may include, for example, a kernel 628, services 630, and drivers 632. The kernel 628 may act as an abstraction layer between the hardware layer 604 and other software layers. For example, the kernel 628 may be responsible for memory management, processor management (for example, scheduling), component management, networking, security settings, and so on. The services 630 may provide other common services for the other software layers. The drivers 632 may be responsible for controlling or interfacing with the underlying hardware layer 604. For instance, the drivers 632 may include display drivers, camera drivers, memory/storage drivers, peripheral device drivers (for example, via Universal Serial Bus (USB)), network and/or wireless communication drivers, audio drivers, and so forth depending on the hardware and/or software configuration.
The libraries 616 may provide a common infrastructure that may be used by the applications 620 and/or other components and/or layers. The libraries 616 typically provide functionality for use by other software modules to perform tasks, rather than rather than interacting directly with the OS 614. The libraries 616 may include system libraries 634 (for example, C standard library) that may provide functions such as memory allocation, string manipulation, file operations. In addition, the libraries 616 may include API libraries 636 such as media libraries (for example, supporting presentation and manipulation of image, sound, and/or video data formats), graphics libraries (for example, an OpenGL library for rendering 2D and 3D graphics on a display), database libraries (for example, SQLite or other relational database functions), and web libraries (for example, WebKit that may provide web browsing functionality). The libraries 616 may also include a wide variety of other libraries 638 to provide many functions for applications 620 and other software modules.
The frameworks 618 (also sometimes referred to as middleware) provide a higher-level common infrastructure that may be used by the applications 620 and/or other software modules. For example, the frameworks 618 may provide various graphic user interface (GUI) functions, high-level resource management, or high-level location services. The frameworks 618 may provide a broad spectrum of other APIs for applications 620 and/or other software modules.
The applications 620 include built-in applications 620 and/or third-party applications 622. Examples of built-in applications 620 may include, but are not limited to, a contacts application, a browser application, a location application, a media application, a messaging application, and/or a game application. Third-party applications 622 may include any applications developed by an entity other than the vendor of the particular system. The applications 620 may use functions available via OS 614, libraries 616, frameworks 618, and presentation layer 624 to create user interfaces to interact with users.
Some software architectures use virtual machines, as illustrated by a virtual machine 628. The virtual machine 628 provides an execution environment where applications/modules can execute as if they were executing on a hardware machine (such as the machine 600 of
The machine 700 may include processors 710, memory 730, and I/O components 750, which may be communicatively coupled via, for example, a bus 702. The bus 702 may include multiple buses coupling various elements of machine 700 via various bus technologies and protocols. In an example, the processors 710 (including, for example, a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), an ASIC, or a suitable combination thereof) may include one or more processors 712a to 712n that may execute the instructions 716 and process data. In some examples, one or more processors 710 may execute instructions provided or identified by one or more other processors 710. The term “processor” includes a multi-core processor including cores that may execute instructions contemporaneously. Although
The memory/storage 730 may include a main memory 732, a static memory 734, or other memory, and a storage unit 736, both accessible to the processors 710 such as via the bus 702. The storage unit 736 and memory 732, 734 store instructions 716 embodying any one or more of the functions described herein. The memory/storage 730 may also store temporary, intermediate, and/or long-term data for processors 710. The instructions 716 may also reside, completely or partially, within the memory 732, 734, within the storage unit 736, within at least one of the processors 710 (for example, within a command buffer or cache memory), within memory at least one of I/O components 750, or any suitable combination thereof, during execution thereof. Accordingly, the memory 732, 734, the storage unit 736, memory in processors 710, and memory in I/O components 750 are examples of machine-readable media.
As used herein, “machine-readable medium” refers to a device able to temporarily or permanently store instructions and data that cause machine 700 to operate in a specific fashion. The term “machine-readable medium,” as used herein, does not encompass transitory electrical or electromagnetic signals per se (such as on a carrier wave propagating through a medium); the term “machine-readable medium” may therefore be considered tangible and non-transitory. Non-limiting examples of a non-transitory, tangible machine-readable medium may include, but are not limited to, nonvolatile memory (such as flash memory or read-only memory (ROM)), volatile memory (such as a static random-access memory (RAM) or a dynamic RAM), buffer memory, cache memory, optical storage media, magnetic storage media and devices, network-accessible or cloud storage, other types of storage, and/or any suitable combination thereof. The term “machine-readable medium” applies to a single medium, or combination of multiple media, used to store instructions (for example, instructions 716) for execution by a machine 700 such that the instructions, when executed by one or more processors 710 of the machine 700, cause the machine 700 to perform and one or more of the features described herein. Accordingly, a “machine-readable medium” may refer to a single storage device, as well as “cloud-based” storage systems or storage networks that include multiple storage apparatus or devices.
The I/O components 750 may include a wide variety of hardware components adapted to receive input, provide output, produce output, transmit information, exchange information, capture measurements, and so on. The specific I/O components 750 included in a particular machine will depend on the type and/or function of the machine. For example, mobile devices such as mobile phones may include a touch input device, whereas a headless server or IoT device may not include such a touch input device. The particular examples of I/O components illustrated in
In some examples, the I/O components 750 may include biometric components 756 and/or position components 762, among a wide array of other environmental sensor components. The biometric components 756 may include, for example, components to detect body expressions (for example, facial expressions, vocal expressions, hand or body gestures, or eye tracking), measure biosignals (for example, heart rate or brain waves), and identify a person (for example, via voice-, retina-, and/or facial-based identification). The position components 762 may include, for example, location sensors (for example, a Global Position System (GPS) receiver), altitude sensors (for example, an air pressure sensor from which altitude may be derived), and/or orientation sensors (for example, magnetometers).
The I/O components 750 may include communication components 764, implementing a wide variety of technologies operable to couple the machine 700 to network(s) 770 and/or device(s) 780 via respective communicative couplings 772 and 782. The communication components 764 may include one or more network interface components or other suitable devices to interface with the network(s) 770. The communication components 764 may include, for example, components adapted to provide wired communication, wireless communication, cellular communication, Near Field Communication (NFC), Bluetooth communication, Wi-Fi, and/or communication via other modalities. The device(s) 780 may include other machines or various peripheral devices (for example, coupled via USB).
In some examples, the communication components 764 may detect identifiers or include components adapted to detect identifiers. For example, the communication components 664 may include Radio Frequency Identification (RFID) tag readers, NFC detectors, optical sensors (for example, one- or multi-dimensional bar codes, or other optical codes), and/or acoustic detectors (for example, microphones to identify tagged audio signals). In some examples, location information may be determined based on information from the communication components 762, such as, but not limited to, geo-location via Internet Protocol (IP) address, location via Wi-Fi, cellular, NFC, Bluetooth, or other wireless station identification and/or signal triangulation.
While various embodiments have been described, the description is intended to be exemplary, rather than limiting, and it is understood that many more embodiments and implementations are possible that are within the scope of the embodiments. Although many possible combinations of features are shown in the accompanying figures and discussed in this detailed description, many other combinations of the disclosed features are possible. Any feature of any embodiment may be used in combination with or substituted for any other feature or element in any other embodiment unless specifically restricted. Therefore, it will be understood that any of the features shown and/or discussed in the present disclosure may be implemented together in any suitable combination. Accordingly, the embodiments are not to be restricted except in light of the attached claims and their equivalents. Also, various modifications and changes may be made within the scope of the attached claims.
Generally, functions described herein (for example, the features illustrated in FIGS.1-5) can be implemented using software, firmware, hardware (for example, fixed logic, finite state machines, and/or other circuits), or a combination of these implementations. In the case of a software implementation, program code performs specified tasks when executed on a processor (for example, a CPU or CPUs). The program code can be stored in one or more machine-readable memory devices. The features of the techniques described herein are system-independent, meaning that the techniques may be implemented on a variety of computing systems having a variety of processors. For example, implementations may include an entity (for example, software) that causes hardware to perform operations, e.g., processors functional blocks, and so on. For example, a hardware device may include a machine-readable medium that may be configured to maintain instructions that cause the hardware device, including an operating system executed thereon and associated hardware, to perform operations. Thus, the instructions may function to configure an operating system and associated hardware to perform the operations and thereby configure or otherwise adapt a hardware device to perform functions described above. The instructions may be provided by the machine-readable medium through a variety of different configurations to hardware elements that execute the instructions.
While the foregoing has described what are considered to be the best mode and/or other examples, it is understood that various modifications may be made therein and that the subject matter disclosed herein may be implemented in various forms and examples, and that the teachings may be applied in numerous applications, only some of which have been described herein. It is intended by the following claims to claim any and all applications, modifications and variations that fall within the true scope of the present teachings.
Unless otherwise stated, all measurements, values, ratings, positions, magnitudes, sizes, and other specifications that are set forth in this specification, including in the claims that follow, are approximate, not exact. They are intended to have a reasonable range that is consistent with the functions to which they relate and with what is customary in the art to which they pertain.
The scope of protection is limited solely by the claims that now follow. That scope is intended and should be interpreted to be as broad as is consistent with the ordinary meaning of the language that is used in the claims when interpreted in light of this specification and the prosecution history that follows, and to encompass all structural and functional equivalents. Notwithstanding, none of the claims are intended to embrace subject matter that fails to satisfy the requirement of Sections 101, 102, or 103 of the Patent Act, nor should they be interpreted in such a way. Any unintended embracement of such subject matter is hereby disclaimed.
Except as stated immediately above, nothing that has been stated or illustrated is intended or should be interpreted to cause a dedication of any component, step, feature, object, benefit, advantage, or equivalent to the public, regardless of whether it is or is not recited in the claims.
It will be understood that the terms and expressions used herein have the ordinary meaning as is accorded to such terms and expressions with respect to their corresponding respective areas of inquiry and study except where specific meanings have otherwise been set forth herein.
Relational terms such as first and second and the like may be used solely to distinguish one entity or action from another without necessarily requiring or implying any actual such relationship or order between such entities or actions. The terms “comprises,” “comprising,” and any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. An element preceded by “a” or “an” does not, without further constraints, preclude the existence of additional identical elements in the process, method, article, or apparatus that comprises the element.
The Abstract of the Disclosure is provided to allow the reader to quickly identify the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in various examples for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that any claim requires more features than the claim expressly recites. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed example. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separately claimed subject matter.