解決媒體資源的另一種方式是使用MediaPlayerItemLoader。 當您想要取得特定媒體串流的相關資訊而不執行個體化MediaPlayer例項時,這個功能會很有用。
通過MediaPlayerItemLoader
類,您可以為相應的MediaPlayerItem
交換媒體資源,而不將視圖附加到MediaPlayer
實例,這將導致視頻解碼硬體資源的分配。 獲取MediaPlayerItem
實例的過程是非同步的。
實作MediaPlayerItemLoader.LoaderListener
回呼介面。
此介面定義了兩種方法:
LoaderListener.onError
回調函式
TVSDK會使用此項來通知您的應用程式發生錯誤。 TVSDK提供錯誤碼作為參數,以及包含診斷資訊的描述字串。
LoaderListener.onError
回調函式
TVSDK會使用此資訊通知您的應用程式,要求的資訊以MediaPlayerItem
例項的形式提供,並作為回呼的參數傳遞。
將此例項作為參數傳遞至MediaPlayerItemLoader
的建構函式,以註冊至TVSDK。
呼叫MediaPlayerItemLoader.load
,傳遞MediaResource
物件的例項。
MediaResource
物件的URL必須指向您要取得資訊的串流。 例如:
// instantiate the listener interface
MediaPlayerItemLoader.LoaderListener _itemLoaderListener =
new MediaPlayerItemLoader.LoaderListener() {
@Override
public void onError(MediaErrorCode mediaErrorCode, String description) {
// something went wrong - look at the error code and description
}
@Override
public void onLoadComplete(MediaPlayerItem playerItem) {
// information is available - look at the data in the "playerItem" object
}
}
// instantiate the MediaPlayerItemLoader object (pass the listener as parameter)
MediaPlayerItemLoader itemLoader = new MediaPlayerItemLoader(_itemLoaderListener);
// create the MediaResource instance and set the URL to point to the actual media stream
MediaResource mediaResource =
MediaResource.createFromUrl("https://test.com/test_media.m3u8", null);
// load the media resource
itemLoader.load(mediaResource);