Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

在 Android 平臺上創建音樂播放器

by
Difficulty:BeginnerLength:LongLanguages:

Chinese (Traditional) (中文(繁體)) translation by Fuhuan (you can also view the original English article)

在 Android 平臺提供處理媒體播放的資源,在用戶和音樂文件之間創建音樂播放器。 在本系列教程中,我們將為 Android 創建壹個音樂播放器應用程序。 該應用程序將在用戶設備上顯示歌曲列表,以便用戶可以選擇要播放的歌曲。 該應用程序還將呈現用於與回放交互的控件,並將在用戶離開應用程序時繼續播放,並在播放過後顯示通知。

介紹

構建音樂播放器將涉及使用 ContentResolver 類檢索設備上的曲目,使用 MediaPlayer 類播放音頻,使用 MediaController 類來控制播放。 當用戶沒有直接與應用程序交互時,我們還將使用服務實例播放音頻。 如果妳是壹名中級 Android 開發人員,妳應該能夠完成這個系列,所以如果妳已經構建了壹些應用程序,那麽這個系列對妳來說應該不是問題。 以下是最終應用的預覽:

Android Music Player

在本教程中,我們將使用 ContentResolver 和 Cursor 類創建應用程序並查詢用戶設備的音頻文件。 在下壹部分中,我們將使用 Adapter 實例在列表視圖中顯示歌曲,當用戶從列表中點擊壹個項目時開始播放。 在本系列的最後壹部分中,我們將使用 MediaController 類為用戶提供對回放的控制,實現向前和向後跳過的功能,並包含壹個 shuffle 功能。 在本系列之後,我們將探討可以增強應用程序的媒體播放的其他方面,例如處理音頻焦點,以不同方式呈現媒體文件以及播放流媒體。

1. 創建和配置新項目

步驟 1

創建壹個新的 Android 項目。 如果您使用的是 Eclipse,那麽讓 IDE(集成開發環境)為您創建壹個主 Activity 類和布局文件。 對於我們在本系列中使用的壹些代碼,您需要的最低 API 級別為 16,因此您需要采取其他步驟來支持舊版本。 創建項目後,打開項目的清單文件。 在清單元素內,添加以下權限:

當用戶的設備空閑時,我們將使用此權限讓音樂播放繼續。 您的清單應該已經包含主 Activity 類的元素。 將以下屬性添加到 activity 元素以設置 screenOrientation 和 launchMode:

為簡單起見,我們將堅持。 在遠離它的情況下,launchMode 將有助於導航回應用程序。 我們將顯示指示當前正在播放的歌曲的通知,點擊該通知將使用戶返回到該應用。 我們還將使用 Service 類進行音樂播放。 將以下行添加到 application 元素內的項目的 Manifest 以及 activity 元素之後:

更改包名稱以適合您自己的包名稱,並根據需要更改類名稱。

步驟 2

打開項目的主布局文件,並使用以下布局替換其內容:

如果主 Activity 類的名稱不同,請確保更改工具:context 屬性。 我們將包括兩個菜單項,用於切換 shuffle 功能和退出應用程序。

我們將包括兩個菜單項,用於切換 shuffle 功能和退出應用程序。 打開主菜單文件(res / menu / main.xml) 並用以下內容替換其內容:

如果您願意,可以將標題字符串存儲在 res / values / strings.xml 文件中。 這兩個項目指的是可繪制文件。 創建自己的或使用這兩個圖像開始:

Android Music Player Random Button
Android Music Player End Button

立即創建壹個或使用下面的壹個: 立即創建壹個或使用下面的壹個:

Android Music Player Play Button

代碼將使用名稱 rand,end 和 play 引用圖像,因此請確保使用相同的文件名。 將圖像復制到項目的 drawables 文件夾中。 我們稍後會實施這些行動。

2. 查詢歌曲設備

步驟 1

讓我們查詢用戶的設備是否有音頻文件。 首先,在項目中添加壹個新類,命名為 Song。 我們將使用此類來為單個音頻文件建模數據。 在類聲明中,為我們要為每個軌道存儲的數據添加三個實例變量:

