自制簡(jiǎn)易音樂(lè)播放器(未完成)數(shù)據(jù)來(lái)源:QQ音樂(lè)

數(shù)據(jù)源

本來(lái)只想重新練練RecyclerView的,一不小心又弄得復(fù)雜了。。。

無(wú)意中想起來(lái)搞個(gè)網(wǎng)絡(luò)音樂(lè)播放器,本地的就算了,目前沒(méi)時(shí)間去仔細(xì)弄了,但是這個(gè)沒(méi)有多深入的邏輯控制,只是簡(jiǎn)單的播放邏輯,這也是很折磨人啊,大家看看就好了。于是上網(wǎng)搜了一下免費(fèi)的音樂(lè)api,誤打誤撞找到一個(gè)用Java寫(xiě)的幾個(gè)國(guó)內(nèi)音樂(lè)搜索(QQ音樂(lè),酷狗,蝦米,網(wǎng)易云音樂(lè))接口

https://github.com/Qrilee/MusicuuApi

請(qǐng)直接拷貝代碼到你的工程里去,jar包也直接拷到libs下。

其中網(wǎng)易云好像被封了,訪問(wèn)不了,反正經(jīng)過(guò)我的測(cè)試返回404信息。

在WyMusic、NetUtil類中,導(dǎo)入的sun.misc.BASE64Encoder 這個(gè)工具類必須換為 android.util.Base64,因?yàn)閍ndroid中沒(méi)有BASE64Encoder,取而代之的是Base64。其中的方法也按要需求調(diào)用,WyMusic.java中,我是這樣使用的

String retval = Base64.encodeToString(md5Bytes,Base64.DEFAULT);


Base64工具類使用位置

?WyMusic這個(gè)是網(wǎng)易云音樂(lè)的類,還有NetUtil類中也用到了Base64工具類,如果你想用的話請(qǐng)注意這點(diǎn)喲。


效果圖

好吧,直接看我寫(xiě)的播放器效果吧。


搜索頁(yè)面。這個(gè)程序有一些bug,不過(guò)也沒(méi)關(guān)系啦,能聽(tīng)就行,后臺(tái)也不會(huì)掛掉

有一些圖標(biāo)是自己畫(huà)的,你們看得出來(lái)嗎?好吧,肯定看不出來(lái)。啦啦啦。播放控件中的播放順序四個(gè)模式的圖標(biāo)和右邊的播放列表圖標(biāo)是我用AI畫(huà)的,實(shí)在是覺(jué)得網(wǎng)上的圖標(biāo)太丑了,顏色還要自己調(diào),不如直接用AI畫(huà)出來(lái),簡(jiǎn)單的線條UI還是能弄出來(lái)的

搜索頁(yè)面,時(shí)間很長(zhǎng),這不怪我-_-!好吧

搜索時(shí)間長(zhǎng)也是這個(gè)搜索接口的原因,可能數(shù)據(jù)早已經(jīng)通過(guò)網(wǎng)絡(luò)獲取到了,但解析時(shí)間過(guò)長(zhǎng)吧,看原作者的后續(xù)更新吧。還有歌詞的功能,這里就沒(méi)去弄了,畢竟不是專業(yè)的播放器。我特別喜歡網(wǎng)易云音樂(lè),可惜用這個(gè)接口目前我弄不到它的數(shù)據(jù),網(wǎng)上其他方法我也找過(guò)了,幾乎都是同一個(gè)方法(POST方式,添加請(qǐng)求頭參數(shù)),這個(gè)也不例外,被服務(wù)拒絕了還是地址換了?有誰(shuí)知道的嗎

這是下拉菜單中的前臺(tái)Notification,與音樂(lè)控制器關(guān)聯(lián)著,音樂(lè)播放與界面刷新邏輯關(guān)系搞得我頭大呀

感覺(jué)移動(dòng)端的邏輯問(wèn)題很難纏,頁(yè)面效果實(shí)現(xiàn)相比之下就了,現(xiàn)在那么多成熟又漂亮的第三方視圖和動(dòng)畫(huà),我們只需要稍微修改就能滿足開(kāi)發(fā)需求吧。

新聞模塊,用的是極速數(shù)據(jù)提供的接口

由于新聞數(shù)據(jù)api的數(shù)據(jù)有限,不像今日頭條、新浪新聞等專業(yè)大戶有海量數(shù)據(jù),由于這里只是業(yè)余的程序,只需要刷出來(lái)固定的十幾條最新數(shù)據(jù)就行了。

這是新聞的搜索頁(yè),也是挺長(zhǎng)時(shí)間的,也不怪我好嗎-_-?

這些都是自己一字一句碼出來(lái)效果,界面效果不是問(wèn)題,就是邏輯關(guān)系搞得很蛋疼??。本來(lái)還好的Fragment,越來(lái)越臃腫,多少行代碼我就不說(shuō)了,簡(jiǎn)直扎心了,還好我的MainActivity,只有不到100行。因?yàn)镸ainActivity只管著幾個(gè)Fragment的切換功能,作為Fragment的容器,幾乎沒(méi)有耗時(shí)的代碼。


文件結(jié)構(gòu)有點(diǎn)亂,這不是重點(diǎn),畢竟只有這么十幾個(gè)Java文件,要做大事的時(shí)候肯定要?dú)w類好代碼文件

