<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 1.背景 上篇已經實現通過使用官方SDK進行基本數據請求再次封裝的實現,這篇將實現對音樂的控制 播放、暫停、上一曲、下一曲的控制。 播放頁面控制歌曲 - > 通知欄做出更改;通知欄控制歌曲-> 播放頁面做出更改; ### 2.獲得專輯圖片思路總結 如果沒有使用ShowApi上的接口就跳過這里吧;? (1)分析 在第一篇中我們已經知道歌曲列表中沒有歌曲圖片,但是提供的通過歌曲名或歌手名搜索歌曲接口,提供了歌手或者歌曲的圖片,我們可以通過使用這個來進行使用獲得當前播放歌曲的圖片信息,從而給歌曲信息中加載出來。 (2)基本流程 ![](https://box.kancloud.cn/2016-04-19_5715764da3c55.jpg) (3)說明 通過上面的已經知道使用的是官方SDK提供的接口實現,基本步驟如上圖所示,加載圖片使用的是Volley網絡請求框架,進行加載專輯圖片。 ?[Android-Volley網絡通信框架(二次封裝數據請求和圖片請求(包括處理請求隊列和圖片緩存))](http://blog.csdn.net/LABLENET/article/details/47859613) ? ### 3.基本控制 (1)先來個基本的控制圖解 從圖上可以看出三個MusicNotification , MusicService , MusicActivity 三個過程,以MusicService為核心,MusicNotification和MusicActivity 相互控制實現; 如下圖所示 ([點擊查看原圖](http://img.blog.csdn.net/20151216151717257)): ![](https://box.kancloud.cn/2016-04-19_5715764dba587.jpg) (2)MusicActivity 播放與暫停 基本過程:當點擊播放的時候,發送廣播到MusicService ,MusicSrvice接受廣播取得參數,對其進行控 制, 1)播放當前音樂 ;2)更新通知欄;3)發送廣播給MusicActivity,更新MusicActivity界面狀態; (3)Notification 控制播放 (實際上和上面一樣) 基本過程:當點擊播放的時候,發送廣播到MusicService ,MusicSrvice接受廣播取得參數,對其進行控 制, 1)播放當前音樂 ;2)更新通知欄;3)發送廣播給MusicActivity,更新MusicActivity界面狀態; ? ?? ### 4.過程實現 過程 : MusicActivity 初始化操作 、基本播放,暫停,下一曲,上一曲控制操作,均一樣; (1)OnStart() 是發送廣播給MusicService ~~~ @Override protected void onStart() { initData(); try { serviceIntent.putExtra(MUSIC_ACTIVITY_SERVICE_KEY, 40001); sendBroadcast(serviceIntent); } catch (Exception e) { showToast("new Intent 異常 : " + e.getMessage()); } super.onStart(); } ~~~ (2)MusicService 將 當前音樂數據信息,進度,發送給MusicActivity ~~~ /** * 來自 MusicActivity 的控制 * * @param musictype2 */ private void musicActivityService(int musictype2) { // showToast("musicActivityService 執行了 musictype2 :" + musictype2); switch (musictype2) { case 40001: sendModelToMusicActivity(); break; case 40002: //播放與暫停 playSong(); break; case 40003: //下一曲 nextSong(); break; case 40004: //上一曲 preSong(); break; } } ~~~ ~~~ /** * 發送Model給MusicActivity */ private void sendModelToMusicActivity() { if (mm != null) { // 正在播放的歌曲實體 if(mm.getSeconds()==0){ mm.setSeconds(mp.getDuration()/1000); } mActivityIntent.putExtra(MUSIC_SERVICE_TOACTIVITY_CODE, 41002); mActivityIntent.putExtra(MUSIC_SERVICE_TO_ACTIVITY_ISPLAY, mp.isPlaying()); mActivityIntent.putExtra(MUSIC_SERVICE_TO_ACTIVITY_NOWTIME, mp.getDuration() - mp.getCurrentPosition()); mActivityIntent.putExtra(MUSIC_SERVICE_TO_ACTIVITY_MODEL, (Serializable) mm); } else { // 默認發送第一首歌信息 mm = musics.get(0); mActivityIntent.putExtra(MUSIC_SERVICE_TOACTIVITY_CODE, 41001); mActivityIntent.putExtra(MUSIC_SERVICE_TO_ACTIVITY_ISPLAY, mp.isPlaying()); mActivityIntent.putExtra(MUSIC_SERVICE_TO_ACTIVITY_MODEL, (Serializable) mm); } sendBroadcast(mActivityIntent); } ~~~ 重點 : 在進行播放時,在MeidaPlayer中的OnPrepered()事件方法中進行發送 給MusicActivity 信息: ~~~ @Override public void onPrepared(MediaPlayer mp) { // 準備加載的時候 resume(); sendModelToMusicActivity(); } ~~~ ? ? ?(3)MusicActivityBoradCast進行接收信息并進行更新操作 ~~~ @Override public void onReceive(Context context, Intent intent) { code = intent.getIntExtra(MUSIC_SERVICE_TOACTIVITY_CODE, 0); if (code > 0) { // MusicService 來的控制 musicServiceKong(code, intent); } Log.d("MaskMusic", "MusicActivity - code : " + code); // 隱藏進度條 music_show_gone.setVisibility(View.GONE); } ~~~ ### 5.總結 在實現中,最糾結的就是在播放的時候,通知欄進行控制的時候,無法發送當前歌曲信息給MusicActivity, 后在onPrepered() 方法中嘗試后,十分方便的使用; 下篇,歌詞實現,滾動歌詞;
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看