温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Qt for Android开发实例分析

发布时间:2021-12-15 14:15:04 来源:亿速云 阅读:302 作者:iii 栏目:移动开发

这篇文章主要介绍“Qt for Android开发实例分析”,在日常操作中,相信很多人在Qt for Android开发实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Qt for Android开发实例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

具体步骤如下:

1.Android平台的视频播放,只能使用qml的MediaPlayer

2.qml中控件的路径必须加file://  例如:

Image{   source: "file:///mnt/usbhost1/Config/logo.png" }

3.C++与qml中js的方法互调

QQuickView view; view.setSource(QUrl(QStringLiteral("qrc:///qml/MainView.qml"))); QObject *qmlObj =(QObject*) view.rootObject(); MainWnd *w=new MainWnd(object); //暴露C++类给qml供其调用,别名mainWndClass view.engine ()->rootContext ()->setContextProperty (QLatin1String("mainWndClass"),w);  //c++调用qml中的js方法 //参数必须转换为QVariant QMetaObject::invokeMethod (qmlObj,"showRight",Q_ARG(QVariant,1)); //调用子项的js方法 qmlPlayer = qmlObj->findChild<QObject*>("playerArea"); QMetaObject::invokeMethod (qmlPlayer,"setVideoFile",Q_ARG(QVariant,currentVideoFile));
//MainView.qml Rectangle {   anchors.fill: parent   property int leftAreaWidth: this.width/5*4   property int rightAreaWidth: this.width/5   property int queueFontSize   function showRight(isShow){     ....   }   Player{     id:playerArea     //设置objectName,在c++中才能找到它     objectName: "playerArea"     width: parent.width     height: parent.height   } }

4.c++调用java Android api

在项目目录下建立目录\android\src\org\rophie\ProjectName\JavaClass.java

org\rophie\ProjectName即为java类的包名package org.rophie.ProjectName;

如我调用Android API调节系统音量

package org.rophie.ProjectName; import org.qtproject.qt5.android.bindings.QtActivity; import android.widget.Toast; import android.media.AudioManager; import android.content.Context; public class JavaClass extends QtActivity{   private static JavaClass m_instance;   private static AudioManager mAudioManager;   public JavaClass()   {     //构造函数必须     m_instance = this;   }    public static void setVolume(int vol){    if(mAudioManager==null){      mAudioManager = (AudioManager)m_instance.getSystemService(Context.AUDIO_SERVICE);    }      mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, vol, 0);    } }

C++调用:

QAndroidJniObject::callStaticMethod<void>("org/rophie/ProjectName/JavaClass","setVolume","(I)V",3);    //具体参照QAndroidJniObject类

5.BroadcastReceiver实现开机自启,和Android一模一样

public void onReceive(Context context, Intent intent) {  ......  //JavaClass为继承QtActivity的java主类  Intent intent2 = new Intent(context, JavaClass.class);  ...... }

6.调用第三方jar包,在src同级目录下新建目录libs,将.jar拷入即可使用

到此,关于“Qt for Android开发实例分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI