android 線上視頻播放器實現方法

來源:互聯網
上載者:User
public class VideoActivity extends Activity {private static final String TAG = "VideoActivity";private EditText filenameText;private SurfaceView surfaceView;private MediaPlayer mediaPlayer;@Overridepublic void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  ButtonClickListener listener = new ButtonClickListener();  ImageButton playButton = (ImageButton) this.findViewById(R.id.play);  playButton.setOnClickListener(listener);  ImageButton pauseButton = (ImageButton) this.findViewById(R.id.pause);  pauseButton.setOnClickListener(listener);  ImageButton resetButton = (ImageButton) this.findViewById(R.id.reset);  resetButton.setOnClickListener(listener);  ImageButton stopButton = (ImageButton) this.findViewById(R.id.stop);  stopButton.setOnClickListener(listener);  // 重點這個地方需要設定回呼函數  繼承Callback 類實現三個方法  surfaceView.getHolder().addCallback(new myCallback());  filenameText = (EditText) this.findViewById(R.id.filename);  surfaceView = (SurfaceView) findViewById(R.id.surfaceView);  surfaceView.getHolder() .setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  // 設定這個大小  surfaceView.getHolder().setFixedSize(176, 144);  mediaPlayer = new MediaPlayer();}private class myCallback implements android.view.SurfaceHolder.Callback {  @Override  public void surfaceChanged(SurfaceHolder holder, int format, int width,    int height) {   // TODO Auto-generated method stub  }  @Override  public void surfaceCreated(SurfaceHolder holder) {   // TODO Auto-generated method stub  }  @Override  public void surfaceDestroyed(SurfaceHolder holder) {   // TODO Auto-generated method stub  }}// 當來電話的時候需要停掉播放業務@Overrideprotected void onPause() {  if (mediaPlayer.isPlaying())   mediaPlayer.pause();  super.onPause();}@Overrideprotected void onResume() {  if (mediaPlayer.isPlaying())   mediaPlayer.pause();  super.onResume();}@Overrideprotected void onDestroy() {  if (mediaPlayer.isPlaying())   mediaPlayer.stop();  // 注意這個地方是釋放  mediaPlayer.release();  super.onStop();}private class ButtonClickListener implements View.OnClickListener {  @Override  public void onClick(View v) {   try {    String filename = filenameText.getText().toString();    switch (v.getId()) {    case R.id.play:     // 得到檔案名稱 重點代碼     String filenames = filenameText.getText().toString();     // 第一步對給對象進行重設     mediaPlayer.reset();     // 設定流的類型 關鍵代碼     mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);     // 設定資料來源     mediaPlayer.setDataSource("/sdcard/" + filenames);      // 設定需要播放的視頻     // 把視頻輸出到顯示控制項上 重點代碼     mediaPlayer.setDisplay(surfaceView.getHolder());     // 播放時前需要緩衝一下     mediaPlayer.prepare();     mediaPlayer.start();     break;    case R.id.pause:     if (mediaPlayer.isPlaying()) {      mediaPlayer.pause();     } else {      mediaPlayer.start();     }     break;    case R.id.reset:     if (!mediaPlayer.isPlaying()) {      mediaPlayer.start();     }     // 跳回到起始的地方重新播放     mediaPlayer.seekTo(0);     break;    case R.id.stop:     if (mediaPlayer.isPlaying()) {      mediaPlayer.stop();     }     break;    }   } catch (Exception e) {    Log.e(TAG, e.toString());   }  }}}

za

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.