思路是先調用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系統就不會彈出警告對話框