opencv/platforms/android/service/doc/BaseLoaderCallback.rst

64 lines
2.0 KiB
ReStructuredText
Raw Normal View History

2012-06-21 22:50:05 +08:00
*********************************************
Base Loader Callback Interface Implementation
2012-06-21 22:50:05 +08:00
*********************************************
.. highlight:: java
.. class:: BaseLoaderCallback
Basic implementation of ``LoaderCallbackInterface``. Logic of this implementation is
well-described by the following scheme:
2012-06-21 22:50:05 +08:00
.. image:: img/AndroidAppUsageModel.png
2012-06-21 22:50:05 +08:00
Using in Java Activity
----------------------
There is a very base code snippet implementing the async initialization with ``BaseLoaderCallback``.
See the "15-puzzle" OpenCV sample for details.
.. code-block:: java
:linenos:
public class MyActivity extends Activity implements HelperCallbackInterface
{
private BaseLoaderCallback mOpenCVCallBack = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG, "OpenCV loaded successfully");
// Create and set View
mView = new puzzle15View(mAppContext);
setContentView(mView);
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
/** Call on every application resume **/
@Override
protected void onResume()
{
Log.i(TAG, "Called onResume");
super.onResume();
Log.i(TAG, "Trying to load OpenCV library");
if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mOpenCVCallBack))
{
Log.e(TAG, "Cannot connect to OpenCV Manager");
}
}
Using in Service
----------------
Default ``BaseLoaderCallback`` implementation treats application context as ``Activity`` and calls
``Activity.finish()`` method to exit in case of initialization failure.
To override this behavior you need to override ``finish()`` method of ``BaseLoaderCallback`` class
and implement your own finalization method.