接下來,添加壹個構造函數方法,在其中實例化實例變量:

最後,為實例變量添加 get 方法:

如果您計劃使用更多跟蹤信息,則可以自由地向該類添加其他實例變量。

步驟 2

打開主 Activity 類並添加以下導入:

在 onCreate 方法之前聲明以下實例變量:

我們將歌曲存儲在列表中,並將其顯示在主布局的 ListView 實例中。 在 onCreate 中,在設置內容視圖後,使用我們在主布局中給出的 ID 檢索 ListView 實例:

實例化列表,如下所示:

接下來,在主 Activity 類聲明中,在現有方法之後,創建壹個幫助方法來檢索音頻文件信息:

在此方法中,創建 ContentResolver 實例,檢索外部音樂文件的 URI,並使用 ContentResolver 實例創建 Cursor 實例以查詢音樂文件:

現在我們可以叠代結果,首先檢查我們是否有有效數據:

我們首先檢索我們對每首歌感興趣的數據項的列索引,然後我們使用它們創建壹個新的 Song 對象並將其添加到列表中,然後繼續循環結果。

回到 onCreate,在我們添加的代碼之後,調用這個新方法:

3. 顯示歌曲

步驟 1

現在我們可以在用戶界面中顯示歌曲列表。 在 onCreate 方法中,在調用我們剛剛創建的輔助方法之後,讓我們對數據進行排序,以便按字母順序顯示歌曲:

我們使用我們添加的 get 方法在 Song 類中使用 title 變量來實現比較方法,按標題對歌曲進行排序。

步驟 2

讓我們定義壹個布局來表示列表中的每首歌曲。 我們將在主 Activity 類中使用此方法來響應用戶對列表中歌曲的點擊,播放被點擊的列表項所代表的歌曲。

隨意修改布局以滿足您的喜好。 列表中的每首歌曲將由標題和藝術家文本字符串表示,因此我們將使用 TextViews 來顯示此數據。 請註意,LinearLayout 開始標記列出了 onClick 屬性。 我們將在主 Activity 類中使用此方法來響應用戶對列表中歌曲的點擊,播放被點擊的列表項所代表的歌曲。

步驟 3

我們將使用適配器將歌曲映射到列表視圖。 在您的應用中添加壹個新類,將其命名為 SongAdapter 或您選擇的其他名稱。 在創建類時,給它提供超類 android.widget.BaseAdapter。 Eclipse 應該插入以下大綱:

您需要添加以下導入:

在類聲明中,聲明以下實例變量:

我們將從主 Activity 類傳遞歌曲列表,並使用 LayoutInflater 將標題和藝術家字符串映射到我們創建的歌曲布局中的 TextViews。

在實例變量之後,給適配器壹個構造函數方法來實例化它們:

更改 getCount 方法的內容以返回列表的大小:

您可以保持 getItem 和 getItemId 方法不變。 更新 getView 方法的實現,如下所示:

我們通過使用位置索引從列表中檢索正確的 Song 實例來設置標題和藝術家文本,將這些字符串映射到我們添加到歌曲布局文件中的視圖。 我們還將位置設置為視圖標記,當用戶單擊列表中的項目時,它將讓我們播放正確的歌曲。 請記住,song.xml 布局文件包含 onClick 屬性。 我們將使用其中列出的方法檢索 Activity 中的標記。

步驟 3

回到主 Activity 類,在排序列表後的 onCreate 方法中,創建 Adapter 類的新實例並在 ListView 上設置它:

當您運行應用程序時,它應該顯示設備上的歌曲列表,單擊它們將導致應用程序暫時出現異常,但我們將在下壹個教程中實現單擊處理程序。

結論

我們現在將應用程序設置為從用戶設備讀取歌曲。 在下壹部分中,當用戶使用 MediaPlayer 類選擇歌曲時,我們將開始播放。 我們將使用 Service 類實現回放,以便在用戶與其他應用程序交互時繼續。 最後,我們將使用 MediaController 類來讓用戶控制回放。

关注我们的公众号
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.