我已經嘗試寫簡單的c代碼的jni調用。當我嘗試在運行2.3.3的電話上安裝它時,它不安裝,有時即使它安裝,然後它正在強制關閉。請幫助我。代碼詳細信息如下:Android的JNI電話
我生成頭文件的java代碼。
package com.hosa;
public class edgejava
{
static{
System.loadLibrary("edgejava");
}
public native int main();
}
生成的頭文件是如下
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_hosa_edgejava */
#ifndef _Included_com_hosa_edgejava
#define _Included_com_hosa_edgejava
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_hosa_edgejava
* Method: main
* Signature:()I
*/
JNIEXPORT jint JNICALL Java_com_hosa_edgejava_main
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
本機函數的實現如下
#include "com_hosa_edgejava.h"
#include <jni.h>
#include <cv.h>
#include <highgui.h>
using namespace cv;
JNIEXPORT jint JNICALL Java_com_pes_edgejava_main(JNIEnv *, jobject){
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
namedWindow("edges",CV_WINDOW_AUTOSIZE);
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if(waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
的android.mk科幻樂
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
include /home/srijith/android-opencv/OpenCV-2.3.1/share/OpenCV/OpenCV.mk
LOCAL_MODULE := edgejava
LOCAL_SRC_FILES := edgecpp.cpp
LOCAL_LDLIBS += -llog -ldl
include $(BUILD_SHARED_LIBRARY)
的application.mk
APP_MODULES := edgejava
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
活動文件內容如下
package com.hosa;
import android.app.Activity;
import android.os.Bundle;
public class Andedge2Activity extends Activity {
edgejava nativelib;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
nativelib= new edgejava();
int i=nativelib.main();
System.out.println("value returned to andedgeactivity "+i);
}
}
到清單中的所有必要的修改已經使用類似的記載做的相機和權限已被設置。
編輯: 我已經改變了com_pes_edgejava
到com_hosa_edgejava_main
,但仍然沒有工作...
任何其他解決方案??????
當您的應用程序被強制關閉時,Android日誌會說什麼?也許一些崩潰消息來幫助調試情況? – gfour 2012-04-13 23:22:10
StackOverflow不是論壇;我們期望*的回答實際上回答了問題*。如果您需要與其他用戶進行互動,您可以在他們的答案上留下評論。當你打到50代表時,你將能夠在任何地方留下評論。如果你需要添加細節,你可以[編輯]你的問題。對於其他所有問題,請參閱我們的[faq]或訪問[meta],我們將討論StackOverflow。 – Will 2012-04-16 15:43:11
@Gaurav:不要編輯人的答案來添加您的問題。編輯您的原始問題或發表評論到他們的問題。 – Goz 2012-04-17 11:47:50