快播
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();
?? ??? ?}
?? ?}
}
總結
- 上一篇: 数据结构期末复习
- 下一篇: 基于BOW模型的图像检索