您好,登錄后才能下訂單哦!
媒體應用程序比其他應用程序更受益于與本地平臺一起工作。有些事情,比如處理音頻焦點的中斷、網絡連接以及通知和其他回放控件之間的通信,這是一件復雜的事情。
為使Xamarin開發訪問這些本地平臺的功能,我們決定建立一個跨平臺的Xamarin插件,抽象了困難。我們使用誘餌和開關模式創建了一個可移植類庫,它包含了本機代碼的所有接口,在應用程序中共享基類,使你盡可能輕松地在你的手機應用程序中與音頻和視頻交互。
Xamarin媒體管理插件 設計簡單易用,具有以下特點:
從遠程和本地源本地播放媒體文件
本地媒體通知和遠程控件
播放狀態(播放、緩沖、加載、暫停、進度)
最重要的是,媒體管理支持所有平臺的插件, 包括iOS, Android, UWP, macOS, tvOS,甚至Xamarin.Forms。在這篇博客中,我們將探討Xamarin的媒體管理插件的各種組件和如何可以輕松地集成到您的移動應用程序。
在玩視頻,你的眼睛和耳朵都會用。播放音頻時,您正在收聽,但也可以同時使用不同的應用程序。每個用例有不同的設計。
音頻播放器并不總是需要用戶界面可見的。一旦開始播放音頻,播放器就可以作為后臺任務運行。用戶可以切換到另一個應用程序,并在繼續監聽的同時工作。
播放音頻只需要一行代碼,并為您處理所有這些操作:
點擊(此處)折疊或打開
await CrossMediaManager.Current.Play("http://www.montemagno.com/sample.mp3");
ExoPlayer 是公開低級Android音頻API的開源庫。ExoPlayer支持高性能功能比如DASH 和HLS流,這些在MediaPlayer中是不可用的。您可以自定義代碼的能力,使得它很容易添加新的組件。ExoPlayer只能與Android版本4.1和更高版本一起使用。
利用ExoPlayer,在`MainActivity`中添加下面的代碼 :
點擊(此處)折疊或打開
((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager = new MediaSessionManager(Application.Context, typeof(ExoPlayerAudioService));
var exoPlayer = new ExoPlayerAudioImplementation(((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager);
CrossMediaManager.Current.AudioPlayer = exoPlayer;
視頻應用程序需要一個窗口來查看內容。由于這個原因,視頻應用程序通常在一個屏幕上實現。
點擊(此處)折疊或打開
CrossMediaManager.Current.Play("https://archive.org/download/BigBuckBunny_328/BigBuckBunny_512kb.mp4", MediaFileType.Video);
一個精心設計的媒體應用程序應該與其他播放音頻的應用程序“配合得很好”。它應該準備分享手機,并與其他應用程序在您的設備上使用音頻。它還應該對設備上的硬件控制作出響應,包括:
當用戶調整硬件音量控制時更改音量
如果耳機在使用中斷開,請停止播放。
當另一個應用接管音頻輸出流時,停止播放,或者降低音量。
媒體按鈕是在Android設備和其他外圍設備上找到的硬件按鈕;例如,藍牙耳機上的暫停/播放按鈕。
如果您想播放一系列媒體條目,那么有一個隊列是有幫助的。將媒體文件列表添加到隊列中,簡單地CrossMediaManager.Current.Play() 模擬器MediaFiles。排隊,您可以重新洗牌和重復播放,循環通過某些媒體文件,等等。
可以通過以下方式訪問隊列:
點擊(此處)折疊或打開
var queue = CrossMediaManager.Current.MediaQueue;
媒體信息
媒體文件包含大量關于該文件的信息。可以從元數據中提取標題、專輯、藝術家等更多細節。使用MediaManager非常容易實現:
點擊(此處)折疊或打開
CrossMediaManager.Current.MediaFileChanged += (object sender, MediaFileChangedEventArgs e) => {
var artist = e.File.Metadata.Artist;
// Access any other metadata property through the file
};
MediaManager能夠使用本地應用,也可以用在Xamarin.Forms應用,通過在本地視頻視圖中的一個自定義渲染器實現:
點擊(此處)折疊或打開
<forms:VideoView HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
Source="YourVideoFile" AspectMode="AspectFill" />
確保在開始播放之前在你的平臺代碼中調用VideoViewRenderer.Init(),否則視圖將不會準備播放視頻。
即使 Hanselman App 運行在MediaManager,要感謝 Erlend Angelsen! 利用媒體管理的實施,該應用程序現在改進了音頻播放,但更令人興奮的是,漢塞爾曼的影片從通道 9在應用程序是可用的!它也使用通知來控制當前媒體的播放。在將來,這將擴展到使用隊列和其他高級功能。要獲取這個應用的更多信息,可以從 James Montemagno‘s Github repository檢出代碼。
這里還有一些其它Xamarin MediaManager的樣例可用,包括:
MvvmCross
Xamarin.Forms
Simple
開始,你首先要做的是 從NuGet下載插件 并將MediaManager安裝到每一個工程中。
如果你想了解更多關于媒體播放,請務必跟隨我在Twitter上 @mhvdijk 接收更新。未來的計劃包括為Android Auto,Chromecast,CarPlay支持,輸出源,如藍牙、電視之間的無縫切換,或DLNA。如果你有想法,發現錯誤,或者想幫助開發,請確保從 GitHub下載源代碼。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。