第55章、播放视频(从零开始学Android)
在Android中,我們有三種方式來實現視頻的播放:
1、使用其自帶的播放器。指定Action為ACTION_VIEW,Data為Uri,Type為其MIME類型。
2、使用VideoView來播放。在布局文件中使用VideoView結合MediaController來實現對其控制。
3、使用MediaPlayer類和SurfaceView來實現,這種方式很靈活。
本案例著重講解第三種MediaPlayer方式:MediaPlayer播放視頻除了利用MediaPlayer,還需要SurfaceView與之配合,Surface可以完成對后臺線程的控制,對于視頻、3D加速或者高頻率對象都有很大的用途。
一、設計界面
1、首先把play.png、stop.png兩張圖片復制到res/drawable-hdpi文件夾內。
2、布局文件
打開activity_main.xml文件。
輸入以下代碼:
<?xml version="1.0" encoding="utf-8" ?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"><ImageButtonandroid:id="@+id/playvideo"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/play" /><ImageButtonandroid:id="@+id/stopvideo"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/stop" /><SurfaceViewandroid:id="@+id/surface"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>
?
二、程序文件
打開“src/com.genwoxue.mp3/MainActivity.java”文件。
然后輸入以下代碼
package com.genwoxue.videoplayer;import java.io.IOException;import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import android.os.Environment; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton;public class MainActivity extends Activity{private SurfaceView surfaceView=null;private SurfaceHolder surfaceHolder=null;private MediaPlayer media=null;private ImageButton btnPlay=null;private ImageButton btnStop=null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//獲得surfaceView對象surfaceView = (SurfaceView) this.findViewById(R.id.surface);//獲得surfaceHolder對象surfaceHolder = this.surfaceView.getHolder();//設置 SurfaceView類型surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);//創建MediaPlayer對象media=new MediaPlayer();try {this.media.setDataSource( //設置視頻源,即視頻路徑Environment.getExternalStorageDirectory().getPath()+"/genwoxue/mybaby.3gp");} catch (IllegalArgumentException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}btnPlay=(ImageButton)super.findViewById(R.id.playvideo);btnStop=(ImageButton)super.findViewById(R.id.stopvideo);//播放視頻btnPlay.setOnClickListener(new OnClickListener(){@Override public void onClick(View v){media.setAudioStreamType(AudioManager.STREAM_MUSIC);media.setDisplay(MainActivity.this.surfaceHolder);try {media.prepare();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}media.start();}});//停止視頻btnStop.setOnClickListener(new OnClickListener(){@Override public void onClick(View v){media.stop();}});}}
三、運行結果
單擊“播放”按鈕,“里約大冒險”正在為您熱映……
?
?
附:
(1)使用其自帶的播放器。指定Action為ACTION_VIEW,Data為Uri,Type為其MIME類型。
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath()+"/Test_Movie.m4v"); //調用系統自帶的播放器 Intent intent = new Intent(Intent.ACTION_VIEW); Log.v("URI:::::::::", uri.toString()); intent.setDataAndType(uri, "video/mp4"); startActivity(intent);
(2)使用VideoView來播放。在布局文件中使用VideoView結合MediaController來實現對其控制。
?
總結
以上是生活随笔為你收集整理的第55章、播放视频(从零开始学Android)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10如何修改IP地址
- 下一篇: android sina oauth2.