近段时间,本人使用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开发总结的更多相关文章

  1. Qt for Android开发环境搭建及测试过程记录

    最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...

  2. Qt For Android 开发环境配置

    想了想,还是再写一篇关于Qt for Android开发环境配置的教程. 准备:Java jdk,Android sdk,Android adb,Android ndk,Android ant,Qt ...

  3. Qt for Android 开发大坑

    Qt for Android 开发大坑 作者: qyvlik Qt 5.5.1 这里说一说比較常见的 Qt 开发安卓的大坑. 希望同学们不要做无谓的挣扎,跳过这些坑. 输入框 首当其冲的是输入框,Qt ...

  4. Qt for Android开发Android应用时的各种错误汇总(此片博文不成熟,请大家略过)

    “Qt for Android真的很脆弱,项目能跑起来靠的是奇迹,跑不起来,各种报错才是正常...” 问题一:Qt for Android编译不过:make (e=2): 系统找不到指定的文件. 之前 ...

  5. Qt for Android开发入门

    1.    Qt for Android环境搭建 1.1    打包需要的工具 1.2   JDK安装 如果之前配置过,就可以跳过这一步. 下载java jdk 64:java jdk 1.8 x64 ...

  6. QT on Android开发

    1.安装QT 2.安装JDK 配置如下系统环境变量: JAVA_HOME D:\Java\jdk Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin CLASSPATH ...

  7. Qt for Android 开发大坑123

    http://blog.csdn.net/qyvlik/article/details/50989685 http://blog.csdn.net/qyvlik/article/details/515 ...

  8. QT 5.1.1 for Android 开发环境搭建与配置【Windows 7】

    前言:本人操作系统为Windows7 64位,用的是32位的安装包,32位系统没有验证. 一.首先下载以下安装包,如果提供的链接失效请自行下载: (1) Android SDK (Windows 32 ...

  9. Qt on Android 核心编程

    Qt on Android 核心编程(最好看的Qt编程书!CSDN博主foruok倾力奉献!) 安晓辉 著   ISBN 978-7-121-24457-5 2015年1月出版 定价:65.00元 4 ...

随机推荐

  1. dos命令的使用

    echo 百度欢迎您 >d:\1.txt F7查看执行过的命令 直接进入 D盘 d: 创建目录 md fox 在fox目录下创建子目录user md fox\user\hello1 进入到use ...

  2. Python支付宝在线支付API

    一.蚂蚁金服开发平台申请测试账号 a. 登陆蚂蚁金服开放平台https://open.alipay.com/platform/manageHome.htm,在“开发中心”—“研发服务”下拉处选择沙箱作 ...

  3. 如何用Eclipse创建一个JavaSwing的项目

    创建之前必须先给开发工具安装WindowBuilder插件(安装方法可自行百度) 方式一: 创建项目 new--other--WindowBuilder--SWT Designer----SWT/JF ...

  4. [LOJ3088][GXOI/GZOI2019]旧词——树链剖分+线段树

    题目链接: [GXOI/GZOI2019]旧词 对于$k=1$的情况,可以参见[LNOI2014]LCA,将询问离线然后从$1$号点开始对这个点到根的路径链修改,每次询问就是对询问点到根路径链查询即可 ...

  5. Java 获取当前线程、进程、服务器ip

    /** * 获取当前线程id */ private Long getThreadId() { try { return Thread.currentThread().getId(); } catch ...

  6. 20165223《网络对抗技术》Exp4 恶意代码分析

    目录 -- 恶意代码分析 恶意代码分析说明 实验任务目标 实验内容概述 schtasks命令使用 实验内容 系统运行监控 恶意软件分析 静态分析 virscan分析和VirusTotal分析 PEiD ...

  7. [HNOI2010]城市建设

    [HNOI2010]城市建设 玄学cdq O(nlog^2n)的动态最小生成树 其实就是按照时间cdq分治+剪枝(剪掉一定出现和不可能出现的边) 处理[l,r]之间的修改以及修改之后的询问,不能确定是 ...

  8. antd Tree组件中,自定义右键菜单

    最近项目中,有一个需求是自定义antd的Tree组件的右键菜单功能. 直接上代码 class Demo extends Component { state = { rightClickNodeTree ...

  9. 怎么解决docker pull拉取镜像速度过慢的问题

    在我们安装了docker之后,在利用docker pull下载镜像的时候,由于国内的源会出现的问题就是速度真的很慢,可以用龟速来形容,最痛苦的是当你耐心的等待几个小时之后,出现unexpected E ...

  10. The 16th Zhejiang Provincial Collegiate Programming Contest Sponsored E.Sequence in the Pocket(思维题)

    传送门 题意: 给出一个序列,你可以将任意一个数移到最前面: 求最少需要移动多少次,可以是此序列变成非递减序列: 思路: 定义 (ai,aj) 为逆序对 ( i < j , ai > aj ...