예제 #1
2
jint JNICALL JNI_OnLoad(JavaVM *vm, void *ld)
{
    Q_UNUSED(ld)
    __android_log_print(ANDROID_LOG_INFO, "Qt", "Qt Android service wrapper start");

    JNIEnv* env;
    if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK)
    {
        __android_log_print(ANDROID_LOG_FATAL, "Qt", "Can't get env in wrapper start"); \
        return -1;
    }

    m_javaVM = vm;

    jclass clazz;
    FIND_AND_CHECK_CLASS("land/aseman/android/AsemanServiceDelegate");
    m_applicationClass = static_cast<jclass>(env->NewGlobalRef(clazz));

    __android_log_print(ANDROID_LOG_INFO, "Qt", "Registering native classes for service wrapper");

    if (env->RegisterNatives(m_applicationClass, methods, sizeof(methods) / sizeof(methods[0])) < 0)
    {
        __android_log_print(ANDROID_LOG_FATAL,"Qt", "RegisterNatives failed for service wrapper");
        return JNI_FALSE;
    }

    return JNI_VERSION_1_4;
}
예제 #2
0
static bool registerNatives(JNIEnv *env)
{
    jclass clazz;
    FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/bluetooth/QtBluetoothBroadcastReceiver");


    if (env->RegisterNatives(clazz, methods, sizeof(methods) / sizeof(methods[0])) < 0) {
        __android_log_print(ANDROID_LOG_FATAL, logTag, "RegisterNatives for BraodcastReceiver failed");
        return false;
    }

    FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/bluetooth/QtBluetoothSocketServer");
    if (env->RegisterNatives(clazz, methods_server, sizeof(methods_server) / sizeof(methods_server[0])) < 0) {
        __android_log_print(ANDROID_LOG_FATAL, logTag, "RegisterNatives for SocketServer failed");
        return false;
    }

    FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/bluetooth/QtBluetoothInputStreamThread");
    if (env->RegisterNatives(clazz, methods_inputStream,
                             sizeof(methods_inputStream) / sizeof(methods_inputStream[0])) < 0) {
        __android_log_print(ANDROID_LOG_FATAL, logTag, "RegisterNatives for InputStreamThread failed");
        return false;
    }

    return true;
}
int AndroidAssetsFileEngineHandler::registerNatives(JNIEnv *env)
{
	__android_log_print(ANDROID_LOG_INFO, g_kjpbsTag, "in registerNatives");

	if (env == NULL) return JNI_FALSE;

	if (g_assetManager == NULL) {
		jclass clazz;
		FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/QtNative");
		g_applicationClass = static_cast<jclass>(env->NewGlobalRef(clazz));

		jmethodID methodID;

		GET_AND_CHECK_STATIC_METHOD(methodID, g_applicationClass, "activity", "()Landroid/app/Activity;");
		jobject objActivity = env->CallStaticObjectMethod(g_applicationClass, methodID);

		clazz = env->GetObjectClass(objActivity);

		GET_AND_CHECK_METHOD(methodID, clazz, "getPackageCodePath", "()Ljava/lang/String;");
		jobject objPackageCodePath = env->CallObjectMethod(objActivity, methodID);

		const char *jstrPackageCodePath;
		jboolean isCopy = JNI_FALSE;
		jstrPackageCodePath = env->GetStringUTFChars((jstring) objPackageCodePath, &isCopy);
		g_strPackageCodePath = QString::fromUtf8(jstrPackageCodePath);
		__android_log_print(ANDROID_LOG_INFO, g_kjpbsTag, QString("PackageCodePath: %1").arg(AndroidAssetsFileEngineHandler::packageCodePath()).toUtf8().data());


		FIND_AND_CHECK_CLASS("android/content/ContextWrapper");
		GET_AND_CHECK_METHOD(methodID, clazz, "getAssets", "()Landroid/content/res/AssetManager;");

		g_assetManager = AAssetManager_fromJava(env, env->CallObjectMethod(objActivity, methodID));

		if (g_assetManager == NULL) {
			__android_log_print(ANDROID_LOG_FATAL, g_kjpbsTag, "assetManager_fromJava returned NULL");
		}


////		QAndroidJniObject
////		GET_AND_CHECK_STATIC_METHOD(methodID, m_applicationClass, "activity", "()Landroid/app/Activity;");
////	    jobject activityObject = env->CallStaticObjectMethod(m_applicationClass, methodID);
//
//		QAndroidJniObject activityObject("android/app/Activity");
//		jclass clazz = env->FindClass("android/content/ContextWrapper");
//		methodID = env->GetMethodID(clazz, "getAssets", "()Landroid/content/res/AssetManager;");
//		g_assetManager = AAssetManager_fromJava(env, env->CallObjectMethod(activityObject.object<jobject>(), methodID));
	}

	__android_log_print(ANDROID_LOG_INFO, g_kjpbsTag, "registerNatives complete");

	return JNI_TRUE;
}
    bool registerNatives(JNIEnv *env)
    {
        if (QtAndroidPrivate::androidSdkVersion() < 16)
            return true; // We need API level 16 or higher

        jclass clazz;
        FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/accessibility/QtNativeAccessibility");
        jclass appClass = static_cast<jclass>(env->NewGlobalRef(clazz));

        if (env->RegisterNatives(appClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) {
            __android_log_print(ANDROID_LOG_FATAL,"Qt A11y", "RegisterNatives failed");
            return false;
        }

        jclass nodeInfoClass = env->FindClass("android/view/accessibility/AccessibilityNodeInfo");
        GET_AND_CHECK_STATIC_METHOD(m_addActionMethodID, nodeInfoClass, "addAction", "(I)V");
        GET_AND_CHECK_STATIC_METHOD(m_setCheckableMethodID, nodeInfoClass, "setCheckable", "(Z)V");
        GET_AND_CHECK_STATIC_METHOD(m_setCheckedMethodID, nodeInfoClass, "setChecked", "(Z)V");
        GET_AND_CHECK_STATIC_METHOD(m_setClickableMethodID, nodeInfoClass, "setClickable", "(Z)V");
        GET_AND_CHECK_STATIC_METHOD(m_setContentDescriptionMethodID, nodeInfoClass, "setContentDescription", "(Ljava/lang/CharSequence;)V");
        GET_AND_CHECK_STATIC_METHOD(m_setEnabledMethodID, nodeInfoClass, "setEnabled", "(Z)V");
        GET_AND_CHECK_STATIC_METHOD(m_setFocusableMethodID, nodeInfoClass, "setFocusable", "(Z)V");
        GET_AND_CHECK_STATIC_METHOD(m_setFocusedMethodID, nodeInfoClass, "setFocused", "(Z)V");
        GET_AND_CHECK_STATIC_METHOD(m_setScrollableMethodID, nodeInfoClass, "setScrollable", "(Z)V");
        GET_AND_CHECK_STATIC_METHOD(m_setVisibleToUserMethodID, nodeInfoClass, "setVisibleToUser", "(Z)V");

        if (QtAndroidPrivate::androidSdkVersion() >= 18) {
            GET_AND_CHECK_STATIC_METHOD(m_setTextSelectionMethodID, nodeInfoClass, "setTextSelection", "(II)V");
        }

        return true;
    }
예제 #5
0
static bool registerNatives(JNIEnv *env)
{
    jclass clazz;
    FIND_AND_CHECK_CLASS("org/KangLinStudio/RabbitIm/RabbitImActivity");
    RabbitImActivityClass = static_cast<jclass>(env->NewGlobalRef(clazz));

    if (env->RegisterNatives(RabbitImActivityClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) {
        LOG_MODEL_ERROR("CAndroidNotification", "RegisterNatives failed");
        return JNI_FALSE;
    }

    return true;
}
bool registerNatives(JNIEnv *env)
{
    jclass clazz = QJNIEnvironmentPrivate::findClass(QtMessageHandlerHelperClassName, env);
    if (!clazz) {
        __android_log_print(ANDROID_LOG_FATAL, QtAndroid::qtTagText(), QtAndroid::classErrorMsgFmt()
                            , QtMessageHandlerHelperClassName);
        return false;
    }
    g_messageDialogHelperClass = static_cast<jclass>(env->NewGlobalRef(clazz));
    FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/QtNativeDialogHelper");
    jclass appClass = static_cast<jclass>(env->NewGlobalRef(clazz));

    if (env->RegisterNatives(appClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) {
        __android_log_print(ANDROID_LOG_FATAL, "Qt", "RegisterNatives failed");
        return false;
    }

    return true;
}
예제 #7
0
static bool registerNatives(JNIEnv *env)
{
    jclass clazz;
    FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/sensors/QtSensors");
    sensorsClass = static_cast<jclass>(env->NewGlobalRef(clazz));

    if (env->RegisterNatives(sensorsClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) {
        __android_log_print(ANDROID_LOG_FATAL, logTag, "RegisterNatives failed");
        return JNI_FALSE;
    }

    GET_AND_CHECK_STATIC_METHOD(getSensorListMethodId, sensorsClass, "getSensorList", "()[I");
    GET_AND_CHECK_STATIC_METHOD(registerSensorMethodId, sensorsClass, "registerSensor", "(II)Z");
    GET_AND_CHECK_STATIC_METHOD(unregisterSensorMethodId, sensorsClass, "unregisterSensor", "(I)Z");
    GET_AND_CHECK_STATIC_METHOD(getSensorDescriptionMethodId, sensorsClass, "getSensorDescription", "(I)Ljava/lang/String;");
    GET_AND_CHECK_STATIC_METHOD(getSensorMaximumRangeMethodId, sensorsClass, "getSensorMaximumRange", "(I)F");
    GET_AND_CHECK_STATIC_METHOD(getCompassAzimuthId, sensorsClass, "getCompassAzimuth", "(FFFFFF)F");

    return true;
}