使用SurfaceView和MedioPlayer播放视频
来源:互联网 发布:淘宝bug刷话费 编辑:程序博客网 时间:2024/05/23 01:19
添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
布局:
/SurfaceViewPlayVideo/res/layout/activity_main.xml<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" > <SurfaceView android:id="@+id/surfaceView" android:layout_width="match_parent" android:layout_height="360dp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:gravity="center_horizontal" android:orientation="horizontal" > <ImageButton android:id="@+id/play" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/play" /> <ImageButton android:id="@+id/pause" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/pause" /> <ImageButton android:id="@+id/stop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/stop" /> </LinearLayout></RelativeLayout>/SurfaceViewPlayVideo/src/com/lxm/surfaceviewplayvideo/MainActivity.java
<pre name="code" class="java">package com.lxm.surfaceviewplayvideo;import android.app.Activity;import android.media.AudioManager;import android.media.MediaPlayer;import android.os.Bundle;import android.os.Environment;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.WindowManager;import android.widget.ImageButton;//注意这里别导错import android.widget.RelativeLayout.LayoutParams;public class MainActivity extends Activity implements OnClickListener {ImageButton play, pause, stop;SurfaceView surfaceView;MediaPlayer mPlayer;int position;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);play = (ImageButton) findViewById(R.id.play);pause = (ImageButton) findViewById(R.id.pause);stop = (ImageButton) findViewById(R.id.stop);play.setOnClickListener(this);pause.setOnClickListener(this);stop.setOnClickListener(this);mPlayer = new MediaPlayer();surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView);surfaceView.getHolder().setKeepScreenOn(true);surfaceView.getHolder().addCallback(new SurfaceListener());}private class SurfaceListener implements SurfaceHolder.Callback{@Overridepublic void surfaceCreated(SurfaceHolder holder) {try {if (position > 0){play();// 并直接从指定位置开始播放mPlayer.seekTo(position);position = 0;}} catch (Exception e) {e.printStackTrace();}}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {// TODO Auto-generated method stub}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {// TODO Auto-generated method stub}}@Overridepublic void onClick(View v) {try {switch (v.getId()) {// 播放按钮被单击case R.id.play:play();break;// 暂停按钮被单击case R.id.pause:if (mPlayer.isPlaying()) {mPlayer.pause();} else {mPlayer.start();}break;// 停止按钮被单击case R.id.stop:if (mPlayer.isPlaying())mPlayer.stop();break;}} catch (Exception e) {e.printStackTrace();}}private void play() throws Exception{mPlayer.reset();mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);String mp4Path = Environment.getExternalStorageDirectory()+"/mv"; mPlayer.setDataSource(mp4Path+"/Roar.mp4");// 把视频画面输出到SurfaceViewmPlayer.setDisplay(surfaceView.getHolder()); mPlayer.prepare();// 获取窗口管理器WindowManager wManager = getWindowManager();DisplayMetrics metrics = new DisplayMetrics();// 获取屏幕大小wManager.getDefaultDisplay().getMetrics(metrics);// 设置视频保持纵横比缩放到占满整个屏幕surfaceView.setLayoutParams(new LayoutParams(metrics.widthPixels, mPlayer.getVideoHeight() * metrics.widthPixels/ mPlayer.getVideoWidth()));mPlayer.start();}@Overrideprotected void onPause() {if (mPlayer.isPlaying()){// 保存当前的播放位置position = mPlayer.getCurrentPosition();mPlayer.stop();}super.onPause();}@Overrideprotected void onDestroy() {// 停止播放if (mPlayer.isPlaying()) mPlayer.stop();// 释放资源mPlayer.release();super.onDestroy();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
源码下载
以上的代码来自李刚老师的疯狂Android讲义。
0 0
- 使用SurfaceView和MedioPlayer播放视频
- 使用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播放视频
- 使用RecyclerView和SurfaceView实现视频播放
- 使用SurfaceView 播放视频
- 回调机制详解
- 一个控制台上永远都是你赢的五子棋游戏,囧
- 小点列表.Net/SQL
- 数据结构和算法经典100题-第5题
- Splash screen
- 使用SurfaceView和MedioPlayer播放视频
- ios取景器
- int、long、long long取值范围
- qt中定时器的使用
- POJ 2436 USACO silver
- 第六届蓝桥杯JavaA组 第八题 移动距离
- PostgreSQL 常用数据类型
- 【机器学习】(4):监督式学习
- 指令集简介