Android&OpenCv之Android程序加载OpenCv库(二)

来源:互联网 发布:mysql删除表字段 编辑:程序博客网 时间:2024/05/22 14:37

好的开始是成功的一半,在第一节中我总结了如何在Eclipse中创建开发带有OpenCv库的Android APP的环境的工作。

本节讲如何在Android程序中加载OpenCv库,以便后续开发工作中调用OpenCv提供的API的接口。

我们知道OpenCv库作为一个.so的库。在Android程序中我们一般是通过System.LoadLibrary(“xxx.so”)来加载.so库的。所以加载OpenCv的库也不例外。在Android程序有两种方式加载OpenCv库,一种是直接加载(做调试同),一种在通过OpenCv Manager提供的服务找到OpenCv库的位置后再加载的,本质是一样的。下面我们来看第二种方式是怎样实现的?根据官方的思路,OpenCv Manager其实提供的是服务。我们通过aidl编程语言暴露服务的接口给client。在D:\work\OpenCv4Android\OpenCV-2.4.11-android-sdk\OpenCV-android-sdk\sdk\java\src\org\opencv\engine\OpenCVEngineInterface.aidl中提供了这样的接口,其内容如下。

package org.opencv.engine;
/**
* Class provides a Java interface for OpenCV Engine Service. It's synchronous with native OpenCVEngine class.
*/
interface OpenCVEngineInterface
{
    /**
    * @return Returns service version.
    */
    int getEngineVersion();


    /**
    * Finds an installed OpenCV library.
    * @param OpenCV version.
    * @return Returns path to OpenCV native libs or an empty string if OpenCV can not be found.
    */
    String getLibPathByVersion(String version);


    /**
    * Tries to install defined version of OpenCV from Google Play Market.
    * @param OpenCV version.
    * @return Returns true if installation was successful or OpenCV package has been already installed.
    */
    boolean installVersion(String version);


    /**
    * Returns list of libraries in loading order, separated by semicolon.
    * @param OpenCV version.
    * @return Returns names of OpenCV libraries, separated by semicolon.
    */
    String getLibraryList(String version);
}

在(一)中我们已经详细讲了加载的流程图。

0 0