Android應用--簡、美音樂播放器添加電話監聽
2013年6月11日簡、美音樂播放器第2階段啟動
第1階段完成了以下功能:
1. 自動顯示音樂列表
2. 點擊列表播放音樂
3. 長按列表彈出對話方塊
4. 暫停音樂
5. 上一首音樂
6. 下一首音樂
7. 自動播放下一首歌曲
8. 單曲迴圈
9. 全部迴圈
10. 全部隨機播放
第2階段準備完成以下功能:
1. 歌詞顯示(實現歌詞滾動功能)前一篇部落格已經實現了
2. 來電監聽 這篇部落格將要講的內容,很簡單
3. 控制音量
4. 擷取專輯圖片
5. 線上下載歌詞
6. 線上搜尋音樂
7. 線上下載音樂
8. 實現有趣功能--甩歌
9. 介面美化--實現專輯倒影
10.實現左右介面切換
11.實現在通知欄顯示播放狀態
12.實現音樂播放的案頭小控制項
暫時想到這些功能,如果朋友們有什麼建議的話,可以直接給我留言。
在貼電話狀態監聽功能代碼之前,把AppConstant這個類也貼一下,這個只是用來存放播放控制資訊的,有網友說要看看,所以在這裡貼一下吧。
package com.wwj.sb.domain;/** * 應用常量類 * @author wwj * */public class AppConstant {public class PlayerMsg {public static final int PLAY_MSG = 1;//播放public static final int PAUSE_MSG = 2;//暫停public static final int STOP_MSG = 3;//停止public static final int CONTINUE_MSG = 4;//繼續public static final int PRIVIOUS_MSG = 5;//上一首public static final int NEXT_MSG = 6;//下一首public static final int PROGRESS_CHANGE = 7;//進度改變public static final int PLAYING_MSG = 8;//現正播放}}
那好,繼續完善小巫的簡、美音樂播放器,因為一個好的應用軟體應該考慮到各種情況,就那音樂播放器來說,如果播放音樂過程中,來了一個電話,可能是“永遠不會打電話給你的人”,如果這時候你的音樂還在後台悠哉的播放,我想你會瘋掉的,永遠不會打電話給你的人可能真的永遠不打了。這裡只是開個玩笑,所以呢,要考慮到這種情況,只要來電了,那麼播放器應該能暫停一下,好讓你好好打個電話。下面的實現很簡單,不多解釋,直接上代碼:
1、添加許可權
<!-- 讀取電話狀態許可權 --> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
2. 擷取TelephonyManager對象,調用listen方法監聽來電狀態
// 添加來電監聽事件TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); // 擷取系統服務telManager.listen(new MobliePhoneStateListener(),PhoneStateListener.LISTEN_CALL_STATE);
3.實現監聽類
/** * * @author wwj * 電話監聽器類 */private class MobliePhoneStateListener extends PhoneStateListener {@Overridepublic void onCallStateChanged(int state, String incomingNumber) {switch (state) {case TelephonyManager.CALL_STATE_IDLE: // 掛機狀態Intent intent = new Intent(PlayerActivity.this, PlayerService.class);playBtn.setBackgroundResource(R.drawable.play_selector);intent.setAction("com.wwj.media.MUSIC_SERVICE");intent.putExtra("MSG", AppConstant.PlayerMsg.CONTINUE_MSG);//繼續播放音樂startService(intent);isPlaying = false;isPause = true;break;case TelephonyManager.CALL_STATE_OFFHOOK://通話狀態case TelephonyManager.CALL_STATE_RINGING://響鈴狀態Intent intent2 = new Intent(PlayerActivity.this, PlayerService.class);playBtn.setBackgroundResource(R.drawable.pause_selector);intent2.setAction("com.wwj.media.MUSIC_SERVICE");intent2.putExtra("MSG", AppConstant.PlayerMsg.PAUSE_MSG);startService(intent2);isPlaying = true;isPause = false;break;default:break;}}}