情况如下:
Caused by: java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat() (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__) at org.opencv.core.Mat.n_Mat(Native Method) at org.opencv.core.Mat.<init>(Mat.java:23) at ddr.example.com.nddrandroidclient.widget.zoomview.ZoomImageView.init(ZoomImageView.java:67) at ddr.example.com.nddrandroidclient.widget.zoomview.ZoomImageView.<init>(ZoomImageView.java:62) ... 40 more产生原因:在自定义View初始化的时候调用了OpenCv里面的一个构造方法,而我加载OpenCv库的地方是在Activity的onResume()的方法下,这时候view先初始化但是OpenCv库尚未加载。
解决方法:
@Override protected void onStart() { if (!OpenCVLoader.initDebug()) { Logger.d("Internal OpenCV library not found. Using OpenCV Manager for initialization"); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_1_0, this, mLoaderCallback); } else { Logger.d("OpenCV library found inside package. Using it!"+this.getClass().getName()); mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); } super.onStart(); }在onStart中加载OpenCv库。