Hello,
I am trying to access to Android (Galaxy TAB 10.1) RS232 using
necessitas QT:
Please read post in QT Centre:
http://www.qtcentre.org/threads/46525-QT-to-Android-serial-port-API-problem?highlight=android
I tried to make simple program using example:
http://jgoday.wordpress.com/2009/04/...with-qt-part1/
to make sure that program is able to run using JNI.
At the moment I am able to compile project and Get simple program run
on
Desktop by returning JAVA version
But, compiling project for Android error appears:
/home/darka/ProgramFiles/QT_work/Android/JNI_1/test_JNI-build--
Necessitas_Qt_4_8_0_for_Android_armv7a_Release/../../../../necessitas/
Android/Qt/480/armeabi-v7a/src/android/cpp/qtmain_android.cpp:62:
error: invalid conversion from 'JNIEnv**' to 'void**'
An error points to file qtmain_android.cpp:62:
JNIEnv* env;
points here-> if (m_javaVM->AttachCurrentThread(&env, NULL)<0)
{
qCritical()<<"AttachCurrentThread failed";
return false;
}
Below is listed main.cpp with code:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <jni.h>
//#include </home/darka/ProgramFiles/necessitas/android-ndk-r6b/
platforms/android-9/arch-arm/usr/include/jni.h>
//#include </home/darka/ProgramFiles/necessitas/android-ndk-r6b/
platforms/android-9/arch-arm/usr/include/pthread.h>
JavaVM *gJavaVM;
static jobject gInterfaceObject;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
const char *getPropertyValue(JNIEnv *env, const char *name)
{
// Calling System.getProperty(propertyName);
jclass systemClass = env->FindClass("java/lang/System");
jmethodID getPropertyMethod = env->GetStaticMethodID(systemClass,
"getProperty",
"(Ljava/lang/
String;)Ljava/lang/String;");
jstring propertyName = env->NewStringUTF(name);
jstring value = (jstring) env->CallStaticObjectMethod(systemClass,
getPropertyMethod,
propertyName);
return env->GetStringUTFChars(value, NULL);
}
void MainWindow::on_pushButton_clicked()
{
// callback_handler((char *) "Called from native thread");
JavaVM *vm;
JNIEnv *env;
JavaVMInitArgs args;
jint ret;
args.version = JNI_VERSION_1_2;
args.nOptions = 0;
args.ignoreUnrecognized = JNI_FALSE;
ret = JNI_CreateJavaVM(&vm, (void **) &env, &args);
ui->textEdit->append(QString(getPropertyValue(env, "java.version")));
ui->textEdit->append( QString(getPropertyValue(env, "java.vendor")));
vm->DestroyJavaVM();
}
*.pro file contains:
QT += core gui
TARGET = test_JNI
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
JAVA_HOME = /usr/lib/jvm/java-1.6.0-openjdk
INCLUDEPATH += $$JAVA_HOME/include
INCLUDEPATH += $$JAVA_HOME/include/linux
CONFIG += mobility
MOBILITY =
symbian {
TARGET.UID3 = 0xe014d50f
# TARGET.CAPABILITY +=
TARGET.EPOCSTACKSIZE = 0x14000
TARGET.EPOCHEAPSIZE = 0x020000 0x800000
}
OTHER_FILES += \
android/res/values-zh-rCN/strings.xml \
android/res/values-nb/strings.xml \
android/res/values-ms/strings.xml \
android/res/values-it/strings.xml \
android/res/values-nl/strings.xml \
android/res/values-id/strings.xml \
android/res/values-el/strings.xml \
android/res/drawable/logo.png \
android/res/drawable/icon.png \
android/res/drawable-mdpi/icon.png \
android/res/values-zh-rTW/strings.xml \
android/res/values-pt-rBR/strings.xml \
android/res/values/strings.xml \
android/res/values/libs.xml \
android/res/values-rs/strings.xml \
android/res/drawable-ldpi/icon.png \
android/res/values-fa/strings.xml \
android/res/drawable-hdpi/icon.png \
android/res/values-de/strings.xml \
android/res/values-fr/strings.xml \
android/res/values-ro/strings.xml \
android/res/values-ja/strings.xml \
android/res/layout/splash.xml \
android/res/values-es/strings.xml \
android/res/values-ru/strings.xml \
android/res/values-pl/strings.xml \
android/res/values-et/strings.xml \
android/src/org/kde/necessitas/ministro/IMinistro.aidl \
android/src/org/kde/necessitas/ministro/IMinistroCallback.aidl \
android/src/org/kde/necessitas/origo/QtApplication.java \
android/src/org/kde/necessitas/origo/QtActivity.java \
android/AndroidManifest.xml
So.. any help?? What am I doing wrong??
Best regards,
AS