Qt for Android:实现本地通知栏显示

QtAndroid通知栏显示以及消息推送

作者:melon

日期:2019/7/18

1.前言

网上查阅了很多资料,没有使用qt写android的通知消息的,必须得通过JNI接口调用java的android原生接口,实现通知栏的显示和各种通知消息定义。这里坑很多,主要是在环境配置和各种库的依赖上面,这里花费了我大量的时间去琢磨和调试,幸好最后是能使用Qt实现和原生android几乎一样的效果。

最终运行效果图:

 这个demo实现了消息通知,点击跳转,小图标设置,通知标题以及内容等设置,下面开始讲解整个demo的构建和实现过程。

2.QtAndroid通知栏实现

(1)安装AndroidStudio

建议安装3.1.2,我就是基于3.1.2版本进行开发的,之前装了3.4的版本,坑很多,不熟悉android开发会遇到很多问题,虽然最新的版本也能正常运行,但是很多网上很多教程还是基于老的版本兼容的(可以同时装多个版本的as)。更重要的是QtCreator不能对android进行很好的调试,安装as能够给你的调试带来极大的方便。使用as(androidstudio)安装sdk和ndk,为了保持QtCreator和as有相同的编译环境,这些路径都要一致。

 打开MyApplication2项目,同步编译,在模拟器或者真机上运行,点击Button会发送一个通知,点击通知会跳转到app的activity上。

(2)移植android项目到Qt

 <1>导入jre,sdk和ndk

 导入和android3.1.2相同的jre,ndk和sdk路径,一定要一致,保持编译环境一致。

 <2>拷贝res文件夹

 Qt创建的android模板res里面只有一个value文件夹,为了保持一致我们也应该拷贝这些文件,因为这些文件都是由特殊含义的,但是不是必要的步骤。我在drawable导入了自己的图片icon.png,这个是用来设置通知的小图标。

<3>配置build.gradle这个文件在as有两个,Qt是把这两个文件合成了一个,并且加了进去了Qt的一些编译机制,如:,Qt加进去的东西不要去修改,只需要把as里面的配置追加在后面就行了。

总结:

  1. Qt实现android通知栏最大的难点在于项目配置上,要对android项目的配置和Qt项目跨平台的实现机制比较熟悉,最好能够深刻理解Qt跨android的底层实现。

  2. 有些android的函数和库在as上能够正常使用和编译运行,但是Qt并不一定都能使用,例如R类,而且有些原生函数在Qt上使用还会导致崩溃等现象,具体原因有待深究。

  3. Qt调用JNI接口还是能实现和原生差不多的效果,但是需要花时间去调试,不能用的功能和库就想办法绕过去或者换一种方法实现

  4. 这个demo只是实现了通知栏显示以及相关设置,关于推送的机制可以自己实现也可以使用第三方的,像极光,小米,阿里等都有比较成熟的推送方案。

猜你喜欢

转载自blog.csdn.net/weixin_28927079/article/details/96885405