Android开发之MediaPlayer和SurfaceView播放视频

使用MediaPlayer出了了可以播放音频之外,还可以播放视频文件,只不过使用MediaPlayer播放视频时,没有提供图像输出界面。可以使用SurfaceView组件来显示视频图像。使用MediaPlayer和SurfaceView播放视频大致可以分为如下四个步骤:

1)定义SurfaceView组件。最好在布局文件中实现。

2)创建MediaPlayer对象,并为其加载要播放的视频。

3)将所播放的视频画面输出到SurfaceView中。使用MediaPlayer对象的setDisplay方法,可以将所播放的视频画面输出到SurfaceView。

4)调用MediaPlayer对象的相应方法控制视频的播放。播放play,暂停,pause,停止stop。

一个例子如下所示:

import java.io.IOException;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
	private MediaPlayer mp;		//声明MediaPlayer对象
	private SurfaceView sv;	//声明SurfaceView对象
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mp=new MediaPlayer();		//实例化MediaPlayer对象
        sv=(SurfaceView)findViewById(R.id.surfaceView1);	//获取布局管理器中添加的SurfaceView组件
        Button play=(Button)findViewById(R.id.play);	//获取“播放”按钮
        final Button pause=(Button)findViewById(R.id.pause);	//获取“暂停/继续”按钮
        Button stop=(Button)findViewById(R.id.stop);		//获取“停止”按钮
        //为“播放”按钮添加单击事件监听器
        play.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				mp.reset();		//重置MediaPlayer对象
				try {
					mp.setDataSource("/sdcard/ccc.mp4");	//设置要播放的视频
					mp.setDisplay(sv.getHolder());	//设置将视频画面输出到SurfaceView
					mp.prepare();	//预加载视频
					mp.start();	//开始播放
					sv.setBackgroundResource(R.drawable.bg_playing);	//改变SurfaceView的背景图片
					pause.setText("暂停");
					pause.setEnabled(true);	//设置“暂停”按钮可用
				} catch (IllegalArgumentException e) {
					e.printStackTrace();
				} catch (SecurityException e) {
					e.printStackTrace();
				} catch (IllegalStateException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}

			}

		});
        //为“停止”按钮添加单击事件监听器
        stop.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				if(mp.isPlaying()){
					mp.stop();		//停止播放
					sv.setBackgroundResource(R.drawable.bg_finish);	//改变SurfaceView的背景图片
					pause.setEnabled(false);	//设置“暂停”按钮不可用
				}
			}

		});
        //为“暂停”按钮添加单击事件监听器
        pause.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				// TODO Auto-generated method stub
				if(mp.isPlaying()){
					mp.pause();		//暂停视频的播放
					((Button)v).setText("继续");
				}else{
					mp.start();		//继续视频的播放
					((Button)v).setText("暂停");
				}
			}

		});
        //为MediaPlayer对象添加完成事件监听器
        mp.setOnCompletionListener(new OnCompletionListener() {

			public void onCompletion(MediaPlayer mp) {
				// TODO Auto-generated method stub
				sv.setBackgroundResource(R.drawable.bg_finish);	//改变SurfaceView的背景图片
				Toast.makeText(MainActivity.this, "视频播放完毕!", Toast.LENGTH_SHORT).show();
			}

		});

    }
	@Override
	protected void onDestroy() {
		if(mp.isPlaying()){
			mp.stop();	//停止播放视频
		}
		mp.release();	//释放资源
		super.onDestroy();
	}

}

好了,结束。

时间: 2024-07-30 10:13:03

Android开发之MediaPlayer和SurfaceView播放视频的相关文章

android开发之MediaPlayer+Service MP3播放器

http://blog.csdn.net/zzy916853616/article/details/6450753 [java] view plaincopy import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.List; import android.app.ListActivity; import android.apps.service.Player

使用MediaPlayer和SurfaceView播放视频

