- 浏览: 334878 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
xuanyuanxiaoxue:
...
Android - LayoutInflater -
柴兴博:
不错 多谢
Android 悬浮Activity并可拖动(访悬浮歌词) -
di1984HIT:
写的很好,我收藏一下。
java之动态代理模式(JDK和cglib) -
chinacssnj:
待测试,明天测,测试的结果发给大家
网络开发上传文件到服务器 -
fx_199182:
...
Android之MediaPlayer
Android内置的VideoView类可以快速制作一个系统播放器,VideoVies主要用来显示一个视频文件,我们先来看看VidewView类的一些基本方法。
VideoView类的常用方法
getBufferPercentage 得到缓冲的百分比 |
getCurrentPosition 得到当前播放的位置 |
getDuration 得到视频文件的时间 |
isPlaying 是否正在播放 |
pause 暂停 |
resolveAdjustedSize 调整视频显示大小 |
seekTo 指定播放位置 |
setMediaController 设置播放控制模式(播放进度条) |
setOnCompleteionListener 当媒体文件播放完成时出发时间 |
setOnErrorListener 错误监听 |
setVideoPath 设置视频源路径 |
setVideoPath 设置视频源地址 |
start 开始播放 |
有了这些方法,我们要播放一个视频文件就很简单了,首先在布局文件中创建VideoView布局,并且创建几个按钮来实现对视频的操作。当我们点击“装载”按钮时,将指定视频文件的饿路径,如下列代码所示:
/* 设置路径*/ videoView.setVideoPath("/sdcard/test.mp4"); /* 设置模式-播放进度条*/ videoView.setMediaController(new MediaController(Activity01.this)); videoView.requestFocus();
装载之后便可以通过start,pause方法来播放和暂停,具体实现见代码清单:
package com.yarin.android.Examples_07_03; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.MediaController; import android.widget.VideoView; public class Activity01 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* 创建VideoView对象 */ final VideoView videoView = (VideoView) findViewById(R.id.VideoView01); /* 操作播放的三个按钮 */ Button PauseButton = (Button) this.findViewById(R.id.PauseButton); Button LoadButton = (Button) this.findViewById(R.id.LoadButton); Button PlayButton = (Button) this.findViewById(R.id.PlayButton); /* 装载按钮事件 */ LoadButton.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { /* 设置路径 */ videoView.setVideoPath("/sdcard/test.mp4"); /* 设置模式-播放进度条 */ videoView.setMediaController(new MediaController(Activity01.this)); videoView.requestFocus(); } }); /* 播放按钮事件 */ PlayButton.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { /* 开始播放 */ videoView.start(); } }); /* 暂停按钮 */ PauseButton.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { /* 暂停 */ videoView.pause(); } }); } }
扩展学习
上面我们通过系统自带的VideoView播放了一个MP4视频文件,但是我们知道VideoView类实际上继承自SurfaceView类,而且实现了MediaController.MediaPlayerControl接口。下面我们用SurfaceView来实现一个视频播放器。,当然需要通过SurfaceHolder来控制SurfaceView,因此需要通过getHolder方法来德奥SurfaceView的SurfaceHolder对象,具体代码如下:
package com.yarin.android.Examples_07_04; import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.MediaPlayer.OnBufferingUpdateListener; import android.media.MediaPlayer.OnCompletionListener; import android.os.Bundle; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; public class Activity01 extends Activity implements OnBufferingUpdateListener, OnCompletionListener, MediaPlayer.OnPreparedListener, SurfaceHolder.Callback { private static final String TAG = "Activity01"; private int mVideoWidth; private int mVideoHeight; private MediaPlayer mMediaPlayer; private SurfaceView mPreview; private SurfaceHolder holder; private String path; public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); mPreview = (SurfaceView) findViewById(R.id.surface); /* 得到SurfaceHolder对象 */ holder = mPreview.getHolder(); /* 设置回调函数 */ holder.addCallback(this); /* 设置风格 */ holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } private void playVideo() { try { path = "/sdcard/test.mp4"; /* 构建MediaPlayer对象 */ mMediaPlayer = new MediaPlayer(); /* 设置媒体文件路径 */ mMediaPlayer.setDataSource(path); /* 设置通过SurfaceView来显示画面 */ mMediaPlayer.setDisplay(holder); /* 准备 */ mMediaPlayer.prepare(); /* 设置事件监听 */ mMediaPlayer.setOnBufferingUpdateListener(this); mMediaPlayer.setOnCompletionListener(this); mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); } catch (Exception e) { Log.e(TAG, "error: " + e.getMessage(), e); } } public void onBufferingUpdate(MediaPlayer arg0, int percent) { Log.d(TAG, "onBufferingUpdate percent:" + percent); } public void onCompletion(MediaPlayer arg0) { Log.d(TAG, "onCompletion called"); } public void onPrepared(MediaPlayer mediaplayer) { Log.d(TAG, "onPrepared called"); mVideoWidth = mMediaPlayer.getVideoWidth(); mVideoHeight = mMediaPlayer.getVideoHeight(); if (mVideoWidth != 0 && mVideoHeight != 0) { /* 设置视频的宽度和高度 */ holder.setFixedSize(mVideoWidth, mVideoHeight); /* 开始播放 */ mMediaPlayer.start(); } } /* 更改时出发的事件 */ public void surfaceChanged(SurfaceHolder surfaceholder, int i, int j, int k) { Log.d(TAG, "surfaceChanged called"); } /* 销毁 */ public void surfaceDestroyed(SurfaceHolder surfaceholder) { Log.d(TAG, "surfaceDestroyed called"); } /* 当SurfaceHolder创建时触发 */ public void surfaceCreated(SurfaceHolder holder) { Log.d(TAG, "surfaceCreated called"); playVideo(); } /* 销毁 */ @Override protected void onDestroy() { super.onDestroy(); if (mMediaPlayer != null) { mMediaPlayer.release(); mMediaPlayer = null; } } }
发表评论
-
Android中AsyncTask的简单用法
2012-01-13 16:00 1192在开发Android移动客户端的时候往往要使用多线程来进行操 ... -
Android应用的自动升级、更新模块的实现 .
2011-11-16 14:01 694http://www.eoeandroid.com/threa ... -
一个APK反编译利器Apktool
2011-11-16 13:54 1614一个APK反编译利器Apktool APK 本地化 ... -
自定义Android标题栏TitleBar布局
2011-11-14 14:13 1279很多网友发现自己Android程序的标题栏TitleBar区域 ... -
Android GPS获取地理位置 .
2011-11-14 14:11 881import android.app.Activity; i ... -
android ListView详解
2011-11-14 13:48 1082在android开发中ListView是比较常用的组件,它以列 ... -
Android之Content provider 详解
2011-11-14 13:35 2504Android是如何实现应用程序之间数据共享的?一个应用程序可 ... -
Android源码地址
2011-11-12 19:14 1072http://blog.csdn.net/ilittleone ... -
android之File
2011-11-11 22:39 20321:Fileservice package cn.itcas ... -
Android知识补漏
2011-11-09 22:33 01:AndroidManifiest.xml < ... -
深入剖析Android消息机制
2011-11-09 14:13 979在Android中,线程内部或者线程之间进行信息交互时经常会使 ... -
Android之Handler详解(四)
2011-11-09 14:00 1302d、自己创建新的线程,然后在新线程中创建Looper,主线程调 ... -
Android之Handler详解(三)
2011-11-09 13:58 1382c、将消息队列绑定到子线程上,主线程只管通过Handl ... -
Android之Handler详解(二)
2011-11-09 13:54 1692二:sendMessage版本的Handl ... -
Android之Handler详解(一)
2011-11-09 13:22 2325一个Handler允许你发送和处理消息(Message)以及 ... -
关于StartActivityForResult方法的使用
2011-10-31 17:11 1121根据方法名可知 这个方法是要得到启动后的Activity返回的 ... -
Android 悬浮Activity并可拖动(访悬浮歌词)
2011-10-24 16:23 2132天天动听, 这款Android手机上的音乐播放器,相信不少朋友 ... -
Android GWES
2011-10-24 16:13 1225第八章 Android GWES 8.1 View Syst ... -
Android系统服务-WindowManager
2011-10-24 16:10 1477WindowManager是Android中一个重要的服务 ... -
http通信
2011-10-15 17:31 1116HTTP(HyperText Transfer Proto ...
相关推荐
在Android平台上,开发一款视频播放应用是一项常见的任务。本文将深入探讨如何在Android中实现视频播放,特别是基于`MediaPlayer`的实现方式,并分享在实际开发过程中可能遇到的问题及其解决方案。 `MediaPlayer`是...
本项目专注于Android Studio中的视频播放功能,这在移动应用开发中是一个常见且重要的特性,尤其对于媒体、教育或者娱乐类应用。开源的性质意味着开发者可以查看源代码,学习并自定义视频播放组件。 在Android平台...
在Android平台上,开发视频播放功能是一项常见的任务,尤其在移动应用中,用户对视频内容的消费需求日益增长。刘老师的视频源码提供了四个关键的实现方式,分别是:SurfaceView、VideoView、SurfaceView(再次提及)...
通过以上讲解,我们可以看到Android视频播放不仅仅是简单地展示视频,还包括了播放控制、全屏切换、自定义视图以及数据库管理等多个方面。理解并掌握这些知识点,对于开发具有高级视频功能的Android应用至关重要。
本篇文章将深入探讨如何在Android中实现这种功能,主要围绕"Android在线视频播放之边缓存边播放"的主题展开。 首先,我们需要了解流媒体的基本概念。流媒体是指在网络上传输并实时播放的多媒体数据,它允许用户在...
Android视频播放SDK是一种专为Android平台设计的软件开发工具包,用于在移动设备上实现流畅、高效的视频播放功能。它通常包含一组API接口,开发者可以通过这些接口集成到自己的应用程序中,实现各种视频播放的需求,...
三、使用MediaPlayer播放(将MediaPlayer对象用于视频播放能够为控制播放本身提供最大的灵活性)。 本文章只讲解使用意图播放视频,用于处理播放的具体机制也是MediaPlayer,其余的播放将在后面的文章中讲到。
- 默认情况下,WebView可能不支持视频播放,需要设置`WebSettings.mediaPlaybackRequiresUserGesture = false;`允许自动播放视频。 4. **HTML5 `<video>`标签**: - 在网页中,使用HTML5的`<video>`标签来插入...
android视频播放android视频播放android视频播放android视频播放android视频播放android视频播放android视频播放android视频播放android视频播放android视频播放android视频播放android视频播放android视频播放...
下面我们将深入探讨如何在Android Webview中实现网页视频播放,并提供一个简单的示例。 首先,我们需要确保Webview能够处理HTML5视频标签。Android的Webview默认支持HTML5,但是某些功能可能需要更新或者自定义设置...
在这个名为"Android视频播放demo"的项目中,开发者提供了一个集成简单、调用方便的代码示例,帮助其他开发者快速理解和实现视频播放功能。该项目主要涉及两个关键组件:`VideoView`和自定义的`VideoPlayer`,这里...
本篇文章将深入探讨如何使用VideoView进行视频播放,以及在实际应用中可能遇到的相关问题和解决策略。 首先,我们来了解VideoView的基本用法。在XML布局文件中,你可以通过添加标签来创建一个VideoView实例: ```...
本教程将深入讲解如何使用VideoView在Android应用中实现视频播放功能。 首先,你需要一个Android Studio开发环境,它是Google提供的官方Android应用开发工具,包含了完整的构建系统、调试工具和模拟器。如果你没有...
### Android视频播放广告知识点 #### 一、Android视频播放简介 在移动互联网时代,随着智能手机功能的日益强大以及网络带宽的不断优化,用户对于移动设备上的多媒体内容需求也越来越高,尤其是在视频播放方面的...
在Android平台上,开发人员经常需要实现视频播放功能。`MediaPlayer`是Android SDK提供的一种核心组件,专门用于播放音频和视频文件。在这个场景中,我们将详细探讨如何使用`MediaPlayer`来播放视频,同时结合`...
在Android开发中,创建一个视频播放列表是常见的需求,尤其在多媒体应用中。这个"Android代码-一个视频播放列表demo,视频...通过深入研究和实践,开发者可以掌握Android视频播放器的开发技巧,提升自己的专业技能。
在Android平台上,开发一款能够支持小屏和分屏模式的视频播放应用是一项常见的任务,而这份"Android视频播放源码,支持小屏,分屏"则提供了实现这一功能的解决方案。下面将详细介绍这个源码中涉及的关键技术点。 ...
在MediaPlayer中,视频播放与音频播放的设置基本相似,但可能需要额外处理视图显示,如设置一个SurfaceView来显示视频画面。 压缩包内的文件如"Unit1.pas"和"Unit1.fmx"可能是Delphi项目中的源代码文件,"Android...
在Android平台上,开发人员经常需要集成视频播放功能,而VLC(VideoLAN Client)是一个流行的开源多媒体播放器,它支持多种视频和音频格式以及流媒体协议。本教程将详细介绍如何在Android应用中实现使用VLC播放本地...
我们以"Android 视频播放源码"为主题,结合提供的文件名"Video",我们将讨论Android视频播放的核心组件、播放器的选择、解码与渲染、视频控制以及优化策略。 首先,Android系统提供了一个名为`MediaPlayer`的内置类...