Qt for 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,));
//调用子项的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",);
//具体参照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开发总结的更多相关文章
- Qt for Android开发环境搭建及测试过程记录
最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...
- Qt For Android 开发环境配置
想了想,还是再写一篇关于Qt for Android开发环境配置的教程. 准备:Java jdk,Android sdk,Android adb,Android ndk,Android ant,Qt ...
- Qt for Android 开发大坑
Qt for Android 开发大坑 作者: qyvlik Qt 5.5.1 这里说一说比較常见的 Qt 开发安卓的大坑. 希望同学们不要做无谓的挣扎,跳过这些坑. 输入框 首当其冲的是输入框,Qt ...
- Qt for Android开发Android应用时的各种错误汇总(此片博文不成熟,请大家略过)
“Qt for Android真的很脆弱,项目能跑起来靠的是奇迹,跑不起来,各种报错才是正常...” 问题一:Qt for Android编译不过:make (e=2): 系统找不到指定的文件. 之前 ...
- Qt for Android开发入门
1. Qt for Android环境搭建 1.1 打包需要的工具 1.2 JDK安装 如果之前配置过,就可以跳过这一步. 下载java jdk 64:java jdk 1.8 x64 ...
- QT on Android开发
1.安装QT 2.安装JDK 配置如下系统环境变量: JAVA_HOME D:\Java\jdk Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin CLASSPATH ...
- Qt for Android 开发大坑123
http://blog.csdn.net/qyvlik/article/details/50989685 http://blog.csdn.net/qyvlik/article/details/515 ...
- QT 5.1.1 for Android 开发环境搭建与配置【Windows 7】
前言:本人操作系统为Windows7 64位,用的是32位的安装包,32位系统没有验证. 一.首先下载以下安装包,如果提供的链接失效请自行下载: (1) Android SDK (Windows 32 ...
- Qt on Android 核心编程
Qt on Android 核心编程(最好看的Qt编程书!CSDN博主foruok倾力奉献!) 安晓辉 著 ISBN 978-7-121-24457-5 2015年1月出版 定价:65.00元 4 ...
随机推荐
- 让自己的开源项目支持CocoaPods
测试的时候找个自己封装的方法或UI控件就可以了 这里用我刚封装的Redirect重定向的请求体为例 1, 在github上创建一个Redirect,重要:记得选择开源协议 (MIT)(如果木有GitH ...
- windows部署jenkins持续集成maven测试项目不能访问测试报告
买了一台阿里云的服务器用于练习maven test项目,系统版本wiondows server 2012,将jenkins war包部署在Tomcat服务器上,项目构建后,生成的报告在C:\Windo ...
- [Alpha阶段]第十一次Scrum Meeting
Scrum Meeting博客目录 [Alpha阶段]第十一次Scrum Meeting 基本信息 名称 时间 地点 时长 第六次Scrum Meeting 19/04/20 大运村寝室6楼 65mi ...
- 利用node.js来实现长连接/聊天(通讯实例)
首先: 需要在服务器端安装node.js,然后安装express,socket.io这两个模块,并配置好相关的环境变量等. 其次: 服务端代码如下: var app = require('expres ...
- 简述layui前端ui框架的使用
官方网址:https://www.layui.com/demo/upload.html
- 内部yum仓库制作
有些安装收到网络隔离(申请一个到DMZ区的通行证很困难) 使用yum的命令工具,在有网络环境下同步我们的yum仓库,并用http服务器代理和制作repo源进行内部安装. 实操: [root@maste ...
- Luogu4492 [HAOI2018]苹果树 【动态规划】
题目分析: 思路不难想,考虑三个dp状态$f,g,d$. $g[i]$表示有$i$个点的堆的数量 $d[i]$表示有$i$个点的情况下所有的方案数中点到根的距离和 $f[i]$表示要求的答案. 不难发 ...
- shc & unshc 安装
shc & unshc 安装 shc 安装 git clone https://github.com/neurobin/shc.git cd shc ./configure make & ...
- 自动化测试框架【linux版】:JMeter + Ant + Jenkins
前提条件:linux安装了jmeter.ant.jenkins 安装方法参考汇总目录中对应的博文 截图看不清的,可以调大浏览器倍数看 jenkins驱动ant执行,ant驱动jmeter执行 ant调 ...
- laravel带参数分页
<!---分页--> <div id="pagination-box"> {{ $list->appends(['mobile'=>$mobil ...