android電視端播放器

最近,一直做tv端的播放器,有一些積累。而且github上的播放器項目都是手機端的,因此決定開源一個。代碼寫的不好,希望能讓同行少踩坑。

項目有不完善的地方,但是會快速迭代。

遇到的難點:

問題:1.小窗切換至全屏,體驗要流暢。

????????????????????? 思路:使用SurfaceView + IJKPlayer,SurfaceView負責畫面呈現,IJKPlayer負責播放控制。兩個Activity使用同一個IJKPlayer就可以了。但是,由于有緩沖提示,所以要把緩沖完成的標志位封裝到播放器身上。兩個界面使用的是同一個播放器實例,這樣緩沖進度條才正常。

問題2:SeekBar在手機上,監聽快進開始和結束,使用的是Touch事件。Tv是Key事件。所以,onStartTrackingTouch和onStopTrackingTouch失效。

????????????????????? 思路:封裝了監聽key事件開始拖動和結束拖動的方法。當時,可以存在不同盒子的適配問題。經測試,快進必須使用 拖動開始/拖動結束 這兩個方法,否則,時間進度提示不準確。

問題三:右鍵點擊一下,SeekBar快進的步長和MaxProgress,都需要根據視頻長度動態計算。
? ? ? ? ? ? ? ? ? ? 思路:獲取到視頻的時長(單位是秒),作為SeekBar的MaxProgress。setKeyProgressIncrement這個方法可以設置SeekBar的步長。我是每隔一秒更新一次進度條,這樣就可以實時更新進度了。

代碼設計:

PlayerBean:對播放器及其狀態的封裝(一個Player要在兩個類中使用)

SinglePlayerUtil:播放器實例的管理

BasicUiController:UI界面的管理,界面發生變化,支持擴展

FullScreenPlayer:播放器的創建、Surface的創建,播放器狀態發生變化時,向BaseUIController發送消息來更新界面。

LiveConsole:控制面板的容器類,目前只有暫停/開始按鈕。

MySeekBar:定制的Tv版進度條。


源碼下載地址

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容