一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。
相关文章
Swift 技术 音频,音乐(AVAudioSession设置,音乐中断)
Swift 技术 监听电话中断,音乐(用于恢复播放音乐)(源码)
Swift 第三方 播放器AliyunPlayer(阿里云播放器)(源码)
Swift 需求 音乐播放暂停淡出淡放(声音逐渐消失)(视频)(源码)
OC 技术 DOUAudioStreamer音乐播放器的使用(源码)
Swift 基础 AVPlayer音乐播放器的使用(源码)
前言
今天做音乐播放起的需求需要开发接打电话的需求,正在播放音乐的时候,当电话来的,我们需要停止播放音乐,然后当挂断电话之后就恢复音乐的播放,或者拨打电话出去之后就停止音乐的播放,然后当挂断电话之后就恢复音乐的播放.
1.app在前台听音乐时,电话打进来会停止播放音乐,电话挂断之后恢复播放
2.app在后台听音乐时,电话打进来会停止播放音乐,电话挂断之后恢复播放
3.app在后台听音乐时,主动拨打电话,会停止播放音乐,电话挂断之后恢复播放
正题
方法 - interruptionNotification(可行)
Swift-(通知-interruptionNotification)电话挂断恢复音乐播放-代码实例
前提条件是AppDelegate必须设置下面的内容才会监听到通知
let session = AVAudioSession.sharedInstance()
do {
try session.setActive(true)
try session.setCategory(AVAudioSession.Category.playback)
} catch {
print(error)
}
// 检测中断音乐通知
NotificationCenter.default.addObserver(self, selector: #selector(interruptionNotification(notification:)), name: AVAudioSession.interruptionNotification, object: nil)
// 检测中断音乐通知
@objc func interruptionNotification(notification:Notification) {
//false 中断结束 true 中断开始
if let interruptionTypeValue = notification.userInfo?[AVAudioSessionInterruptionTypeKey] as? UInt,
let interruptionType = AVAudioSession.InterruptionType(rawValue: interruptionTypeValue) {
if interruptionType == .began {
// 暂停音频设备
AliPlayerManger.default.pause()
} else if interruptionType == .ended {
// 恢复音频设备
AliPlayerManger.default.play()
}
}
}
方法 - CallKit(禁用)
框架在中国禁用了, 2020.10.31上线被拒,更换CoreTelephony框架又提了一版
Swift-电话挂断恢复音乐播放-代码实例
1.本app播放音乐过程中,突然有电话进入停止播放音乐,拨打电话接听后停止播放音乐,挂断之后恢复播放.
代码写在Appdeledate文章来源:https://www.toymoban.com/news/detail-433998.html
import CallKit
///属性记录电话 打来中断
private let callObserver = CXCallObserver()
/// 是否电话拦截垄断
private var callPhoneOutGoing = false
callObserver.setDelegate(self, queue: nil)
extension ViewController: CXCallObserverDelegate {
func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {
if !call.isOutgoing && !call.isOnHold && !call.hasConnected && !call.hasEnded {// 暂停播放
//print("来电")
if playerState == true {
playerState = false
callPhoneOutGoing = true
player.pause()
}
} else if !call.isOutgoing && !call.isOnHold && !call.hasConnected && call.hasEnded {// 开始播放
//print("来电-挂掉(未接通)")
if playerState == false && callPhoneOutGoing == true {
playerState = true
callPhoneOutGoing = false
player.play()
}
} else if !call.isOutgoing && !call.isOnHold && call.hasConnected && !call.hasEnded {// 暂停播放
//print("来电-接通")
if playerState == true {
playerState = false
callPhoneOutGoing = true
player.pause()
}
} else if !call.isOutgoing && !call.isOnHold && call.hasConnected && call.hasEnded {// 开始播放
//print("来电-接通-挂掉")
if playerState == false && callPhoneOutGoing == true {
playerState = true
callPhoneOutGoing = false
player.play()
}
} else if call.isOutgoing && !call.isOnHold && !call.hasConnected && !call.hasEnded {// 暂停播放
//print("拨打")
if playerState == true {
playerState = false
callPhoneOutGoing = true
player.pause()
}
} else if call.isOutgoing && !call.isOnHold && !call.hasConnected && call.hasEnded {// 开始播放
//print("拨打-挂掉(未接通)")
if playerState == false && callPhoneOutGoing == true {
playerState = true
callPhoneOutGoing = false
player.play()
}
} else if call.isOutgoing && !call.isOnHold && call.hasConnected && !call.hasEnded {// 暂停播放
//print("拨打-接通")
if playerState == true {
playerState = false
callPhoneOutGoing = true
player.pause()
}
} else if call.isOutgoing && !call.isOnHold && call.hasConnected && call.hasEnded {// 开始播放
//print("拨打-接通-挂掉")
if playerState == false && callPhoneOutGoing == true {
playerState = true
callPhoneOutGoing = false
player.play()
}
}
}
}
文章来源地址https://www.toymoban.com/news/detail-433998.html
到了这里,关于Swift 技术 监听电话中断,音乐(用于恢复播放音乐)(源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!