使用VideoView播放视频简单.方便,丹有些早期的开发者更喜欢使用MediaPlayer来播放视频,但由于MediaPlayer主要用于播放音频,因此它没有提供图像输出界面,此时 需要借助于SurfaceView来显示MediaPlayer播放的图像输出. 使用MediaPlayer播放视频的步骤如下: 1.创建MediaPlayer对象,并让它加载指定的视频文件. 2.在界面布局文件中定义SurfaceView组件,或在程序中创建SurfaceView组件,并为SurfaceView的Su

Android开发之Mediaplayer

Android提供了常见的音频.视频的编码.解码机制.借助于多媒体类MediaPlayer的支持,开发者能够非常方便在在应用中播放音频.视频.本篇博客主要解说在Android平台下怎样播放一个音频文件. 本篇博客主要内容例如以下: MediaPlayer MediaPlayer的音频源 使用MediaPlayer播放音乐 MediaPlayer使用技巧 Demo--一个简单的MP3播放器 MediaPlayer 上面提到过,Android下对于音频.视频的支持均须要使用到MediaPlayer,

Android开发之Mediaplayer状态转换图及音频焦点

前言 之前博客里已经将了MediaPlayer的简单应用,如何使用MediaPlayer在Android应用中播放音频.这篇博客在MediaPlayer使用的基础上,讲解一下MediaPlayer的一些高级功能的使用,以及它的状态转换.对MediaPlayer还不了解的朋友可以先看看之前那篇博客:Android--MP3播放器MediaPlayer. 本篇博客主要内容如下: MediaPlayer的状态变换 MediaPlayer的唤醒锁 MediaPlayer的音频焦点 MediaPlayer

Android SurfaceView播放视频

先来介绍一下大部分软件如何解析一段视频流.首先它需要先确定视频的格式,这个和解码相关, 不同的格式视频编码不同,不是这里的重点.知道了视频的编码格式后,再通过编码格式进行解码,最后得到一帧一帧的图像,并把这些图像快速的显示在界面上, 即为播放一段视频.SurfaceView在Android中就是完成这个功能的. IBM POWER8通过一年充分融入了"开放"基因,现在有哪些成效?快来注册观看直播,一起拥抱开源的力量. --> SurfaceView 先来介绍一下大部分软件如何解析

Android开发之MediaRecorder类详解

MediaRecorder类详解 手机一般都有麦克风和摄像头,而Android系统就可以利用这些硬件来录制音视频了. 为了增加对录制音视频的支持,Android系统提供了一个MediaRecorder的类.该类的使用也非常简单,下面让我们来了解一下这个类: 一.类结构: java.lang.Object    ? android.media.MediaRecorder 二.类概述: 用于录制音频和视频的一个类. 三.状态图: 说明: 与MediaPlayer类非常相似MediaRecorder也

Android开发之Sensors与摇一摇

Sensor概述 基于Android的设备有内置的传感器,测量运动,方向,和各种环境条件.这些传感器能够提供原始数据的高精度和准确度,并且是有用的如果你想要监测装置.定位的三维运动,或者你想监控在设备周围环境的变化.例如,一个可能的轨道的读数装置的重力传感器来推断用户的手势和身体的动作复杂,如倾斜.摇晃.旋转.摆动或.同样,一个天气应用程序可能使用的设备的温度传感器和湿度传感器来计算和报告. Android平台支持的传感器三大类: 运动传感器 这些传感器测量加速度的力和旋转力沿三轴.这一类包括加

Android开发之SoundPool使用详解

使用SoundPool播放音效 如果应用程序经常播放密集.急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了.因为MediaPlayer存在如下缺点: 1)         延时时间较长,且资源占用率高. 2)         不支持多个音频同时播放. Android中除了MediaPlayer播放音频之外还提供了SoundPool来播放音效,SoundPool使用音效池的概念来管理多个短促的音效,例如它可以开始就加载20个音效,以后在程序中按音效的ID进行播放.

android开发之Animations的使用(三)

android开发之Animations的使用(三) 本博文主要讲述的是,Animations在android开发中的用来循环播放动画的效果: MainActivity.java: package com.example.animationtest3; import android.os.Bundle; import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.v