Abstract:
A system for accessing data among at least two different electronic devices is provided. The system includes a demanding electronic device and a providing electronic device. The demanding electronic device is utilized to establish an input virtual device to execute an application on the demanding electronic device. The providing electronic device is utilized to establish an output virtual device for transmitting data from the providing electronic device to the demanding electronic device via the output virtual device, wherein the data corresponds to the application, and the providing electronic device is physically separated from the demanding electronic device. The input virtual device is established to use a first peripheral of the providing electronic device as a built-in peripheral of the demanding electronic device.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims the benefit of U.S. Provisional Application No. 62/114,276, filed on Feb. 10, 2015, the entirety of which is incorporated by reference herein. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    The present inventive concept relates to a control method and a system for accessing data among at least two different electronic devices by establishing at least one virtual device. 
         [0004]    2. Description of the Related Art 
         [0005]    Users will often utilize their electronic devices to run various applications. However, not all electronic devices are equipped with sufficient peripheral hardware to execute these applications. For example, it is impossible to execute a camera application using a television having no camera hardware, because it lacks camera hardware. If the user wants to use the camera of another of his electronic devices, the user has to install specific, customized applications on his own electronic device for archiving and controlling the remote hardware of other electronic devices. Because the installed application is a client-side application and the corresponding application is server-side, this solution may cause some problems. In addition, this method also demands a lot of effort and time for the user to install and use these applications. Therefore, a user-friendly and efficient method is required for the user to cross mount a plurality of electronic devices. 
       BRIEF SUMMARY OF THE INVENTION 
       [0006]    The invention discloses a cross-platform mechanism of mounting one or more electronic devices. The control method of the invention includes automatically setting up virtual devices, simulating real hardware via the virtual devices for the purpose of executing a specific application, and automatically transferring data between the input virtual device and the output virtual device. Therefore, users don&#39;t need to install any particular custom application in order to utilize the remote hardware of other electronic devices. By utilizing the control method of the present invention, all electronic devices are allowed to execute applications without hardware limitations by mounting other electronic devices. Therefore, the control method and system can solve the problem described above. 
         [0007]    In one aspect of the disclosure, a control method is provided for a demanding electronic device to execute an application on the demanding electronic device. The control method includes establishing an input virtual device on the demanding electronic device for using a first peripheral of a providing electronic device as a built-in peripheral of the demanding electronic device, and accessing data to the providing electronic device or from the providing electronic device via the input virtual device, wherein the data corresponds to the application. The providing electronic device is physically separated from the demanding electronic device. 
         [0008]    In some embodiments, the control method further includes determining whether the current hardware resources of the demanding electronic device are sufficient to execute the application before the step of establishing the input virtual device on the demanding electronic device. When it is determined that the current hardware resources of the demanding electronic device are insufficient to execute the application, the input virtual device is established on the demanding electronic device. Furthermore, the control method includes searching for the providing electronic device via the demanding electronic device before the step of establishing the input virtual device on the demanding electronic device. After the step of searching for the providing electronic device, the control method further includes authenticating the providing electronic device, establishing a connection with the providing electronic device via the demanding electronic device, and exchanging information about the first peripheral of the providing electronic device. The input virtual device comprises program codes of software and/or firmware of the demanding electronic device. 
         [0009]    In another aspect of the disclosure, a control method is provided for a providing electronic device to support a demanding electronic device for executing an application on the demanding electronic device. The control method includes establishing an output virtual device on the providing electronic device for transmitting data from a first peripheral of the providing electronic device to the demanding electronic device, and transmitting the data from the first peripheral of the providing electronic device to the demanding electronic device via the output virtual device. The providing electronic device is physically separated from the demanding electronic device. And the first peripheral of the providing electronic device is utilized as a built-in peripheral of the demanding electronic device and the data corresponds to the application. In addition, the control method also includes feeding back a search for the providing electronic device via the demanding electronic device before the step of establishing the output virtual device on the providing electronic device. 
         [0010]    In another aspect of the disclosure, a system for accessing data among at least two different electronic devices is provided. The system includes a demanding electronic device and a providing electronic device. The demanding electronic device is utilized to establish an input virtual device to execute an application on the demanding electronic device. The providing electronic device is utilized to establish an output virtual device for transmitting data from the providing electronic device to the demanding electronic device via the output virtual device, wherein the data corresponds to the application, and the providing electronic device is physically separated from the demanding electronic device. The input virtual device is established to use a first peripheral of the providing electronic device as a built-in peripheral of the demanding electronic device. 
         [0011]    A detailed description is given in the following embodiments with reference to the accompanying drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0012]    The present invention can be more fully understood by reading the subsequent detailed description and examples with references made to the accompanying drawings, wherein: 
           [0013]      FIG. 1  is a schematic diagram illustrating an electronic device according to an embodiment of the invention; 
           [0014]      FIG. 2A  to  FIG. 2C  are schematic diagrams illustrating a demanding electronic device and a providing electronic device according to an embodiment of the invention; 
           [0015]      FIG. 3  is a flowchart illustrating a control method for the demanding electronic device according to an embodiment of the invention; 
           [0016]      FIG. 4  is a flowchart illustrating a control method for the providing electronic device according to an embodiment of the invention; 
           [0017]      FIG. 5  is another schematic diagram illustrating an electronic device according to an embodiment of the invention; 
           [0018]      FIG. 6A  is a flowchart illustrating a control method for a camera application according to an embodiment of the invention; 
           [0019]      FIG. 6B  is a schematic illustrating a control method for a camera application according to an embodiment of the invention. 
       
    
    
       [0020]    Corresponding numerals and symbols in the different figures generally refer to corresponding parts unless otherwise indicated. The figures are drawn to clearly illustrate the relevant aspects of the embodiments and are not necessarily drawn to scale. 
       DETAILED DESCRIPTION OF THE INVENTION 
       [0021]    The following description is of the best-contemplated mode of carrying out the invention. This description is made for the purpose of illustrating the general principles of the invention and should not be taken in a limiting sense. Certain terms and figures are used throughout the description and following claims to refer to particular components. As one skilled in the art will appreciate, manufacturers may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. The terms “component”, “system” and “device” used in the present invention could be the entity relating to the computer which is hardware, software, or a combination of hardware and software. In the following description and in the claims, the terms “include” and “comprise” are used in an open-ended fashion, and thus should be interpreted to mean “include, but not limited to . . . ”. Also, the term “couple” is intended to mean either an indirect or direct electrical connection. Accordingly, if one device is coupled to another device, that connection may be through a direct electrical connection, or through an indirect electrical connection via other devices and connections. 
         [0022]      FIG. 1  is a schematic diagram illustrating an electronic device  100  according to an embodiment of the invention. The electronic device  100  could be a portable electronic device which provides wireless network service and network connection such as a cell phone, a tablet computer, a laptop computer or a PDA, or could it be non-portable electronic apparatus such as a television set, a desktop computer, or a server. As shown in  FIG. 1 , the electronic device  100  includes a processor  110 , a connector  120 , a memory  130  and a display  140 . The processor  110  could include a digital signal processor (DSP), a microcontroller (MCU), a central-processing unit (CPU) or a plurality of parallel processors relating a parallel processing environment to implement the operating system (OS), firmware, driver and/or other applications of the electronic device  100 . The connector  120  is utilized to perform wireless communication between different electronic devices  100  based on various protocols. The protocol of wireless communication could constitute GSM, GPRS, EDGE, UMTS, W-CDMA, CDMA2000, TD-CDMA, Bluetooth, NFC, WiFi, WiMAX, LTE, LTE-A or TD-LTE. 
         [0023]    In addition, the memory  130  includes one or more of a random access memory (RAM), a read-only memory (ROM), a flash memory, a hard disk, a soft disk, a magnetic memory, a compact disc (CD) and a digital video disk (DVD). The display  140  is utilized to display content from the electronic device  100 . Specifically, the display  140  could be a touch display panel, such as resistive touch panels, capacitive touch panels, optical touch panels or electromagnetic touch panels. Furthermore, in some embodiments, the electronic device  100  may also include other hardware such as a speaker, a camera, a sensor (such as light sensor or color sensor, a temperature sensor, a humidity sensor), a barometer, an antenna, a GPS receiver, a haptic device, an accelerometer, a speedometer and/or a health monitor. 
         [0024]    However, the electronic device  100  may not always have the hardware necessary to execute a specific application. For example, the electronic device  100  is a television without a camera, and it may not be able to execute an application for taking photos. The present invention provides an efficient and user-friendly control method for the electronic device  100  to overcome the deficiencies of its own hardware and to be able to operate the specific application.  FIG. 2A  to  FIG. 2C  are schematic diagrams illustrating a system  10  which includes a demanding electronic device  100 A and a providing electronic device  100 B according to an embodiment of the invention. The demanding electronic device  100 A and the providing electronic device  100 B are similar to the electronic device  100  as shown in  FIG. 1 . Specifically, each of the demanding electronic device  100 A and the providing electronic device  100 B includes a connector  120 , an application  150 , an application framework  160 , an operating system (OS)  170  and hardware  180 . The application  150 , the application framework  160  and the OS  170  could be performed by the processor  110  as shown in  FIG. 1 . The hardware  180  could include many different types of components, such as a speaker, a camera, and a sensor. 
         [0025]    As shown in  FIG. 2A , the demanding electronic device  100 A performs a searching process to discover other electronic devices. Specifically, the connector  120  of the demanding electronic device  100 A is utilized to search for other electronic devices based on some discovery protocols, such as the UPNP (Universal Plug And Play) protocol or the mDNS (multicast Domain Name System) protocol. In one embodiment, the connector  120  of the providing electronic device  100 B feeds back the results of the search for the demanding electronic device  100 A. Afterwards, the connection could be developed between the demanding electronic device  100 A and the providing electronic device  100 B by their connectors  120 . Furthermore, the providing electronic device  100 B could also execute the searching process for finding the demanding electronic device  100 A. It should be noted that, in some embodiments, the search process is automatically executed without input from users. 
         [0026]    After a connection has been established between the demanding electronic device  100 A and the providing electronic device  100 B, the input virtual device  174  of the demanding electronic device  100 A and the output virtual device  176  of the providing electronic device  100 B are respectively developed as shown in  FIG. 2B . The input virtual device  174  includes program codes of the software and/or firmware of the demanding electronic device  100 A, and the output virtual device  176  includes program codes of software and/or firmware of the providing electronic device  100 B. The input virtual device  174  is utilized to simulate the functions of real hardware for the demanding electronic device  100 A to execute the specific application. The deficiency of not being able to execute the specific application is compensated for by developing the input virtual device  174 . Afterwards, as shown in  FIG. 2C , the output virtual device  176  transmits data from the providing electronic device  100 B to the demanding electronic device  100 A. The transmitted data is obtained by the hardware of the providing electronic device  100 B, and the demanding electronic device  100 A lacks the hardware. By developing the input virtual device  174  and the output virtual device  176 , the hardware of the providing electronic device  100 B could be utilized by the demanding electronic device  100 A to compensate for its deficiency. 
         [0027]      FIG. 3  is a flowchart illustrating a control method for the demanding electronic device  100 A according to an embodiment of the invention. In step S 310 , whether the current hardware resources of the demanding electronic device  100 A are sufficient to execute the specific application is determined. If the processor  110  of the demanding electronic device  100 A determines that the current hardware resources of the demanding electronic device  100 A can afford to execute the specific application, the control method ends as shown in step S 380 . If the processor  110  of the demanding electronic device  100 A determines that the current hardware resources of the demanding electronic device  100 A cannot afford to execute the specific application, step S 320  will be executed to utilize the hardware resources of other electronic devices. In step S 320 , the demanding electronic device  100 A searches for the providing electronic device  100 B. If the providing electronic device  100 B is not found by and connected to the demanding electronic device  100 A, the control method ends as shown in step S 380 . If the providing electronic device  100 B is found by and connected to the demanding electronic device  100 A, step S 330  is executed. 
         [0028]    In step S 330 , the demanding electronic device  100 A authenticates the providing electronic device  100 B and establishes a connection with the providing electronic device  100 B. Specifically, an authentication process will be needed for the demanding electronic device  100 A to identify the providing electronic device  100 B or for the providing electronic device  100 B to identify the demanding electronic device  100 A. For example, the authentication process could be implemented by inputting passwords, or it could be inputting the instruction of accepting or rejecting the authentication. After the authentication, the connection between the demanding electronic device  100 A and the providing electronic device  100 B will be developed. Details relating to the mechanism for developing the connection between the demanding electronic device  100 A and the providing electronic device  100 B have been illustrated in  FIG. 2A  to  FIG. 2C , and will not be repeated again. 
         [0029]    In step S 340 , information about the peripheral of the providing electronic device  100 B is exchanged. The peripheral is the hardware needed by the demanding electronic device  100 A to execute the specific application. Therefore, information about the peripheral will be obtained in the control method, such as the detailed specifications and function of the peripheral. In addition, the communication channel between the demanding electronic device  100 A and the providing electronic device  100 B are confirmed to transmit and receive data with each other. For example, the communication channel could be based on the UPNP protocol, the mDNS protocol, or other protocols such as GSM, GPRS, EDGE, UMTS, W-CDMA, CDMA2000, TD-CDMA, Bluetooth, NFC, WiFi, WiMAX, LTE, LTE-A or TD-LTE. 
         [0030]    Afterwards, in step S 350 , an input virtual device  174  is established on the demanding electronic device  100 A for using the peripheral of the providing electronic device  100 B as a built-in peripheral of the demanding electronic device  100 A. The input virtual device  174  includes program codes of software and/or firmware of the demanding electronic device  100 A to handle interactions with the OS  170 . Therefore, the input virtual device  174  could emulate the real hardware of the peripheral of the providing electronic device  100 B, and the functions of the peripheral of the providing electronic device  100 B could be utilized by the demanding electronic device through the input virtual device  174 . In step S 360 , the input virtual device  174  accesses data to the providing electronic device  100 B or from the providing electronic device  100 B. In other words, by establishing the input virtual device  174 , the demanding electronic device  100 A could operate in such a way that the peripheral has been embedded within itself. Since the connection and the input virtual device  174  are automatically developed by the demanding electronic device  100 A, users do not need to expend effort. Therefore, the control method provided by the present invention is user-friendly and could be easily utilized by users. 
         [0031]      FIG. 4  is a flowchart illustrating a control method for the providing electronic device  100 B according to an embodiment of the invention. In step S 410 , the providing electronic device  100 B feeds back details of the search provided by the demanding electronic device  100 A. If the providing electronic device  100 B does not feedback a searching provided by the demanding electronic device  100 A, the control method ends as shown in the step S 480 . If the providing electronic device  100 B feedbacks a searching provided by the demanding electronic device  100 A, step S 430  will be executed for authenticating the demanding electronic device  100 A and establishing a connection with the demanding electronic device  100 A. Afterwards, in step S 440 , information about the peripheral of the providing electronic device  100 B is exchanged. The information about the peripheral could include the detailed specifications and function of the peripheral. The detailed mechanisms for developing the connection, authentication, and exchanging of information have been illustrated in  FIG. 3 , and will not be repeated again. 
         [0032]    In step S 450 , an output virtual device  176  is established on the providing electronic device  100 B for transmitting data from a peripheral of the providing electronic device  100 B to the demanding electronic device  100 A. Afterwards, in step S 460 , the data is transmitted from the peripheral of the providing electronic device  100 B to the demanding electronic device  100 A by the output virtual device  176 . By developing the input virtual device  174  and the output virtual device  176 , the demanding electronic device  100 A could emulate the real hardware of the peripheral of the providing electronic device  100 B. Therefore, the peripheral of the providing electronic device  100 B could be utilized by the demanding electronic device to execute the specific application through the input virtual device  174  and the output virtual device  176 . 
         [0033]      FIG. 5  is another schematic diagram illustrating an electronic device  100  according to an embodiment of the invention. The electronic device  100  includes the application  150 , the application framework  160 , the hardware abstraction layer (HAL)  172 , the memory  130 , the first driver  192  and the second driver  194 . The application  150  could include home application, dialer application, SMS/MMS application, IM application, browser application, camera application, alarm application, calculator application, contacts application, voice dial application, email application, calendar application, media player application, photo album application and clock application. The application framework  160  could include activity manager framework, window manager framework, content providers framework, view system framework, notification manager framework, package manager framework, telephone manager framework, resource manager framework and location manager framework. 
         [0034]    The driver (such as first driver  192  or the second driver  194 ) is utilized to drive its corresponding hardware so that the corresponding hardware could be utilized by the electronic device  100 . Since the electronic device  100  could include various kinds of hardware, there could also be various corresponding drivers such as a display driver, a camera driver, a Bluetooth driver, a memory driver, a binder (IPC) driver, a USB driver, a keypad driver, an audio driver, a power management driver, a GPS driver or a WiFi driver. In addition, the hardware abstraction layer (HAL)  172  is utilized to link with one of the drivers and functions as the connection between the software and hardware of the electronic device  100 . The hardware abstraction layer  172  could include graphics HAL, audio HAL, camera HAL, Bluetooth HAL, GPS HAL, radio HAL and WiFI HAL. Furthermore, libraries (not shown) could also be arranged between the application framework  160  and the hardware abstraction layer  172 . The libraries could include surface manager library, media framework library, SQLite library, WebKit library, Libc library, audio manager library, FreeType library and SSL library. 
         [0035]    In some embodiments, the hardware abstraction layer  172  could switch from linking a first driver  192  to linking a second driver  194 . The application  150  and the application framework  160  will not be aware of the switch of the drivers. In addition, after the virtual device (input virtual device or output virtual device) of the electronic device  100  has been developed, the application  150  is capable of connecting and cross-mounting the virtual device through the hardware abstraction layer  172 . For example, in one embodiment, the application  150  operates with its own hardware  180 , such as a camera, with a first driver  192 . Afterwards, the electronic device  100  establishes a virtual device relating to a camera with higher resolution of another electronic device. The hardware abstraction layer  172  is modified for the electronic device  100  to seamlessly cross-mount the virtual device as its built-in peripheral hardware. Specifically, the path  132  in the memory  130  associated with hardware abstraction layer  172  is modified to point the operation of the application  150  to a second driver  194 , and the second driver  194  is different from the first driver  192 . Specifically, the hardware abstraction layer  172  is capable of mapping many specifications of the hardware of the providing electronic device  100 B. Because the hardware abstraction layer  172  maps specifications of the hardware and links its corresponding driver, the input virtual device  174  of the demanding electronic device  100 A could simulate the real hardware of the providing electronic device  100 B through the hardware abstraction layer  172 . 
         [0036]    In this embodiment, the second driver  194  is associated with the established virtual device, and the hardware abstraction layer  172  links with the second driver  194  rather than the first driver  192 . In other words, the first driver  192  is temporarily disabled. In addition, when the virtual device is dismounted and another electronic device is out of range, the electronic device  100  restores an original path for the first driver  192 . The electronic device  100  seamlessly restores the associated memory  130  of the hardware abstraction layer  172  as per the original configuration. In the original configuration, the hardware abstraction layer  172  links with the first driver  192 . It should be noted that the hardware abstraction layer  172  is merely for illustration, not for limitation. Similar algorithms and mechanisms could also be applied for a different OS and different devices to perform the same function. 
         [0037]      FIG. 6A  is a flowchart illustrating a control method for a camera application according to an embodiment of the invention. In step S 610 , the user tries to launch a camera application. Afterwards, in step S 620 , a determination is made as to whether or not the current hardware resources of the demanding electronic device  100 A are sufficient to execute the camera application. If the current hardware resources of the demanding electronic device  100 A are sufficient to execute the camera application, the camera application will be launched successfully in step S 650 . If the current hardware resources of the demanding electronic device  100 A are not sufficient to execute the camera application, step S 630  is executed so that the demanding electronic device  100 A develops an input virtual device relating another camera of the providing electronic device  100 B. If the demanding electronic device  100 A develops an input virtual device, the camera application will be launched successfully in step S 650 . If the demanding electronic device  100 A does not develop an input virtual device, the camera application will not be launched successfully in step S 640 . 
         [0038]      FIG. 6B  is a schematic illustrating a control method for a camera application according to an embodiment of the invention. In step S 660 , an icon of camera application is shown by the display  140  of the demanding electronic device  100 A. If there is no appropriate hardware to launch the camera application, an error message will be displayed as shown in step S 670 . If the input virtual device  174  is established for utilizing the remote camera of the providing electronic device  100 B, a list including the camera of the demanding electronic device  100 A and the remote camera of the providing electronic device  100 B will be displayed as shown in step S 680 . Afterwards, in step S 690 , the camera application will be started after selecting the camera or the remote camera. 
         [0039]    In one embodiment, a user may carry a plurality of portable electronic devices  100 A˜ 100 D such as a phone, a tablet (not shown), a wearable device or a wearable bracelet. These electronic devices  100 A˜ 100 D can be clustered as a device group for cross-mounting. Seamless cross-mounting provided by the present invention improves user convenience and saves power. For example, the user can utilize the electronic device  100 B to take a high-resolution photo by employing a camera equipped on the electronic device  100 A. For example, the electronic device  100 B cross-mounts the camera equipped on the phone electronic device  100 A as its virtual camera device. The electronic device  100 B reads data, e.g. a video stream, generated by the camera on the electronic device  100 A through various communication methods such as Bluetooth low energy (BLE), Bluetooth, Wi-Fi, HDMI, USB and RFID. 
         [0040]    In another embodiment, a 5.1 surround sound system can be realized by the cross-mounting of a plurality of electronic devices. By collecting six electronic devices and placing them at rough positions, 5.1 surround sound system can be emulated accordingly. For example, one of the electronic devices cross-mounts the other five speakers on the remaining electronic devices, and it is placed at the center speaker position. The other five electronic devices are placed at the front left, the front right, the rear left, the rear right and the subwoofer positions to the center position respectively. The six electronic devices together operate as the 5.1 surround sound system through their respective speakers. Preferably, the electronic device at center speaker position can also provide a video display for all users. Preferably, the six electronic devices may perform a sound calibration to provide a better sound output. It should be understood that the invention is not limited to the disclosed embodiments. On the contrary, it is intended to cover various modifications and similar arrangements, e.g. 2.1 or 7.1 surrounding sound system with sufficient electronic devices. 
         [0041]    In another embodiment, panoramic photography can be easily realized by cross-mounting a plurality of electronic devices. By collecting a plurality of electronic devices and placing them at rough positions, panoramic photography can be performed with one shot. For example, one of the electronic devices cross-mounts the cameras on other remaining electronic devices. Preferably, the electronic device may also cross-mount position sensors on the remaining electronic devices to perform a position calibration to provide good, quick panoramic photography. It should be understood that the invention is not limited to the disclosed embodiments. On the contrary, it is intended to cover various modifications and similar arrangements such as the 3D photography. 
         [0042]    In another embodiment, flexible self-photography can be realized by cross-mounting a plurality of electronic devices. For example, user can cross-mount the demanding electronic device  100 A with the camera on the providing electronic device  100 B. The providing electronic device  100 B may possess two or more cameras. Preferably, the demanding electronic device  100 A cross-mounts the camera on the providing electronic device  100 B with higher resolution. The demanding electronic device  100 A can freely preview the image captured by the camera on the providing electronic device  100 B. Thus, the user is not limited by always previewing the image on the providing electronic device  100 B. 
         [0043]    The invention discloses a cross-platform mechanism of mounting one or more electronic devices. By utilizing the control method of the present invention, all electronic devices are allowed to execute any kind of application without hardware limitation by mounting other electronic devices. The control method of the invention includes setting up virtual devices automatically, simulating a real hardware via the virtual devices for executing the specific application, and transferring data between the input virtual device and the output virtual device automatically. Therefore, users don&#39;t need to install any particular custom applications in order to utilize the remote hardware of other electronic devices. 
         [0044]    Although embodiments of the present disclosure and their advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the disclosure as defined by the appended claims. Moreover, the scope of the present application is not intended to be limited to the particular embodiments of the process, machine, manufacture, composition of matter, means, methods and steps described in the specification. As one of ordinary skill in the art will readily appreciate from the disclosure of the present disclosure, processes, machines, manufacture, compositions of matter, means, methods, or steps, presently existing or later to be developed, that perform substantially the same function or achieve substantially the same result as the corresponding embodiments described herein may be utilized according to the present disclosure. Accordingly, the appended claims are intended to include within their scope such processes, machines, manufacture, compositions of matter, means, methods, or steps.