Abstract:
An application transfer system transfers an application between terminals A, B each operated on a predetermined OS. When the terminal B receives from the terminal A a request to transfer an application (S 22 ), the terminal B checks an OS for the application, and executes the application after making an adjustment so that the OS of the terminal B becomes the same as that for the application (S 24 ). As a result, an application transfer system and an application transfer method can be provided which can transfer an application between any devices.

Description:
TECHNICAL FIELD 
       [0001]    The present invention relates to application transfer systems, application transfer methods, terminals, and programs, and more particularly to application transfer systems, application transfer methods, terminals, and programs which can transfer an application between any devices. 
       BACKGROUND ART 
       [0002]    Conventionally, there are a need for users playing a game on a home personal computer (PC) to continue the game while traveling with transportation of some kind. A method based on this need is disclosed in, e.g., Japanese Unexamined Patent Application Publication No. 2012-517767 (Patent Literature 1). According to Patent Literature 1, by operation of content-transfer user interface control on the user&#39;s mobile phone, state information of the game is transferred to the phone and the player can resume the game on a small screen. 
       CITATION LIST 
     Patent Literatures 
       [0003]    PTL 1: Japanese Unexamined Patent Application Publication No. 2012-517767 
       SUMMARY OF INVENTION 
     Technical Problem 
       [0004]    Conventional methods for continuing an application such as a game on a different device includes the above method. According to the above method, the user plays a game on a home PC as the user&#39;s input information is sent to a cloud processor and the cloud processor interacts with the game and sends a corresponding MPEG stream back to the user&#39;s PC. The user switches the destination for the game to his/her mobile phone to continue the game on the mobile phone. 
         [0005]    In this method, however, connection to the cloud system is necessary, which complicates the configuration and increases the cost. 
         [0006]    The present invention was developed to solve the above problem, and it is an object of the present invention to provide an application transfer system, an application transfer method, a terminal, and a program which can transfer an application between any devices. 
       Solution to Problem 
       [0007]    An application transfer system transfers an application between first and second terminals each having a predetermined OS. The first terminal includes transmitting means for transmitting to the second terminal a request to transfer the application and information specifying the OS. The second terminal includes virtualization software that virtualizes operation of an OS different from the OS of the second terminal, receiving means for receiving the transfer request, determining means for determining if the OS for the application received by the receiving means is the same as the OS of the second terminal, and control means for performing control to execute the application as it is if it is determined by the determining means that the OS for the application requested to be transferred is the same as the OS of the second terminal, and to start the virtualization software to execute the application if it is determined by the determining means that the OS for the application requested to be transferred is different from the OS of the second terminal. 
         [0008]    Preferably, the transmitting means transmits, to the second terminal, accompanying information that defines a state at a time the application is transferred. 
         [0009]    It is preferable that the accompanying information include information indicating an executed part of a program at a time execution of the program on the first terminal is stopped and a state of the application at the time execution of the program on the first terminal is stopped. 
         [0010]    The accompanying information may include a memory size being used by the application. 
         [0011]    The first terminal may have the virtualization software. 
         [0012]    Another aspect of the present invention is directed to a method for transferring an application. The application transfer method transfers an application between first and second terminals each having a predetermined OS and a memory. The method includes the steps of: transmitting from the first terminal to the second terminal a request to transfer the application; receiving by the second terminal the transfer request from the first terminal; determining by the second terminal if the OS that runs the application requested to be transferred is the same as the OS of the second terminal; and executing the application as it is if it is determined that the OS for the application requested to be transferred is the same as the OS of the second terminal, and starting virtualization software to execute the application if it is determined that the OS for the application requested to be transferred is different from the OS of the second terminal. 
         [0013]    Still another aspect of the present invention is directed to a terminal that receives from an external terminal having a predetermined OS an application running on the external terminal, and that can run the application. The terminal includes: virtualization software that virtualizes operation of an OS different from an OS of the terminal; receiving means for receiving from the external terminal a request to transfer the application and information specifying the OS of the external terminal; determining means for determining if the OS for the application received by the receiving means is the same as the OS of the terminal; and control means for performing control to execute the application as it is if it is determined by the determining means that the OS for the application requested to be transferred is the same as the OS of the terminal, and to start the virtualization software to execute the application if it is determined by the determining means that the OS for the application requested to be transferred is different from the OS of the terminal. 
         [0014]    Yet another aspect of the present invention is directed to a program that causes a second terminal as a computer to receive an application running on an external first terminal having a predetermined OS and to run the application. The second terminal includes virtualization software that virtualizes operation of an OS different from an OS of the second terminal. The program is run as receiving means for receiving from the first terminal a request to transfer the application and information specifying the OS of the first terminal, determining means for determining if the OS for the application received by the receiving means is the same as the OS of the second terminal, and control means for performing control to execute the application as it is if it is determined by the determining means that the OS for the application requested to be transferred is the same as the OS of the second terminal, and to start the virtualization software to execute the application if it is determined by the determining means that the OS for the application requested to be transferred is different from the OS of the second terminal. 
       Advantageous Effects of Invention 
       [0015]    In an application transfer system that transfers an application between first and second terminals each having a predetermined OS, the second terminal that has received a transfer request executes the application as it is if the application can run on the OS of the second terminal, and otherwise, starts software for virtualizing an OS to execute the application. 
         [0016]    As a result, an application transfer system, an application transfer method, a terminal, and a program can be provided which can transfer an application between any devices. 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0017]      FIG. 1  is a schematic diagram showing the state where an application is transferred according to an embodiment of the present invention. 
           [0018]      FIGS. 2A and 2B  are block diagrams showing the configuration of a mobile terminal and a car navigation system. 
           [0019]      FIG. 3  is a diagram showing the configuration of a main memory of the mobile terminal. 
           [0020]      FIG. 4  is a diagram showing the configuration of the main memory after an application is loaded on the mobile terminal. 
           [0021]      FIG. 5  is a diagram showing the configuration of the main memory after a memory of a requested size is allocated to the application as a work area. 
           [0022]      FIG. 6  is a flowchart showing operation of an OS of a mobile terminal and an OS of a car navigation system when transferring an application. 
           [0023]      FIG. 7  is a flowchart showing processing after the receiving terminal receives the application and its accompanying information. 
           [0024]      FIGS. 8A and 8B  are diagrams showing the configuration of the main memories of the transmitting and receiving terminals before transfer of the application. 
           [0025]      FIGS. 9A and 9B  are diagrams showing the configuration of the main memories of the transmitting and receiving terminals after transfer of the application. 
           [0026]      FIG. 10  is a schematic diagram showing the configuration of the transmitting and receiving terminals in the case where the OS of the receiving terminal cannot run the application. 
       
    
    
     DESCRIPTION OF EMBODIMENTS 
       [0027]    An embodiment of a method for transferring an application according to the present invention will be described below with reference to the accompanying drawings.  FIG. 1  is a schematic diagram showing, as an example of transfer of an application, the case where the user who has started a map application and is looking at the map on a mobile terminal  10  such as a mobile phone transfers the map application to a car navigation system  20 . 
         [0028]      FIG. 2A  is a block diagram showing the configuration of the mobile terminal  10 . Referring to  FIG. 2A , the mobile terminal  10  includes a CPU  11  that controls the entire mobile terminal  10 , an operation unit  12 , a storage device  13 , a display unit  14  such as a display, and a communication unit  15 . The communication unit  15  operates as transmitting means. The CPU  11  and applications are driven by an operating system (OS) A. Hereinafter, this OS is referred to as the “OSA,” and an OS that is driven by B is referred to as the “OSB.” 
         [0029]      FIG. 2B  is a block diagram showing the configuration of the car navigation system  20 . Referring to  FIG. 2B , the car navigation system  20  includes a CPU  21  that controls the entire car navigation system  20 , an operation unit  22 , a storage device  23 , a display unit  24  such as a display, and a communication unit  25 . The communication unit  25  operates as receiving means. The CPU  21  is driven by the OSB. 
         [0030]    The CPU  11  and the OSA of the mobile terminal  10  and the CPU  21  and the OSB of the car navigation system  20  can execute a map application, and the communication units  15 ,  25  can transmit and receive the application. 
         [0031]    First, the internal operation of the OSA in the mobile terminal  10  will be described.  FIG. 3  is a diagram showing a main memory  31  in the storage device  13 , illustrating operation of the OSA. A part of the main memory  31  is always used by the OSA, and the OSA performs basic operations such as input/output control of the operation unit  12 , the display unit  14 , etc. of the mobile terminal  10  and memory management of the main memory  31 . An area that is used for the basic operations of the OSA is a system area  33 . The system area  33  is an area that is required to run any application. The area other than the system area  33  in the main memory  31  is an unused area  32 . 
         [0032]      FIG. 4  shows the case where the user of the mobile terminal  10  has started a game application in this state.  FIG. 4  is a diagram showing the main memory  31  of the mobile terminal  10  and an external SD card  40  connected to the mobile terminal  10 . It is assumed that the program of the application itself has been stored in the SD card  40 . The SD card  40  includes an application area  41  that stores data including the program of the application, and an unused area  42  where no data has been stored. 
         [0033]    When the user operates the operation unit  12  etc. of the mobile terminal  10  to start the application, the OSA copies data of the application stored in the SD card  40  to the unused area  32  in the main memory  31 . An application area  35  is thus created in the main memory  31 , as shown on the left side of the figure. 
         [0034]    The CPU  11  starts the application and starts operation specific to each application after initialization. Since a work area specific to each application is required, the application requests the OSA to allocate the memory to the application. 
         [0035]    The OS allocates the memory of a requested size to the application as a work area. This state is shown in  FIG. 5 . As shown in  FIG. 5 , a work area  36  is provided adjacent to the application area  35 . 
         [0036]    When the user terminates the application, the OS releases the work area and the area allocated to the application. Allocation of the main memory in this state is the same as that shown in  FIG. 3 . 
         [0037]    Next, a method for transferring an application from the mobile terminal  10  to the car navigation system  20  will be described.  FIG. 6  is a flowchart showing operation of the OSA of the mobile terminal  10  and the OSB of the car navigation system  20  in this case. Hereinafter, the mobile terminal  10  is generally referred to as the “terminal A,” and the car navigation system  20  is generally referred to as the “terminal B.” 
         [0038]    Referring to  FIG. 6 , the terminal A loads an application from an SD card and then executes the application (steps S 11 , S 12 ). The terminal B is waiting for a transfer request from the user (S 21 ). 
         [0039]    If the user decides to transfer the application and inputs this decision via the operation unit  12  of the terminal A shown in  FIG. 2 , the terminal A stops executing the application (YES in S 13 , S 14 ). As used herein, the expression “stop executing the application” does not mean terminating the application but means stopping the application while maintaining its operating state. The terminal A then sends a transfer request to the terminal B (S 15 ). That is, the terminal A has a function to stop the application while maintaining its operating state. 
         [0040]    In response to the transfer request, the terminal B sends an acknowledge signal to the terminal A to acknowledge the transfer request (YES in S 22 , S 23 ). 
         [0041]    In response to the transfer request acknowledge signal, the terminal A sends the application and its accompanying information to the terminal B and terminates the application (YES in S 16 , S 17 , S 18 ). The terminal A sends, wired or wirelessly, the application and the accompanying information directly to the terminal B without using a server on a network etc. The accompanying information includes information on the OS that runs the application. 
         [0042]    The routine returns to S 15  if the terminal A does not receive the acknowledge signal from the terminal B within a certain period. 
         [0043]    In response to the application and the accompanying information, the terminal B performs predetermined processing (S 24 ). The accompanying information will be described later. 
         [0044]    The predetermined processing that is performed by the CPU  21  of the terminal B in S 24  will be described below.  FIG. 7  is a flowchart showing the details of this predetermined processing. Referring to  FIG. 7 , in the predetermined processing, the terminal B first refers to the accompanying information to determine if the OS (OSB) of the terminal B is an OS that can run the application (S 31 ). If the OSB is an OS that can run the application (YES in S 31 ), the terminal B copies the application to the unused area of the main memory, and the routine proceeds to S 25  in  FIG. 6  (S 32 ). Otherwise (NO in S 31 ), the terminal B starts virtual software (S 33 ), and the routine proceeds to S 25  in  FIG. 6 . 
         [0045]    What is determined in S 31  is not whether the OS of the terminal B is physically the same as the OS that runs the application, but whether the OS of the terminal B can run the application. The CPU  21  operates as determining means and control means. 
         [0046]    Specific processing to be performed in the case where the OS (OSB) of the terminal B can run the application (S 32  in  FIG. 7  and S 25  in  FIG. 6 ) will be described below. 
         [0047]      FIGS. 8A ,  8 B and  9 A,  9 B are diagrams showing details of the main memories of the terminals A, B in this case.  FIGS. 8A and 8B  show the state of the terminals A, B before transfer of the application.  FIGS. 9A and 9B  show the state of the terminals A, B after transfer of the application. 
         [0048]    Since the OS of the terminal A is equivalent to that of the terminal B, the system area is the same between the main memories of the terminals A, B. The OS of the terminal A copies, wirelessly or wired, the application  35  and the work area  36  shown in  FIG. 8A  to the unused area  52  of the main memory  50  of the terminal B shown in  FIG. 8B . After copying the areas  35 ,  36 , the OSA of the terminal A terminates the application and erases the data. This state is shown in  FIGS. 9A and 9B . 
         [0049]    In order for the user to continue the application on the terminal B from the operating state of the application on the terminal A, the terminal A need also transfer the work area as well. Transferring only the application to the terminal B is equivalent to starting the application on the terminal B, and the application is started from its initial state. 
         [0050]    That is, transferring both the application and the work area allows the user to continue the application on the terminal B from the operating state of the application on the terminal A. 
         [0051]    In other words, transferring both the application and the work area makes the state in the memory which is recognized by the application on the terminal B exactly the same as that in the memory of the terminal A before transfer of the application. 
         [0052]    Specific processing to be performed in the case where the OS (OSB) of the terminal B cannot run the application will be described below (S 33  in  FIG. 7 ). 
         [0053]      FIG. 10  is a schematic diagram showing the configuration including hardware and software in the terminals A, B in this case. The left side of the figure shows the terminal A, and the right side of the figure shows the terminal B. Referring to  FIG. 10 , the terminal A includes hardware A, the OSA that can run on the hardware A, an application framework  63  that runs on the OSA, and an application  64  that runs on the application framework. The OSA includes an OS kernel  61  and libraries  62 . In the case where the OSA is Android, the libraries  62  include an Android Runtime  62   a  that will be described later. 
         [0054]    Similarly, the terminal B includes hardware B, the OSB that can run on the hardware B, virtualization software  73  that runs on the OSB, and an application  74  that runs on the virtualization software  73 . The OSB includes an OS kernel  71  and libraries  72 . 
         [0055]    The virtualization software  73  installed in the terminal B absorbs the difference between the terminals A, B. In other words, although the application is actually being run on the terminal B, the virtualization software  73  behaves to the application as if the application were being run on the terminal A. In the figure, the terminal B has different hierarchy from the terminal A in the level of the virtualization software  73  and the levels lower than the virtualization software  73  (the libraries  72 , the kernel  71 , and the hardware  70 ). However, since the virtualization software  73  performs the same operation as the terminal A, the program can run even on the different hardware. 
         [0056]    Examples of the virtualization software include VMware that can execute Linux (registered trademark) applications on Windows (registered trademark) and can execute Windows applications on Linux and that is widely used for the purpose of virtualization of web servers etc., QEMU that can emulate Windows or Linux software and can virtualize hardware together with a part of peripheral hardware, and BlueStacks that can execute Android applications on Windows or Mac. 
         [0057]    In the case where a game application is transferred from the terminal A, the virtualization software  73  on the terminal B, instead of the application framework  63 , reads the transferred game application  74  onto the memory, not shown, and executes the application  63  from the operating state of the application on the terminal A. Since the work area for storing the progress of the game is transferred simultaneously with the application, the memory is allocated to the application  74  so as to reproduce the state before the transfer. 
         [0058]    The above embodiment is described with respect to the case where a game application is transferred. However, the present invention is not limited to this, and map display of a map application may be transferred. In this case, the terminal B reads and executes the map application in a manner similar to that described above. The application requests to obtain a current position via the libraries  72 . In fact, it is the virtualization software  73  that receives this request. Since the terminal B operates in exactly the same manner as that of the terminal A and returns the same data as that of the terminal A to the application, the application cannot recognize that it is running on the virtualization software. The terminal B sends the current position to the application via the virtualization software. 
         [0059]    The accompanying information will be described below. In the present embodiment, the user can stop executing an application program and can resume the application program on a different terminal. For this purpose, exactly the same state as that at the time execution of the application program is stopped need be reproduced on the terminal to which the application program is transferred, and various accompanying information need be simultaneously transferred in addition to the application program itself and the OS that runs the application program. Such information is herein collectively referred to as the “accompanying information.” 
         [0060]    The accompanying information other than the OS includes the following information. 
         [0061]    (1) Internal Processing Information of the Application Program 
         [0062]    In order to stop a program on one terminal and resume the program on a different terminal after transfer of the program, information on the execution state of the program on the one terminal and information on the state at that time the program is stopped are required. Accordingly, the accompanying information is internal information such as the executed part of the program at the time the program is stopped and the state of the application at that time. 
         [0063]    (2) Information on the Size of the Work Area Secured for the Application and the Data in this Work Area 
         [0064]    The accompanying information is the data in the memory secured for the application and the size of this memory. 
         [0065]    Such information is required to reproduce exactly the same memory data on the virtualization software of the terminal to which the application is transferred. 
         [0066]    (3) Data in Video Memory 
         [0067]    Data in a video memory is transferred so that the virtualization software of the terminal to which the application is transferred can use the data displayed on the screen of the terminal from which the application is transferred. 
         [0068]    (4) Unique User ID for the Application 
         [0069]    In specific OSs, a unique user ID is sometimes assigned to each application for security purposes. If application software can access an area allocated to different application software, software such as viruses can be easily created. As measures against this, in the specific OSs, a different user ID is assigned to each application. A memory area allocated to one application cannot basically be accessed by an application with a different user ID, which is advantageous in terms of security. 
         [0070]    The user ID can never change during execution of the application. Accordingly, in this application transfer method, the same user ID need be assigned even after transfer of the application to resume the application. The user ID is therefore transferred together with the application. 
         [0071]    (5) Data Storage Folder for the Application and Data in the Data Storage Folder 
         [0072]    A data storage folder is allocated to each application. The data storage folder is similar to the work area described in (2), but is different from the work area in (2) in that data is temporarily stored in the work area and is erased when the application is terminated, whereas data in the data storage folder is retained even after the power is off. For example, in the case of an email application, since data of an email message is stored in this area, the email massage does not disappear even if the email application is terminated and restarted. 
         [0073]    (6) Resources of the Application 
         [0074]    The term “resources” refers to image data and data such as music which are used in the application. For example, data such as an icon image representing a specific application, a character or logo that is displayed on a menu screen, and background music and sound effects of games is treated as separate from the application itself, but this data is necessary to execute the application. Accordingly, this data need be transferred simultaneously with the application. 
         [0075]    The specific OSs are not described in the present embodiment. However, for example, the terminal A operates as follows if it is Android. 
         [0076]    Android OS is made of the following five layers. (a) Linux kernel, (b) standard libraries, (c) Android Runtime (an execution environment for executing an application), (d) application framework, and (e) applications. 
         [0077]    The Linux kernel (a) processes the most basic part that is close to hardware and that implements basic functions such as memory and process management. This is substantially the same as common personal computers. The applications do not directly interact with the kernel. 
         [0078]    The standard libraries (b) are code for implementing various functions. For example, Surface Manager handles display of graphics, and MediaFrameWork plays back video and audio. FreeType is a library for displaying various character fonts in any size. 
         [0079]    Android Runtime (c) is an environment for executing an application and provides a basic application program interface (API). This runtime directly executes the applications. 
         [0080]    The application framework (d) performs management such as starting, stopping, termination, etc. of the applications. The application framework (d) also notifies the applications of the state of the terminal. The applications directly access only application framework (d) and the libraries (b) and do not access the kernel (a). 
         [0081]    An operation example of a common application on Android will be described below with reference to  FIG. 10 . 
         [0082]    The following example is the case where the game application  64  is started. 
         [0083]    When the user sends a command to start the game application  64 , the application framework  63  reads this application onto the memory to execute the application via the Android Runtime  62   a . The application requires a work area in order to store the progress of the game therein. A virtual machine in the Android Runtime  62   a  therefore secures the memory as the work area to allocate the memory to the game application. The allocated memory is used during execution of the application and is released when operation of the application is terminated (management of the memory is returned to the Android Runtime  62   a ). 
         [0084]    An operation example of map display by a map application will be described below. 
         [0085]    When the map application is started, the application  64  is read and executed in a manner similar to that described above. In order to display a map, the latitude and longitude of a current position need be obtained via GPS. The application therefore requests to obtain the current position via core libraries in the Android Runtime  62   a . The current position is read from a GPS chip via the Linux kernel and is sent to the application via the Android Runtime  62   a.    
         [0086]    The receiving terminal B will be described. The terminal B has the virtualization software  73  as described above, and the virtualization software  73  can similarly perform all the functions of the application framework, the libraries, and the core libraries of Android on the hardware of the terminal B. 
         [0087]    The following operation is performed in the case where the game application  64  is transferred. 
         [0088]    The virtualization software  73  on the terminal B, instead of the application framework  63 , reads the transferred game application  74  onto the memory and executes the application from the operating state of the application on the terminal A. A work area for storing the progress of the game is also transferred simultaneously with the application, and the memory is allocated to the application  74  so as to reproduce the state before the transfer. 
         [0089]    The following operation is performed when the map display by the map application is transferred. The map application is read and executed in a manner similar to that in the above example. The application  74  requests to obtain a current position via the core libraries in the Android Runtime  62   a . In fact, it is not the Android Runtime  62   a  but the virtualization software  73  that receives this request. However, since the virtualization software  73  operates in exactly the same manner as that of the Android Runtime  62   a  and returns the same data as that of the Android Runtime  62   a  to the application, the application cannot recognize that it is running on the virtualization software  72 . The terminal B sends the current position to the application via the virtualization software  73 . How the data of the current position is actually implemented depends on the specifications of the terminal B as described above. 
         [0090]    The above embodiment is described with respect to the case where only the terminal B has virtualization software. However, the present invention is not limited to this, and both terminals A, B may have virtualization software and functions of the terminal from which an application is transferred. In this configuration, desired transfer can be bidirectionally made between the terminals A, B. Moreover, an application executed on the terminal A can be transferred back to the terminal A after being transferred to and executed on the terminal B and all the operating state can be transferred. 
         [0091]    The above embodiment is described with respect to the case where the specific OS is Android. However, the present invention is not limited to this, and similar processing can be carried out on any OS. 
         [0092]    The above embodiment is described with respect to the case where an application is transferred between a mobile terminal and a car navigation system and the case where map information is displayed by using GPS. However, the present invention is not limited to this. The present invention is also applicable to the case where the user washing a movie on a mobile terminal transfers the movie to a large screen TV and the case where the user playing a game on a mobile terminal transfers the game to a large screen TV. 
         [0093]    Although the embodiment of the present invention is described above with reference to the accompanying drawings, the present invention is not limited to the illustrated embodiment. Various modifications and variations can be made to the illustrated embodiment within a scope that is the same as, or equivalent to, that of the present invention. 
       INDUSTRIAL APPLICABILITY 
       [0094]    Since the application transfer system can transfer an application between any terminals, the present invention can be advantageously used as an application transfer system. 
       REFERENCE SIGNS LIST 
       [0000]    
       
         
           
               10  Mobile Terminal 
               20  Car Navigation System 
               11 ,  21  CPU 
               12 ,  22  Operation Unit 
               13 ,  23  Storage Device 
               14 ,  24  Display Unit 
               15 ,  25  Communication Unit 
               31  Main Memory 
               32  Unused Area 
               33  System Area 
               60 ,  70  Hardware 
               61 ,  71  OS Kernel 
               62 ,  72  Libraries 
               64 ,  65  Application 
               63  Application Framework 
               73  Virtualization Software