Android服務—基於MediaPlayer后台播放音樂


Android服務—基於MediaPlayer后台播放音樂

操作環境:Android Studio 4.0.0、SDK Level 21(版本5.0 Lollipop)、Windows 10、集成顯卡RX550、CPU i7-8

一、設置布局

​ 在布局文件(activity_main.xml)中隨意布局,我的布局是用的相對布局,如下圖所示:

UW1lv9.png

​ 當然這個居中的效果就是利用相對布局中的gravity屬性,將其中包含的center、center_vertical和center_horizontal都設置為true即可。

二、設置按鈕響應函數

​ 在MainActivity.java中創建新的函數,命名為onClickPlayMusic,當然命名隨意了,如下面代碼所示:

public void onClickPlayMusic(View btn) {
    Intent intent = new Intent(MainActivity.this, PlayMusicService.class);
    startService(intent);
}

​ 其中的PlayMusicService便是今天的重點。到現在為止,應該不難理解這句話的意思:當用戶點擊播放音樂的按鈕時,我們用Intent傳遞一個東西(啥都沒有)到一個名為PlayMusicService的服務。

​ 所以我們是在自定義的PlayMusicService服務中實現音樂的播放的。

三、設置PlayMusicService服務

​ 自己建立一個服務是一個很麻煩的事兒,不過好在AS已經幫我們完成了一個創建服務的向導。步驟如圖:

UW1GHx.png UW13uR.png

四、重寫onHandleIntent()方法

​ 將onHandleIntent()方法的方法體清空,然后里面寫入播放音樂的代碼:

@Override
protected void onHandleIntent(Intent intent) {
    MediaPlayer mediaPlayer = 
        MediaPlayer.create(
        	getApplicationContext(), 
        	R.raw.the_story_between_moon_and_me
    	);
    
    mediaPlayer.start();
}

​ 然后你就以為你做完了,當然沒有。怎么可能,自始至終都沒見着音頻文件。而且這個地方還是一個容易出錯的地方,尤其是這個R.raw.the_story_between_moon_and_me。

五、放入音頻文件

(1)新建raw文件夾

UW18D1.png

(2)放入音頻文件

直接將.mp3文件拖入raw文件夾中,但是操作必須在AS中完成。即將文件拖入AS不松手再復制到raw中。

切記,在android的資源文件中不能出現大寫的文件名,因為大寫的字母不能在R.java中識別生成id。

​ 在做完上述兩步后,有部分同志可能遇到這樣的情況:

《引用自Android Studio中R無法找到res/raw文件夾》,作者王睿丶

​ 不要慌張,我們只需要重建(Rebuild)項目即可,也就是說AS不能及時發現我們其實已經建立了一個文件夾,所以需要我們手動重構項目。如下圖所示:

UW1QgJ.png

音頻文件(下載):ラックライフ-僕と月の話

音頻文件(試聽):ラックライフ-僕と月の話


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM