界面代码如下:
<span style="font-family: Arial, Helvetica, sans-serif;"><?xml version="1.0" encoding="utf-8"?> </span>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical">
<SurfaceView android:id="@+id/surfaceView1"
android:layout_height="600dp"
android:layout_width="700dp"/>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button android:id="@+id/stopMedia"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="stop"/>
</LinearLayout>
</LinearLayout>
播放器代码:
package com.p001_player.test;
import java.io.IOException;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class TestPlayerActivity extends Activity {
<span style="white-space:pre"> </span>private SurfaceView surfaceView;
<span style="white-space:pre"> </span>private MediaPlayer mediaP;
<span style="white-space:pre"> </span>// String url = "/mnt/sdcard/PFO Animation.mp4";
<span style="white-space:pre"> </span>private Button stopButton;
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>protected void onCreate(Bundle savedInstanceState) {
<span style="white-space:pre"> </span>super.onCreate(savedInstanceState);
<span style="white-space:pre"> </span>setContentView(R.layout.surfaceview);
<span style="white-space:pre"> </span>// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
<span style="white-space:pre"> </span>surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView1);
<span style="white-space:pre"> </span>mediaP = new MediaPlayer();
<span style="white-space:pre"> </span>stopButton = (Button) findViewById(R.id.stopMedia);
<span style="white-space:pre"> </span>surfaceView.getHolder().setKeepScreenOn(true);
<span style="white-space:pre"> </span>surfaceView.getHolder().addCallback(new SurfaceViewLis());
<span style="white-space:pre"> </span>stopButton.setOnClickListener(new OnClickListener() {
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public void onClick(View v) {
<span style="white-space:pre"> </span>// TODO Auto-generated method stub
<span style="white-space:pre"> </span>if (mediaP.isPlaying())
<span style="white-space:pre"> </span>mediaP.stop();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>});
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>public void play() throws IllegalArgumentException, SecurityException,
<span style="white-space:pre"> </span>IllegalStateException, IOException {
<span style="white-space:pre"> </span>mediaP.reset();
<span style="white-space:pre"> </span>Log.e("mediaPlayer", "mediaP2:"+mediaP);
<span style="white-space:pre"> </span>mediaP.setAudioStreamType(AudioManager.STREAM_MUSIC);
<span style="white-space:pre"> </span>mediaP.setDataSource("/data/app/PFO Animation.mp4");
<span style="white-space:pre"> </span>// 把视频输出到SurfaceView上
<span style="white-space:pre"> </span>mediaP.setDisplay(surfaceView.getHolder());
<span style="white-space:pre"> </span>mediaP.prepare();
<span style="white-space:pre"> </span>mediaP.start();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>private class SurfaceViewLis implements SurfaceHolder.Callback {
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public void surfaceCreated(SurfaceHolder holder) {
<span style="white-space:pre"> </span>try {
<span style="white-space:pre"> </span>Log.e("mediaPlayer", "mediaP1:"+mediaP);
<span style="white-space:pre"> </span>play();
<span style="white-space:pre"> </span>} catch (IllegalArgumentException e) {
<span style="white-space:pre"> </span>e.printStackTrace();
<span style="white-space:pre"> </span>} catch (SecurityException e) {
<span style="white-space:pre"> </span>e.printStackTrace();
<span style="white-space:pre"> </span>} catch (IllegalStateException e) {
<span style="white-space:pre"> </span>e.printStackTrace();
<span style="white-space:pre"> </span>} catch (IOException e) {
<span style="white-space:pre"> </span>e.printStackTrace();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public void surfaceChanged(SurfaceHolder holder, int format, int width,
<span style="white-space:pre"> </span>int height) {
<span style="white-space:pre"> </span>// TODO Auto-generated method stub
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public void surfaceDestroyed(SurfaceHolder holder) {
<span style="white-space:pre"> </span>// TODO Auto-generated method stub
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>protected void onPause() {
<span style="white-space:pre"> </span>if (mediaP.isPlaying()) {
<span style="white-space:pre"> </span>// 保存当前播放的位置
<span style="white-space:pre"> </span>// postion = mediaP.getCurrentPosition();
<span style="white-space:pre"> </span>mediaP.stop();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>super.onPause();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>protected void onDestroy() {
<span style="white-space:pre"> </span>if (mediaP.isPlaying())
<span style="white-space:pre"> </span>mediaP.stop();
<span style="white-space:pre"> </span>mediaP.release();
<span style="white-space:pre"> </span>super.onDestroy();
<span style="white-space:pre"> </span>}
}
该代码没有提供网上下载视频功能,需提前在
/data/app/目录下放入播放的视频,该代码视频名称为
PFO Animation.mp4