Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Use native OpenCV C++ camera in JNI call

Dear OpenCV Users,

as the topic suggests I want to use the OpenCV C++ interface for VideoCapture and use this as a native JNI call in my Java Android project.

Nevertheless I recognized that this isn't possible for CONSOLE applications as reported by: 1) https://groups.google.com/forum/?fromgroups=#!topic/android-opencv/SUpxCPvQPIE 2) http://code.opencv.org/issues/1193

Is there any way to make this work again?

All the best, Stephan

Use native OpenCV C++ camera in JNI call

Dear OpenCV Users,

as the topic suggests I want to use the OpenCV C++ interface for VideoCapture and use this as a native JNI call in my Java Android project.

Nevertheless I recognized that this isn't possible for CONSOLE applications as reported by: 1) https://groups.google.com/forum/?fromgroups=#!topic/android-opencv/SUpxCPvQPIE https://groups.google.com/forum/?fromgroups=#!topic/android-opencv/SUpxCPvQPIE 2) http://code.opencv.org/issues/1193

Is there any way to make this work again?

All the best, Stephan

Use native OpenCV C++ camera in JNI call

Dear OpenCV Users,

as the topic suggests I want to use the OpenCV C++ interface for VideoCapture and use this as a native JNI call in my Java Android project.

Nevertheless I recognized that this isn't possible for CONSOLE applications as reported by: 1) https://groups.google.com/forum/?fromgroups=#!topic/android-opencv/SUpxCPvQPIE [https://groups.google.com/forum/?fromgroups=#!topic/android-opencv/SUpxCPvQPIE] and 2) http://code.opencv.org/issues/1193[http://code.opencv.org/issues/1193]

Is there any way to make this work again?

All the best, Stephan

Use native OpenCV C++ camera in JNI call

Dear OpenCV Users,

as the topic suggests I want to use the OpenCV C++ interface for VideoCapture and use this as a native JNI call in my Java Android project.

Nevertheless I recognized that this isn't possible for CONSOLE applications as reported by: 1) [https://groups.google.com/forum/?fromgroups=#!topic/android-opencv/SUpxCPvQPIE] and 2) [http://code.opencv.org/issues/1193]

Is there any way to make this work again?

All the best, Stephan

P.S.: My AndroidManifest.xml looks like this: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.hellojni" android:versioncode="1" android:versionname="1.0"> <uses-sdk android:minsdkversion="2" android:targetsdkversion="4"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-feature android:name="android.hardware.camera.any"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application android:label="@string/app_name"
             android:debuggable="true">
    <activity android:name=".HelloJni"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>

And my Java Code: package com.example.hellojni;

import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView;

public class HelloJni extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);


    /* Create a TextView and set its content.
     * the text is retrieved by calling a native
     * function.
     */

    // this works
    final Button button = new Button(getApplicationContext());
            button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    // Perform action on click
                }
            });
    TextView  tv = new TextView(this);
    tv.setText( stringFromJNI() );
    setContentView(tv);
}

/* A native method that is implemented by the
 * 'hello-jni' native library, which is packaged
 * with this application.
 */
public native String  stringFromJNI();

/* This is another native method declaration that is *not*
 * implemented by 'hello-jni'. This is simply to show that
 * you can declare as many native methods in your Java code
 * as you want, their implementation is searched in the
 * currently loaded native libraries only the first time
 * you call them.
 *
 * Trying to call this function will result in a
 * java.lang.UnsatisfiedLinkError exception !
 */
public native String  unimplementedStringFromJNI();

/* this is used to load the 'hello-jni' library on application
 * startup. The library has already been unpacked into
 * /data/data/com.example.hellojni/lib/libhello-jni.so at
 * installation time by the package manager.
 */
static {
    System.loadLibrary("opencv_java");
    System.loadLibrary("hello-jni");
}

}

Use native OpenCV C++ camera in JNI call

Dear OpenCV Users,

as the topic suggests I want to use the OpenCV C++ interface for VideoCapture and use this as a native JNI call in my Java Android project.

Nevertheless I recognized that this isn't possible for CONSOLE applications as reported by: 1) [https://groups.google.com/forum/?fromgroups=#!topic/android-opencv/SUpxCPvQPIE] and 2) [http://code.opencv.org/issues/1193]

Is there any way to make this work again?

All the best, Stephan

P.S.: My AndroidManifest.xml looks like this: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.hellojni" android:versioncode="1" android:versionname="1.0"> <uses-sdk android:minsdkversion="2" android:targetsdkversion="4"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-feature android:name="android.hardware.camera.any"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>this:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.hellojni"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="2" android:targetSdkVersion="4"/>
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-feature android:name="android.hardware.camera.any" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application android:label="@string/app_name"
              android:debuggable="true">
     <activity android:name=".HelloJni"
               android:label="@string/app_name">
         <intent-filter>
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
     </activity>
 </application>
</manifest>

</manifest>

And my Java Code: Code:

package com.example.hellojni;

com.example.hellojni; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView;

android.widget.TextView; public class HelloJni extends Activity {

{

    /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
     super.onCreate(savedInstanceState);


     /* Create a TextView and set its content.
      * the text is retrieved by calling a native
      * function.
      */

     // this works
     final Button button = new Button(getApplicationContext());
             button.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View v) {
                     // Perform action on click
                 }
             });
     TextView  tv = new TextView(this);
     tv.setText( stringFromJNI() );
     setContentView(tv);
 }

 /* A native method that is implemented by the
  * 'hello-jni' native library, which is packaged
  * with this application.
  */
 public native String  stringFromJNI();

 /* This is another native method declaration that is *not*
  * implemented by 'hello-jni'. This is simply to show that
  * you can declare as many native methods in your Java code
  * as you want, their implementation is searched in the
  * currently loaded native libraries only the first time
  * you call them.
  *
  * Trying to call this function will result in a
  * java.lang.UnsatisfiedLinkError exception !
  */
 public native String  unimplementedStringFromJNI();

 /* this is used to load the 'hello-jni' library on application
  * startup. The library has already been unpacked into
  * /data/data/com.example.hellojni/lib/libhello-jni.so at
  * installation time by the package manager.
  */
 static {
     System.loadLibrary("opencv_java");
     System.loadLibrary("hello-jni");
    }
}

}