Android监听电话呼入和呼出

// service内部类,监听电话呼入呼出,如果有电话呼入,则暂停播放,通话结束,继续播放
public static class PhoneStatReceiver extends BroadcastReceiver {
    private static boolean bPlayingFlg = false;
    @Override
    
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        // 呼出电话
        if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {                
            if (null != mMediaPlayer) {
                if (mMediaPlayer.isPlaying()) {
                    bPlayingFlg = true;
                    pause(); // 暂停播放
                    MusicDemo.mbSeekBarUpdateFlg = false; // 停止更新播放进度
                }
            }
        }
        else {
            // 呼入电话
            TelephonyManager tm = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);
            switch (tm.getCallState()) {
                case TelephonyManager.CALL_STATE_RINGING:
                    // 当前是来电
                    if (null != mMediaPlayer) {
                        if (mMediaPlayer.isPlaying()) {
                            bPlayingFlg = true;
                            pause(); // 暂停播放
                        }
                    }
                    break;
    
                case TelephonyManager.CALL_STATE_OFFHOOK:
                    break;
    
                case TelephonyManager.CALL_STATE_IDLE: // 挂机  Device call state: No activity.
                    if (bPlayingFlg) {
                     // 恢复播放
                        pauseToPlay();
                        MusicDemo.mbSeekBarUpdateFlg = true; // 更新播放进度
                        bPlayingFlg = false;
                    }
                    break;
            }
        }
    }
}

在manifest中增加权限

暂无评论
  • 1:请一针见血的评论。
  • 2:评论需要审核通过后才能显示。
  • 3:评论字数限制在1000字以内。
  • 当前字数:0
热门文章
推荐文章
随机文章
关于本站 - 广告服务 - 版权声明 - 联系我们 - 友情链接 - 网站地图 - 帮助中心