Qt for Android开发实例教程
程序员文章站
2022-04-30 23:03:04
本文讲述了使用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中GPS定位的用法实例
推荐阅读
-
分享Android平板电脑上开发应用程序不能全屏显示的问题解决
-
Android开发笔记之:如何屏蔽Button setClickable与setEnabled
-
Android开发笔记之:复写按钮方法
-
Android开发笔记之:如何安全中止一个自定义线程Thread的方法
-
Android开发笔记之:Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
-
解决Fedora14下eclipse进行android开发,ibus提示没有输入窗口的方法详解
-
Android开发笔记之:在ImageView上绘制圆环的实现方法
-
Android开发笔记之:返回键的复写onBackPressed()介绍
-
Android开发基础之创建启动界面Splash Screen的方法
-
Android编程开发之打开文件的Intent及使用方法