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 {
@Override
public 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;
}
}
}