Wating for OpenCV library package installation added.
authorAlexander Smorkalov <alexander.smorkalov@itseez.com>
Mon, 8 Oct 2012 10:35:04 +0000 (14:35 +0400)
committerAlexander Smorkalov <alexander.smorkalov@itseez.com>
Mon, 8 Oct 2012 10:37:59 +0000 (14:37 +0400)
modules/java/generator/src/java/android+AsyncServiceHelper.java

index c612c90..b024095 100644 (file)
@@ -186,55 +186,110 @@ class AsyncServiceHelper
                     String path = mEngineService.getLibPathByVersion(mOpenCVersion);
                     if ((null == path) || (path.length() == 0))
                     {
-                        InstallCallbackInterface InstallQuery = new InstallCallbackInterface() {
-                            public String getPackageName()
-                            {
-                                return "OpenCV library";
-                            }
-                            public void install() {
-                                Log.d(TAG, "Trying to install OpenCV lib via Google Play");
-                                try
+                        if (!mLibraryInstallationProgress)
+                        {
+                            InstallCallbackInterface InstallQuery = new InstallCallbackInterface() {
+                                public String getPackageName()
                                 {
-                                    if (mEngineService.installVersion(mOpenCVersion))
+                                    return "OpenCV library";
+                                }
+                                public void install() {
+                                    Log.d(TAG, "Trying to install OpenCV lib via Google Play");
+                                    try
                                     {
-                                        mStatus = LoaderCallbackInterface.RESTART_REQUIRED;
+                                        if (mEngineService.installVersion(mOpenCVersion))
+                                        {
+                                            mLibraryInstallationProgress = true;
+                                            mStatus = LoaderCallbackInterface.RESTART_REQUIRED;
+                                        }
+                                        else
+                                        {
+                                            Log.d(TAG, "OpenCV package was not installed!");
+                                            mStatus = LoaderCallbackInterface.MARKET_ERROR;
+                                        }
+                                    } catch (RemoteException e) {
+                                        e.printStackTrace();
+                                        mStatus = LoaderCallbackInterface.INIT_FAILED;
                                     }
-                                    else
+
+                                    Log.d(TAG, "Init finished with status " + mStatus);
+                                    Log.d(TAG, "Unbind from service");
+                                    mAppContext.unbindService(mServiceConnection);
+                                    Log.d(TAG, "Calling using callback");
+                                    mUserAppCallback.onManagerConnected(mStatus);
+                                }
+                                public void cancel() {
+                                    Log.d(TAG, "OpenCV library installation was canceled");
+                                    mStatus = LoaderCallbackInterface.INSTALL_CANCELED;
+                                    Log.d(TAG, "Init finished with status " + mStatus);
+                                    Log.d(TAG, "Unbind from service");
+                                    mAppContext.unbindService(mServiceConnection);
+                                    Log.d(TAG, "Calling using callback");
+                                    mUserAppCallback.onManagerConnected(mStatus);
+                                }
+                                public void wait_install() {
+                                    Log.e(TAG, "Instalation was not started! Nothing to wait!");
+                                }
+                            };
+
+                            mUserAppCallback.onPackageInstall(InstallCallbackInterface.NEW_INSTALLATION, InstallQuery);
+                        }
+                        else
+                        {
+                            InstallCallbackInterface WaitQuery = new InstallCallbackInterface() {
+                                public String getPackageName()
+                                {
+                                    return "OpenCV library";
+                                }
+
+                                public void install() {
+                                    Log.e(TAG, "Nothing to install we just wait current installation");
+                                }
+                                public void cancel()
+                                {
+                                    Log.d(TAG, "OpenCV library installation was canceled");
+                                    mLibraryInstallationProgress = false;
+                                    mStatus = LoaderCallbackInterface.INSTALL_CANCELED;
+                                    Log.d(TAG, "Init finished with status " + mStatus);
+                                    Log.d(TAG, "Unbind from service");
+                                    mAppContext.unbindService(mServiceConnection);
+                                    Log.d(TAG, "Calling using callback");
+                                        mUserAppCallback.onManagerConnected(mStatus);
+                                }
+                                public void wait_install() {
+                                    Log.d(TAG, "Waiting for current installation");
+                                    try
                                     {
-                                        Log.d(TAG, "OpenCV package was not installed!");
-                                        mStatus = LoaderCallbackInterface.MARKET_ERROR;
+                                        if (mEngineService.installVersion(mOpenCVersion))
+                                        {
+                                            mStatus = LoaderCallbackInterface.RESTART_REQUIRED;
+                                        }
+                                        else
+                                        {
+                                            Log.d(TAG, "OpenCV package was not installed!");
+                                            mStatus = LoaderCallbackInterface.MARKET_ERROR;
+                                        }
+                                    } catch (RemoteException e) {
+                                        e.printStackTrace();
+                                        mStatus = LoaderCallbackInterface.INIT_FAILED;
                                     }
-                                } catch (RemoteException e) {
-                                    e.printStackTrace();
-                                    mStatus = LoaderCallbackInterface.INIT_FAILED;
-                                }
 
-                                Log.d(TAG, "Init finished with status " + mStatus);
-                                Log.d(TAG, "Unbind from service");
-                                mAppContext.unbindService(mServiceConnection);
-                                Log.d(TAG, "Calling using callback");
-                                mUserAppCallback.onManagerConnected(mStatus);
-                            }
-                            public void cancel() {
-                                Log.d(TAG, "OpenCV library installation was canceled");
-                                mStatus = LoaderCallbackInterface.INSTALL_CANCELED;
-                                Log.d(TAG, "Init finished with status " + mStatus);
-                                Log.d(TAG, "Unbind from service");
-                                mAppContext.unbindService(mServiceConnection);
-                                Log.d(TAG, "Calling using callback");
-                                mUserAppCallback.onManagerConnected(mStatus);
-                            }
-                            public void wait_install() {
-                                Log.e(TAG, "Instalation was not started! Nothing to wait!");
-                            }
-                        };
+                                    Log.d(TAG, "Init finished with status " + mStatus);
+                                    Log.d(TAG, "Unbind from service");
+                                    mAppContext.unbindService(mServiceConnection);
+                                    Log.d(TAG, "Calling using callback");
+                                    mUserAppCallback.onManagerConnected(mStatus);
+                               }
+                            };
 
-                        mUserAppCallback.onPackageInstall(InstallCallbackInterface.NEW_INSTALLATION, InstallQuery);
+                            mUserAppCallback.onPackageInstall(InstallCallbackInterface.INSTALLATION_PROGRESS, WaitQuery);
+                        }
                         return;
                     }
                     else
                     {
                         Log.d(TAG, "Trying to get library list");
+                        mLibraryInstallationProgress = false;
                         String libs = mEngineService.getLibraryList(mOpenCVersion);
                         Log.d(TAG, "Library list: \"" + libs + "\"");
                         Log.d(TAG, "First attempt to load libs");