|
|
@ -1,5 +1,9 @@ |
|
|
|
package org.opencv.samples.tutorial4; |
|
|
|
package org.opencv.samples.tutorial4; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.opencv.android.BaseLoaderCallback; |
|
|
|
|
|
|
|
import org.opencv.android.LoaderCallbackInterface; |
|
|
|
|
|
|
|
import org.opencv.android.OpenCVLoader; |
|
|
|
|
|
|
|
|
|
|
|
import android.app.Activity; |
|
|
|
import android.app.Activity; |
|
|
|
import android.app.AlertDialog; |
|
|
|
import android.app.AlertDialog; |
|
|
|
import android.content.DialogInterface; |
|
|
|
import android.content.DialogInterface; |
|
|
@ -18,6 +22,42 @@ public class Sample4Mixed extends Activity { |
|
|
|
private MenuItem mItemPreviewFeatures; |
|
|
|
private MenuItem mItemPreviewFeatures; |
|
|
|
private Sample4View mView; |
|
|
|
private Sample4View 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("mixed_sample"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Create and set View
|
|
|
|
|
|
|
|
mView = new Sample4View(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 Sample4Mixed() { |
|
|
|
public Sample4Mixed() { |
|
|
|
Log.i(TAG, "Instantiated new " + this.getClass()); |
|
|
|
Log.i(TAG, "Instantiated new " + this.getClass()); |
|
|
@ -27,6 +67,7 @@ public class Sample4Mixed extends Activity { |
|
|
|
protected void onPause() { |
|
|
|
protected void onPause() { |
|
|
|
Log.i(TAG, "onPause"); |
|
|
|
Log.i(TAG, "onPause"); |
|
|
|
super.onPause(); |
|
|
|
super.onPause(); |
|
|
|
|
|
|
|
if (null != mView) |
|
|
|
mView.releaseCamera(); |
|
|
|
mView.releaseCamera(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -34,7 +75,7 @@ public class Sample4Mixed extends Activity { |
|
|
|
protected void onResume() { |
|
|
|
protected void onResume() { |
|
|
|
Log.i(TAG, "onResume"); |
|
|
|
Log.i(TAG, "onResume"); |
|
|
|
super.onResume(); |
|
|
|
super.onResume(); |
|
|
|
if( !mView.openCamera() ) { |
|
|
|
if((null != mView) && !mView.openCamera() ) { |
|
|
|
AlertDialog ad = new AlertDialog.Builder(this).create(); |
|
|
|
AlertDialog ad = new AlertDialog.Builder(this).create(); |
|
|
|
ad.setCancelable(false); // This blocks the 'BACK' button
|
|
|
|
ad.setCancelable(false); // This blocks the 'BACK' button
|
|
|
|
ad.setMessage("Fatal error: can't open camera!"); |
|
|
|
ad.setMessage("Fatal error: can't open camera!"); |
|
|
@ -53,9 +94,15 @@ public class Sample4Mixed extends Activity { |
|
|
|
public void onCreate(Bundle savedInstanceState) { |
|
|
|
public void onCreate(Bundle savedInstanceState) { |
|
|
|
super.onCreate(savedInstanceState); |
|
|
|
super.onCreate(savedInstanceState); |
|
|
|
Log.i(TAG, "onCreate"); |
|
|
|
Log.i(TAG, "onCreate"); |
|
|
|
|
|
|
|
|
|
|
|
requestWindowFeature(Window.FEATURE_NO_TITLE); |
|
|
|
requestWindowFeature(Window.FEATURE_NO_TITLE); |
|
|
|
mView = new Sample4View(this); |
|
|
|
|
|
|
|
setContentView(mView); |
|
|
|
Log.i(TAG, "Trying to load OpenCV library"); |
|
|
|
|
|
|
|
if (!OpenCVLoader.initAsync(OpenCVLoader.OPEN_CV_VERSION_2_4_0, this, mOpenCVCallBack)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Log.e(TAG, "Cannot connect to OpenCV Manager"); |
|
|
|
|
|
|
|
finish(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public boolean onCreateOptionsMenu(Menu menu) { |
|
|
|
public boolean onCreateOptionsMenu(Menu menu) { |
|
|
|