android 上使用 qt 的开源项目是 necessitas 项目地址是 http://sourceforge.net/projects/necessitas/files/
根据你的平台下载相应的necessitas QtCreator 安装(我下的 necessitas 0.3)
我这里用的Linux
下载好后安装,根据需要选择你要下的东西,比如 Ant ,Android SDK之类 (注:ant必须要 1.8.0以上 ,Android SDK 必须要有plarform-tools,如果不知道就不要选择 直接 默认即可。)
然后他自己下载组件安装(这个跟QtSDK的包管理器做的差不多)
装好后我们先建立一个 Android虚拟机 我建立是Android 2.2 版本的
然后用QtCreator 建立一个 Test 的移动项目
如图
选择目标要选 Android
然后我们零星 在UI文件上画一个按钮
注册事件代码如下
void MainWindow::on_pushButton_clicked()
{
QMessageBox::information(this,tr("中文"),tr("提醒 你点了 pushButton"));
}
然后跟PC 上一样设置 中文编码
#include "mainwindow.h"
#include <QtGui/QApplication>
#include <QTextCodec>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTextCodec* codec = QTextCodec::codecForName("GBK");
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForTr(codec);
MainWindow mainWindow;
mainWindow.setOrientation(MainWindow::ScreenOrientationAuto);
mainWindow.showExpanded();
return app.exec();
}
(!这里我都是把QtCreator编辑器的默认编码设置成了 GBK)
之后Crtl + B 编译 Crtl + R运行
运行的时候他会报错 说是找不到 ministro 服务 在这里 http://sourceforge.net/projects/ministro.necessitas.p/files/
这个是干神马的呢 ,据我看他源码了解(这里 git clone git://git.code.sf.net/p/necessitas/ministro/git necessitas-ministro-git 不过貌似 源码 跟 ministro.apk有点脱节 )
它是一个Android Service ,通过的ADIL访问的。他的作用是根据你当前Android 系统的环境 下载相应 Qt的Lib文件 比如 libQtCore.so libQtGui.so,外带 Qt启动代理程序 来装载这些 链接库文件 实现 jni代理调用等,这个是KDE 的一个开源项目(很难找。。。https://projects.kde.org/projects/playground/mobile/necessitas/android-qt/repository
怀疑 Ubuntu for Android 出来之后 KDE 也会有动作了)
你安装了之后 ,他再次启动Qt 程序 他会根据你程序的需要下载库,我这里只是简单测试,所以大致下载了libQtCore.so libQtGui.so
还有一个 QtIndustrius-8.jar
(主要类
org.kde.necessitas.industrius.QtActivityDelegate
这里可以看 https://projects.kde.org/projects/playground/mobile/necessitas/android-qt/repository/revisions/master/entry/src/android/jar/src/org/kde/necessitas/industrius/QtActivityDelegate.java
)
这个就是 Qt启动代理程序
然后就是它加载各个lib,然后启动你的lib.so的main和注册窗口句柄到Qt,并回调 你Qt项目里面Android 类文件 QtActivity.java 启动 你项目,更有QtActivity.java 链接了各个事件在通过 java 反射回调QtActivityDelegate
形成各个事件
这个就是他的运转过程
下面是程序是在虚拟机上执行的截图
似乎QMessagebox 实现的不太好看。
在我的真机(I9100 Android 2.3.5)上测试,执行效果一样
- 大小: 88.3 KB
- 大小: 21.3 KB
分享到:
相关推荐
这是Qt for Android的测试工程,主要测试QT的触摸手势事件
Qt for android 动态权限申请工具类
QT FOR ANDROID 配置
qt for android 更新APP, 可以实现在app里更新自己 实现更新。
Qt for Android简单示例
使用Qt for android调用原生系统的摄像头来录取设备,稳定高效,使用于安卓7.0版本及以上,测试在魅族5.0会后台死掉,但是录像会成功
QT for Android下多个 Service的创建启动,包括Service通过Jni外调QT信号槽实现,对研究QT在安卓下的跨平台开发很有帮助
Qt for Android 需要的文件Ministro II.apk
Qt for Android实现自动更新app,安装apk文件,qml自动更新 通过调用修改Java函数来实现对私有数据的读写
qt for android 版本5.4重力感应官方源码 希望有用
使用Qt for Android 和 QML开发的短信程序,使用JNI的方式在Qt端调用JAVA、以及JAVA端回调Qt端的方式。
QT for Android环境搭建,SDK,JDK等
资源中的打开相机和相册均是原生Java代码实现,在我自己手机和安卓7.0版本上面稳定可靠,测试在魅族5.0版本左右打开相机会死掉,由Qt调用,demo可学习Qt如何与原生Java的交互通信,代码均有注释,里面还有微信等接口...
在qt for android上实现的悬浮窗,程序比较粗糙,第一次运行需要允许overlay权限,可以简单参考下
研究了很久,也看了Qt on Android,试了很多例子,都不能用(很可能是Qt和Android更新换代太快,很多旧的东西不能用了,所以做了这个例子。
Qt 5.15.2基于Android 开发环境搭建,包含Qt5.15.2的在线安装与配置,包含JDK 1.8 Android Studio 4.1.3 Openssl 插件的安装配置以及其资源包下载路径,亲测可用,非常详细。汪采纳!
C++调用JAVA函数实现安卓APP中调用图片选择器;能够适配不同的安卓版本,实现安卓6.0动态权限获取与设置
qml编写的播放器界面,列表功能,没有实现播放音乐功能,只是一个UI列表界面,读取音乐列表格式显示。
qt for Android蓝牙串口助手app PC端和手机端均可使用。
主要是qt for android的源码,可编译