1 package org.opencv.test;
4 import java.io.IOException;
5 import junit.framework.Assert;
7 import org.opencv.android.BaseLoaderCallback;
8 import org.opencv.android.LoaderCallbackInterface;
9 import org.opencv.android.OpenCVLoader;
10 import org.opencv.android.Utils;
11 import org.opencv.core.Mat;
13 import android.content.Context;
14 import android.test.AndroidTestRunner;
15 import android.test.InstrumentationTestRunner;
16 import android.util.Log;
19 * This only class is Android specific.
21 * @see <a href="http://opencv.itseez.com">OpenCV</a>
24 public class OpenCVTestRunner extends InstrumentationTestRunner {
26 private static final long MANAGER_TIMEOUT = 3000;
27 public static String LENA_PATH;
28 public static String CHESS_PATH;
29 public static String LBPCASCADE_FRONTALFACE_PATH;
30 public static Context context;
32 private AndroidTestRunner androidTestRunner;
33 private static String TAG = "opencv_test_java";
35 private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(getContext()) {
38 public void onManagerConnected(int status) {
40 case LoaderCallbackInterface.SUCCESS:
42 Log("OpenCV loaded successfully");
49 super.onManagerConnected(status);
55 public static String getTempFileName(String extension)
57 File cache = context.getCacheDir();
58 if (!extension.startsWith("."))
59 extension = "." + extension;
61 File tmp = File.createTempFile("OpenCV", extension, cache);
62 String path = tmp.getAbsolutePath();
65 } catch (IOException e) {
66 Log("Failed to get temp file name. Exception is thrown: " + e);
71 static public void Log(String message) {
75 static public void Log(Mat m) {
76 Log.e(TAG, m + "\n " + m.dump());
80 public void onStart() {
81 // try to load internal libs
82 if (!OpenCVLoader.initDebug()) {
83 // There is no internal OpenCV libs
84 // Using OpenCV Manager for initialization;
86 Log("Internal OpenCV library not found. Using OpenCV Manager for initialization");
87 OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, getContext(), mLoaderCallback);
91 wait(MANAGER_TIMEOUT);
92 } catch (InterruptedException e) {
97 Log("OpenCV library found inside test package. Using it!");
100 context = getContext();
101 Assert.assertTrue("Context can't be 'null'", context != null);
102 LENA_PATH = Utils.exportResource(context, R.drawable.lena);
103 CHESS_PATH = Utils.exportResource(context, R.drawable.chessboard);
104 LBPCASCADE_FRONTALFACE_PATH = Utils.exportResource(context, R.raw.lbpcascade_frontalface);
107 * The original idea about test order randomization is from
108 * marek.defecinski blog.
110 //List<TestCase> testCases = androidTestRunner.getTestCases();
111 //Collections.shuffle(testCases); //shuffle the tests order
117 protected AndroidTestRunner getAndroidTestRunner() {
118 androidTestRunner = super.getAndroidTestRunner();
119 return androidTestRunner;
122 public static String getOutputFileName(String name)
124 return context.getExternalFilesDir(null).getAbsolutePath() + File.separatorChar + name;