Qt中调用java的方法
C++中可以通过建立虚拟机使用java,Qt中当然也可以用同样的方法;为了简单Qt提供了QAndroidJniObject 简化了对java的应用;后面举例简单示例://MyJavaClass文件package org;import java.io.OutputStream;import java.util.Iterator;import java.
·
C++中可以通过建立虚拟机使用java,Qt中当然也可以用同样的方法;
为了简单Qt提供了QAndroidJniObject 简化了对java的应用;后面举例简单示例:
//MyJavaClass.java文件
package org;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;
import android.app.Activity;
import android.content.ContentValues;
import android.content.res.Configuration;
import android.hardware.Camera;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.LinearLayout;
public class MyJavaClass
{
public static int fibonacci(int n) //静态函数;
{
return 1234567890;
}
public int getNum() //没有参数;
{
return 1357902468;
}
public int setNum( int n ) //没有参数;
{
return n;
}
public String getStr() //返回字符串{
String teststr = new String("this is a test java string; 测试文本");return teststr;}
}
C++中的应用方法:
// C++ code
{
//类中的静态函数:
{
return QAndroidJniObject::callStaticMethod<jint>
("org/MyJavaClass" // class name
, "fibonacci" // method name
, "(I)I" // signature
, n);
}
//类中的无参数,有返回值函数:
{
QAndroidJniObject QAndroidJniObject_MyJavaClass_obj("org/MyJavaClass");
jint n = QAndroidJniObject_MyJavaClass_obj.callMethod<jint>("getNum");
return n;
}
//类中有参数又返回值函数;
{
QAndroidJniObject QAndroidJniObject_MyJavaClass_obj("org/MyJavaClass");
jint n = QAndroidJniObject_MyJavaClass_obj.callMethod<jint>("setNum", "(I)I", 12345 );
return n;
}
{
//从这个示例看出,jstring是不可以直接返回的:
// 1:返回的是 QAndroidJniObject ,可以通过QAndroidJniObject 的toString()获取QString;
// 2: const char *pstr= env->GetStringUTFChars(jstringtemp;//3:网上还有一些jstring转char*的函数,这里就不说明了;
QAndroidJniObject VideoCaptureAndroid_JavaObj("org/MyJavaClass");QAndroidJniObject stringJinObj = VideoCaptureAndroid_JavaObj.callObjectMethod<jstring>("getStr");QAndroidJniEnvironment env;jstring jstringtemp = stringJinObj.object<jstring>();// const char *pstr= env->GetStringUTFChars(jstringtemp, 0); //获取jstring to char* 方法1;QString str(pstr);QMessageBox mbox;mbox.setText( stringJinObj.toString() ); //jstring to QString;mbox.exec();}
}
更多推荐
已为社区贡献7条内容
所有评论(0)