为什么我的VideoView html5播放器黑屏一直黑屏

VideoView 在播放时只有黑屏
[问题点数:20分,结帖人qq_]
VideoView 在播放时只有黑屏
[问题点数:20分,结帖人qq_]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|在代码中加入webview.getSettings().setJavaScriptEnabled(true);//支持jswebview.getSettings().setPluginsEnabled(true);//设置webview支持插件同时要在Manifest配置文件的application中加入 android:hardwareAccelerated="true" 硬件加速,这样才能够播放视频
1、新建一个html文件,编辑其内容:&html&&head&&/head&&body&&div id="videos"&&video src="视频绝对路径或者相对路径或者网络链接" width="设置宽度" height="设置高度" autoplay /&&/div&&/body&&/html&
2、WebView 中设置webview组件支持javascript脚本为true,load加载该html。3、有很多设备开发时只有声音,没有画面,这个时候在androidmanifest.xml中添加应用程序application中设置硬件渲染为true,在Oncreate函数中启用硬件渲染即可。说的有点含糊。
1、androidmanifest.xml文件设置如下属性:android:hardwareAccelerated="true"2、OnCreate中添加:getWindow().addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);做网页视频只有声音没画面,一般这样可以解决。并不是所有机型都可以,也有特例,比较少。
WebView硬件加速导致页面渲染闪烁4.0以上的系统我们开启硬件加速后,WebView渲染页面更加快速,拖动也更加顺滑。但有个副作用就是,当WebView视图被整体遮住一块,然后突然恢复时(比如使用SlideMenu将WebView从侧边滑出来时),这个过渡期会出现白块同时界面闪烁。解决这个问题的方法是在过渡期前将WebView的硬件加速临时关闭,过渡期后再开启,代码如下:if&(Build.VERSION.SDK_INT&&=&Build.VERSION_CODES.HONEYCOMB)&{&&&&webview.setLayerType(View.LAYER_TYPE_SOFTWARE,&null);}
阅读(...) 评论()没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!阅读 34290
这几天在做视频播放器一直在研究videoview。
videoview是和video连用的。2个组件分别都提供一个方法关联另一方:
mediaController-setAnchorView(videoview),videoview-setMediaController(mediaController)。
我习惯在一个布局文件中设置好videoview的位置之后,在activity的onCreate()中将mediaController
动态初始化并关联到已经设置好的videoview上。
但是这里的说明下在布局中设置videoview的时候最好给videoview外面单独套一个的容器。
当然这个外层容器的高度要设定为wrap_content。这样就会把视频播放器和控制器很好的组合在一起。
这里我用的是线性布局LinearLayout因为我不想控制器把视频给遮盖住了。
&LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/main_videoview_contianer"&
&VideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
&/LinearLayout&
实现的效果图如图:
用的是模拟器。所以视频没有播放出来成了黑色的。
&VideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
/& 如果videoview的外层容器的高度是match_parent或者fillparent的话。
视频控制器会和视频播放器分离如图:灰色为分离的部分。
PS: 不过其实你也可以先在布局文件中将mediaController设置好,然后在代码中初始话videoview然后将videoview添加到mediacontroller中去,因为mediaController是继承frameLayout的本身就是一个帧式布局容器:
下面是设置mediaController的方法
public void setAnchorView(View view) {
if (mAnchor != null) {
mAnchor.removeOnLayoutChangeListener(mLayoutChangeListener);
if (mAnchor != null) {
mAnchor.addOnLayoutChangeListener(mLayoutChangeListener);
FrameLayout.LayoutParams frameParams = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
removeAllViews();
View v = makeControllerView();
addView(v, frameParams);
} 从官方源码中可以看出,video会强制撑满全屏mediacontroller.
mediaController主要实现对videoview的播放控制,但是翻开mediacontroller的源码才发现。
mediaController能实现的功能太少了。其实这些都可以忍受,唯一让人不能忍受的的mediaController
暴露的可以让继承的类覆盖的方法太少了。
而且提供的监听器只有上一首和下一首。无法监听快进和后退。但是mediaController的快进是固定的15秒快进和固定的5秒后退时间。
public boolean dispatchKeyEvent(KeyEvent event) {
int keyCode = event.getKeyCode();
final boolean uniqueDown = event.getRepeatCount() == 0
&& event.getAction() == KeyEvent.ACTION_DOWN;
if (keyCode ==
KeyEvent.KEYCODE_HEADSETHOOK
|| keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE
|| keyCode == KeyEvent.KEYCODE_SPACE) {
if (uniqueDown) {
doPauseResume();
show(sDefaultTimeout);
if (mPauseButton != null) {
mPauseButton.requestFocus();
} else if (keyCode == KeyEvent.KEYCODE_MEDIA_PLAY ) {//键盘播放健
if (uniqueDown && !mPlayer.isPlaying()) {
mPlayer.start();
updatePausePlay();
show(sDefaultTimeout);
} else if (keyCode == KeyEvent.KEYCODE_MEDIA_STOP //键盘停止键
|| keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE) {//键盘暂停键&
&&&&&&&&&&&&if (uniqueDown && mPlayer.isPlaying()) {
mPlayer.pause();
updatePausePlay();
show(sDefaultTimeout);
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN //声音下调键
|| keyCode == KeyEvent.KEYCODE_VOLUME_UP&&&//声音上调键
|| keyCode == KeyEvent.KEYCODE_VOLUME_MUTE //静音键
|| keyCode == KeyEvent.KEYCODE_CAMERA) {
//打开相机键
// don't show the controls for volume adjustment
return super.dispatchKeyEvent(event);
} else if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_MENU) {
if (uniqueDown) {
show(sDefaultTimeout);
return super.dispatchKeyEvent(event);
} 很明显我们可以看到,mediaController的设计时间早完全是针对那些有键盘的手机,现在的手机那里会有什么播放和暂停键。
& 著作权归作者所有
人打赏支持
码字总数 19843
你用videoview的时候 有遇到加载初始化时候 setvideoPath 与start()会阻塞UI主线程 这个问题吗比如你demo下面在放一个button 视频开始播放的时候 button不能点击大概有1s左右
评论删除后,数据将无法恢复
mediacontroller = (MediaController) findViewById(R.id.mediaController1); mediacontroller =new MediaController(this); 这两个对象的获得,为啥第一个不能被使用,第二个可以正常使用,...
龚泽泽——天才 ?
找到一个触摸屏不能相应触摸,但显示没有问题的手机,写了个小程序,用来给宝宝播放儿歌。 电脑控制手机软件 Total Controlhttp://tc.sigma-rt.com.cn/ 应用设为开机启动 manifest.xml文件设...
开源中国首席辣条代理 ?
Activity里的onSaveInstanceState()方法,虽然系统会自动调用它来保存Activity的一些数据,但当除它默认要保存的数据外,我们还要保存一些其他数据的时候, 我们就需要覆盖onSaveInstanceSta...
Android使用VideoView播放网络视频 Android支持播放网络上的视频。在播放网络上的视频时,牵涉到视频流的传输,往往有两种协议,一种是HTTP,一种是RTSP。这 两种协议最大的不同是,HTTP协议...
无意中留意到 onCreate(Bundle savedInstanceState) ,savedInstanceState究竟是什么,于是上网搜了搜 当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,...
一、结构 public class MediaController extends FrameLayout java.lang.Object android.view.View android.view.ViewGroup android.widget.FrameLayout android.widget.MediaController 二、......
一、结构 public class MediaController extends FrameLayout java.lang.Object android.view.View android.view.ViewGroup android.widget.FrameLayout android.widget.MediaController 一个......
amigos_wu ?
Android 4.0.3(Api Level 15)支持的多媒体格式。 注意:有些设备可能支持其他的文件格式。 1.Audio AAC LC/LTP、HE-AACv1(AAC+)、AMR-NB、AMR-WB、MP3、MIDI、Ogg Vorbis、PCM/WAVE、FLAC(...
Chanimalx ?
VideoView videoView = (VideoView) findViewById(R.id.videoview); videoView.setVideoURI(Uri.parse("http://f3.3g.56.com/15/15/JGfMspPbHtzoqpzseFTPGUsKCEqMXFTWsmooth.3gp")); MediaCo......
jeremy_C ?
真TMD的费劲 解决了 一、VideoView与视频比例缩放: 1 @Override2 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {3 //Log.i("@@@@", "onMeasure");4 int width =......
没有更多内容
加载失败,请刷新页面
1.Download 1)在线下载 [root@hadoop05 local]# wget https://downloads.mariadb.com/archives/mysql-5.6/mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz 2)或者本地上传 选择win的的mysql软件......
GordonNemo ? 34分钟前 ?
步骤 1:创建 Tabs &div style="margin-bottom:10px"&
&a href="#" class="easyui-linkbutton" onclick="addTab('google','http://www.google.com')"&google&/a&
故久呵呵 ? 36分钟前 ?
/data/local/GraphicsMagick/bin/gm convert /data/local/fastdfs_data/storage/images/data/data/00/81/Cns0v1q9oceAa-fBAAB_DXhVYig080.pdf /data/local/fastdfs_data/storage/images/data......
酋长思密达 ? 46分钟前 ?
最近大概看了ZooKeeper和Mina的源码发现都是用Java NIO实现的,所以有必要搞清楚什么是NIO。下面是我结合网络资料自己总结的,为了节约时间图示随便画的,能达意就行。 简介: BIO:同步阻塞...
浮躁的码农 ? 51分钟前 ?
php-fpm的pool目录概要 vim /usr/local/php/etc/php-fpm.conf//在[global]部分增加 include = etc/php-fpm.d/*.conf mkdir /usr/local/php/etc/php-fpm.d/ cd /usr/local/php/etc/php-fpm.d......
lyy549745 ? 55分钟前 ?
一、robots.txt robots.txt(统一小写)是一种存放于网站根目录下的 ASCII 编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获...
blackfoxya ? 今天 ?
第三章 用户和组管理 3.7 su命令 用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。 语法: su [-] username “-”可有可无,加上“-”的作用是在切换用户时初始...
弓正 ? 今天 ?
https://mp.weixin.qq.com/s?__biz=MzU1NTEzOTM5Mw==&mid=&idx=1&sn=8fda2c6d8ff8c09ed4cc&source=41#wechat_redirect...
素雷 ? 今天 ?
Question 39. Combination Sum Solution 分析:以candidates = [2,3,5], target=8来分析这个问题的实现,反向思考,用target 8减2,3,5这三个数,等到target为0的时候,所减过的数就是我们要求...
yysue ? 今天 ?
1.安装Nginx就介绍了,这里直接安装uwsgi: pip install uwsgi 2.测试 # test.py2 def application(env, start_response):3
start_response('200 OK', [('Content-Type','text/html......
littlemesieV ? 今天 ?
没有更多内容
加载失败,请刷新页面
文章删除后无法恢复,确定取消删除此文章吗?
亲,自荐的博客将通过私信方式通知管理员,优秀的博客文章审核通过后将在博客推荐列表中显示
确定推荐此文章吗?
确定推荐此博主吗?
聚合全网技术文章,根据你的阅读喜欢进行个性推荐
指定官方社区
深圳市奥思网络科技有限公司版权所有

我要回帖

更多关于 党员e家视频播放黑屏 的文章

 

随机推荐