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系统就不会弹出警告对话框

相关文章
相关标签/搜索