不到一百行代碼,教你制作一個手機視頻播放器!這里我們使用系統自帶的api來制作一個簡易視頻播放器,實現控制的功能,能夠監聽到視頻准備狀態,視頻播放完成狀態,還有視頻播放錯誤狀態,就這么多行代碼就可以制作出來一個簡易播放器,大家快來試試吧!
程序員的最好交流就是看代碼,所以廢話不多說,代碼大家一看都懂!保存下來,互相學習
效果如下,這是播放的網上的一段視頻,效果大家可以看一下效果,文章寫的倉促,也沒有設置橫屏效果,將就着看吧:
1.首先是布局文件,使用VideoView控件
<VideoView android:id="@+id/vv" android:layout_width="fill_parent" android:layout_height="fill_parent" />
2.在清單文件中加入如下的過濾器
<intent-filter> <action android:name="android.intent.action.VIEW" /> <data android:mimeType="video/*" android:scheme="http" /> <data android:mimeType="video/*" android:scheme="file" /> <data android:mimeType="audio/*" android:scheme="http" /> <data android:mimeType="audio/*" android:scheme="file" /> <category android:name="android.intent.category.DEFAULT" />
3.直接上核心代碼
import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.Intent; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnErrorListener; import android.media.MediaPlayer.OnPreparedListener; import android.net.Uri; import android.os.Bundle; import android.view.Menu; import android.widget.MediaController; import android.widget.Toast; import android.widget.VideoView; public class AndyePlay extends Activity { private VideoView vv; private Uri uri; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vv = (VideoView) findViewById(R.id.vv); Intent dIntent=getIntent(); //獲得意圖,並獲得數據 if(dIntent !=null){ //把地址取出來 uri = dIntent.getData(); //也可以指定地址 //uri =Uri.parse("file:///sdcard/%E7%8F%A0%E5%B8%9.mp4"); if(uri !=null){ vv.setVideoURI(uri); } } //開始准備 vv.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { AlertDialog.Builder builder=new Builder(getApplicationContext()); builder.setMessage(R.string.message); vv.start(); } }); //錯誤監聽器 vv.setOnErrorListener(new OnErrorListener() { @Override public boolean onError(MediaPlayer mp, int what, int extra) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "播放錯誤", 0).show(); return false; } }); //播放完成監聽 vv.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "視頻播放完了哦", 0).show(); } }); //獲得系統的控制面板 vv.setMediaController(new MediaController(AndyePlay.this)); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }