思路是先调用C++方法,再在C++中使用jni调用java:php
http://www.tuicool.com/articles/my2Ybahtml
http://blog.csdn.net/chenjie19891104/article/details/6338202java
http://www.2cto.com/kf/201208/148912.htmllinux
// C++ code QAndroidJniObject string1 = QAndroidJniObject::fromString("String1"); QAndroidJniObject string2 = QAndroidJniObject::fromString("String2"); QAndroidJniObject stringArray = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/TestClass", "stringArray" "(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;" string1.object<jstring>(), string2.object<jstring>());
参考:http://doc.qt.io/qt-5/qandroidjniobject.htmlandroid
使用videoview播放:git
问题1:layout文件github
layout文件是xml格式的资源文件,存放在res/layout目录下json
问题2:多activity安全
须要在某个activity中启动另外一个activityide
参考:http://blog.csdn.net/x605940745/article/details/14417721
注意新的activity须要在manifast.xml文件中申明
问题3:播放完成事件监听器
http://www.cnblogs.com/plokmju/p/android_VideoView.html
java能够申明一个native方法经过jni调用外部接口,qt提供了QAndroidJniEnvironment工具能够很方便的获取java的jni环境,只须要在jni环境中将未注册native方法绑定到c++方法上便可。
1. 在java类中申明一个public native方法
2 在c++中使用QAndroidJniEnvironment 的 RegisterNatives 方法为该java类的native方法注册(绑定)一个c++方法
其中先要用GetObjectClass方法获取java 类
具体参考:
http://www.cnblogs.com/kayfans/archive/2012/06/18/2553542.html
https://forum.qt.io/topic/51593/qt-5-4-android-call-qt-method-from-java-code
http://www.tuicool.com/articles/nERZRf7
http://stackoverflow.com/questions/3913592/start-an-activity-with-a-parameter
http://www.cnblogs.com/plokmju/p/android_MediaPlayer.html
8. java解析json:gson
http://stackoverflow.com/questions/25556908/gson-json-list-to-java-listobject
http://www.cnblogs.com/hnrainll/archive/2012/04/18/2456192.html
https://github.com/google/gson/blob/master/UserGuide.md
9 videoview
http://www.cnblogs.com/over140/archive/2011/06/13/2079422.html
http://stackoverflow.com/questions/21716320/how-add-a-videoview-programmatically
http://www.skholingua.com/android-basic/user-interface/images-media/videoview
http://www.sampleprogramz.com/android/media.php
10
http://stackoverflow.com/questions/6216547/android-dynamically-add-views-into-view
11
http://stackoverflow.com/questions/7927449/stopping-an-android-activity
12 imageview & bitmap
缩放:http://blog.csdn.net/larryl2003/article/details/6919513
http://www.cnblogs.com/zgz345/archive/2013/01/08/2851204.html
13.线程间通信
http://www.cnblogs.com/allin/archive/2010/05/19/1738800.html
14 timer
http://blog.csdn.net/koko7958/article/details/7165640
TimerTask运行在一个单独的线程里,而不是UI线程。因此使用Android timer时,注意android的单线程原则,确保线程安全。不要在TimerTask的run方法中作UI相关的操做,如:TextView.setText()等,这样可能会致使UI线程阻塞。若是须要可使用handler向UI线程发消息,具体处理由UI线程本身完成。在使用完Timer以后,要使用Timer的cancel方法取消Timer,不然Timer一直在运行。
15 textview
http://www.cnblogs.com/over140/archive/2010/08/27/1809745.html
跑马灯:http://www.cnblogs.com/over140/archive/2010/08/20/1804770.html
16 LayoutParams
http://www.cnblogs.com/shaweng/archive/2012/07/10/2585134.html
17 viewgroup
http://www.cnblogs.com/lqminn/archive/2013/01/23/2866543.html
http://www.jianshu.com/p/138b98095778
http://blog.csdn.net/lmj623565791/article/details/38339817
主要2个接口:
onMeasure
and
onLayout
前者是根据子视图计算viewgroup的大小
后者是对子视图进行布局(位置)
18 player收不到消息
跳转到video player activity之后player就收不到消息,只有video player activity finish退出后 才能接收
缘由不明
19 activity生命周期
http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html
这里说的很清楚:
对于一个没有被载入或者想要动态载入的界面,都须要使用LayoutInflater.inflate()来载入;
对于一个已经载入的界面,就可使用Activiyt.findViewById()方法来得到其中的界面元素。
用法:
http://blog.csdn.net/zuolongsnail/article/details/6370035
跟我以前理解的同样,一个viewgroup能够包含多个view每个view都是独立绘制的,这样能够实现多窗口播放,可是有几个问题:
1)单个窗口播放循环列表:
多个窗口同时播放,当某一个窗口播放结束后(在子线程中),主线程经过监听器或者handler捕获到播放完成事件,可是不知道这个事件是哪一个窗口(view)触发的。
好比视频播放,须要在activity定义监听器listener监听complation事件,捕获到事件后须要播放该窗口的下一个节目,可是并不知道是哪一个窗口。
listener还有一种设置方式是传递某个对象,该对象类只须要申明并实现对应的监听器便可(经过implements关键字)
这样就能够为每个窗口建立一个播放器(player)对象,在该对象中实现播放调度便可。
http://www.linuxidc.com/Linux/2012-05/61186.htm
java中的引用相似指针,使用强制转换能够指向不一样类型的view,这样就能够实现不一样类型的view到调度
使用第三方的gifview会有内存溢出的问题,这里最佳实践是使用webview:
http://droid-blog.net/2011/10/17/tutorial-how-to-play-animated-gifs-in-android-part-3/
可是没法捕获播放完成事件,只能使用定时器来调度,须要使用Movie类获取gif文件时长
http://blog.csdn.net/peishichao/article/details/38539363
24 mediaplayer can not play video alertdialog
监听OnErrorListener事件,在重载onerror方法中返回true系统就不会弹出警告对话框