VideoView 使用方法简单播放视频
SurfaceView 播放流媒体,显示游戏界面的一个控件
特点:双缓冲技术(两个线程显示界面)界面刷新的帧率高,播放视频,开发游戏
A 更新界面——后台计算。。。。
B 后台计算——更新界面。。。。。
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<SurfaceView
android:id="@+id/sv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="play"
android:text="play" />
</RelativeLayout>
package com.qq.kuaibo;
import java.io.IOException;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
private SurfaceView sv;
private SurfaceHolder holder;
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sv=(SurfaceView) findViewById(R.id.sv);
holder=sv.getHolder();//得到surfaceview显示内容的容器 ,界面内容是显示在容器里
//过时的api,必须写,如果是4.0以上的系统,不写完全没有问题,4.0以下的系统必须要写
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void play(View view){
try {
mediaPlayer=new MediaPlayer();
//类型 声音加视频
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//按屏幕大小适配
//mediaPlayer.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT);
//数据源
mediaPlayer.setDataSource("/mnt/sdcard/DCIM/Camera/20150818_033345.mp4");
//视频显示到容器中
mediaPlayer.setDisplay(holder);
//异步准备
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer arg0) {
// TODO Auto-generated method stub
mediaPlayer.start();
}
});
} catch (Exception e) {
// TODO Auto-generated catch block
Toast.makeText(this, "播放失败", 0).show();
e.printStackTrace();
}
}
}