This relates to devices and methods for data communication, and in particulate, to devices and methods for establishing peer-to-peer data communication.
Recently, voice over IP (VoIP) or video call services are gaining significant interests. To enable these services, peer-to-peer connections are often used.
Many VoIP or video call service providers, such as Skype, use personal accounts to identify users and connect them (e.g., establish a peer-to-peer connection). These accounts can be used to manage contact lists, find other users, and pay service fees. For some service providers, users can use existing email accounts or phone numbers for the video call services; however, for many other service providers, users have to create dedicated accounts with passwords, which are cumbersome and time consuming. Out of security concerns, some service providers require complex passwords that are not easy to remember, which impose mental burdens on users. When users forget their passwords, they need to go through a complex password recovery process to reset or retrieve the passwords, which are also cumbersome and time consuming. Some users refrain from using the VoIP or video call services all together because of these challenges and disadvantages.
These challenges and disadvantages are significant impediments to wider adoption of VoIP and video call services.
Accordingly, there is a need for more efficient methods and devices for establishing peer-to-peer connections. Such methods and devices optionally complement or replace conventional methods and devices for establishing peer-to-peer connections.
In accordance with some embodiments, a method is performed at a server system that includes one or more processors and memory. The method includes receiving from a first electronic device a first device identifier of the first electronic device and network information of the first electronic device; and, subsequent to receiving from the first electronic device the first device identifier of the first electronic device and the network information of the first electronic device, receiving from a second electronic device, that is distinct from the first electronic device, a second device identifier of the second electronic device and network information of the second electronic device. The second device identifier is distinct from the first device identifier. The method also includes, in response to receiving from the second electronic device the second device identifier of the second electronic device and the network information of the second electronic device, determining whether the first device identifier is associated with the second device identifier; and, in accordance with a determination that the first device identifier is associated with the second device identifier, sending to the second electronic device the network information of the first electronic device and/or sending to the first electronic device the network information of the second electronic device.
In accordance with some embodiments, a server system includes one or more processors and memory storing one or more programs for execution by the one or more processors. The server system receives from a first electronic device a first device identifier of the first electronic device and network information of the first electronic device. Subsequent to receiving from the first electronic device the first device identifier of the first electronic device and the network information of the first electronic device, the server system receives from a second electronic device, that is distinct from the first electronic device, a second device identifier of the second electronic device and network information of the second electronic device. The second device identifier is distinct from the first device identifier. In response to receiving from the second electronic device the second device identifier of the second electronic device and the network information of the second electronic device, the server system determines whether the first device identifier is associated with the second device identifier. In accordance with a determination that the first device identifier is associated with the second device identifier, the server system sends to the second electronic device the network information of the first electronic device and/or sending to the first electronic device the network information of the second electronic device.
In accordance with some embodiments, a non-transitory computer readable storage device includes one or more programs for execution by a server system. The one or more programs including instructions for receiving from a first electronic device a first device identifier of the first electronic device and network information of the first electronic device; and, subsequent to receiving from the first electronic device the first device identifier of the first electronic device and the network information of the first electronic device, receiving from a second electronic device, that is distinct from the first electronic device, a second device identifier of the second electronic device and network information of the second electronic device. The second device identifier is distinct from the first device identifier. The one or more programs also include instructions for, in response to receiving from the second electronic device the second device identifier of the second electronic device and the network information of the second electronic device, determining whether the first device identifier is associated with the second device identifier; and, in accordance with a determination that the first device identifier is associated with the second device identifier, sending to the second electronic device the network information of the first electronic device and/or sending to the first electronic device the network information of the second electronic device.
Thus, server systems are provided with methods for distributing network information for faster and more efficient establishment of peer-to-peer connections, thereby increasing effectiveness, efficiency, and user satisfaction with such devices. Such server systems and methods may complement or replace conventional server systems and methods for supporting peer-to-peer connections.
In accordance with some embodiments, a method is performed at an electronic device that includes one or more processors and memory. The method includes sending to a server system a device identifier of the electronic device and network information of the electronic device; and, subsequent to sending to the server system the device identifier of the electronic device and the network information of the electronic device, receiving from the server system network information of a second electronic device. The method also includes, subsequent to receiving from the server system network information of the second electronic device, sending to the second electronic device a request to establish a peer-to-peer connection with the second electronic device, without sending a request to the server system to establish the peer-to-peer connection with the second electronic device.
In accordance with some embodiments, an electronic device includes one or more processors; and memory storing one or more programs for execution by the one or more processors. The electronic device sends to a server system a device identifier of the electronic device and network information of the electronic device; and, subsequent to sending to the server system the device identifier of the electronic device and the network information of the electronic device, receives from the server system network information of a second electronic device. The electronic device, subsequent to receiving from the server system network information of the second electronic device, sends to the second electronic device a request to establish a peer-to-peer connection with the second electronic device, without sending a request to the server system to establish the peer-to-peer connection with the second electronic device.
In accordance with some embodiments, a non-transitory computer readable storage device stores one or more programs for execution by an electronic device. The one or more programs including instructions for sending to a server system a device identifier of the electronic device and network information of the electronic device; and, subsequent to sending to the server system the device identifier of the electronic device and the network information of the electronic device, receiving from the server system network information of a second electronic device. The one or more programs also include instructions for, subsequent to receiving from the server system network information of the second electronic device, sending to the second electronic device a request to establish a peer-to-peer connection with the second electronic device, without sending a request to the server system to establish the peer-to-peer connection with the second electronic device.
Thus, electronic devices are provided with faster, more efficient methods for establishing peer-to-peer connections, thereby increasing effectiveness, efficiency, and user satisfaction with such devices. Such devices and methods may complement or replace conventional devices and methods for establishing peer-to-peer connections.
For a better understanding of the various described embodiments, reference should be made to the Description of Embodiments below, in conjunction with the following drawings in which like reference numerals refer to corresponding parts throughout the figures.
As described above, existing methods for VoIP and video conference calls are complicated, cumbersome, and inefficient. In addition, the use of a username and a password can be vulnerable to security breaches. For example, a malicious attacker may obtain a username and a password of a victim by various means (e.g., social engineering, phishing, snooping, brute force attacks, etc.), pretend to be the victim, and steal confidential information through VoIP calls.
As described below, device identifiers of electronic devices (e.g., hardware-specific identifiers) are used instead of, or in addition to, usernames and passwords. Because usernames and passwords need not be provided, this eliminates the need for typing in usernames and passwords, thereby allowing users to establish peer-to-peer connections and make VoIP or video conference calls faster and more efficiently.
In addition, because personal information, such as usernames, email addresses, cell phone numbers, are not used, privacy of the users can be better protected from a malicious attacker.
Furthermore, because hardware-specific identifiers (e.g., hard-coded identifiers) are used, security and reliability in peer-to-peer communications are improved.
Individuals who are not accustomed to new communications technology/devices would especially benefit from such devices and methods, because such individuals do not need to go through multiple steps of setting up devices for peer-to-peer communications (e.g., VoIP and/or video conference calls). In addition, a group of users (e.g., family members) who want direct and immediate connection to each other would benefit from the ability to connect to each other immediately without separate manual logging-in steps. Furthermore, businesses and other organizations that must keep in frequent touch with individuals at different locations can benefit from hosting a conference call without exposing participants' personal information (e.g., email addresses, usernames, or phone numbers of the participants).
With devices and methods described herein, a number of user actions is significantly reduced (e.g., a user does not need to type in a username and a password) to place an electronic device in a standby mode. For example, a user may need to plug a power cable in and enable the Internet connection to place the electronic device in a standby mode (in which the electronic device has network information of a peer electronic device). In some cases, such as with a device in a mobile network or a device with WiFi signals, the device automatically finds the Internet connection, which eliminates the need for the user to manually enable the Internet connection.
Below,
Reference will now be made in detail to embodiments, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the various described embodiments. However, it will be apparent to one of ordinary skill in the art that the various described embodiments may be practiced without these specific details. In other instances, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.
It will also be understood that, although the terms first, second, etc. are, in some instances, used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first electronic device could be termed a second electronic device, and, similarly, a second electronic device could be termed a first electronic device, without departing from the scope of the various described embodiments. The first electronic device and the second electronic device are both electronic devices, but they are not the same electronic device.
The terminology used in the description of the various described embodiments herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used in the description of the various described embodiments and the appended claims, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “includes,” “including,” “comprises,” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
As used herein, the term “if” is, optionally, construed to mean “when” or “upon” or “in response to determining” or “in response to detecting” or “in accordance with a determination that,” depending on the context. Similarly, the phrase “if it is determined” or “if [a stated condition or event] is detected” is, optionally, construed to mean “upon determining” or “in response to determining” or “upon detecting [the stated condition or event]” or “in response to detecting [the stated condition or event]” or “in accordance with a determination that [a stated condition or event] is detected,” depending on the context.
In
An electronic device 122 can be any computing device (e.g., a laptop computer and a desktop computer, etc.). In some embodiments, an electronic device 122 includes a portable electronic device (e.g., a mobile phone, a handheld computer, a tablet, etc.). In some embodiments, the electronic device 122 includes a graphical user interface (GUI) for graphically displaying information.
In
The communication networks 120 can be any combination of one or more wired or wireless networks, such as Internet, local area networks, large area networks, wide area networks, cellular networks, etc. In some embodiments, the communication networks 120 utilize various communication technologies, such as Ethernet, WiFi, Long Term Evolution (LTE), the third generation of mobile telecommunications technology (commonly known as 3G), the fourth generation of mobile telecommunications technology (commonly known as 4G), etc.
The server system 102 is a computer server configured to interact with the electronic devices 122. In some embodiments, the server system 102 represents multiple server computers. In
In some embodiments, the server system 102 stores device association information 130. The device association information 130 identifies one or more groups (also called herein “peer-to-peer communication group” or “call-groups”) of electronic devices that are selected for peer-to-peer communication. In
In
In some embodiments, a single electronic device belongs to multiple groups. For example, the device identifier “1234” of Device A 132-1 may be included in device association information 130 for multiple groups (e.g., the device identifier is included in both device association information 130-1 and device association information 130-N).
In
In some embodiments, Device B 122-2 periodically sends (5) an “alive” message to the server system 102. In some embodiments, the “alive” message includes the device identifier of Device B 122-2 and one or more network addresses of Device B 122-2. For example, the public network address of Device B 122-2 has changed to 121.94.33.2/3213, and the “alive” message sent by Device 122-2 includes the changed public network address of Device B 122-2. In some embodiments, the “alive” message also includes data obtained using one or more sensors coupled with Device B 122-2 (e.g., an image obtained using a camera of Device B 122-2).
In some embodiments, Device A 122-1 periodically sends (6) an “alive” message to the server system 102. In some embodiments, the “alive” message includes the device identifier of Device A 122-1 and one or more network addresses of Device A 122-1. As shown in
For example, in
Alternatively, as shown in
In some embodiments, the peer-to-peer connections in
Although
In
Typically, an electronic device in a particular call-group does not receive network information of another electronic device that does not belong to the particular call-group. The electronic device receives network information of electronic device(s) in the same particular call-group. This inherent exclusiveness reduces the need for authentication processes.
In
The user interface in
In
The user interface also includes an image 316 that has been sent from the electronic device. In some embodiments, the image 316 is an image obtained using a sensor (e.g., a camera) coupled with the electronic device. The image 316 assists a user of the second electronic device to determine whether the request to initiate voice communication has been made by a person that the user recognizes. In some embodiments, the image 316 corresponds to an image obtained by the electronic device in response to a selection of the call icon 304.
The user interface further includes a location indicator 318 that identifies a location of the electronic device. In some embodiments, the location of the electronic device is determined based on one or more network addresses of the electronic device (e.g., using an IP geolocation tool). The location indicator 318 assists the user of the second electronic device to determine whether the request has been made by a person that the user recognizes.
In some embodiments, the user interface of the second electronic device includes additional user interface elements not described herein and/or a subset of the user interface elements described above.
The server system 102 includes one or more processing units 402 (e.g., one or more central processing units (CPUs), one or more graphical processing units (GPUs), and one or more accelerated processing units (APUs)), one or more network or other communication interfaces 404, memory 406, and one or more communication buses 408 for interconnecting these components. A processing unit is also called herein a processor. In some embodiments, the server system 102 includes a user interface 405 comprising a display device and one or more input devices, such as a keyboard, mouse, touchpad, touch screen and/or other input devices.
Memory 406 typically includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices; and optionally includes non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. Memory 406 optionally includes one or more storage devices remotely located from the Processing unit(s) 402. Memory 406, or alternatively the non-volatile memory device(s) within memory 406, comprises a non-transitory computer readable storage medium. In some embodiments, memory 406 or alternatively the non-transitory computer readable storage medium stores the following programs, modules and data structures, or a subset thereof:
The application(s) 414 includes one or more applications 414 (e.g., sets of multiple instructions) configured for execution by the server system 102. In some embodiments, the application(s) 414 includes a peer-to-peer communication support application 416. In some embodiments, the peer-to-peer communication support application 416 includes the following components, or a subset or a superset thereof:
In some embodiments, the device association database 428 is generated and/or updated using a dedicated webpage or a smart phone application. For example, a user who knows at least one device identifier may modify a call-group (e.g., add or delete user identifiers in the call-group). In some embodiments, a webpage authentication based on a device identifier can be more secure than an authentication process based on a username and a password. In some embodiments, the server system 102 presents security questions regarding the call-group (e.g., a size of the call-group or a geographic location of a respective electronic device in the call-group) prior to allowing a modification to the call-group.
Each of the above identified elements may be stored in one or more of the previously mentioned memory devices, and corresponds to a set of instructions for performing a function described above. The above identified modules or programs (e.g., sets of instructions) need not be implemented as separate software programs, procedures or modules, and thus various subsets of these modules may be combined or otherwise re-arranged in various embodiments. In some embodiments, memory 406 stores a subset of the modules and data structures identified above. Furthermore, in some embodiments, memory 406 stores additional modules and data structures not described above.
Although
Some items shown separately in
The electronic device 122 typically includes one or more processing units (processors or cores) 502, one or more network or other communications interfaces 504, memory 506, and one or more communication buses 508 for interconnecting these components. The communication buses 508 optionally include circuitry (sometimes called a chipset) that interconnects and controls communications between system components.
In some embodiments, the electronic device 122 includes a user interface 510. In some embodiments, the user interface 510 includes a touch-sensitive surface. The user interface 510 typically includes a display device 512. In some embodiments, the device 122 includes inputs such as a keyboard, mouse, and/or other input buttons 516. In some embodiments, the display device 512 includes the touch-sensitive surface, in which case the display device 512 is a touch-sensitive display. In electronic devices that have a touch-sensitive display, a physical keyboard is optional (e.g., a soft keyboard may be displayed when keyboard entry is needed). In some embodiments, the touch-sensitive surface is located independent of the display 512 (e.g., the touch-sensitive surface is separate from the display 512). In some embodiments, the touch-sensitive surface is configured to detect a touch on a sensing area of the touch-sensitive surface.
Optionally, the user interface 510 also includes an audio output device 518, such as speakers or an audio output connection connected to speakers, earphones, or headphones. Furthermore, some electronic devices 122 use a microphone and voice recognition to supplement or replace the keyboard. Optionally, the electronic device 122 includes an audio input device 520 (e.g., a microphone) to capture audio (e.g., speech from a user). Optionally, the client device 122 includes a location detection device 522, such as a GPS (global positioning satellite) or other geo-location receiver, for determining the location of the client device 122.
The electronic device 122 also optionally includes one or more sensors 514. In some embodiments, the one or more sensors 514 include an image/video capture device 524, such as a camera or webcam. In some embodiments, the image/video capture device 524 includes an infrared camera. In some embodiments, the infrared camera includes a gate-controlled charge modulated device as described in International Application Serial No. PCT/US14/43421, filed on Jun. 20, 2014, which is incorporated by reference herein in its entirety. In some embodiments, the one or more sensors 514 include one or more of: a temperature sensor, a carbon-monoxide sensor, a carbon-dioxide sensor, a motion sensor, a radiation sensor, and an air quality sensor.
Memory 506 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices; and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. In some embodiments, memory 506 also includes read-only memory (ROM). Memory 506 may optionally include one or more storage devices remotely located from the processor(s) 502. Memory 506, or alternately the non-volatile memory device(s) within memory 506, includes a non-transitory computer readable storage medium. In some embodiments, memory 506 or the computer readable storage medium of memory 506 stores the following programs, modules and data structures, or a subset or superset thereof:
Each of the above identified modules and applications correspond to a set of executable instructions for performing one or more functions described above and the methods described in this application (e.g., the computer-implemented methods and other information processing methods described herein). These modules (i.e., sets of instructions) need not be implemented as separate software programs, procedures or modules, and thus various subsets of these modules are, optionally, combined or otherwise re-arranged in various embodiments. In some embodiments, memory 506 stores a subset of the modules and data structures identified above. Furthermore, memory 506 optionally stores additional modules and data structures not described above.
The server system 102 maintains (602) device association information (e.g., device association information 130,
Optionally, Device A 122-1 detects (604) network connection. For example, Device A 122-1 determines that Device A 122-1 is connected to communications networks, such as the Internet.
Device A 122-1 sends (606) device information (e.g., a device identifier) and network information (e.g., one or more network addresses and one or more port numbers) of Device A 122-1 to the server system 102. Optionally, Device A 122-1 sends device information and network information of Device A 122-1 to the server system 102 in response to detecting the network connection (e.g., without, or independent of, a user input). In some embodiments, the network information of Device A 122-1 is retrieved directly from Device A 122-1. In some embodiments, the network information of Device A 122-1 is obtained from another device coupled with Device A 122-1 (e.g., a router or a network gateway).
The server system receives (608) the device information and the network information of Device A 122-1.
Optionally, Device B 122-2 detects (610) network connection. For example, Device B 122-2 determines that Device B 122-2 is connected to communications networks, such as the Internet.
Device B 122-2 sends (612) device information (e.g., a device identifier) and network information (e.g., one or more network addresses and one or more port numbers) of Device B 122-2 to the server system 102. Optionally, Device B 122-2 sends device information and network information of Device B 122-2 to the server system 102 in response to detecting the network connection (e.g., without, or independent of, a user input).
The server system receives (614) the device information and the network information of Device B 122-2.
The server system sends (616) the network information of Device B 122-2 to Device A 122-1 and/or sends the network information of Device A 122-1 to Device B 122-2. In some embodiments, the server system sends the network information of Device B 122-2 to Device A 122-1 and sends the network information of Device A 122-1 to Device B 122-2. In some embodiments, the server system sends the network information of Device B 122-2 to Device A 122-1 without sending the network information of Device A 122-1 to Device B 122-2. In some embodiments, the server system sends the network information of Device A 122-1 to Device B 122-2 without sending the network information of Device B 122-2 to Device A 122-1.
In some embodiments, the server system distributes network information in response to receiving the device information from an electronic device already registered with the server system (e.g., a corresponding device identifier is already stored in the device association information). Receiving the device information from the electronic device indicates that the electronic device is available for a peer-to-peer communication. In some embodiments, the server system distributes network information in response to receiving an updated device information from an electronic device already registered with the server system.
Device A 122-1 and/or Device B 122-2 receive (618) respective network information.
In some embodiments, Device A 122-1 sends (620) an alive message (with original network information or updated network information) to the server system 102. The server system 102 receives (622) the alive message from Device A 122-1, and sends (624) network information (e.g., original network information or updated network information) of Device A 122-1 to Device B 122-2. Device B 122-2 receives (626) the network information of Device A 122-1 from the server system 102.
In some embodiments, Device B 122-2 sends an alive message to the server system 102. The server system receives the alive message from Device B 122-2, and sends network information of Device B 122-2 to Device A 122-1. Device A 122-1 receives the network information of Device B 122-2 from the server system 102.
Subsequently, Device A 122-1 and Device B 122-2 establish (628) peer-to-peer (p2p) connection with each other. For example, Device A 122-1 sends a request to establish a peer-to-peer connection to Device B 122-2 using the network information of Device B 122-2, and Device B 122-2 accepts the request (or sends an acceptance message to Device A 122-1), thereby establishing the peer-to-peer connection. Alternatively, Device B 122-2 sends a request to establish a peer-to-peer connection to Device A 122-1 using the network information of Device A 122-1, and Device A 122-1 accepts the request (or sends an acceptance message to Device B 122-2), thereby establishing the peer-to-peer connection. As shown in
The method 700 is performed by a server system that includes one or more processors and memory (e.g., the server system 102,
The server system receives (702) from a first electronic device a first device identifier of the first electronic device and network information of the first electronic device. For example, in
In some embodiments, the first device identifier of the first electronic device is (704) one of: a media access control address of the first electronic device, a serial number of the first electronic device, or a serial number of a subcomponent of the first electronic device. In some embodiments, the first device identifier of the first electronic device is a subset, less than all, of one of: a media access control address of the first electronic device, a serial number of the first electronic device, or a serial number of a subcomponent of the first electronic device (e.g., the first device identifier is the last four digits of a media access control address of the first electronic device).
In some embodiments, the network information of the first electronic device includes (706) an Internet Protocol address of the first electronic device (e.g., 155.99.25.11 in
In some embodiments, the network information of the first electronic device includes (708) a port number of the first electronic device (e.g., 4321 in
Subsequent to receiving from the first electronic device the first device identifier of the first electronic device and the network information of the first electronic device, the server system receives (710) from a second electronic device, that is distinct from the first electronic device, a second device identifier of the second electronic device and network information of the second electronic device. The second device identifier is distinct from the first device identifier. For example, in
In some embodiments, the second device identifier of the second electronic device is (712) one of: a media access control address of the second electronic device, a serial number of the second electronic device, or a serial number of a subcomponent of the second electronic device. In some embodiments, the second device identifier of the second electronic device is a subset, less than all, of one of: a media access control address of the second electronic device, a serial number of the second electronic device, or a serial number of a subcomponent of the second electronic device (e.g., the second device identifier is the last four digits of a media access control address of the second electronic device).
In some embodiments, the network information of the second electronic device includes (714) an Internet Protocol address of the second electronic device (e.g., 138.76.29.7 in
In some embodiments, the network information of the second electronic device includes (716) a port number of the second electronic device (e.g., 9876 in
In response to receiving from the second electronic device the second device identifier of the second electronic device and the network information of the second electronic device, the server system determines (718,
In some embodiments, the server system determines (720) whether the first device identifier is associated with the second device identifier based on device association information (e.g., the device association information 130,
In some embodiments, the device association information is stored (722) at the server system before any of receiving from the first electronic device the first device identifier of the first electronic device and the network information of the first electronic device and receiving from the second electronic device the second device identifier of the second electronic device and the network information of the second electronic device. For example, as shown in
In some embodiments, the device association information includes (724) device identifiers for a plurality of groups of electronic devices, each group including two or more device identifiers that correspond to electronic devices that are configured for communication with one another. For example, in
In accordance with a determination that the first device identifier is associated with the second device identifier, the server system sends (726,
In some embodiments, subsequent to receiving from the first electronic device the first device identifier of the first electronic device and the network information of the first electronic device, the server system receives (728) from the first electronic device additional information based on preselected first communication criteria. For example, in
In some embodiments, sending to the first electronic device the network information of the second electronic device includes (730), in response to receiving from the first electronic device the additional information based on the preselected first communication criteria, sending to the first electronic device the network information of the second electronic device. For example, in
In some embodiments, the additional information from the first electronic device indicates (732) that the first electronic device is available for communication with the second electronic device.
In some embodiments, the additional information from the first electronic device includes (734) the first device identifier of the first electronic device and the network information of the first electronic device. For example, in
In some embodiments, the additional information from the first electronic device includes (736) information obtained using one or more sensors coupled with the first electronic device.
In some embodiments, the information obtained using the one or more sensors includes (738) an image obtained using a camera (e.g., image/video capture device 524,
In some embodiments, subsequent to receiving from the second electronic device the second device identifier of the second electronic device and the network information of the second electronic device, the server system receives (740,
In some embodiments, sending to the second electronic device the network information of the first electronic device includes (742), in response to receiving from the second electronic device the additional information based on the preselected second communication criteria, sending to the second electronic device the network information of the first electronic device. For example, in
In some embodiments, the additional information indicates (744) that the second electronic device is available for communication with the first electronic device.
In some embodiments, the additional information from the second electronic device includes (746) the second device identifier of the second electronic device and the network information of the second electronic device. For example, in
In some embodiments, the additional information from the second electronic device includes (748) information obtained using one or more sensors coupled with the second electronic device.
In some embodiments, the information obtained using the one or more sensors includes (750) an image obtained using a camera coupled with the second electronic device.
In some embodiments, the server system sends (752,
In some embodiments, the server system sends (754) to the second electronic device the network information of the first electronic device without sending to the second electronic device the first device identifier of the first electronic device.
In some embodiments, the server system sends (756) to the second electronic device the network information of the first electronic device and/or sends to the first electronic device the network information of the second electronic device so that the first electronic device and the second electronic device establish a peer-to-peer connection. For example, subsequent to the server system sends the network information of the first electronic device and/or the network information of the second electronic device, the first electronic device and the second electronic device establish a peer-to-peer connection with each other, as shown in
Some of the features described above with respect to the method 800 are applicable to
The method 800 is performed by an electronic device that includes one or more processors and memory (e.g., electronic device 122,
The device sends (802) to a server system a device identifier of the electronic device and network information of the electronic device. For example, in
In some embodiments, the device identifier of the electronic device is (804) one of: a media access control address of the electronic device, a serial number of the electronic device, or a serial number of a subcomponent of the electronic device. In some embodiments, the device identifier of the electronic device is a subset, less than all, of one of: a media access control address of the electronic device, a serial number of the electronic device, or a serial number of a subcomponent of the electronic device.
In some embodiments, the network information of the electronic device includes (806) an Internet Protocol address of the electronic device.
In some embodiments, the network information of the electronic device includes (808) a port number of the electronic device.
Subsequent to sending to the server system the device identifier of the electronic device and the network information of the electronic device, the device receives (810) from the server system network information of a second electronic device. For example, in
In some embodiments, in response to sending to the server system the device identifier of the electronic device and the network information of the electronic device, the device receives from the server system network information of a second electronic device.
In some embodiments, the network information of the second electronic device includes (812) an Internet Protocol address of the second electronic device.
In some embodiments, the network information of the second electronic device includes (814) a port number of the second electronic device.
Subsequent to receiving from the server system network information of the second electronic device, the device sends (816,
In some embodiments, the request to establish a peer-to-peer connection with the second electronic device includes the network information of the first electronic device. This allows the second electronic device to compare the network information of the first electronic device, received from the first electronic device, with the network information of the first electronic device, received from the server system for verification purposes.
In some embodiments, the request to establish a peer-to-peer connection with the second electronic device includes a preselected security code. This allows the second electronic device to compare the security code received from the first electronic device with a security stored by the second electronic device for verification purposes.
In some embodiments, in response to receiving from the server system network information of the second electronic device, the device sends (818) to the second electronic device the request to establish the peer-to-peer connection with the second electronic device, without sending a request to the server system to establish the peer-to-peer connection with the second electronic device. For example, Device A 122-1 sends a request to establish a peer-to-peer connection with Device B 122-2 in response to receiving the network information of Device B 122-2 from the server 102.
In some embodiments, the device sends (820) to the second electronic device the request to establish the peer-to-peer connection with the second electronic device without requesting authentication information from the second electronic device or providing authentication information to the second electronic device. For example, the request to establish a peer-to-peer connection does not request an email address, a phone number, or a user password from the second electronic device. This improves protection of the personal information of users participating in a VoIP or video conference call.
In some embodiments, the device detects (822) a user input requesting voice communication with a user of the second electronic device (e.g., user selection of a call icon 304 in
In some embodiments, the user input requesting voice communication includes lifting a handset of a phone. For example, when the device is configured for 1:1 peer-to-peer communication with the second electronic device, it is not necessary and/or possible to select a recipient. Thus, simply lifting the handset sends to the second electronic device a request to initiate voice communication. This is particularly beneficial when there is a need for faster communication with the second electronic device. Because a user of the device does not need to type a name or select a user, a call to the second electronic device can be made faster.
In some embodiments, in response to detecting the user input requesting the voice communication with the user of the second electronic device, the device sends (824) to the second electronic device an image obtained using one or more sensors coupled with the electronic device (e.g., the image 316 in
In some embodiments, the device establishes (826,
In some embodiments, the device sends (828) to the second electronic device one or more images obtained using one or more sensors coupled with the electronic device in accordance with preselected communication timing criteria (e.g., preselected time interval). For example, the device sends a stream of images to the second electronic device so that the second electronic device can monitor events around the electronic device. This takes advantage of the nature of a peer-to-peer communication between the electronic device and the second electronic device. Because the peer-to-peer communication between the electronic device and the second electronic device, once established, does not rely on the server system 102, the peer-to-peer communication between the electronic device and the second electronic device can continue regardless of operational issues in the server system (e.g., a power-loss or a network traffic jam of the server system). Thus, the peer-to-peer communication between the electronic device and the second electronic device is more robust and reliable than communicating through the server system. In addition, the peer-to-peer communication relieves the server system from an overhead associated with relaying data packets to and from electronic devices, thereby improving efficiency and reducing power consumption by the server system. Furthermore, when the electronic device is coupled with a special camera (e.g., an infrared camera), the peer-to-peer communication between the electronic device and the second electronic device can be used for special purposes, such as security or industrial purposes, which require higher reliability and continuity.
In some embodiments, the device sends to the second electronic device data obtained using one or more sensors coupled with the electronic device (e.g., a temperature, a carbon-monoxide level, a carbon-dioxide level, air quality, a radiation level, motion information, etc.). In some embodiments, the device sends to the server system data obtained using one or more sensors coupled with the electronic device. In some embodiments, the device sends to the server system data obtained using one or more sensors coupled with the electronic device as part of an “alive” message.
In some embodiments, subsequent to receiving from the server system the network information of the second electronic device, the device receives (830) from the server system additional information. The additional information includes updated network information of the second electronic device. Subsequent to receiving from the server system the additional information, the device receives from the second electronic device a request to initiate voice communication; determines whether the updated network information of the second electronic device is distinct from the network information of the second electronic device; and, in accordance with a determination that the updated network information of the second electronic device is distinct from the network information of the second electronic device, outputs an indication that the updated network information of the second electronic device is distinct from the network information of the second electronic device (e.g., displays a message, and/or output an audible signal, indicating that the network information of the second electronic device has changed). For example, in
In some embodiments, subsequent to receiving from the server system the network information of the second electronic device, the device receives from the second electronic device a request to establish a peer-to-peer connection with the second electronic device. The request from the second electronic device includes network information of the second electronic device. The device compares the network information of the second electronic device received from the second electronic device with the network information of the second electronic device received from the server system. The device determines whether the network information of the second electronic device received from the second electronic device matches the network information of the second electronic device received from the server system. In accordance with a determination that the network information of the second electronic device received from the second electronic device matches the network information of the second electronic device received from the server system, the device accepts the request to establish a peer-to-peer connection with the second electronic device (or sends an acceptance message to the second electronic device). In some embodiments, in accordance with a determination that the network information of the second electronic device received from the second electronic device does not match the network information of the second electronic device received from the server system, the device disregards the request to establish a peer-to-peer connection with the second electronic device (or sends a denial message to the second electronic device).
In some embodiments, subsequent to receiving from the server system the network information of the second electronic device, the device receives from the second electronic device a request to establish a peer-to-peer connection with the second electronic device. The request from the second electronic device includes a security code. The device compares the security code received from the second electronic device with a preselected security code. The device determines whether the security code from the second electronic device matches the preselected security code. In accordance with a determination that the security code from the second electronic device matches the preselected security code, the device accepts the request to establish a peer-to-peer connection with the second electronic device (or sends an acceptance message to the second electronic device). In some embodiments, in accordance with a determination that the security code from the second electronic device does not match the preselected security code, the device disregards the request to establish a peer-to-peer connection with the second electronic device (or sends a denial message to the second electronic device).
The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the scope of claims to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the underlying principles and their practical applications, to thereby enable others skilled in the art to best utilize the described principles and various embodiments with various modifications as are suited to the particular use contemplated.
For example, in accordance with some embodiments, a method performed at an electronic device that includes one or more processors and memory includes, while in a standby mode, storing network information of a second electronic device; and, detecting a user input requesting voice communication with a user of the second electronic device. The method also includes, in response to detecting the user input requesting the voice communication with the user of the second electronic device, sending to the second electronic device a request to initiate voice communication.
This application is a continuation application of the International Patent Application Serial No. PCT/US2015/052410, filed Sep. 25, 2015, which claims the benefit of, and priority to, U.S. Provisional Patent Application Ser. No. 62/055,103, filed Sep. 25, 2014, both of which are incorporated by reference herein in their entireties.
Number | Date | Country | |
---|---|---|---|
62055103 | Sep 2014 | US |
Number | Date | Country | |
---|---|---|---|
Parent | PCT/US2015/052410 | Sep 2015 | US |
Child | 15468027 | US |