看官們覺(jué)得咋樣?沒(méi)有用DataBinding這些東西,雖然早就聽(tīng)聞了,一看還有點(diǎn)難度,就放著了,以后肯定會(huì)用上的吧(現(xiàn)在有更好用的ButterKnife了,以后就用它了)。

令我滿意的是播放順序這塊的邏輯沒(méi)毛病,其他的東西就隨便看看吧,哈哈。其中加載動(dòng)畫(huà)和播放進(jìn)度條用是自己寫(xiě)的控件,Seekbar本來(lái)也是用自己的,后來(lái)出現(xiàn)bug了,不想浪費(fèi)時(shí)間就用原生的了。代碼有點(diǎn)雜亂,我就不貼了。這里給個(gè)安裝包大家瞧瞧就行了,

https://github.com/Ccapton/EasyPlayer/blob/master/%E4%B8%AA%E6%80%A7%E5%8C%96.apk

至于JNI開(kāi)發(fā),我還沒(méi)怎么去接觸誒,似乎都是要在移動(dòng)端高效運(yùn)行的程序才要?比如直播類等軟件需要高效壓縮攝像頭采集的數(shù)據(jù)的算法,這就需要更接近底層的C與C++才能做到;還有大名鼎鼎的視頻處理項(xiàng)目FFmpeg,本來(lái)在桌面端的項(xiàng)目,用于Android移動(dòng)端簡(jiǎn)直不要太變態(tài),很多播放器就用到了它的代碼吧。需要保密的程序算法,要用到打包的so庫(kù)來(lái)防止被反編譯。

好了,這篇文章就到這了,主要是自己寫(xiě)了這么一個(gè)功能單一程序,實(shí)際對(duì)大家有用的東西估計(jì)就是下面的鏈接了。那么下期見(jiàn)。


用到的一些庫(kù)、框架

音樂(lè)數(shù)據(jù)源 MusicuuApi:https://github.com/Qrilee/MusicuuApi

圖片加載 Glide:https://github.com/bumptech/glide

數(shù)據(jù)解析 Gson:https://github.com/google/gson

網(wǎng)絡(luò)通信 Volley :https://github.com/mcxiaoke/android-volley

網(wǎng)絡(luò)通信 Okhttp:https://github.com/square/okhttp

瀏覽器控件 AgentWeb:https://github.com/Justson/AgentWeb

上下拉刷新控件 SmartRefreshLayout: https://github.com/scwang90/SmartRefreshLayout

左右滑動(dòng)刪除列表項(xiàng)控件 Swipemenulistview:

https://github.com/baoyongzhang/SwipeMenuListView

選項(xiàng)拖拽控件DragGridView:https://github.com/zhaoyu87/DragGridView(用在新聞?lì)l道的選擇頁(yè)里)

Activity滑動(dòng)退出控件 SwipeBackLayout:https://github.com/ikew0ng/SwipeBackLayout?(用在了新聞瀏覽頁(yè)上)

搜索等待動(dòng)畫(huà) SLView (自己寫(xiě)的?):https://github.com/Ccapton/Android-SLView

播放進(jìn)度條ColorfulProgressbar(自己寫(xiě)的?):?https://github.com/Ccapton/Android-ColorfulProgressBar

關(guān)于作者

我的Github:https://github.com/Ccapton/?

我的博客:http://ccapton.cn

歡迎來(lái)踩!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,577評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,486評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,852評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,600評(píng)論 6 412
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,944評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評(píng)論 3 447
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 43,108評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,652評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,385評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,616評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,798評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,205評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,537評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,334評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,570評(píng)論 2 379

推薦閱讀更多精彩內(nèi)容

  • 1.圖片瀏覽控件MWPhotoBrowser 實(shí)現(xiàn)了一個(gè)照片瀏覽器類似 iOS 自帶的相冊(cè)應(yīng)用,可顯示來(lái)自手機(jī)的圖...
    萬(wàn)忍閱讀 1,520評(píng)論 0 6
  • 【老夏果園日記 2017. 4.7. 晴】 這是這片果園的第22個(gè)春天,一個(gè)月前老夏還在這里忙碌修剪。 這是一片已...
    拈花老夏閱讀 591評(píng)論 2 1
  • 今天早上收到林老師的信息,是落合老師和他說(shuō)有關(guān)督促提高我日語(yǔ)的郵件,我看到這個(gè)信息,表示非常焦慮,確實(shí)來(lái)了三個(gè)月了...
    空白園園閱讀 222評(píng)論 1 3
  • 焦點(diǎn)既重點(diǎn)vs純粹接觸效應(yīng)的共同點(diǎn)(2018.9.4中午下班) 新顧客進(jìn)來(lái)后,借一下他的手機(jī),拍照一下,對(duì)比下像素...
    孫偉愛(ài)學(xué)習(xí)閱讀 208評(píng)論 0 0
  • 阿越??K.DiamonD鉆漾·脂肪再生撕拉膜??建議代理們都自己先使用,才有底氣和顧客們介紹推薦產(chǎn)品?? “ 微整形 ...
    zzy阿越越越越越越閱讀 473評(píng)論 0 1