使用MediaPlayer和SurfaceView播放视频
来源:互联网 发布:跳过windows update 编辑:程序博客网 时间:2024/05/05 01:42
使用MediaPlayer播放视频的步骤
1、创建MediaPlyer的对象,并让他加载指定的视频文件。
2、在界面布局文件中定义SurfaceView组件,或在程序中创建SurfaceView组件。并为SurfaceView的SurfaceHolder添加Callback监听器。
3、调用MediaPlayer对象的setDisplay(Surfaceolder sh)将所播放的视频图像输出到指定的SurfaceView组件
4、调用MediaPlayer对象的start()、stop()、和pause()方法控制视频的播放
实例:
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity" >
- <SurfaceView
- android:id="@+id/surface1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_centerInParent="true" />
- <LinearLayout
- android:id="@+id/linaer1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_alignParentBottom="true"
- >
- <Button android:id="@+id/start"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/start"
- android:layout_weight="1"/>
- <Button
- android:id="@+id/pre"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/pre"
- android:layout_weight="1"/>
- <Button
- android:id="@+id/stop"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/stop"
- android:layout_weight="1"/>
- </LinearLayout>
- </RelativeLayout>
- package com.android.xiong.surfaceviewtest;
- import java.io.IOException;
- import android.app.Activity;
- import android.media.AudioManager;
- import android.media.MediaPlayer;
- import android.os.Bundle;
- import android.util.DisplayMetrics;
- import android.view.Menu;
- import android.view.SurfaceHolder;
- import android.view.SurfaceView;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.ViewGroup.LayoutParams;
- import android.view.WindowManager;
- import android.widget.Button;
- public class MainActivity extends Activity implements OnClickListener {
- private SurfaceView surface1;
- private Button start, stop, pre;
- private MediaPlayer mediaPlayer1;
- private int postion = 0;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- surface1 = (SurfaceView) findViewById(R.id.surface1);
- start = (Button) findViewById(R.id.start);
- stop = (Button) findViewById(R.id.stop);
- pre = (Button) findViewById(R.id.pre);
- mediaPlayer1 = new MediaPlayer();
- //设置播放时打开屏幕
- surface1.getHolder().setKeepScreenOn(true);
- surface1.getHolder().addCallback(new SurfaceViewLis());
- start.setOnClickListener(this);
- stop.setOnClickListener(this);
- pre.setOnClickListener(this);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.start:
- try {
- play();
- } catch (IllegalArgumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (SecurityException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalStateException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- break;
- case R.id.pre:
- if (mediaPlayer1.isPlaying()) {
- mediaPlayer1.pause();
- } else {
- mediaPlayer1.start();
- }
- break;
- case R.id.stop:
- if (mediaPlayer1.isPlaying())
- mediaPlayer1.stop();
- break;
- default:
- break;
- }
- }
- public void play() throws IllegalArgumentException, SecurityException,
- IllegalStateException, IOException {
- mediaPlayer1.reset();
- mediaPlayer1.setAudioStreamType(AudioManager.STREAM_MUSIC);
- mediaPlayer1.setDataSource("/mnt/sdcard/通话录音/1.mp4");
- // 把视频输出到SurfaceView上
- mediaPlayer1.setDisplay(surface1.getHolder());
- mediaPlayer1.prepare();
- mediaPlayer1.start();
- }
- private class SurfaceViewLis implements SurfaceHolder.Callback {
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int width,
- int height) {
- }
- @Override
- public void surfaceCreated(SurfaceHolder holder) {
- if (postion == 0) {
- try {
- play();
- mediaPlayer1.seekTo(postion);
- } catch (IllegalArgumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (SecurityException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalStateException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- @Override
- public void surfaceDestroyed(SurfaceHolder holder) {
- }
- }
- @Override
- protected void onPause() {
- if (mediaPlayer1.isPlaying()) {
- // 保存当前播放的位置
- postion = mediaPlayer1.getCurrentPosition();
- mediaPlayer1.stop();
- }
- super.onPause();
- }
- @Override
- protected void onDestroy() {
- if (mediaPlayer1.isPlaying())
- mediaPlayer1.stop();
- mediaPlayer1.release();
- super.onDestroy();
- }
- }
0 0
- 使用MediaPlayer和SurfaceView播放视频
- 使用MediaPlayer和SurfaceView播放视频
- 使用MediaPlayer和SurfaceView播放视频
- 使用MediaPlayer和SurfaceView播放视频
- 使用MediaPlayer和SurfaceView播放视频
- 使用MediaPlayer和SurfaceView播放视频
- 使用MediaPlayer和SurfaceView播放视频
- 使用MediaPlayer和SurfaceView播放视频
- 使用MediaPlayer和SurfaceView播放视频
- 使用MediaPlayer和SurfaceView播放视频
- Android:使用MediaPlayer和SurfaceView播放视频
- 使用MediaPlayer和SurfaceView结合播放视频
- 使用MediaPlayer和SurfaceView播放视频
- 使用SurfaceView和MediaPlayer播放视频
- 使用MediaPlayer和SurfaceView播放视频
- 使用SurfaceView&MediaPlayer播放视频
- 使用SurfaceView+MediaPlayer视频播放
- MediaPlayer和SurfaceView播放视频
- 学习代理 笔记 delegate
- TCP通信之Socket
- Android将logcat输出到屏幕、文件。TextView自动向下滚动、显示最后一行
- linux的制作自解压缩包,并运行程序
- 学习笔记(四)图的遍历
- 使用MediaPlayer和SurfaceView播放视频
- cloudstack源码部署时提示程序包com.sun.image.codec.jpeg不存在
- iOS AutoLayout(3)
- C编译器剖析_5.4.2 中间代码生成及优化_基本块的合并
- 详解原生JavaScript实现div拖拽功能
- 第一篇博客文章——C语言
- 分享_微博授权返回出现相同的分享界面
- [Play Framework]Manipulating Results——操作结果
- ubuntu安装samba和ssh, ftp