android video

1. qml調用java

思路是先調用C++方法,再在C++中使用jni調用java:php

http://www.tuicool.com/articles/my2Ybahtml

2. 安卓播放視頻

http://blog.csdn.net/chenjie19891104/article/details/6338202java

http://www.2cto.com/kf/201208/148912.htmllinux

3.jni參數傳遞

// 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

4. android播放結束事件

使用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

5. java調用c++

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

6  activity傳遞參數

http://stackoverflow.com/questions/3913592/start-an-activity-with-a-parameter

7 mediaplayer 異常監聽

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生命週期

20 LayoutInflater

http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html

這裏說的很清楚:

對於一個沒有被載入或者想要動態載入的界面,都須要使用LayoutInflater.inflate()來載入;

對於一個已經載入的界面,就可使用Activiyt.findViewById()方法來得到其中的界面元素。

用法:

http://blog.csdn.net/zuolongsnail/article/details/6370035

 

21 多窗口播放

跟我以前理解的同樣,一個viewgroup能夠包含多個view每個view都是獨立繪製的,這樣能夠實現多窗口播放,可是有幾個問題:

1)單個窗口播放循環列表:

多個窗口同時播放,當某一個窗口播放結束後(在子線程中),主線程經過監聽器或者handler捕獲到播放完成事件,可是不知道這個事件是哪一個窗口(view)觸發的。

好比視頻播放,須要在activity定義監聽器listener監聽complation事件,捕獲到事件後須要播放該窗口的下一個節目,可是並不知道是哪一個窗口。

listener還有一種設置方式是傳遞某個對象,該對象類只須要申明並實現對應的監聽器便可(經過implements關鍵字)

這樣就能夠爲每個窗口建立一個播放器(player)對象,在該對象中實現播放調度便可。

http://www.linuxidc.com/Linux/2012-05/61186.htm

22 單個窗口播放不一樣類型的文件

java中的引用相似指針,使用強制轉換能夠指向不一樣類型的view,這樣就能夠實現不一樣類型的view到調度

23 gif播放

使用第三方的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系統就不會彈出警告對話框

相關文章
相關標籤/搜索