編輯:關於Android編程
使用MediaPlayer出了了可以播放音頻之外,還可以播放視頻文件,只不過使用MediaPlayer播放視頻時,沒有提供圖像輸出界面。可以使用SurfaceView組件來顯示視頻圖像。使用MediaPlayer和SurfaceView播放視頻大致可以分為如下四個步驟:
1)定義SurfaceView組件。最好在布局文件中實現。
2)創建MediaPlayer對象,並為其加載要播放的視頻。
3)將所播放的視頻畫面輸出到SurfaceView中。使用MediaPlayer對象的setDisplay方法,可以將所播放的視頻畫面輸出到SurfaceView。
4)調用MediaPlayer對象的相應方法控制視頻的播放。播放play,暫停,pause,停止stop。
一個例子如下所示:
import java.io.IOException; import android.app.Activity; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.os.Bundle; import android.view.SurfaceView; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private MediaPlayer mp; //聲明MediaPlayer對象 private SurfaceView sv; //聲明SurfaceView對象 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mp=new MediaPlayer(); //實例化MediaPlayer對象 sv=(SurfaceView)findViewById(R.id.surfaceView1); //獲取布局管理器中添加的SurfaceView組件 Button play=(Button)findViewById(R.id.play); //獲取“播放”按鈕 final Button pause=(Button)findViewById(R.id.pause); //獲取“暫停/繼續”按鈕 Button stop=(Button)findViewById(R.id.stop); //獲取“停止”按鈕 //為“播放”按鈕添加單擊事件監聽器 play.setOnClickListener(new OnClickListener() { public void onClick(View v) { mp.reset(); //重置MediaPlayer對象 try { mp.setDataSource("/sdcard/ccc.mp4"); //設置要播放的視頻 mp.setDisplay(sv.getHolder()); //設置將視頻畫面輸出到SurfaceView mp.prepare(); //預加載視頻 mp.start(); //開始播放 sv.setBackgroundResource(R.drawable.bg_playing); //改變SurfaceView的背景圖片 pause.setText("暫停"); pause.setEnabled(true); //設置“暫停”按鈕可用 } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }); //為“停止”按鈕添加單擊事件監聽器 stop.setOnClickListener(new OnClickListener() { public void onClick(View v) { if(mp.isPlaying()){ mp.stop(); //停止播放 sv.setBackgroundResource(R.drawable.bg_finish); //改變SurfaceView的背景圖片 pause.setEnabled(false); //設置“暫停”按鈕不可用 } } }); //為“暫停”按鈕添加單擊事件監聽器 pause.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub if(mp.isPlaying()){ mp.pause(); //暫停視頻的播放 ((Button)v).setText("繼續"); }else{ mp.start(); //繼續視頻的播放 ((Button)v).setText("暫停"); } } }); //為MediaPlayer對象添加完成事件監聽器 mp.setOnCompletionListener(new OnCompletionListener() { public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub sv.setBackgroundResource(R.drawable.bg_finish); //改變SurfaceView的背景圖片 Toast.makeText(MainActivity.this, "視頻播放完畢!", Toast.LENGTH_SHORT).show(); } }); } @Override protected void onDestroy() { if(mp.isPlaying()){ mp.stop(); //停止播放視頻 } mp.release(); //釋放資源 super.onDestroy(); } }
本文實例講述了Android編程實現TCP客戶端的方法。分享給大家供大家參考,具體如下:因為項目上需要實現一個TCP Client 端;在網上找好多例子基本上都是阻塞方式
簡介RecyclerView是Google在android-supportv7包中推出的一個新的控件,該控件的主要作用是用於替代ListView、GridView,相比較
可以達到的效果 第一個圖片的位置放照相機,點擊打開照相機 其余的是顯示全部存儲的圖片,點擊一次是查看大圖,長按則是每張圖片出現一個checkBox,可以進行選擇 下
本篇小案例,完成一個倒計時。方式選擇AsyncTask。代碼貼在下面:布局文件soeasy: 接著活動代碼:package com.example.as