編輯:關於Android編程
Android自帶的播放視頻有幾種方法:
第一種方式是使用MediaPlayer 結合SurfaceView 來播放,通過MediaPlayer來控制視頻的播放、暫停、進度等;
第二種方式是使用VideoView 來播放,這個類其實也是繼承了SurfaceView 類,並且實現了MediaController. MediaPlayerController 這個用於控制媒體播放的接口,另外在VideoView上還有一個用於對媒體播放進行控制的面板,包括快進、快退、播放、暫停按鈕以及一個進度條
第三種方式是利用第三方類庫,例如:Vitamio 官網
1.VideoView的使用方法
setVideoViewPath(String path); 設置播放視頻的路徑
setVideoURL(Uri uri); 設置視頻的URI
start(); 開始播放;
seekTo(int msec); 定位;
pause(); 暫停播放;
stop(); 停止播放;
setMediaController(MediaController); 設置MediaController 對象;
媒體控制面版常用方法:MediaController:
hide(); 隱藏MediaController;
show(); 顯示MediaController
show(int timeout); 設置MediaController顯示的時間,以毫秒計算,如果設置為0則一直到調用hide()時隱藏;
實例:
FileCache fileCache = new FileCache(context); VideoView ad = (VideoView) findViewById(R.id.welcome_video); ad.setMediaController(new MediaController(context)); ad.setVideoPath(fileCache.getCacheDir()+File.separator+"pad.mp4"); ad.start();
filecache 是自己工程的緩存引用,setMediaController設置播放控制條,可有可無。
2.SurfaceView 使用方法
SurfaceView它用於顯示,SurfaceHolder是用於用來管理這個顯示的SurfaceView對象的。
public SurfaceHolder getHolder () 得到SurfaceHolder對象用於管理SurfaceView
public abstract void addCallback (SurfaceHolder.Callback callback) 添加一個Callback對象監聽SurfaceView的變化
public abstract void setType (int type) 設置SurfaceView的控制方式
實例:
surfaceView=(SurfaceView) this.findViewById(R.id.surfaceView);
//設置SurfaceView自己不管理緩沖區
surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceView.getHolder().addCallback(new Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (position>0) {
try {
//開始播放try {
mediaPlayer.reset();
mediaPlayer
.setAudioStreamType(AudioManager.STREAM_MUSIC);
//設置需要播放的視頻
mediaPlayer.setDataSource("/mnt/sdcard/movie.mp4");
//把視頻畫面輸出到SurfaceView
mediaPlayer.setDisplay(surfaceView.getHolder());
mediaPlayer.prepare();
//播放
mediaPlayer.start();
} catch (Exception e) {
// TODO: handle exception
} } catch (Exception e) { // TODO: handle exception} } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } }); 3.Vitamio使用參照官方文檔:https://www.vitamio.org/docs/
Android系列---JSON數據解析的實例
上篇隨筆詳細介紹了三種解析服務器端傳過來的xml數據格式,而對於服務器端來說,返回給客戶端的數據格式一般分為html、xml和json這三種格式,那麼本篇隨筆將講解一下j
Android仿美團切換城市
最近一直關注一些比較有名的app,像美團、58、趕集網、淘寶等等。主要目的就是學習下目前一些常用的技術,模擬一下它們的比較炫的界面來鞏固下知識,我發現美團、5
自定義View實現Android圓形進度條,支持自定義顯示的樣式
我是完全根據這裡仿制了一個作為備忘,可以點擊這裡查看原始版本代碼如下:1、res/values/attrs.xml 2、具體實現 publ
手把手帶你做一個超炫酷loading成功動畫view Android自定義view
寫在前面:本篇可能是手把手自定義view系列最後一篇了,實際上我也是一周前才開始真正接觸自定義view,通過這一周的練習,基本上已經熟練自定義view,能夠應對一般的vi