142 lines
6.0 KiB
Java
142 lines
6.0 KiB
Java
package org.opencv.android;
|
|
|
|
import android.app.Activity;
|
|
import android.app.AlertDialog;
|
|
import android.content.Context;
|
|
import android.content.DialogInterface;
|
|
import android.content.DialogInterface.OnClickListener;
|
|
import android.util.Log;
|
|
|
|
/**
|
|
* Basic implementation of LoaderCallbackInterface.
|
|
*/
|
|
public abstract class BaseLoaderCallback implements LoaderCallbackInterface {
|
|
|
|
public BaseLoaderCallback(Context AppContext) {
|
|
mAppContext = AppContext;
|
|
}
|
|
|
|
public void onManagerConnected(int status)
|
|
{
|
|
switch (status)
|
|
{
|
|
/** OpenCV initialization was successful. **/
|
|
case LoaderCallbackInterface.SUCCESS:
|
|
{
|
|
/** Application must override this method to handle successful library initialization. **/
|
|
} break;
|
|
/** OpenCV loader can not start Google Play Market. **/
|
|
case LoaderCallbackInterface.MARKET_ERROR:
|
|
{
|
|
Log.e(TAG, "Package installation failed!");
|
|
AlertDialog MarketErrorMessage = new AlertDialog.Builder(mAppContext).create();
|
|
MarketErrorMessage.setTitle("OpenCV Manager");
|
|
MarketErrorMessage.setMessage("Package installation failed!");
|
|
MarketErrorMessage.setCancelable(false); // This blocks the 'BACK' button
|
|
MarketErrorMessage.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new OnClickListener() {
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
finish();
|
|
}
|
|
});
|
|
MarketErrorMessage.show();
|
|
} break;
|
|
/** Package installation has been canceled. **/
|
|
case LoaderCallbackInterface.INSTALL_CANCELED:
|
|
{
|
|
Log.d(TAG, "OpenCV library installation was canceled by user");
|
|
finish();
|
|
} break;
|
|
/** Application is incompatible with this version of OpenCV Manager. Possibly, a service update is required. **/
|
|
case LoaderCallbackInterface.INCOMPATIBLE_MANAGER_VERSION:
|
|
{
|
|
Log.d(TAG, "OpenCV Manager Service is uncompatible with this app!");
|
|
AlertDialog IncomatibilityMessage = new AlertDialog.Builder(mAppContext).create();
|
|
IncomatibilityMessage.setTitle("OpenCV Manager");
|
|
IncomatibilityMessage.setMessage("OpenCV Manager service is incompatible with this app. Try to update it via Google Play.");
|
|
IncomatibilityMessage.setCancelable(false); // This blocks the 'BACK' button
|
|
IncomatibilityMessage.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new OnClickListener() {
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
finish();
|
|
}
|
|
});
|
|
IncomatibilityMessage.show();
|
|
} break;
|
|
/** Other status, i.e. INIT_FAILED. **/
|
|
default:
|
|
{
|
|
Log.e(TAG, "OpenCV loading failed!");
|
|
AlertDialog InitFailedDialog = new AlertDialog.Builder(mAppContext).create();
|
|
InitFailedDialog.setTitle("OpenCV error");
|
|
InitFailedDialog.setMessage("OpenCV was not initialised correctly. Application will be shut down");
|
|
InitFailedDialog.setCancelable(false); // This blocks the 'BACK' button
|
|
InitFailedDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new OnClickListener() {
|
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
finish();
|
|
}
|
|
});
|
|
|
|
InitFailedDialog.show();
|
|
} break;
|
|
}
|
|
}
|
|
|
|
public void onPackageInstall(final int operation, final InstallCallbackInterface callback)
|
|
{
|
|
switch (operation)
|
|
{
|
|
case InstallCallbackInterface.NEW_INSTALLATION:
|
|
{
|
|
AlertDialog InstallMessage = new AlertDialog.Builder(mAppContext).create();
|
|
InstallMessage.setTitle("Package not found");
|
|
InstallMessage.setMessage(callback.getPackageName() + " package was not found! Try to install it?");
|
|
InstallMessage.setCancelable(false); // This blocks the 'BACK' button
|
|
InstallMessage.setButton(AlertDialog.BUTTON_POSITIVE, "Yes", new OnClickListener()
|
|
{
|
|
public void onClick(DialogInterface dialog, int which)
|
|
{
|
|
callback.install();
|
|
}
|
|
});
|
|
|
|
InstallMessage.setButton(AlertDialog.BUTTON_NEGATIVE, "No", new OnClickListener() {
|
|
|
|
public void onClick(DialogInterface dialog, int which)
|
|
{
|
|
callback.cancel();
|
|
}
|
|
});
|
|
|
|
InstallMessage.show();
|
|
} break;
|
|
case InstallCallbackInterface.INSTALLATION_PROGRESS:
|
|
{
|
|
AlertDialog WaitMessage = new AlertDialog.Builder(mAppContext).create();
|
|
WaitMessage.setTitle("OpenCV is not ready");
|
|
WaitMessage.setMessage("Installation is in progress. Wait or exit?");
|
|
WaitMessage.setCancelable(false); // This blocks the 'BACK' button
|
|
WaitMessage.setButton(AlertDialog.BUTTON_POSITIVE, "Wait", new OnClickListener() {
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
callback.wait_install();
|
|
}
|
|
});
|
|
WaitMessage.setButton(AlertDialog.BUTTON_NEGATIVE, "Exit", new OnClickListener() {
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
callback.cancel();
|
|
}
|
|
});
|
|
|
|
WaitMessage.show();
|
|
} break;
|
|
}
|
|
}
|
|
|
|
void finish()
|
|
{
|
|
((Activity) mAppContext).finish();
|
|
}
|
|
|
|
protected Context mAppContext;
|
|
private final static String TAG = "OCV/BaseLoaderCallback";
|
|
}
|