From 0693073b981b3b07a23fba5efbdd3eea674ab7c7 Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Tue, 26 Jun 2012 12:44:57 +0000 Subject: [PATCH] Example3-native updated for OpenCV Manager model --- .../samples/tutorial3/Sample3Native.java | 53 +++++++++++++++++-- .../opencv/samples/tutorial3/Sample3View.java | 8 +-- 2 files changed, 50 insertions(+), 11 deletions(-) diff --git a/samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/Sample3Native.java b/samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/Sample3Native.java index 73fd47cd6..201ba16af 100644 --- a/samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/Sample3Native.java +++ b/samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/Sample3Native.java @@ -1,5 +1,9 @@ package org.opencv.samples.tutorial3; +import org.opencv.android.BaseLoaderCallback; +import org.opencv.android.LoaderCallbackInterface; +import org.opencv.android.OpenCVLoader; + import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; @@ -10,6 +14,42 @@ import android.view.Window; public class Sample3Native extends Activity { private static final String TAG = "Sample::Activity"; private Sample3View mView; + + private BaseLoaderCallback mOpenCVCallBack = new BaseLoaderCallback(this) { + @Override + public void onManagerConnected(int status) { + switch (status) { + case LoaderCallbackInterface.SUCCESS: + { + Log.i(TAG, "OpenCV loaded successfully"); + + // Load native library after(!) OpenCV initialization + System.loadLibrary("native_sample"); + + // Create and set View + mView = new Sample3View(mAppContext); + setContentView(mView); + // Check native OpenCV camera + if( !mView.openCamera() ) { + AlertDialog ad = new AlertDialog.Builder(mAppContext).create(); + ad.setCancelable(false); // This blocks the 'BACK' button + ad.setMessage("Fatal error: can't open camera!"); + ad.setButton("OK", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + finish(); + } + }); + ad.show(); + } + } break; + default: + { + super.onManagerConnected(status); + } break; + } + } + }; public Sample3Native() { Log.i(TAG, "Instantiated new " + this.getClass()); @@ -19,14 +59,15 @@ public class Sample3Native extends Activity { protected void onPause() { Log.i(TAG, "onPause"); super.onPause(); - mView.releaseCamera(); + if (null != mView) + mView.releaseCamera(); } @Override protected void onResume() { Log.i(TAG, "onResume"); super.onResume(); - if( !mView.openCamera() ) { + if((null != mView) && !mView.openCamera() ) { AlertDialog ad = new AlertDialog.Builder(this).create(); ad.setCancelable(false); // This blocks the 'BACK' button ad.setMessage("Fatal error: can't open camera!"); @@ -46,7 +87,11 @@ public class Sample3Native extends Activity { Log.i(TAG, "onCreate"); super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); - mView = new Sample3View(this); - setContentView(mView); + + if (!OpenCVLoader.initAsync(OpenCVLoader.OPEN_CV_VERSION_2_4_0, this, mOpenCVCallBack)) + { + Log.e(TAG, "Cannot connect to OpenCV Manager"); + finish(); + } } } diff --git a/samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/Sample3View.java b/samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/Sample3View.java index ebbc51883..ac67321d1 100644 --- a/samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/Sample3View.java +++ b/samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/Sample3View.java @@ -26,9 +26,7 @@ class Sample3View extends SampleViewBase { mBitmap.recycle(); mBitmap = null; } - mRGBA = null; - - + mRGBA = null; } @Override @@ -43,8 +41,4 @@ class Sample3View extends SampleViewBase { } public native void FindFeatures(int width, int height, byte yuv[], int[] rgba); - - static { - System.loadLibrary("native_sample"); - } }