相信大家不想再去了解那些本地音樂的了 其實(shí)網(wǎng)絡(luò)獲取音樂也沒有那么復(fù)雜 你只需要有一個(gè)自己uri所謂的網(wǎng)址 但必須只有音樂文件 沒有其他的元素 這里我為了方便自己搭建了一個(gè)服務(wù)器 直接從我服務(wù)器獲取音樂軟件 現(xiàn)在網(wǎng)絡(luò)音樂播放大部分都是用戶指明歌名來播放
下面給大家看一下我的工程文件夾 我使用了主線程和service服務(wù)兩種方法來實(shí)現(xiàn)音樂播放 后臺服務(wù)可以優(yōu)化運(yùn)行穩(wěn)定性 首先我先來講一下在線程中實(shí)現(xiàn)網(wǎng)絡(luò)音樂播放器
首先看我的布局文件 是很簡單的布局 主要是給一部分人講思路 如果想實(shí)現(xiàn)音樂列表可以自己加一個(gè)listView 我這里主要指定了一個(gè)網(wǎng)絡(luò)上的音樂 uri地址為http://120.78.188.33/wp-content/uploads/2018/07/樓沁-癡情玫瑰花-女聲版-1.mp3
這是我自己的服務(wù)器地址 我的服務(wù)器我不一定隨時(shí)開啟 大家可以根據(jù)情況找地址
xml文件中加入了三個(gè)圖片按鈕 播放 暫停 停止
這里公布了MidiaPlayer的結(jié)構(gòu)流程 順便補(bǔ)充一下 不僅可以視頻音樂播放 還可以流的播放 在API26即安卓8.0以后加了傳輸加密的工具 具體看官網(wǎng)谷歌官網(wǎng)MediaPlayer簡介
由于我設(shè)備谷歌翻墻 這個(gè)鏈接可能不能訪問 建議谷歌翻墻
然后看一下布局關(guān)聯(lián)的java文件 聲明三個(gè)按鈕和MediaPlayer媒體播放器 媒體播放器可以播放音樂和視頻 這里用到了音樂
聲明網(wǎng)址 這里為公開的 如果不想公開可以設(shè)置成private 但其他類就不可以訪問了 根據(jù)情況而定
下面是activity生命周期銷毀的方法
如果播放器正在運(yùn)行和播放器正在播放 停止播放器 主要是為了用戶關(guān)閉你的軟件優(yōu)化內(nèi)存
然后適當(dāng)你占用系統(tǒng)播放器的資源 初始化你的播放器
繼承銷毀方法的所有類和屬性
只有本方法可以訪問到活動生命周期的創(chuàng)建周期
綁定ui控件id 也可以寫一個(gè)方法用來單獨(dú)存儲綁定控件id
實(shí)現(xiàn)按鈕監(jiān)聽 判斷媒體播放器是否存在 如果不存在調(diào)用ready方法 這個(gè)方法下面會寫到
點(diǎn)擊播放按鈕啟動播放器
暫停按鈕監(jiān)聽
當(dāng)播放器存在和正在播放調(diào)用播放器的暫停方法
停止按鈕監(jiān)聽
當(dāng)播放器不為空和播放器正在運(yùn)行
播放器停止運(yùn)行 由于播放器只能播放一次音樂 所以需要釋放資源 release
然后初始化 要不然播放器一直占用資源無法點(diǎn)擊停止按鈕后點(diǎn)擊播放按鈕 如果不寫這兩句會出現(xiàn)不能重新播放
下面寫的是準(zhǔn)備ready方法 這是我自己寫的 然后在其他地方調(diào)用這個(gè)方法 用來避免代碼的繁瑣
準(zhǔn)備工作是創(chuàng)建媒體播放器 如果媒體播放器不存在 創(chuàng)建媒體播放器
嘗試媒體播放器設(shè)置數(shù)據(jù)資源 上下文本文 uri 解析開始聲明的uri 這里到了初始化狀態(tài)還不能播放
媒體播放器準(zhǔn)備 當(dāng)準(zhǔn)備了就可以播放了
如果想有個(gè)音樂列表自己添加listView設(shè)置適配器 到這里就講完了主線程實(shí)現(xiàn)音樂播放了 是不是特別簡單
下面來講述使用服務(wù)service實(shí)現(xiàn)音樂播放
布局文件同樣是這個(gè) 我綁定了同一個(gè)布局
然后直接來看我的服務(wù)類的解析
這個(gè)類繼承了服務(wù)的所有屬性和方法
聲明媒體播放器聲明operatorReceiver操作寄存器 操作寄存器用來接受主界面ui的返回
同樣聲明uri網(wǎng)址 uri可以指明網(wǎng)址 也可以指明一些手機(jī)內(nèi)部存儲數(shù)據(jù)庫地址
同樣的與主線程方法一樣實(shí)現(xiàn)軟件銷毀進(jìn)程的方法 然后不管哪種情況都關(guān)閉registerReceiver寄存接收器 寄存接收器是用來放操作接收器獲得的數(shù)據(jù) 用戶銷毀軟件進(jìn)程就不需要操作接受了 可以銷毀
繼承屬性
活動的創(chuàng)建方法實(shí)現(xiàn) 每個(gè)活動都必須實(shí)現(xiàn)創(chuàng)建方法 否則會出錯(cuò)
初始化操作接收器
設(shè)置信使過濾器 指明action
把操作接收器獲得的數(shù)據(jù)放到寄存接收器里? 操作接收器的名字 和action
初始化媒體播放器
綁定方法 這里我沒用到
下面寫預(yù)測開始暫停停止的方法? 調(diào)用開始暫停停止方法
同樣 停止播放后重新準(zhǔn)備一下 用來讓用戶停止后可以繼續(xù)點(diǎn)擊播放
服務(wù)的開始命令方法 同樣調(diào)用一個(gè)準(zhǔn)備工作
這里指明了準(zhǔn)備方法的內(nèi)容 這個(gè)準(zhǔn)備方法不可以生成 是我自己寫的方法
每次準(zhǔn)備重啟一下媒體播放器 reset重啟
嘗試
首先設(shè)置媒體播放器數(shù)據(jù)資源data Source 同樣初始狀態(tài)不可以播放
媒體播放器準(zhǔn)備 寫到這一步就可以播放音樂了
然后寫了一個(gè)class用來繼承廣播接收器
實(shí)現(xiàn)接受方法
設(shè)置一個(gè)數(shù)組 命名 信使得到的額外數(shù)據(jù) 名字 默認(rèn)值-1因?yàn)椴豢赡転?1
開關(guān)名字cmd
按鍵Tools類中的按鈕play調(diào)用開始音樂方法
來看一下我的tools文件 這里把按鈕點(diǎn)擊三個(gè)轉(zhuǎn)換成了數(shù)字
最后別忘了在功能清單中聲明網(wǎng)絡(luò)權(quán)限和注冊servicer
到這里兩個(gè)方法就都講完了 首先這里講一下由于所有的代碼都是自己寫的思路 如果有哪里做的不好請指出 我會盡力為大家分享安卓開發(fā)的知識 有時(shí)間我會公布我的音樂列表播放和實(shí)現(xiàn)上下曲功能 同時(shí)讀取音樂時(shí)間和藝人 而且我會講述本人對官網(wǎng)的理解 相信大家一看到谷歌官網(wǎng)就頭大 寫的太亂 隨后我會發(fā)表簡書給大家分享經(jīng)驗(yàn)
現(xiàn)在到了給小編點(diǎn)小心心的時(shí)候了 小編編寫這又得不到好處 只希望你點(diǎn)個(gè)小心心 哈哈