流程:用戶App獲取STS憑證 -> 服務端下發STS憑證 -> 用戶上傳視頻並獲取vid -> 服務端獲取STS憑證 -> 將STS憑證下發給客戶端 -> 完成視頻播放。
請看阿裏雲文檔=========》》》》》》 阿裏雲-高級播放器Android使用說明
接下來我們來看壹下安卓給我們提供的手勢控制類
接口
setOnTouchListener(this);
其中定義了四種狀態 NONE = 0, VOLUME = 1, BRIGHTNESS = 2, FF_REW = 3;
接下來我們來看壹下我們自定義的SurfaceViewOnGestureListener繼承 GestureDetector.SimpleOnGestureListener主要用到了
onDown(MotionEvent e)
onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)兩個方法
a.在onDown的時候把狀態設置NONE
b.判斷橫向滑動的距離大於縱向滑動的距離,就把模式賦值為快進和後退
c.在onScroll中進行狀態賦值,根據滑動的距離,如果按下的點在屏幕的左半部分就吧狀態設置為調節亮度BRIGHTNESS,如果在右半部分就是調節音量
d.各種情況調用各自的接口方法
快進和後退,我們需要知道的就是我們滑動的距離如何與視頻的長度關聯起來。
那麽咱們就可以把視頻的總長度與屏幕的總長度相比,這樣就能知道妳手指滑動的距離占視頻的多少了。
我們可以通過 l = duration / mySurfaceView.getWidth();來獲得這個比例,然後用當前的進度加上指滑動的距離占視頻的長度就是要播放的視頻位置
擡起點的x坐標與按下點的X坐標所得的距離,大於0是快進,小於零是後退。
系統的音量有很多,包括通話音量值,系統鈴聲值,音樂音量值,鬧鈴音量值,等等吧。
做壹下筆記以備以後用到
視頻播放我們用的是音樂音量值,同樣的道理,我們需要把音量和高度進行關聯,我們可以控件的高度閉上最大音量得出比例後就可以知道妳滑動的距離占音量的多少了。
這裏有個註意點就是activity是當前的這個界面,設置的是當前的界面,離開這個界面後就不管用了。
相同的道理和滑動調節音量壹樣也是獲得屏幕的高度比上最大的亮度,然後計算滑動的距離轉換成亮度是多少。(這裏不多講了)
為什麽會出現黑屏,就是按Home鍵再點App回來後,只有聲音沒有圖片的問題,因為我們用的是SurfaceView,每次點擊Home鍵時會銷毀這個SurfaceView,再回來時又會重新創建,這樣我們的阿裏雲播放器與SurfaceView就沒有綁定了,畫面就沒有了。
這樣我們需要 給surfaceView添加mySurfaceView.getHolder().addCallback(this);
我們在按home鍵的時候會走surfaceDestroyed。這樣,我們就可以在這裏做壹個標識,讓他暫停,然後再回來的時候就會走surfaceCreated,判斷標識,然後進行處理就可以了。切記壹定要重新讓aliyunVodPlayer與SurfaceView進行關聯,這樣才能有畫面也有聲音。
由於我們的視頻在阿裏雲的服務器上存著,訪問阿裏雲的服務器需要臨時憑證,我們通過STS來獲取Token,但是這個Token是有時間限制,正好阿裏雲的播放器給我們提供了播放視頻出錯時候的回調接口,我們只需要在這裏面進行重新請求Token就可以了