Qt for Android开发实例教程
程序员文章站
2022-08-17 19:32:53
本文讲述了使用qt5.3.0开发android应用的方法,由于官方资料较少,此处记录开发过程遇到的问题及解决方法。具体步骤如下:
1.android平台的视频播放,只能使...
本文讲述了使用qt5.3.0开发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拷入即可使用
希望本文所述方法对大家的android开发有所帮助。
上一篇: Android中刷新界面的二种方法