The application is a divisional application of an application patent application of which the application date is 2016, 6 and 30, the application number is 201680050026.4, and the name is 'forwarding information related to activities from a source electronic device to a companion electronic device'.
The present application is a continuation of and claims priority to U.S. patent application Ser. No. 14/586,566, entitled "Activity Continuation between Electronic Devices" in U.S. patent application Ser. No. 14/586,566, filed 12/30 in 2014. The present application also claims priority from the presently expired U.S. provisional patent application No. 62/005,781 entitled "Activity Continuation between Electronic Devices", filed on 30 days 5/2014, and the original application 14/586,566 also claims priority. These two applications are incorporated by reference.
The present application relates to U.S. patent application Ser. No. 14/586,511, entitled "Companion Application for Activity Cooperation", by the inventors Marc J.Krochmal, christopher S.Linn, john J.Iarocci, geoffrey Stahl and Jacques P.Gasselin de Richebourg in the same daily application as the present application, having attorney docket number APL-P23129US1. The present application also relates to U.S. patent application Ser. No. 14/475,329, entitled "Operating Mode Transitions based on Advertising Information," filed by inventors Craig P.Dooley, akshay Mangalam Srivatsa, anjali S. Sandesara and Michael J.Giles at 2014, month 9, having attorney docket number APL-P22643US1. The present application also relates to U.S. patent application Ser. No. 14/474,466, entitled "PREDEFINED WIRELESS PAIRING", filed by the inventors Jason C.Conn, akshay Mangalam Srivatsa, craig P.Dooley and Michael J.Giles at 2014, month 9 and 2, having attorney docket number APL-P22642US1. The present application is further directed to U.S. patent application Ser. No. 14/586,566, entitled "Activity Continuation between Electronic Devices", filed by inventor Christopher S.Linn,Keith Stattenfield,Christopher C.Jensen,Alexander R.Ledwith,David A.Carter,Marc J.Krochmal,John J.Iarocci and Jonathan M.Grynspan at 12, 30, 2014, having attorney docket No. APL-P22791US1. Each of the applications described above is incorporated herein by reference.
Detailed Description
The following description is presented to enable any person skilled in the art to make and use the described embodiments, and is provided in the context of a particular application and its requirements. Various modifications to the described embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the described embodiments. Thus, the described embodiments are not limited to the embodiments shown but are to be accorded the widest scope consistent with the principles and features disclosed herein.
In some embodiments, an electronic device (e.g., electronic device 100 and/or some portion thereof in fig. 1) uses program code and/or data stored on a computer-readable storage medium to perform some or all of the operations described herein. More particularly, the electronic device reads the program code and/or data from the computer readable storage medium and executes the program code and/or uses the data when performing the described operations. In such embodiments, the computer readable storage medium may be any device or medium or combination of devices that store program code and/or data for use by an electronic device. For example, computer-readable storage media may include, but are not limited to, volatile memory or non-volatile memory, such as semiconductor memory (e.g., flash memory, random access memory (eDRAM, RAM, SRAM, DRAM, DDR, DDR/DDR 3/DDR4 SDRAM, etc.), and/or magnetic or optical storage media (e.g., disk drive, tape, CD, DVD). In the described embodiments, the computer-readable storage medium does not include non-legal computer-readable storage media, such as transitory signals.
In some embodiments, one or more hardware modules are configured to perform the operations described herein. For example, a hardware module may include, but is not limited to, one or more processors/cores/Central Processing Units (CPUs), application Specific Integrated Circuit (ASIC) chips, field Programmable Gate Arrays (FPGAs), caches/cache controllers, memory management units, computing units, embedded processors, graphics Processors (GPUs)/graphics cores, pipelines, and/or other programmable logic devices. When such hardware modules are activated, the hardware modules perform some or all of the operations. In some embodiments, a hardware module includes one or more general-purpose circuits configured by executing instructions (program code, firmware, etc.) to perform operations.
In this description, reference may be made to functional blocks in describing some embodiments. Generally, functional blocks include one or more associated circuits, devices, and/or mechanisms that perform the described operations. In some embodiments, at least some of the functional blocks include general purpose processing circuitry that executes program code (e.g., microcode, firmware, applications, etc.) that causes the general purpose processing circuitry to perform the described operations.
SUMMARY
The described embodiments transfer an activity performed at a source electronic device from the source electronic device to a companion electronic device-referred to as a process of "continuing" the activity in the companion electronic device. In the described embodiment, to perform the transfer, the source electronic device sends information describing an activity performed in the first application at the source electronic device to the companion electronic device. The companion electronic device then uses some or all of the information to configure a second application at the companion electronic device to perform the corresponding activity. Generally, an activity includes one or more operations performed at least in part at a source electronic device, the one or more operations being transferred to/continued on a companion electronic device. Examples of activities include reading and/or editing a file (e.g., a word processing file, a spreadsheet, a presentation, or other type of file), composing an email message, an email, a voice message, or video, drafting notes, accessing (browsing) a website, watching a movie, playing an audio file, or otherwise using an application or app to perform a corresponding operation.
In some embodiments, when transferring activity from a source device to a companion device, the source electronic device first broadcasts an activity advertisement message (also referred to as an "activity advertisement") using a wireless network interface (e.g., bluetooth Low Energy (BLE), zigbee, etc.). In some embodiments, the source electronic device generates an activity identifier for an activity performed in the first application at the source electronic device and includes the activity identifier in the activity advertisement message. The source electronic device generates an activity identifier by performing a set of operations (e.g., hash operations, etc.) using activity information describing the activity received from the first application. An example of activity information is described in more detail below with reference to FIG. 11.
The companion electronic device monitors a network (e.g., a bluetooth low energy network) for the active advertisement message on a network interface corresponding to the network interface in the source electronic device from which the active advertisement is broadcast. Upon detecting an activity advertisement broadcast from the source electronic device, the companion electronic device compares the activity identifier for the activity available at the companion electronic device with the activity identifier in the activity advertisement message. The companion electronic device uses this comparison to determine whether a second application that can perform an activity corresponding to the activity performed in the first application is available at the companion electronic device.
In some embodiments, upon determining that the second application is available, the companion electronic device establishes communication with the source electronic device via a communication channel, e.g., using the same wireless network interface or a different network interface (wireless and/or wired) for receiving the activity advertisement message. The companion electronic device then uses the communication channel to request extended activity data from the source electronic device for the activity performed in the first application. In some embodiments, upon receiving a request for extended activity data, the source electronic device uses the same (or a different) communication channel to provide the extended activity data to the companion electronic device. In general, the extended activity data includes information that may be used to configure a second application in the companion electronic device to continue the activity, such as a file identifier, scroll position, uniform Resource Locator (URL), etc. associated with the activity performed in the first application.
In some embodiments, the companion electronic device uses the activity identifier and/or the extended activity data to configure the second application to perform an activity corresponding to an activity performed in the first application at the source electronic device. The companion electronic device then begins executing the activity in the second application at the companion electronic device. For example, after the companion electronic device configures the second application, the user may use the companion electronic device to continue working on files that the user is working on at the source electronic device, continue watching movies that the user is watching at the source electronic device, continue browsing web pages that the user is browsing at the source electronic device, and so on. In some embodiments, the companion electronic device sends a notification to the source electronic device to indicate that the activity is transferred to the second application. The notification may cause the source electronic device and/or the first application to perform housekeeping tasks, such as deleting a file draft of the activity, closing an open file of the activity, and so forth.
In some embodiments, the source electronic device forwards information related to the activity to the companion electronic device in addition to the activity identifier and/or extended activity data described above. For example, in some embodiments, the source electronic device forwards some or all of the content of the copy and clipboard (or "clipboard") in the source electronic device to the companion electronic device. Upon receiving the activity-related information, the companion electronic device provides the activity-related information for performing an activity (e.g., a transferred activity or other activity) in the companion electronic device. For example, in embodiments that forward some or all of the clipboard's content from the source electronic device, the companion electronic device may overwrite some or all of the existing content of the clipboard in the companion electronic device with the content of the clipboard received from the source electronic device. In this way, the companion electronic device may make content (i.e., activity-related information) from the clipboard of the source electronic device available for activity in the companion electronic device. For example, text, images, videos, sounds, files, fields, and/or other information copied to (or otherwise placed on) a clipboard in a source electronic device may be made available to activities in a companion electronic device via the clipboard of the companion electronic device.
By performing the operations described above at the companion electronic device to continue the activities performed at the source electronic device, the described embodiments enable the user to continue tasks smoothly and without complex user intervention. This enables a user to more easily perform tasks on a desired electronic device, which may improve the overall experience of a user having two or more electronic devices.
Electronic device
Fig. 1 presents a block diagram illustrating an electronic device 100 in accordance with some embodiments. The electronic device 100 includes a processing subsystem 102, a memory subsystem 104, a network connection subsystem 106, and a display subsystem 108.
The processing subsystem 102 is a functional block that performs computing operations in the electronic device 100. Processing subsystem 102 includes one or more Central Processing Units (CPUs)/CPU cores, graphics Processing Units (GPUs)/GPU cores, embedded processors, application Specific Integrated Circuits (ASICs), and/or other computing architectures.
Memory subsystem 104 is a functional block that stores data and/or instructions for use by other functional blocks in electronic device 100, such as processing subsystem 102 and the like. Memory subsystem 104 includes volatile memory circuitry for storing instructions and data, such as Dynamic Random Access Memory (DRAM), static Random Access Memory (SRAM), and/or other types of memory, and mechanisms for controlling the memory circuitry. In some embodiments, memory subsystem 104 includes a memory hierarchy having one or more caches coupled to memory circuits. In some of these embodiments, processing subsystem 102 also includes one or more caches that are part of the memory hierarchy.
In some embodiments, the memory subsystem 104 is coupled to one or more non-volatile high-capacity mass storage devices (not shown). For example, the memory subsystem 104 may be coupled to a magnetic or optical drive, a solid state drive, or another type of mass storage device. In such embodiments, the memory subsystem 104 may be used by the electronic device 100 as a fast access storage for frequently used data, while a mass storage device is used to store less frequently used data.
Network connection subsystem 106 is a functional block that includes one or more devices configured to couple to and communicate over wired and/or wireless networks (i.e., to perform network operations). For example, the network connection subsystem 106 may include a Bluetooth TM network connection system, a cellular network connection system (e.g., a 3G/4G network such as UMTS, LTE, etc.), a Universal Serial Bus (USB) network connection system, a network connection system based on standards described in IEEE 802.11, 802.15, etc. (e.g., a zigbee or Wi-Fi network connection system, etc.), an ethernet network connection system, and/or another network connection system. The network connection subsystem 106 includes a processor, controller, radio/antenna, jack/plug, and/or other means for coupling to, communicating over, and handling data and events for each supported network connection system. In the following description, the mechanisms of each network system for coupling to, communicating over, and handling data and events on a network are collectively referred to as the "interfaces" or "network interfaces" of the network system.
Display subsystem 108 is a functional block that includes one or more devices configured to display information on a visual interface of electronic device 100. For example, in some embodiments, display subsystem 108 includes a Graphics Processor (GPU), a graphics adapter, and/or a display screen for displaying information.
In some embodiments, communication paths (including one or more buses, wires, and/or connections) are coupled between functional blocks (processing subsystem 102, memory subsystem 104, etc.) in electronic device 100, as indicated by the arrowed lines between components. The communication path is used to transfer commands, data, event notifications, and/or other information between components.
Although specific components are used to describe the electronic device 100, in some embodiments, different components and/or subsystems may be present in the electronic device 100. For example, the electronic device 100 may include one or more additional processing subsystems 102, memory subsystems 104, and so forth. Additionally, one or more of the subsystems may not be present in the electronic device 100 or some or all of the functionality of the subsystems may be incorporated in other subsystems. Moreover, in some embodiments, the electronic device 100 may include one or more additional subsystems not shown in fig. 1. For example, electronic device 100 may include, but is not limited to, a data collection subsystem, an audio and/or video subsystem, an alarm subsystem, a media processing subsystem, and/or an input/output (I/O) subsystem.
Electronic device 100 may be any device that performs computing operations or may be included therein. For example, the electronic device 100 may be or may be included in a desktop computer, a laptop computer, a wearable computing device, a tablet computer, a smart phone, a server, a network electrical device, a toy, an audio visual device (e.g., receiver, set-top box, apple TV, etc.), an automobile (e.g., automobile interface system, navigation system, head-up display, etc.), a home electrical device, a controller, etc., and/or combinations thereof. (Apple TV is a registered trademark of Apple Inc. (Apple Inc.) of Cooper, calif.).
Network environment
FIG. 2 presents a block diagram illustrating a network environment in accordance with some embodiments. As can be seen in fig. 2, the network environment 200 includes a source electronic device 202, a companion electronic device 204, and a second source electronic device 206 (collectively referred to as "electronic devices"). In some embodiments, each of the electronic devices is an electronic device similar to electronic device 100, i.e., has a subsystem similar to electronic device 100. However, this is not required, and the described embodiments may use any electronic device that may perform the operations described herein.
The source electronic device 202 and the second source electronic device 206 are electronic devices that participate in exchanges with the companion electronic device 204 regarding activity transfer operations. In some embodiments, the source electronic device 202 (and/or the second source electronic device 206) is an electronic device that is identified by the companion electronic device 204 and is therefore allowed to participate in activity transfer operations. For example, both the source electronic device 202 and the companion electronic device 204 may have registered with the service provider using the same account and thus may recognize each other via information stored in each electronic device. For example, in some embodiments, the source electronic device 202 and the companion electronic device 204 participate in a pre-pairing operation (e.g., a predefined pairing) (and are identified to each other via information obtained by the pre-pairing operation) as described in U.S. patent applications by the inventors Jason C.Conn, akshay Mangalam Srivatsa, craig P. Dooley, and MICHAEL GILES in the same daily application as the present application, entitled "PREDEFINED WIRELESS PAIRING", having attorney docket No. APL-P22642USP1, the contents of which are incorporated by reference as described above. In some embodiments, the source electronic device 202 and the companion electronic device 204 may participate in a device-to-device exchange of identification factors (encryption keys, credentials, etc.) such that the source electronic device 202 and the companion electronic device 204 subsequently recognize each other.
Within the network environment 200, the companion electronic device 204 may communicate with the source electronic device 202 and the second source electronic device 206 using wireless communication signals 208 (illustrated using jagged lines labeled "communication signals 208" in fig. 2). In some embodiments, the communication signals 208 are formatted and exchanged (broadcast, transmitted/received, etc.) according to a corresponding wireless protocol (e.g., via a wireless network protocol such as bluetooth, zigbee, 802.11-based protocol, and/or other wireless network protocol). In some embodiments, some or all of communication signals 208 are transmitted as wired communication signals (e.g., signals in a wired ethernet network, a wired LAN, a wired WAN, etc.).
In some embodiments, the activity transfer operations described herein rely on the source electronic device 202 and the companion electronic device 204 being sufficiently close to each other to enable the communication signal 208 (and thus the incorporated message) sent by each electronic device to be received by the other electronic device. In other words, the source electronic device 202 and the companion electronic device 204 are "in proximity" to each other, thereby enabling message exchanges between the electronic devices. As used herein, "proximate" thus refers to a distance over which a message broadcast/sent by a given electronic device may be received by one or more other electronic devices. This distance is specified by the radio equipment in the electronic device (antenna, receiver/transmitter, etc.) and the specific radio protocol/signal used to broadcast/send the message, limited by factors such as environmental conditions (electromagnetic interference, etc.), intermediate objects (furniture, walls, clothing/bags, etc.). For example, in some embodiments, communication signals 208 are exchanged between source electronic device 202 and companion electronic device 204 using a protocol that is expected to range from 30 meters, and thus the devices are "close" when the devices are within 30 meters of each other (note, however, that the expected range may be significantly altered by the factors described above).
FIG. 16 presents a block diagram illustrating electronic devices in proximity to each other in accordance with some embodiments. As can be seen in fig. 16, the companion electronic device 204 is within range 1602 of the radio signal (e.g., communication signal 208) of the source electronic device 202, meaning that the companion electronic device 204 can receive the radio signal transmitted from the source electronic device 202. In addition, the source electronic device 202 is within the range 1604 of the radio signal (e.g., the communication signal 208) of the companion electronic device 204, meaning that the source electronic device 202 can receive the radio signal transmitted from the companion electronic device 204. Thus, as described above, the source electronic device 202 and the companion electronic device 204 are "in proximity" to each other, thereby enabling communication (and corresponding operation) of the messages described herein. However, neither the source electronic device 202 nor the companion electronic device 204 are within the range 1606 of the radio signal of the electronic device 1600, meaning that neither the source electronic device 202 nor the companion electronic device 204 are in proximity to the electronic device 1600. It should be noted that ranges 1602 through 1606 in fig. 16 are shown using irregular shapes, thereby illustrating that radio signals from an electronic device have irregular ranges, depending on the electronic device (antenna configuration, etc.), the factors described above, etc.
In some embodiments, messages, data, etc., communicated between electronic devices are encrypted. In such embodiments, some or all of the electronic devices perform corresponding encryption and decryption operations, for example, by using the shared key, a key derived from the shared key, and/or a one-time key. For example, as previously described, in some embodiments, the source electronic device 202 and companion electronic device 204 participate in a predefined pairing as described in U.S. patent applications in the same daily application as the present application by inventors Jason C.Conn, akshay Mangalam Srivatsa, craig p.dooley and MICHAEL GILES, entitled "PREDEFINED WIRELESS PAIRING", having attorney docket No. APL-P22642USP1, the contents of which are incorporated by reference as described above. In some embodiments, the source electronic device 202 and the companion electronic device 204 encrypt and decrypt messages exchanged for the active transfer operation by using one or more encryption keys that the source electronic device 202 and the companion electronic device 204 obtain while participating in the predefined pairing.
Although various electronic devices are shown in fig. 2, in some embodiments, different configurations of electronic devices are used to perform some or all of the operations described herein. For example, in some embodiments, the second source electronic device 206 is not present. In general, the described embodiments include sufficient means for transferring activity between electronic devices as described herein.
Broadcast event notification message
Fig. 3 presents a flowchart illustrating a process for broadcasting an activity announcement message according to some embodiments. More specifically, during the processing procedure illustrated in FIG. 3, an electronic device, such as source electronic device 202, broadcasts an activity advertisement message. It should be noted that the operations shown in fig. 3 are presented as a general example of operations performed by some embodiments. Operations performed by some embodiments may include different operations and/or operations performed in a different order. Additionally, while some mechanisms are used to describe operations (e.g., source electronics 202, etc.), in some embodiments, other mechanisms perform operations. For example, one or both of the companion electronic device 204 and the second source electronic device 206 may perform similar operations to broadcast their own activity advertisement messages.
The process shown in FIG. 3 begins with the source electronic device 202 receiving activity information describing an activity performed in a first application at the source electronic device 202 (i.e., a first application installed on the source electronic device 202/available at the source electronic device 202) (step 300). (examples of activity information are described in more detail below with reference to FIG. 11). In some embodiments, the first application provides or reports activity information to source electronic device 202, such as to an operating system, a eidolon helper, or other processes and/or services at source electronic device 202. In some embodiments, the source electronic device 202 queries the first application for activity information. Generally, the activity information includes information describing an activity performed at least in part using the electronic device. Examples of activities include reading and/or editing a file (e.g., a word processing file, a spreadsheet, a presentation, or other type of file), composing an email message, drafting notes, accessing (browsing) a website, watching a movie, playing an audio file, or otherwise using an application or app to perform a corresponding operation.
Next, the source electronic device 202 determines whether to filter the received activity information (step 302), which includes using one or more criteria to discard activity information that should not undergo additional processing and/or should not be broadcast in the activity advertisement message. For example, the source electronic device 202 may measure how frequently the first application provides updates to the activity information, and may discard the activity information from the first application when the updated frequency of activity information exceeds a threshold (which may be referred to as "throttling" the activity information from the first application). As another example, the source electronic device 202 may discard duplicate or duplicate activity information, contain no significant changes to previously reported activity information (e.g., an "unchanged" automatic report, a simple/basic operation/change report, etc.), report facts that have been known by the source electronic device 202, etc. As yet another example, in some embodiments, the source electronic device 202 filters the activity information based on an indication that the activity described by the activity information is not to be advertised. For example, in some embodiments, the source electronic device 202 and/or a user of the source electronic device 202 may configure certain activities and/or certain types of activities to activities that are not to be advertised. As yet another example, in some embodiments, the source electronic device 202 ranks some or all of the activities (i.e., some or all of the activities that may be announced are present) and discards one or more of these activities based on the ranking. For example, the source electronic device 202 may assign a higher ranking to activities that the user has previously continued and a lower ranking to activities that the user has not previously continued. In some of these embodiments, the source electronic device 202 uses messages from the companion electronic device 204 to determine which advertising activities were previously continued and which advertising activities were not previously continued, e.g., messages such as those messages described below with reference to step 510 of FIG. 5.
If the source electronic device 202 filters (e.g., discards) the activity information (step 302, yes), the process ends. Otherwise, if the source electronic device 202 does not filter the activity information (step 302, no), the source electronic device 202 stores some or all of the activity information in the structure (step 304). For purposes of illustration, we describe an embodiment in which activity information is stored in entries in a table, which we refer to as an "advertised activity" table. However, it should be noted that embodiments are not limited to using tables for storing activity information. Some embodiments use different storage mechanisms/structures for storing activity information, such as associative arrays, content addressable memories, and the like.
In some embodiments, the source electronic device 202 overwrites and/or removes the activity information previously stored in the advertised activity table while storing the activity information. For example, the source electronic device 202 may use a Least Recently Used (LRU) algorithm to overwrite and/or remove input items from the advertised hotlist. An example of an active list of bulletins is described in more detail below with reference to FIG. 12.
Next, the source electronic device 202 determines an activity identifier for the activity information (step 306). In general, the activity identifier includes information from activity information identifying the first application and an activity executing in the first application. In some embodiments, the source electronic device 202 generates the activity identifier by reducing the activity information to a smaller encoded representation that can be more efficiently broadcast than the complete activity information. In some of these embodiments, the encoded representation is a hash of the activity information, i.e., its input includes the output of a hash function (e.g., MD4, MD5, SHA, murmurHash, etc.) of the activity information. In some embodiments, the source electronic device 202 stores the activity identifier along with the activity information in an advertised activity table (or any structure that the source electronic device 202 uses to store the activity information). An example of an activity identifier is described in more detail below with reference to FIG. 12.
In some embodiments, the activity identifier comprises a representation of a domain name. For example, in some embodiments, when the activity performed in the first application includes using a resource at the domain, the activity information includes a domain name of the domain, such as at least a portion of a Uniform Resource Locator (URL). In some embodiments, the source electronic device 202 determines the activity identifier by including some or all of the domain names in the activity identifier. For example, the activity identifier may be a hash of some or all of the URL for the resource.
In some embodiments, the activity identifier identifies an input item in the structure in which the source electronic device 202 stores activity information (e.g., as described above with reference to step 304). For example, the activity identifier may identify an entry in an activity table in which the source electronic device 202 stores an announcement of activity information. The activity identifier may also include an identifier of the activity table itself of the bulletin. In some embodiments, to identify an entry in the structure of the source electronic device 202 storing the activity information, the activity identifier includes (1) a hash of the data in the advertised activity table that identifies the advertised activity table, and (2) an index of the entry in the advertised activity table storing the activity information.
The source electronic device 202 next includes the activity identifier into the activity advertisement message (step 308). In some embodiments, the campaign advertisement message includes other data in addition to the campaign identifier. For example, in some embodiments, the activity advertisement message includes a flag indicating when the activity identifier includes a representation of a domain name of an online resource associated with the activity. In such embodiments, the source electronic device 202 asserts (asserts) a flag (e.g., sets the flag to a predetermined value such as 1) to indicate that the active identifier includes a representation of the domain name. In some embodiments, the source electronic device 202 validates the flag in the activity advertisement message to indicate that the advertisement activity may continue in a manner that the source electronic device 202 would separately provide to the companion electronic device 204 (e.g., by the source electronic device 202 including corresponding instructions in the extended activity data (the extended activity data is described in more detail below)).
In some embodiments, the activity advertisement message includes a timestamp for the activity/activity information. The timestamp (which may represent the absolute time or relative time) may indicate the time at which the activity was last performed in the first application, e.g., the last time to edit a file, access a website, view a movie, etc. In some embodiments, the timestamp is independent of the activity/activity information, and also indicates the time of the last interaction of the user with the source electronic device 202, regardless of whether the last interaction of the user includes the user performing the activity.
The source electronic device 202 then broadcasts an activity advertisement message (step 310). For example, the source electronic device 202 may broadcast an activity advertisement message using the communication signal 208. In some embodiments, the source electronic device 202 broadcasts/announces the campaign advertisement message in the network environment 200 such that nearby devices in the network environment 200 may receive the campaign advertisement message. For example, in such embodiments, the source electronic device 202 uses a Bluetooth TM communication channel, such as Bluetooth Low Energy (BLE), to broadcast the activity advertisement message. Some embodiments may broadcast the campaign advertisement message on a different communication channel, such as an inter-peer network, LAN, internet, etc. It should be noted that the activity broadcast may occur more than once, e.g., the source electronic device 202 may broadcast the same activity advertisement message multiple times and/or periodically.
Build available movable table
In some embodiments, the companion electronic device 204 stores available activity information, such as activity information describing activities available at the companion electronic device 204 (examples of activity information are described in more detail below with reference to fig. 11). For example, in some embodiments, companion electronic device 204 stores an activity identifier for available activity information. For purposes of illustration, we describe companion electronic device 204 storing available activity information in a table, which we refer to as a "available activity" table (examples of available activity tables are described in more detail later in this disclosure). It should be noted that although we describe an embodiment in which available activity information is stored in an available activity table, the embodiment is not limited to storing available activity information using a table. Some embodiments may use other structures for storing available activity information, such as associative arrays, content addressable memories, and the like.
Fig. 4 presents a flowchart illustrating a process for storing activity information describing activities available at companion electronic device 204 into an available activity table, in accordance with some embodiments. It should be noted that the operations shown in fig. 4 are presented as a general example of operations performed by some embodiments. Operations performed by some embodiments may include different operations and/or operations performed in a different order. Additionally, while some mechanisms are used to describe operations (e.g., accompanying electronic device 204, etc.), in some embodiments other mechanisms perform operations. For example, one or both of the source electronic device 202 and the second source electronic device 206 may perform similar operations to store available activity information describing activities available for themselves.
The process shown in FIG. 4 begins with the companion electronic device 204 receiving activity information describing activity available at a second application at the companion electronic device 204 (e.g., activity information describing activity that may be performed at the companion electronic device 204) (step 400). In general, this activity information describes activities that may be performed in the second application at the companion electronic device 204, i.e., operations or functions that the second application at the companion electronic device 204 is capable of performing. In some embodiments, the second application reports/provides activity information when the second application is installed and/or used. In some embodiments, the companion electronic device 204 queries or otherwise monitors the second application to collect activity information describing activities available at the second application. In some embodiments, the activity information includes activity information for activities that have not yet been performed on the companion electronic device 204 but are available for execution (e.g., activity information reported by the second application when the second application is installed/updated, started, used, etc. at the companion electronic device 204).
Next, companion electronic device 204 determines a second activity identifier (i.e., an activity identifier for activity information describing an activity available at the second application) (step 402). In general, the second activity identifier identifies the second application and the activity available at the second application. The second activity identifier may be an encoded representation of activity information describing an activity available at the second application. In some embodiments, companion electronic device 204 determines the second activity identifier by executing some or all of the same operations that source electronic device 202 executes to generate an activity identifier for an activity executing in the first application (see FIG. 3, step 306). For example, in some embodiments, companion electronic device 204 uses the same hash function to generate a second activity identifier that source electronic device 202 uses to generate an activity identifier for an activity performed in the first application.
In some embodiments, when the second application is operable to perform an activity comprising accessing a resource at the domain, the activity information for the activity comprises a domain name of the domain. In some of these embodiments, the second activity identifier is an encoded representation of a domain name that enables the second application to "claim" the domain name, i.e., state that the second application may use resources at the domain name such that the companion electronic device 204 may transfer the corresponding activity to the second application. For example, as will be described later, in the case where the second application streams movies from a particular site on the internet, the second activity identifier may be an encoded representation of at least some portion of the domain name of the site. It should be noted that the second application may be different from the first application (i.e., the application whose activity was advertised in the activity advertisement message) such that applications other than the first application are able to continue activity at the companion electronic device 204.
Next, the companion electronic device 204 stores the second campaign identifier in the available campaign table (step 404).
Request extension activity data and transfer activity
In some embodiments, upon receiving the activity advertisement message, the electronic device may request extended activity data for the advertised activity so that the advertised activity may be subsequently transferred to the electronic device. FIG. 5 presents a flowchart illustrating a process for requesting extended activity data and transferring activity in accordance with some embodiments. More specifically, during the processing procedure shown in fig. 5, companion electronic device 204 requests extended activity data from source electronic device 202 for an activity performed in a first application in source electronic device 202. It should be noted that the operations illustrated in fig. 5 are presented as a general example of operations performed by some embodiments. Operations performed by some embodiments may include different operations and/or operations performed in a different order. Additionally, while some mechanisms are used to describe operations (e.g., source electronic device 202, companion electronic device 204), in some embodiments other electronic devices and/or mechanisms perform the operations.
The process illustrated in fig. 5 begins with the companion electronic device 204 receiving an activity advertisement message (step 500), such as an activity advertisement message broadcast from the source electronic device 202 (see fig. 3, step 310). Next, the companion electronic device 204 determines whether the companion electronic device 204 is in a receiving state (step 502). Generally, the companion electronic device 204 is in a receiving state when it is available to perform an activity transition. For example, in some embodiments, the companion electronic device 204 transitions to the receiving state when the device "wakes up" (e.g., when a lock screen is displayed after a user presses a button to wake up the device). In some embodiments, the companion electronic device 204 is not in the receiving state when the companion electronic device 204 is in use (e.g., when the user is using an application at the companion electronic device 204 and/or when the user has used the application for a given period of time).
If the companion electronic device 204 is not in the receiving state (NO at step 502), the process ends (i.e., the activity advertisement message is ignored). Otherwise, if the companion electronic device 204 is in the receiving state (yes at step 502), the companion electronic device 204 determines whether a second application associated with the first application is available at the companion electronic device 204 (step 504). In general, this operation includes determining whether an application is available on the companion electronic device 204 to continue the activity described in the activity advertisement message from the source electronic device 202. Determining whether the second application is available is described in more detail later with reference to fig. 7-8.
If the second application is not available (step 504, no), the process ends. Otherwise, if the second application is available (step 504, yes), the companion electronic device 204 retrieves activity information for the second application (step 506). For example, as will also be described in greater detail with reference to fig. 7-8 and 11-12, after determining the second application, the companion electronic device 204 may use the activity identifier for the second application to retrieve activity information describing the activity available in the second application from the available activity table (or from another structure that the companion electronic device 204 uses to store the available activity information). In some embodiments, companion electronic device 204 uses the retrieved activity information (e.g., using an application identifier in the retrieved activity information) to customize an indication that the activity is recoverable, such as described below with reference to step 508 and/or fig. 14. The application identifier is described in more detail with reference to fig. 11.
Next, the companion electronic device 204 presents an indication that the activity is recoverable (step 508). For example, the companion electronic device 204 may present graphical icons and/or notifications in a display of the companion electronic device 204. The indication is described in more detail below with reference to fig. 14.
Next, companion electronic device 204 determines whether the activity transition is accepted (step 510). In some embodiments, a user of companion electronic device 204 accepts and/or rejects an activity transfer by performing an action on the indication (such as clicking on the indication, dragging the indication in one or more directions and/or to one or more particular locations, etc.). For example, to accept an activity transition, the user may tap the illustration/notification with a finger (on a touch screen display) and drag the illustration/notification in a first direction (e.g., left to right, up, circular clockwise, etc.). As another example, to reject an activity, the user may tap the illustration/notification with a finger and drag the illustration/notification in a second direction (e.g., right-to-left, downward, in a circular counter-clockwise direction, etc.). In some embodiments, companion electronic device 204 determines that the activity transition is not accepted based on a timeout period (i.e., by determining that a period of time has elapsed since the presentation of the indication without the user performing an action to accept the indication/activity transition).
If the active transfer is not accepted (step 510, no), the process ends. It should be noted that in some embodiments, if the activity transfer is not accepted, companion electronic device 204 sends a message to source electronic device 202 to indicate that the activity transfer is not accepted. If the activity transfer is accepted (step 510, yes), companion electronic device 204 sends a message to source electronic device 202 requesting extended activity data for the activity performed in the first application (step 512). In general, the request for extended activity data includes information for facilitating the source electronic device 202 to determine the activity for which extended data is being requested. For example, in some embodiments, companion electronic device 204 includes an activity identifier from an activity advertisement message with a request for extended activity data.
Next, after receiving the extended activity data from the source electronic device 202 in response to the request for the extended activity data, the companion electronic device 204 configures a second application using the extended activity data (step 514). Configuring the second application may include launching/starting the second application, setting a state of the second application (or causing a state change) based on the extended activity data, and otherwise configuring the second application to perform a corresponding operation. For example, the companion electronic device 204 may communicate file/resource identifiers, information representing files/resources, and/or references to files/resources in the extended activity data to the second application to cause the second application to access the files/resources (e.g., identifiers of cloud-stored files/information representing the cloud-stored files/references to the cloud-stored files, identifiers of files/information representing the files/references to the files for the second application to access from a database, etc.). In some embodiments, when the activity includes writing a file stored at the source electronic device 202, the extended activity data includes the file or information representing the file, thereby enabling the companion electronic device 204 and/or the second application to use/regenerate the file at the companion electronic device 204 for the second application. In some embodiments, the extended activity data includes edits in the file, such as the location and/or content in the file where the edits were made. In some embodiments, the extended activity data includes location information, such as a last play/view/record location in the media file (i.e., a location in the media file where play or record stopped or last executed), a location of a flag in the file, a location/status of a game in the video game (e.g., a last level played, coordinates of where the player last was located, a winning score and/or achievement, and/or information that may be used to recreate a game status played on the source electronic device 202 at the companion electronic device 204), etc.
Next, the companion electronic device 204 begins executing an activity in the second application (step 516), which generally includes starting/launching the second application at the companion electronic device 204 (if the second application has not yet executed) and executing the second application at the companion electronic device 204 based on the extended activity data. For example, the companion electronic device 204 may cause the second application to begin executing in a viewing and/or editing mode for the file associated with the advertising campaign and may cause the second application to scroll to the last position in the file to view/edit the file at the source electronic device 202. Next, companion electronic device 204 sends a notification to source electronic device 202 indicating that the activity was transferred (step 518).
It should be noted that some embodiments may begin configuring the second application using information in the activity advertisement message (e.g., the activity identifier) while the extended activity data is being transmitted or even before the extended activity data is requested. Some of these embodiments use information in the active announcement message to set an initial context for the second application, set a mode for the second application (e.g., edit mode, read-only mode, email composition mode, notes composition mode, etc.). Thus, some embodiments may launch and/or configure a second application prior to receiving extended activity data (possibly once an activity transition is accepted), thereby improving performance in slow networks by hiding data transfer time at application launch time.
In some embodiments, the companion electronic device 204 sends the request for extended activity data using a signal different from the communication signal 208 and/or by using a communication channel/network interface different from the communication channel/network interface on which the activity advertisement message was received. For example, companion electronic device 204 may receive the activity advertisement message via a bluetooth link (using BLE protocol) and may request the extended activity material via a Wi-Fi link or the internet. In such embodiments, the source electronic device 202 and companion electronic device 204 use the communication signal 208 (e.g., a bluetooth link) to exchange information that enables the electronic devices to communicate via different communication channels/networks. For example, in some of these embodiments, companion electronic device 204 establishes an inter-peer network (e.g., a ad hoc Wi-Fi network) and provides information for accessing the inter-peer network to source electronic device 202. In some embodiments, the source electronic device 202 provides the extended activity data to the server and the companion electronic device 204 receives the extended activity data from the server, such as via the internet.
Transitioning to a receiving state based on advertisement information
Although we describe in fig. 5 embodiments of receiving an activity advertisement message (fig. 5, step 500) and determining whether the companion electronic device 204 is in a receiving state (fig. 5, step 502), some embodiments transition to a receiving state based on information in the received activity advertisement message. In some of these embodiments, after receiving the activity advertisement message (e.g., as shown in fig. 5, step 500), the companion electronic device 204 does not determine whether the companion electronic device 204 is in a receiving state, i.e., the processing illustrated in fig. 5 proceeds from step 500 to step 504 without performing the operations of step 502.
For example, in some embodiments, the source electronic device 202 uses a low power protocol, such as Bluetooth Low Energy (BLE), zigbee, etc., to broadcast the activity advertisement message via the corresponding communication signal 208. Devices such as companion electronic device 204 may monitor activity advertisement messages broadcast from source electronic device 202 using a corresponding low power mechanism, such as a corresponding baseband processor within a network interface, e.g., a baseband processor in network connection subsystem 106. In some of these embodiments, receipt of the activity advertisement message is handled by the companion electronic device 204 using only the baseband processor of the companion electronic device 204, which means that the companion electronic device 204 may otherwise be in an idle state (e.g., subsystems such as processing subsystems are in a low power state). For example, in some embodiments, the companion electronic device 204 may be a smart phone in an idle state in a user pocket in which the baseband processor monitors for active advertisement messages while the processing subsystem (and typically the companion electronic device 204) is in a low power state.
In some embodiments, upon such recognition of the active advertisement message, the baseband processor wakes up the processing subsystem (and may generally transition the companion electronic device 204 out of the idle operating state to a higher power/more active operating state) to perform subsequent operations. For example, in some embodiments, the companion electronic device 204 may monitor for and react to the activity announcement message as described in U.S. patent application in the application filed on even date herewith by the inventors Craig P.Dooley, akshay Mangalam Srivatsa, anjali s. Sandesara, and MICHAEL GILES, entitled "Operating Mode Transitions based on Advertising Information", having attorney docket No. APL-P22643USP1, and incorporated by reference as described above. In some embodiments, the companion electronic device 204/smart phone may not need to be removed from the user's pocket and activated to place the companion electronic device 204 in a receiving state.
Responding to requests for extended active data
FIG. 6 presents a flowchart illustrating a process for responding to a request for extended activity data in accordance with some embodiments. More particularly, during the processing procedure shown in FIG. 6, an electronic device, such as source electronic device 202, responds to a request for extended activity data from an electronic device, such as companion electronic device 204. It should be noted that the operations shown in fig. 6 are presented as a general example of operations performed by some embodiments. Operations performed by some embodiments may include different operations and/or operations performed in a different order. Additionally, while some mechanisms are used to describe operations (e.g., source electronic device 202, companion electronic device 204), in some embodiments other electronic devices and/or mechanisms perform the operations.
The process illustrated in FIG. 6 begins with the source electronic device 202 receiving a request for extended activity data (step 600), e.g., as described with reference to step 512 in FIG. 5, accompanied by a request for extended activity data transmitted by the electronic device 204.
Next, the source electronic device 202 uses the information in the request for extended activity data to determine that the request is for extended activity data for the first application (step 602). For example, as previously described, the request for extended activity data may include an activity identifier from an activity advertisement message (see step 308 in FIG. 3). In some embodiments, the source electronic device 202 performs a lookup of the activity identifier in an advertising activity table (or other structure in which the advertised activity information is stored; examples of advertising activity tables are described in greater detail below with reference to FIG. 12). When the source electronic device 202 discovers an input item in the advertised activity table that includes an activity identifier from the activity advertisement message, the source electronic device 202 may retrieve activity information for the input item to determine that the activity identifier corresponds to the first application, for example, by determining that the application identifier of the input item is the application identifier of the first application, (examples of activity information and application identifiers are described in more detail with reference to fig. 11-12).
Next, the source electronic device 202 sends a notification/request to the first application to perform an activity-related update, as needed (step 604). In some embodiments, the notification causes the first application to update the extended activity data before providing the extended activity data to the companion electronic device 204. For example, the first application may use the notification to update the last scroll/view position of the activity-related document and/or to perform activity-related completion operations prior to transferring the activity, such as storing the activity-related document, updating extended activity data with a recent draft of the activity-related document, and so forth.
Next, the source electronic device 202 retrieves extended activity data for the first application (step 606). In some embodiments, the source electronic device 202 requests the first application to provide extended activity data. In some embodiments, the first application provides the extended activity along with some or all of the initial activity information (see fig. 3, step 300) and/or periodically reports the extended activity information (e.g., reports every N seconds, where N is a number such as 1,3, etc.), reports the extended activity information whenever the first application has an event, such as when a file is stored in the first application, the movie being viewed is paused in the first application, etc.
Next, the source electronic device 202 sends the extended activity data to the companion electronic device 204 (step 608). In general, the extended activity data includes information that may be used to configure the second application to continue the activity, such as a file identifier that identifies a file (and/or information representing the file, such as a reference to the file) for the activity performed in the first application, a Uniform Resource Location (URL) of a web page accessed/browsed in the first application (and/or information representing a web page/URL, such as a reference to a web page/URL), location information (e.g., an indication of a last view/scroll location in the file or web page, a last played location in a video game, etc.), a copy of a draft file (and/or information representing a draft file, such as a reference to a draft file) stored at the source electronic device 202 and/or in a storage device accessible over the internet (e.g., a "cloud storage") or corporate network, and the like.
Next, the source electronic device 202 receives a notification that activity was transferred (step 610), such as a notification sent by the companion electronic device 204 as described with reference to step 518 of FIG. 5. In some embodiments, in response to receiving the notification, the source electronic device 202 notifies the first application that activity is transferred (step 612). In some embodiments, the source electronic device 202 and/or the first application perform one or more operations related to the activity based on receiving the notification, such as deleting a locally stored file/file draft, closing an open file, closing a housekeeping task of the application, and the like.
In some embodiments, the source electronic device 202 provides the extended activity data using a signal other than the communication signal 208 and/or by using a communication channel/network interface other than the communication channel/network interface over which the activity advertisement message and/or the request for the extended activity data is communicated. For example, the source electronic device 202 may receive a request for extended activity data via a bluetooth link and may provide the extended activity data via a Wi-Fi link or the internet.
Secure communication using cloud pairing
As discussed earlier, in some embodiments, the electronic device performing the active transfer operation participates in a pre-pairing operation, such as a "cloud pairing" operation, such as the predefined pairing described by inventors jamon C.Conn, akshay Mangalam Srivatsa, craig P. Dooley, and MICHAEL GILES in U.S. patent application serial No. 5, entitled "PREDEFINED WIRELESS PAIRING," which has attorney docket No. APL-P22642USP1, the contents of which are incorporated by reference as described above. In some embodiments, the electronic devices encrypt and decrypt messages exchanged with each other for performing the active transfer operation using security information acquired during the cloud pairing operation (e.g., using encryption keys acquired during the cloud pairing operation).
For example, in some embodiments, the source electronic device 202 encrypts the campaign advertisement message (see fig. 3, step 310) and/or the extended campaign profile (see fig. 6, step 608) using the encryption key acquired during the cloud pairing operation performed by the source electronic device 202 with the companion electronic device 204. In some embodiments, companion electronic device 204 encrypts requests for extended activity data (see fig. 5, step 512) and/or notifications that activity is transferred (see fig. 5, step 518) using the same security information, different security information acquired during a cloud pairing operation performed by companion electronic device 204 with source electronic device 202, and/or information obtained from the security information acquired during the cloud pairing operation.
Determining a second application using an activity identifier
As previously described, in some embodiments, the electronic device determines whether a second application associated with the first application is available in the electronic device (to facilitate a possible transfer of activity to the electronic device). FIG. 7 presents a flowchart illustrating a process for determining whether a second application is available at the companion electronic device 204, in accordance with some embodiments. The operations shown in fig. 7 may be performed during the processing procedure shown in fig. 5, e.g., at step 504. It should be noted that the operations shown in fig. 7 are presented as a general example of operations performed by some embodiments. Operations performed by some embodiments may include different operations and/or operations performed in a different order. Additionally, while some mechanisms are used to describe operations (e.g., accompanying electronic device 204, etc.), in some embodiments other mechanisms perform operations. For example, one or both of the source electronic device 202 and the second source electronic device 206 may perform similar operations to themselves determine whether the second application is available.
The process illustrated in fig. 7 begins with the companion electronic device 204 determining whether a flag in the activity advertisement message is asserted (step 700). As previously described, in some embodiments, the source electronic device 202 validates the flag in the activity advertisement message to indicate that the activity identifier is/includes a representation of the domain name for the advertised activity. In some of these embodiments, the companion electronic device 204 determines that the activity advertisement message includes a representation of the domain name by determining that the flag is asserted. The markers are described in more detail later in this specification, for example with reference to fig. 11 and 13.
If the flag in the campaign advertisement message is asserted (step 700, yes), the companion electronic device 204 processes the flag (step 702). The processing of the flag that occurs at step 702 is described later with reference to fig. 8. Some embodiments repeat step 702 (i.e., the process described with reference to fig. 8) for each validation token in the active advertisement message, such as repeating the process for each validation token when the active advertisement message includes two or more validation tokens.
If the activity advertisement message does not include a validated flag (step 700, no), the companion electronic device 204 compares the activity identifier from the activity advertisement message with the activity identifier for the activity available at the companion electronic device 204 (step 704). For example, the companion electronic device 204 may look up the campaign identifier from the campaign announcement message in the campaign identifier in a table of available campaigns at the companion electronic device 204 (or other structure in which the companion electronic device 204 stores available campaign information, as described above with reference to fig. 4).
If the lookup activity identifier finds a match in an entry in the available activity table (step 706, yes), then companion electronic device 204 determines that the second application is the application whose activity identifier is stored in that entry (step 708).
If the lookup activity identifier does not find a match in the available activity information (step 706, no), the companion electronic device 204 determines that the application associated with the first application is not available at the companion electronic device 204 (step 710).
Determining a second application using a flag
As previously described, some embodiments validate flags in an activity advertisement message. FIG. 8 presents a flowchart illustrating a process for determining a second application using a flag, in accordance with some embodiments. More particularly, FIG. 8 presents a flowchart illustrating the processing procedure performed by the companion electronic device 204 at step 702 of FIG. 7. It should be noted that the operations illustrated in fig. 8 are presented as a general example of operations performed by some embodiments. Operations performed by some embodiments may include different operations and/or operations performed in a different order. Additionally, while some mechanisms are used to describe operations (e.g., accompanying electronic device 204, etc.), in some embodiments other mechanisms perform operations. For example, one or both of the source electronic device 202 and the second source electronic device 206 may themselves perform similar operations.
The process shown in FIG. 8 begins with the companion electronic device 204 determining an application corresponding to the flag (step 800). In some embodiments, companion electronic device 204 uses the location of the validation token and/or the value of the token to determine the application corresponding to the token. For example, when the activity advertisement message includes more than one flag that can be validated, each of the flags may be used to identify different applications that may be used to continue the activity. In some embodiments, the flag is a multi-bit field and different values of the multi-bit field identify different applications. In some embodiments, companion electronic device 204 stores an image of the application to which the location/value of the identification tag corresponds.
Next, the companion electronic device 204 determines whether an application corresponding to the flag is available at the companion electronic device 204 (step 802). For example, the companion electronic device 204 may check whether an application corresponding to the flag is installed at the companion electronic device 204. In some embodiments, step 802 is not performed/skipped, such that the process shown in FIG. 8 continues from step 800 to step 804. For example, step 802 is not performed in embodiments that use a flag to identify only pre-installed applications that are known to be available at companion electronic device 204 and that are not uninstallable by a user.
If the application corresponding to the flag is available (step 802, yes), the companion electronic device 204 determines that the second application is the application corresponding to the flag (step 804). The process then ends, which may include continuing with step 506 in FIG. 5.
If the application corresponding to the flag is not available at the companion electronic device 204 (step 802, no), the process ends. At this point, the companion electronic device 204 may determine that the second application is not available (e.g., NO in step 504 of FIG. 5), or may proceed to step 704 of FIG. 7 to determine whether the second application is available by using the activity identifier from the activity advertisement message.
In some embodiments, the process shown in FIG. 8 allows applications other than the first application to continue to be active at companion electronic device 204. For example, consider the case where the first application is a web browser and the activity performed in the first application includes browsing a social media website. In this example, the second application may be a social media app that accesses resources (e.g., social media user pages, etc.) accessed in the first application/web browser (i.e., the second application is an app and not a web browser). By using the flag, such embodiments may configure the social media app to continue the activity performed at the social media website at the same point that the web browser stopped. As another example, in some embodiments, the first application is a stand-alone media streaming app (such as a media player app) that streams movies from a website and the second application is a web browser that can stream movies. By using the flag, these embodiments configure the web browser to continue playing the movie, which may include using the extended activity data for the activity to cause the web browser to continue playing the movie where the media streaming app stopped.
In some embodiments, the source electronic device 202 sets a second flag (or a different value for the flag) in the activity advertisement message to indicate that the source electronic device 202 will then provide instructions/information regarding how to continue activity at the companion electronic device 204. In some embodiments, the application corresponding to the flag includes instructions/information regarding how to continue activity at the companion electronic device 204. In some embodiments, the extended activity data provides instructions/information for continuing activity at the companion electronic device 204.
Determining a second application using a structure of storage advertisement activities
As previously described with reference to FIG. 3, in some embodiments, an activity identifier in an activity advertisement message identifies an entry in a structure (e.g., a table) in which an electronic device advertising an activity stores activity information for advertising the activity. FIG. 9 presents a flowchart illustrating a process for determining whether a second application is available when an activity identifier identifies an input item in this structure, in accordance with some embodiments. More particularly, during the process shown in FIG. 9, the companion electronic device 204 uses an activity identifier that identifies an input item in a bulletin activity table (in which the source electronic device 202 stores activity information for bulletin activities) to determine whether a second application associated with the first application is available at the companion electronic device 204 (examples of bulletin activity tables are described in greater detail below with reference to FIG. 12). It should be noted that the operations shown in fig. 9 are presented as a general example of operations performed by some embodiments. Operations performed by some embodiments may include different operations and/or operations performed in a different order. Additionally, while some mechanisms are used to describe operations (e.g., source electronic device 202, companion electronic device 204), in some embodiments other electronic devices and/or mechanisms perform the operations.
The process illustrated in FIG. 9 begins with the companion electronic device 204 receiving an activity identifier identifying an entry in an advertising activity table in which the source electronic device 202 stores activity information for advertising activities (step 900). In some embodiments, the activity identifier includes a table identifier that identifies an advertising activity table in which the source electronic device 202 stores activity information for advertising activities, and an input item index that identifies an input item in the advertising activity table identified by the table identifier that stores activity information for advertising activities. In some embodiments, the table identifier is a hash of the bulletin activity table data.
Next, the companion electronic device 204 determines whether a bulletin hotlist for the hotidentifier is available at the companion electronic device 204 (step 902). In some embodiments, the companion electronic device 204 uses a table identifier from the activity identifier to determine whether the companion electronic device 204 stores a local copy of the advertising activity table.
If the advertising campaign table for the campaign identifier is not available at the companion electronic device 204 (step 902, no), the companion electronic device 204 retrieves the advertising campaign table from the source electronic device 202 (step 904). In some embodiments, the companion electronic device 204 requests the source electronic device 202 to send an advertising hotlist identified by an activity identifier from the activity advertisement message, such as an advertising hotlist identified by a table identifier. Using the communication signal 208 and/or a different communication signal/different channel, the companion electronic device 204 may transmit the request and the source electronic device 202 may respond to the request.
In some embodiments, the companion electronic device 204 periodically synchronizes its local copy/copies of the advertising campaign table with the source electronic device 202. For example, the companion electronic device 204 may receive a copy of the advertisement hotlist from the source electronic device 202 using a "push" mechanism (i.e., without sending a request for a copy of the advertisement hotlist).
If the advertising campaign table for the campaign identifier is available at the companion electronic device 204 (step 902, yes), or after receiving the advertising campaign table from the source electronic device 202, the companion electronic device 204 uses the campaign identifier to retrieve campaign information from the advertising campaign table (step 906). For example, the companion electronic device 204 may retrieve activity information from the input items in the bulletin activity table identified by the input item index.
In some embodiments, the operations shown in fig. 9 enable information describing more than one campaign to be advertised in a single campaign advertisement message. For example, consider a case in which the size of the campaign advertisement message is limited, for example, due to limitations of the network protocol used to broadcast the campaign advertisement message. In this case, the input item identifier (i.e., the activity identifier that identifies the input item in which the activity information is stored) may be smaller than the encoded representation (i.e., the activity identifier generated from the same activity information) (e.g., represented using fewer bits than the activity identifier), enabling such embodiments to carry multiple input item identifiers in the activity advertisement message.
As previously described with reference to fig. 3, the described embodiments are not limited to use of a table for storing available activity information. Some embodiments use different structures for storing available activity information, such as associative arrays, content addressable memories, and the like. In such embodiments, the activity identifier may identify an input item in a structure in which the source electronic device 202 stores activity information for advertising the activity. For example, in such embodiments, the table identifier may identify a structure and the input item index may identify an index in the structure in which the source electronic device 202 stores activity information for advertising the activity.
In addition, although we describe embodiments using one bulletin hotlist, some embodiments use more than one bulletin hotlist, e.g., store the hotinformation for bulletin hotlist in different bulletin hotlist.
Determining recent activity
As previously described, the network environment 200 may include a second source electronic device that may broadcast an activity advertisement message for an activity performed at the second source electronic device. Also as described earlier, some embodiments include a timestamp in the activity advertisement message to indicate when the activity advertised in the activity advertisement message was last performed. FIG. 10 presents a flowchart illustrating a process for determining a recent activity from two or more activity advertisement messages, in accordance with some embodiments. More particularly, during the process illustrated in fig. 10, the companion electronic device 204 uses the timestamp included with the advertisement from the source electronic device 202 ("activity advertisement") and the timestamp included with the advertisement from the second source electronic device 206 ("second activity advertisement") to determine the nearest one of the activities advertised in the activity advertisement and the second activity advertisement. It should be noted that the operations shown in fig. 10 are presented as a general example of operations performed by some embodiments. Operations performed by some embodiments may include different operations and/or operations performed in a different order. Additionally, while some mechanisms are used to describe operations (e.g., source electronic device 202, companion electronic device 204, second source electronic device 206), in some embodiments other electronic devices and/or mechanisms perform operations.
For the process illustrated in FIG. 10, assume that companion electronic device 204 has received an activity advertisement from source electronic device 202, for example as shown in FIG. 5. Thus, the companion electronic device 204 has an activity advertisement including a first timestamp included with the activity advertisement.
The process shown in FIG. 10 begins with the companion electronic device 204 receiving a second activity advertisement (step 1000). Next, the companion electronic device 204 compares the first timestamp included in the activity advertisement with the second timestamp included in the second activity advertisement (step 1002). For example, companion electronic device 204 may compare the timestamps to see which is newer (i.e., indicate the most recent time).
If the comparison indicates that the first timestamp is newer (step 1004, yes), the companion electronic device determines that the activity performed in the first application (i.e., the activity advertised in the activity advertisement) is the most recent activity (step 1006). Otherwise, if the comparison indicates that the second timestamp is newer (step 1004, no), the companion electronic device 204 determines that the activity performed in the second application (i.e., the activity advertised in the second activity advertisement) is the most recent activity (step 1008).
In some embodiments, the companion electronic device 204 reduces the number of indications presented to the user in the display of the companion electronic device 204 (e.g., as shown in fig. 14) by presenting an indication that the activity is recoverable only for the nearest to the advertising activity. In some embodiments, companion electronic device 204 uses the time stamp to present an indication of recoverable activities in order, such as first presenting a most recent activity followed by presenting other advertising activities in descending order based on relative recency. In such embodiments, two or more indications may be juxtaposed, one above the other, etc., depending on the relative recency of the corresponding activity.
In some embodiments, companion electronic device 204 uses the history of previously continued activities to present indications of recoverable activities in order. In some embodiments, companion electronic device 204 orders the previously continued activity earlier, i.e., presents an indication of the recoverable previously continued activity prior to an indication of the recoverable previously unextended activity. In some embodiments, two or more indications are presented in an order based on the number of times each of the corresponding activities has been previously continued.
Activity information
As previously described, some embodiments use activity information describing an activity performed at the electronic device. Fig. 11 presents a block diagram illustrating activity information 1100, activity information 1110, and activity information 1120, in accordance with some embodiments. It should be noted that activity information 1100, activity information 1110, and activity information 1120 shown in fig. 11 are presented as general examples of formats of activity information used by some embodiments. Some embodiments use different formats and/or different information included in the activity information.
The activity information 1100 includes an application identifier 1102 that identifies an application for performing the activity described in the activity information 1100. For example, the application identifier 1102 (which includes a string com. Apple. Keynote) identifies the application Keynote, which is an application that can be used to edit and view a presentation. The activity descriptor 1104 includes a string EditPresentation that identifies the activity performed using the application Keynote as editing the presentation. The timestamp 1106 (which includes the string/number 103) identifies the time at which the activity was last performed, e.g., the last time the user edited the presentation in the application Keynote. The timestamp may indicate the actual time at which the activity was last performed (e.g., wall clock time (or a representation thereof, such as system time)), or it may be a representation of the time elapsed since the activity was last performed after the full point or since the synchronization event. In some embodiments, the timestamp indicates the actual time (e.g., absolute/wall-clock time (or a representation thereof, such as system time)) that the source electronic device 202 was last used (e.g., last used actively by the user), or it may be a representation of the time elapsed since the source electronic device 202 was last used for a synchronization event or since the synchronization event. In the activity information 1100, the flag 1108 is not asserted.
The activity information 1110 includes an application identifier 1112 that identifies an application for performing the activity described in the activity information 1110. For example, application identifier 1112 (which includes a string com. Apple. Mail) identifies application Mail (an application that may be used to compose and send an email message). The activity descriptor 1114 includes a string ComposeDraft to identify the activity performed using the application Mail includes writing a message draft. The timestamp 1116 (which includes the string/number 315) identifies the time at which the activity was last performed, e.g., the last time the user was writing a draft using Mail. The flag 1118 for the activity information 1110 is not asserted.
The activity information 1120 includes an application identifier 1122 that identifies an application for performing the activity described in the activity information 1120. For example, the application identifier 1122 (which includes a string com.apple.safari) identifies the application Safari (web browser). The activity descriptor 1124 includes a string www.evideostreamer.com that identifies the domain name accessed using the web browser. In this example, the activity descriptor 1124 holds a domain name, so the flag 1128 in the activity information 1120 is a validated flag 1128 to indicate that the activity description 1124 includes a domain name. Timestamp 1126 (which includes string/number 820) identifies the time the web browser last used to access the mobile streaming website.
The activity information 1130 includes an application identifier 1132 that identifies an application for performing the activity described in the activity information 1130. For example, the application identifier 1132 (which includes a string com. Company a. MediaPlayer) identifies an application MediaPlayer (which in this example is developed by developer CompanyA) (which is an application that can be used to play and record multimedia content). The activity descriptor 1134 includes a string PlayVideo to identify that the activity performed using the application MediaPlayer includes playing video (i.e., video playing). The timestamp 1136 (which includes the string/number 902) identifies the time at which the activity was last performed, e.g., the last time the user played the video using the MediaPlayer. The flag 1138 for the activity information 1130 is not asserted.
For purposes of illustration, the time stamps shown in fig. 11 are calculated as increments (differences) from the synchronization event (e.g., the full point). Thus, in the example shown in FIG. 11, the activity described using activity information 1100 is the most recent activity because timestamp 1106 indicates that the least amount of time has elapsed since the activity described using activity information 1100 was performed.
It should be noted that although the example shown in FIG. 11 uses strings for application identifiers and activity descriptors, some embodiments may use different information to identify applications and/or activities. For example, some embodiments use a numeric identifier for an application identifier and/or an activity descriptor. In some embodiments, the application identifier is an identifier of the corresponding application in the online "app store". In some embodiments, the application identifier includes some or all of a bundle identifier (e.g., a bundle ID). In addition, although the application identifier is shown separate from the activity descriptor, some embodiments combine the application identifier and the activity descriptor in a single identifier.
In some embodiments, the application/app developer provides information for activity descriptors, such as activity descriptor 1104, activity descriptor 1114, activity descriptor 1124, and activity descriptor 1134. In such embodiments, a developer of the application/app may determine several activities for the application/app and may provide relevant values for the activity descriptor.
Bulletin activity table
Fig. 12 presents a block diagram illustrating an advertising campaign table 1200 in accordance with some embodiments. As described above, the advertisement activity table 1200 includes information regarding activities that have been advertised (i.e., activities whose activity advertisement messages have been sent by an electronic device such as the source electronic device 202). It should be noted that the bulletin hotlist shown in fig. 12 is presented as a general example of bulletin hotlist used by some embodiments. Some embodiments represent the activity information differently and/or include more or less information in the bulletin activity table.
The input item 1202 (which is identified by the input item index 1206) stores activity information 1100 and an activity identifier 1204. In this example, the activity identifier 1204 is generated using the application identifier 1102 and an activity descriptor 1104 (such as a hash of the string "com apple. Keynote:: editPresentation").
The input item 1212 (which is identified by the input item index 1216) stores activity information 1110 and an activity identifier 1214. In this example, the activity identifier 1214 is generated using an application identifier 1112 and an activity descriptor 1114 (such as a hash of the string "com apple. Mail:: composeDraft").
Input item 1222, which is identified by input item index 1226, stores activity information 1120 and activity identifier 1224. In this example, an activity descriptor 1124 (such as a hash of string www.evideostreamer.com) is used to generate an activity identifier 1224.
Input item 1232 (which is identified by input item index 1236) stores activity information 1130 and activity identifier 1234. In this example, the activity identifier 1234 is generated using an application identifier 1132 and an activity descriptor 1134 (such as a hash of the string "com. Company A. MediaPlayer:: playVideo").
For purposes of illustration, the input items 1202-1232 store all activity information 1100-1130, respectively. However, it should be noted that in some embodiments, input items 1202 through 1232 store only some of activity information 1100 through 1130, respectively. For example, some embodiments do not store timestamps 1106 to 1136 in the input items 1202 to 1232.
Available activity table
In some embodiments, the above-described available hotlist is formatted similar to the bulletin hotlist 1200 shown in FIG. 12. However, the entries in the available hotlist include application information for applications available in the corresponding electronic device (e.g., companion electronic device 204).
Active advertisement message
Fig. 13 presents a block diagram illustrating an activity advertisement 1300 (e.g., an activity advertisement message) in accordance with some embodiments. It should be noted that the campaign advertisement message shown in fig. 13 is presented as a general example of a campaign advertisement message used by some embodiments. Some embodiments sequence fields in the campaign advertisement message differently and/or include different information in the campaign advertisement message.
The active advertisement message 1300 optionally includes a device ID field 1302 and a revision ID field 1304. The device ID field 1302 includes an identifier that identifies the device from which the active advertisement message 1300 was sent (e.g., identifies the source electronic device 202). Version ID field 1304 includes a version identifier, such as a version identifier that companion electronic device 204 may use to determine how fields in activity information 1300 are formatted and/or how information is stored in the fields.
The activity identifier field 1306 includes an activity identifier, such as one or more of the activity identifiers 1204-1224. The flag field 1308 includes one or more flags corresponding to advertising activities, such as flags 1108 through 1128.
The timestamp field 1310 includes a timestamp, such as one or more of timestamps 1106-1126, for the activity advertised in the activity identifier field 1306.
Recoverable activity indication
As previously described, some embodiments present an indication that the activity is recoverable before requesting extended activity data. FIG. 14 presents a block diagram illustrating recoverable activity indications (i.e., indications that activity is recoverable) according to some embodiments. More particularly, FIG. 14 shows a recoverable activity indication displayed on a display 1400 of the companion electronic device 204. It should be noted that the recoverable activity indication shown in FIG. 14 is presented as a general example of a recoverable activity indication used by some embodiments. Some embodiments use different recoverable activity indications and/or present recoverable activity indications in different ways.
In the illustrated embodiment, the companion electronic device 204 is a smart phone that includes a touch screen display 1400. The embodiment shown in fig. 14 is in the receive state because display 1400 shows a lock screen with unlock indicator 1402 (which shows the phrase "slide to unlock"). In general, a user of the companion electronic device 204 performs an operation using the unlock indicator 1402 to unlock the companion electronic device 204, such as sliding a graphic of the unlock indicator 1402 across the display 1400 using a finger.
Recoverable activity indication 1404 includes a graphic (e.g., an icon) that the user can manipulate to accept (or reject) the transfer of activity. In fig. 14, recoverable activity indication 1404 includes a diagram similar to an envelope, indicating that recoverable activity includes using a mail application. In some embodiments, the user may accept the activity transfer by clicking/touching on the recoverable activity indicator 1404 and/or by moving the recoverable activity indicator 1404 along a path on the display 1400. For example, in some embodiments, the user may accept the activity transfer by touching and dragging the recoverable activity indicator 1404 along or near the path 1406 (shown as a dashed line).
For purposes of illustration, the recoverable activity indication 1404 is shown at a lock screen accompanying the electronic device 204. In some embodiments, the recoverable activity indication 1404 may be presented at a different screen/location (e.g., at an unlock screen, at a menu bar, by using a notification window/quick display, etc.). Additionally, the location, size, graphics, color, and/or other visual characteristics of the recoverable activity indication 1404 may vary for different embodiments and may depend on the type of recoverable activity. For example, in some embodiments, companion electronic device 204 determines the graphic shown in recoverable activity indication 1404 based on the application identifier used to advertise the activity. As another example, in some embodiments, the recoverable activity indication 1404 is shown at the lower left corner of the display 1400. Some embodiments present multiple recoverable activity indicators simultaneously.
Note that the acceptance (or rejection) of the activity transfer may include moving the recoverable activity indication 1404 along a path other than path 1406 (e.g., to the top of a screen, along a curved path, etc.). In some embodiments, the user may accept the transfer of activity by clicking on the recoverable activity indicator 1404, by tapping on the recoverable activity indicator 1404, by sliding the recoverable activity indicator 1404, by performing a gesture using the recoverable activity indicator 1404, or the like.
Automatic and manual activity bulletin
In some embodiments, the source electronic device 202 automatically broadcasts the activity announcements, e.g., at predetermined time intervals, upon receipt of the activity information, based on a detected location of the source electronic device 202, etc. In such embodiments, the source electronic device 202 may provide settings, such as system preferences, that a user may use to turn the broadcast of the activity announcements on or off.
In some embodiments, the source electronic device 202 manually starts broadcasting the active announcements, i.e., waits for input from the user to start broadcasting the active announcements. In some of these embodiments, the source electronic device 202 begins broadcasting the active advertisement after detecting the user's input and continues broadcasting the active advertisement for a predetermined period of time and/or until the user provides input that causes the source electronic device 202 to cease active advertisement. In some embodiments, the user input for starting and/or stopping the activity bulletin includes movement of the source electronic device 202 (e.g., shaking the source electronic device 202, moving the source electronic device 202 in an arc, swinging the source electronic device 202, etc.), performing one or more gestures on a touch screen of the source electronic device 202, pressing keys and/or button combinations, etc.
In some embodiments, the activity advertisement message and/or the message sent by the source electronic device 202 to the companion electronic device 204 along with (i.e., in addition to) the activity advertisement message causes the companion electronic device 204 to initiate a timer. In some embodiments, companion electronic device 204 remains in the receiving state as described above until such timer expires. The source electronic device 202 may provide the expiration time of the timer to the companion electronic device 204, or the companion electronic device 204 may determine the expiration time.
In some embodiments, the companion electronic device 204 presents an indication that the activity is recoverable until the timer expires, and if the user accepts the indication, the activity continues at the companion electronic device 204 without the user performing one or more operations (e.g., fingerprint scanning, password entry, etc.) to unlock the companion electronic device 204. More particularly, the companion electronic device 204 may detect that the user accepts the indication and may bypass the lock screen/unlock operation, allowing the user to begin using the companion electronic device 204 without unlocking the companion electronic device 204. In some embodiments, the user is allowed to bypass the lock screen/unlock operation just before the timer expires.
Movable continuous framework
In some embodiments, the third party application receives access to some or all of the activity transfer operations (e.g., the operations described earlier with reference to fig. 3-10) via an "activity continuation" framework available at the electronic device that may be involved in the activity transfer operations. The activity continuation framework may provide third party applications with access to operating system functions, sprite assisted programs, handlers, services, and the like, which perform at least some of the activity transfer operations. For example, in some embodiments, the electronic device and/or a provider of an operating system of the electronic device provides an Application Programming Interface (API) via which third party applications may call functions that facilitate activity transfer operations. In some embodiments, the activity continuation framework enables third party applications (and third party application developers) to transfer activity from one electronic device to another without implementing (or even knowing about) the low-level details of activity continuation.
For example, in some embodiments, to enable a third party application to participate in an activity transfer operation, a third party application developer provides an activity descriptor for an activity executable by the third party application and a method of configuring the third party application to perform the activity. In some of these embodiments, at an electronic device, such as source electronic device 202, a third party application invokes a function provided by the activity continuation framework to provide an activity descriptor (and possibly extended activity data) for an activity executing in the third party application. At an electronic device, such as companion electronic device 204, to configure a third party application to perform an activity, the activity continuation framework may pass extended activity data to the third party application (e.g., via a command line switch or parameter, by using an object, etc.). Thus, the campaign continuation framework may facilitate the continuation of the campaign for the third party application with minimal effort and expense for the third party application developer.
Exchanging messages between electronic devices
FIG. 15 presents a swim lane diagram illustrating messages exchanged between electronic devices, in accordance with some embodiments. As can be seen in fig. 15, messages are exchanged between the source electronic device 202 and the companion electronic device 204 over a period of time, with the activity advertisement 1500 appearing first and the lower messages appearing later. Although fig. 15 is shown with messages exchanged in a particular order, in some embodiments, other messages are exchanged and/or messages are exchanged in a different order. In general, the electronic devices in the described embodiments exchange sufficient messages to effect the operations described herein.
The messages in fig. 15 are associated with two operations performed by the source electronic device 202 and/or the companion electronic device 204. The first operation (which includes advertisement 1500) is an active advertisement operation such as that shown in fig. 3. During the campaign advertisement operation, the source electronic device 202 broadcasts at least one campaign advertisement 1500.
The second operation, which includes a request 1502 for extended activity data, extended activity data 1504, and notification 1506 of an activity transfer, is an activity transfer operation such as that shown in fig. 5-6. During an activity transfer operation, the companion electronic device 204 responds to the activity advertisement 1500 with a request 1502 for extended activity data. Upon receiving the request 1502 for extended activity data, the source electronic device 202 responds by sending the extended activity data 1504. In some embodiments, after the companion electronic device 204 uses the extended activity data to begin performing the activity at the second application, the companion electronic device 204 sends a notification 1506 of the activity transfer to let the source electronic device 202 know that the activity was transferred.
Forwarding activity-related information
As described above, in some embodiments, a source electronic device (e.g., source electronic device 202) forwards information related to an activity to a companion electronic device (e.g., companion electronic device 204). Generally, information related to an activity includes any information that may be used when performing an activity (e.g., transferring to an activity with an electronic device or another activity performed on an electronic device as described herein). For example, activity-related information includes, but is not limited to, information from copies and clipboards in the source electronic device 202 (e.g., text, images, video, sound, settings, files, etc.), an earlier version of the file, content of a undo buffer that holds records of changes made by the user to the system that may be used to reverse the changes, etc.), and/or other types of information. Upon receiving the activity-related information, the companion electronic device may use the activity-related information for one or more activities. For example, when the activity-related information includes the contents of the revocation buffer, the companion electronic device may update the local revocation buffer (i.e., the revocation buffer in the companion electronic device) using the contents of the revocation buffer received from the source electronic device. For example, the undo buffer may include a list of the last N operations performed when editing the file, the list being configured to enable the inversion or "undo" operations using a menu, hotkey combination, etc. while the file is subsequently edited. In this way, the companion electronic device may configure itself to effect reversal or reversal of operations previously performed on the source electronic device.
FIG. 17 presents a flowchart illustrating a process for forwarding activity-related information from a source electronic device to a companion electronic device, in accordance with some embodiments. More particularly, FIG. 17 illustrates an embodiment in which the source electronic device 202 forwards information related to the activity to the companion electronic device 204 using an advertisement message. It should be noted that the operations shown in fig. 17 are presented as a general example of operations performed by some embodiments. Operations performed by some embodiments may include different operations and/or operations performed in a different order. Additionally, while some mechanisms are used to describe operations (e.g., accompanying electronic device 204, etc.), in some embodiments other mechanisms perform operations.
For the process shown in FIG. 17, the contents of the clipboard in the source electronic device 202 are used as activity-related information. However, in some embodiments, and as described above, other types of activity-related information may be forwarded from source electronic device 202. In addition, "clipboard" as used herein indicates a copy in the corresponding device and a clipboard is attached. In some embodiments, the clipboard is a software service (e.g., operating system software service, stand-alone application, etc.) that provides for temporary storage of information in an electronic device. Clipboard enables a user to perform operations such as copying, taping, cutting, etc. to interact with information. Such clipboards are generally known in the art and thus are not described in greater detail herein.
The process illustrated in fig. 17 begins with the source electronic device 202 determining that activity-related information is available for forwarding to the companion electronic device 204 (step 1700). For example, based on receiving the activity information described above (see, e.g., step 300 in fig. 3), the source electronic device 202 may perform one or more checks and determine that activity-related information is available. As another example, after receiving an indication that a user has performed a copy operation to copy information (e.g., copy text, files, images, etc.) to a clipboard, source electronic device 202 may determine that information related to the activity is available. As another example, the source electronic device 202 may monitor various operations performed in the source electronic device 202 as part of performing the activity and may directly or indirectly determine that information related to the activity has become available. As described above, for the example in fig. 17, the content of the clipboard is activity-related information. The source electronic device 202 thus determines in step 1700 that there are one or more duplicate items placed there on the clipboard when performing the current activity.
The source electronic device 202 then generates an information advertisement related to the activity (step 1702). In general, the activity-related information bulletins include sufficient information to enable the companion electronic device 204 (and possibly other devices receiving the activity-related information bulletins) to determine that the activity-related information is of interest and process the activity-related information. Continuing with the clipboard example, the source electronic device 202 may generate an activity-related information advertisement that enables the companion electronic device 204 to determine that activity-related information described in the activity-related information advertisement (i.e., the content of the clipboard from the source electronic device 202) is of interest to the companion electronic device 204 and update the clipboard in the companion electronic device 204 using the content of the clipboard from the source electronic device 202 or based on the content of the clipboard from the source electronic device 202.
Fig. 18 presents a block diagram illustrating an activity-related information advertisement 1800 generated by the source electronic device 202 in accordance with some embodiments. The activity-related information advertisement 1800 optionally includes a device ID field 1802, a revision ID field 1804, an activity identifier field 1806, and a timestamp field 1808. The device ID field 1802 includes an identifier that identifies the device from which the activity-related information advertisement 1800 was sent (e.g., identifies the source electronic device 202). The version ID field 1804 includes a version identifier, such as a version identifier that the companion electronic device 204 may use to determine how fields in the activity-related information bulletin 1800 are formatted and/or how information is stored in the fields. The activity identifier field 1806 includes an activity identifier, such as one or more of the activity identifiers 1204-1224, that identifies an activity with which the corresponding activity-related information is associated. The timestamp field 1808 includes a timestamp for the activity advertised in the activity identifier field 1806. As described above, the time stamp may be used to address the order in which two or more activity-related information bulletins 1800 are handled, which activity-related information bulletins 1800 are ignored, and so on.
The activity-related information field 1810 includes activity-related information and/or information based on, obtained from, or otherwise identifying activity-related information. Continuing with the above example, in some embodiments, the source electronic device 202 includes some or all of the actual content from the clipboard in the source electronic device 202 in the activity-related information field 1810. For example, if a section of text was recently copied to the clipboard, the section of text (i.e., the text itself), possibly with post-data including formatting, time stamping, version information, etc., may be included in the activity-related information field 1810. As another example, if sections, images, and files of text are individually copied to clipboard during one or more copy operations, some or all of the sections, images, and files of text (possibly with corresponding post-data) may be included in the activity-related information field 1810.
As another example, in embodiments in which the source electronic device 202 includes information based on the activity-related information in the activity-related information field 1810, information obtained therefrom, etc., the source electronic device 202 may include compressed information, representative information, information that may be used to derive the activity-related information, and/or other information based on or associated with the activity-related information in the activity-related information field 1810. For example, the source electronic device 202 may include an indication that the information is available (e.g., a pointer, tag, identifier, reference, and/or other indicator) (possibly including a basic identification of the type of information), but not include the actual activity-related information itself in the activity-related information bulletin 1800. In such embodiments, the companion electronic device 204 may perform one or more operations for retrieving the activity-related information indicated in the activity-related information bulletin 1800. For example, assuming that the source electronic device 202 includes a pointer to the activity-related information in the activity-related information field 1810, the companion electronic device 204 may retrieve the activity-related information indicated by the pointer from the source electronic device 202 via one or more corresponding independent communications.
In some embodiments, information based on the activity-related information, information obtained therefrom, etc., may be included in the activity-related information field 1810 in addition to some or all of the actual activity-related information. Continuing with the clipboard example, assuming that a small segment of text (100 bytes) and a larger image (4 MB) are copied to the clipboard in the source electronic device 202, the source electronic device 202 may include the small segment of text (and possibly corresponding post-amble data) in the activity-related information field 1810, but may include only a reference to the image. The companion electronic device 204 may then use the references to request an image as described above. In some embodiments, the size of the activity-related information is used to determine whether the activity-related information or information based thereon is to be included in the activity-related information advertisement 1800. For example, based on one or more thresholds (e.g., a maximum size for the activity-related information bulletin 1800, etc.), activity-related information may be directly included in or indirectly included (e.g., represented by an indicator, etc.) in the activity-related information field 1810.
The source electronic device 202 then transmits (e.g., broadcast, unicast, multicast, etc.) the activity-related information advertisement 1800 (step 1704). For example, using the corresponding protocol, the source electronic device 202 may unicast the activity-related information advertisement 1800 to the companion electronic device 204. Generally, during this operation, the source electronic device 202 provides an activity-related information advertisement 1800 to the companion electronic device 204 via a wired or wireless communication link. As described in greater detail below, upon receipt of the activity-related information advertisement 1800, the companion electronic device 204 selectively provides activity-related information for use in performing one or more activities in the companion electronic device 204.
For example, in fig. 17, an embodiment is described in which the source electronic device 202 advertises activity-related information separately from the activity advertisement described above (e.g., activity advertisement 1300). In other words, in some embodiments, the campaign bulletin 1300 is transmitted in addition to the campaign-related information bulletin 1800. However, in some embodiments, some or all of the activity-related information (i.e., actual information, pointers, etc.) described above is included in the activity advertisement 1300. In such embodiments, a separate activity-related information bulletin 1800 may not be used. In such embodiments, the activity advertisement 1300 includes various fields, values, etc. for retaining information related to or based on the activity. In such embodiments, companion electronic device 204 may perform operations similar to those shown in fig. 19 to process activity-related information in activity bulletin 1300.
Although the activity-related information bulletin 1800 is shown as an example of an activity-related information bulletin, in some embodiments, the activity-related information bulletin 1800 is formatted differently (e.g., comprises different configurations of fields, etc.). For example, in some embodiments, one or more of the fields described as optional are not optional. In general, the activity-related information bulletin 1800 includes sufficient information to enable the source electronic device 202 to communicate activity-related information to the companion electronic device 204 to enable the companion electronic device 204 to provide activity-related information for use in performing one or more activities in the companion electronic device 204.
FIG. 19 presents a flowchart illustrating a process for receiving activity-related information from a source electronic device in a companion electronic device, in accordance with some embodiments. More particularly, FIG. 19 illustrates an embodiment in which companion electronic device 204 receives activity-related information from source electronic device 202. It should be noted that the operations shown in fig. 19 are presented as a general example of operations performed by some embodiments. Operations performed by some embodiments may include different operations and/or operations performed in a different order. Additionally, while some mechanisms are used to describe operations (e.g., accompanying electronic device 204, etc.), in some embodiments other mechanisms perform operations.
For the process shown in FIG. 19, the contents of the clipboard in the source electronic device 202 are used as activity-related information. However, in some embodiments, and as described above, other types of activity-related information may be received from the source electronic device 202.
The process illustrated in FIG. 19 begins with the companion electronic device 204 receiving an activity-related information advertisement 1800 from the source electronic device 202 (step 1900). As described above, this operation may include receiving an activity-related information advertisement 1800 that includes unicast, broadcast, multicast, etc. information that enables the companion electronic device 204 to process activity-related information and selectively provide activity-related information for use in performing one or more activities in the companion electronic device 204.
The companion electronic device 204 then determines whether the activity-related information described in the activity-related information bulletin 1800 is of interest (1902). Generally, during this operation, the companion electronic device 204 determines whether activity-related information is to be used with the companion electronic device 204. It should be noted that in this specification, the operation of determining that the activity-related information is of interest and providing (or not providing) the activity-related information accordingly is described as "selectively" providing the activity-related information. In other words, the companion electronic device 204 selects whether to provide activity-related information to the activity in the companion electronic device 204 as described herein.
In some embodiments, companion electronic device 204 presents an activity-related information availability indicator on a display (e.g., display 1400) of companion electronic device 204 when determining whether activity-related information is of interest. Fig. 20 presents a block diagram illustrating an activity-related information availability indicator 2000 in accordance with some embodiments. As can be seen in fig. 20, the activity-related information availability indicator 2000 is a graphical representation presented on a display 1400 of the companion electronic device 204. In some embodiments, activity-related information availability indicator 2000 is a simple illustration that generally indicates that activity-related information is available. However, in some embodiments, activity-related information availability indicator 2000 includes a representation of the type of activity-related information within the illustration (e.g., a text indicator, a video indicator, a undo buffer indicator, a clipboard indicator, a combination indicator, etc., as shown). Similar to the recoverable activity indication 1404 described above, in some embodiments, the user may select the activity-related information availability indicator 2000 to signal acceptance (or non-acceptance) of the activity-related information to the companion electronic device 204. For example, a user may tap the activity-related information availability indicator 2000 with a finger on a touch-sensitive screen, perform a mouse pointer hover and click on the activity-related information availability indicator 2000, click a selection and drag the activity-related information availability indicator 2000 along a specified path, and so forth. In some embodiments, the acceptance of the activity-related information causes the companion electronic device 204 to determine that the activity-related information is of interest.
In some embodiments, when deciding whether activity-related information is of interest (in addition to or instead of using the activity-related information availability indicator 2000 described above), the companion electronic device 204 determines whether the corresponding activity is to be transferred from the source electronic device 202 to the companion electronic device 204, whether the activity-related information is in a format supported by the companion electronic device 204, and so forth. In general, when the activity-related information should and can be made available to an activity in the companion electronic device 204, the companion electronic device 204 determines that the activity-related information is of interest.
If the activity-related information described in the activity-related information advertisement 1800 is not of interest (step 1904), the companion electronic device 204 can stop processing related to the activity-related information advertisement 1800 and the process ends. For this operation, in some embodiments, the companion electronic device 204 may remove the activity-related information availability indicator 2000 from the display screen, may configure itself to ignore future repeat announcements, may communicate a negative acknowledgement or denial to the source electronic device 202, and so on.
If the campaign related information described in the campaign related information advertisement 1800 is of interest (step 1904), the companion electronic device 204 obtains the campaign related information (1906). Generally, during this operation, the companion electronic device 204 retrieves at least some of the activity-related information from one or both of the activity-related information bulletin 1800 and the source electronic device 202. For this operation, if the activity-related information advertisement 1800 contains some or all of the actual activity-related information, the companion electronic device 204 may obtain some or all of the activity-related information from the activity-related information advertisement 1800. For example, assuming that the source electronic device 202 includes at least some of the clipboard content in the activity-related information bulletin 1800, the companion electronic device 204 may obtain the clipboard content from the activity-related information bulletin 1800.
In addition to or in lieu of retrieving the activity-related information from the activity-related information bulletin 1800, the companion electronic device 204 may retrieve some or all of the activity-related information from the source electronic device 202. For example, if the source electronic device 202 includes a pointer (or other indicator) to activity-related information on the source electronic device 202 (e.g., a pointer to information such as an image file on a clipboard in the source electronic device 202, etc.) in the activity-related information bulletin 1800, the companion electronic device 204 may request activity-related information from the source electronic device 202.
In some embodiments, activity-related information may be obtained by the source electronic device 202 along with the extended activity data, i.e., may be included in the extended activity data. In some of these embodiments, companion electronic device 204 requests to send activity-related information along with extended activity data. For example, the activity-related information bulletin 1800 may include an indication (e.g., an indicator or other indicator) that activity-related information is available, and the companion electronic device may receive a request to obtain activity-related data and transfer the corresponding activity (i.e., request expanded activity data) as described herein.
The companion electronic device 204 then provides information related to the activity for use in performing one or more activities in the companion electronic device 204 (step 1908). During this operation, the companion electronic device 204 uses one or more corresponding structures (memory, clipboard, cache, buffer, etc.) to store activity-related information such that the activity-related information is available for use in an activity (e.g., an activity transferred from the source electronic device 202 to the companion electronic device 204, an activity started on the companion electronic device 204, etc.). In some embodiments, "providing information related to an activity for use in performing one or more activities" includes providing information related to an activity in a manner that the information related to an activity may be used in a corresponding and intended manner during operation of the activity. Continuing with the clipboard example, this may include making the content of the clipboard from the source electronic device 202 available for pasting and other operations, as the information on the clipboard (i.e., from the clipboard in the companion electronic device 204) is typically available in the companion electronic device 204. For example, the hotkey and menu selections may thus be used to access the content of the clipboard copied from the source electronic device 202 on the companion electronic device 204. As another example, assuming that the activity-related information includes the contents of a revocation buffer, the revocation buffer in the companion electronic device 204 may be updated with the activity-related information (i.e., the history of operations performed in the source electronic device 202) such that corresponding operations that were not initially performed in the companion electronic device 204 may be revoked in the companion electronic device 204.
Continuing with the clipboard example, in some embodiments, activity-related information is provided to use the clipboard in the companion electronic device 204 when performing one or more activities in the companion electronic device 204, including copying the contents of the clipboard described in the activity-related information bulletin 1800. In such embodiments, the contents of the clipboard may be partially or completely overwritten by the contents of the clipboard described in the activity-related information bulletin 1800. In some embodiments, to avoid overwriting and thus losing applicable information on the clipboard in the companion electronic device 204, the companion electronic device 204 (e.g., an operating system thereon) provides a separate transfer information buffer. In such embodiments, the transfer information buffer may be accessed using a corresponding menu selection, hotkey, or the like. In some embodiments, the user may be presented with a choice to overwrite the clipboard or write information to the transfer activity buffer (e.g., with a quick-action prompt). In some embodiments, the transfer information buffer is a software service (e.g., operating system software service, stand-alone application, etc.) that provides temporary storage for information in the electronic device, but the hardware-based transfer information buffer may be used alone or in combination with the software transfer information buffer. The transfer information buffer enables a user to perform operations such as copying, pasting, cutting, etc. to interact with information stored in the transfer information buffer.
In some embodiments, an interface (e.g., on display 1400) may be presented to the user that enables the user to determine which content from the clipboard of the source electronic device 202 is to be copied to the clipboard in the companion electronic device and where the content from the clipboard of the source electronic device 202 is to be copied to the clipboard in the companion electronic device. For example, after selecting the activity-related information availability indicator 2000, a pop-up window showing or otherwise listing content from the clipboard of the source electronic device 202 may be presented on the display 1400, the pop-up window including mechanisms for selecting which content is to be copied to the clipboard in the companion electronic device 204, where the content is to be copied to the clipboard, and so forth.
It should be noted that although the activity-related information availability indicator 2000 is presented in a particular location on the lock screen, in some embodiments the activity-related information availability indicator 2000 may be presented on any screen, in a different location, etc. during operation of the companion electronic device 204. Additionally, an information availability indicator 2000 related to the activity may be presented along with and/or in association with the recoverable activity indication 1404. In such embodiments, the user may select one or both of the activity-related information availability indicator 2000 and the recoverable activity indication 1404 to perform one or both of transferring the activity (as described herein) or accepting the activity-related information. In some embodiments, the companion electronic device 204 presents only the recoverable activity indication 1404 and the user selects the recoverable activity indication 1404 such that the companion electronic device 204 transfers activity (as described herein) and accepts information related to the activity.
The foregoing description of the embodiments has been presented only for purposes of illustration and description. It is not intended to be exhaustive or to limit the embodiments to the forms disclosed. Thus, many modifications and variations will be apparent to practitioners skilled in the art. In addition, the above disclosure is not intended to limit the embodiments. The scope of the embodiments is defined by the appended claims.