5

我有一個服務,創建,播放和處理媒體播放器(只是音頻),但我有一個seekbar在主要活動,我想,自然,顯示音頻文件的進度,並允許用戶尋求各種職位。Android媒體播放器seekbar

我有一段時間搞清楚了:什麼是將UI中的seekbar連接到服務中的mediaplayer的最佳或正確的方式?

回答

4

這裏是我會怎麼做:

  1. 綁定到服務,播放音頻。服務器在onBind中返回的接口應具有getCurrentPos()getDuration()函數。

  2. 在你活動的onCreate綁定到服務

  3. 在你活動的onResume使用HandlerpostDelayed功能開始更新。
  4. 在您的活動的停止所有回調通過postDelayed函數發佈。
  5. 在傳遞到postDelayed運行boundService.getCurrentPos()boundService.getDuration()的runnable中,並適當地更新搜索欄。

總之,您應該使用服務綁定和處理程序進行重複更新。

  1. 對於綁定服務請閱讀"Bound services"文檔(在您的場景中,本地有限服務應該已足夠)。
  2. 如何用戶Handler定期更新閱讀了這個問題:Repeat a task with a time delay?
0

您也可以嘗試Otto from Square

你只需要創建一個類SeekBarSyncEvent.java,把你在那裏需要的參數:

  • int progress
  • int duration
  • 布爾FROMUSER
  • 任何你需要

然後你就可以在從您的服務onPrepared()方法您SeekBarSyncEvent類發佈從總線事件初始化從活動搜索條。

最後在您的活動中創建@Subscribe方法,以便調用您的seekBarUpdate()方法。

這應該很好,很好,易於維護。