java qml_qml语言可以与java交互吗?

SDActivityDelegateSingleton类的实现:

SDActivityDelegateSingleton.h

#ifndef ADSINGLETON_H

#define ADSINGLETON_H

#include

// Android:绑定SuperDoctorActivity,负责广告API的调用

class SDActivityDelegateSingleton: public QObject

{

Q_OBJECT

public:

SDActivityDelegateSingleton( QObject* pParent = Q_NULLPTR ):

QObject( pParent )

{

}

Q_INVOKABLE void call( const QString& methodName );

};

#endif // ADSINGLETON_H

SDActivityDelegateSingleton.cpp

#include "SDActivityDelegateSingleton.h"

#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK)

#include

void SDActivityDelegateSingleton::call( const QString& methodName )

{

const QAndroidJniObject& activity = QtAndroid::androidActivity( );

qDebug( "method name is: %s", qPrintable( methodName ) );

activity.callMethod( qPrintable( methodName ) );

}

#else

void SDActivityDelegateSingleton::call( const QString& methodName )

{

qDebug( "the desktop does not implement calling method: %s",

qPrintable( methodName ) );

}

#endif

然后在是SuperDoctorActivity.java:

// SuperDoctorActivity.java 这个Java文件重写了Android的Activity

package com.jcystudio.superdoctor;

import android.os.Bundle;

import android.util.Log;

import android.widget.LinearLayout;

import android.widget.FrameLayout;

import android.view.Gravity;

import org.qtproject.qt5.android.bindings.QtActivity;

……

public class SuperDoctorActivity extends QtActivity

{

@Override

public void onCreate( Bundle savedInstanceState )

{

super.onCreate(savedInstanceState);

……

SmartBannerManager.init(this);

}

……

public void showSmartAD( )

{

SmartBannerManager.show( this );

}

}

这样,通过QML就可以调用Java代码了,调用方法是:

……

function prepare( )

{

SDActivity.call( "showSmartAD" );// ←调用Java方法

this.focus = true;// 获得按键焦点,可以使用按键控制

Controller.clearBlocks( );

Controller.setupGame( mode, difficulty, map, actions, colors );

headerSprite.currentFrame = 2;// 小人指向平常的位置

readyMask.visible = true;

backgroundMusic.play( );

}

……

使用这样的方法可以调用第三方Jar包代码,我想调用so库的代码也是可以的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值