From febfdc9fa2994cde1bfa6ced4046c4e5c035729f Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Mon, 8 Oct 2012 14:35:04 +0400 Subject: [PATCH] Wating for OpenCV library package installation added. --- .../src/java/android+AsyncServiceHelper.java | 129 +++++++++++++++------ 1 file changed, 92 insertions(+), 37 deletions(-) diff --git a/modules/java/generator/src/java/android+AsyncServiceHelper.java b/modules/java/generator/src/java/android+AsyncServiceHelper.java index c612c90..b024095 100644 --- a/modules/java/generator/src/java/android+AsyncServiceHelper.java +++ b/modules/java/generator/src/java/android+AsyncServiceHelper.java @@ -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"); -- 2.7.4