- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在开发用 Swift
编写的音乐播放器应用程序,使用 AVPlayer
播放音频流,一切都很好
但是当我尝试将 MPRemoteCommandCenter 添加到我的应用程序时,出现了很多错误,我什至不知道为什么会这样
link to video that describes my problem
func setupPlayer() {
let item = AVPlayerItem(url: musicURL)
self.player = AVPlayer.init(playerItem: item)
self.player.play()
self.player.volume = 1
self.player.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, preferredTimescale: 1), queue: DispatchQueue.main, using: { (time) in
if self.player.currentItem?.status == .readyToPlay {
self.reloadNowPlayingInfo()
let currentTime = self.player.currentTime().seconds
self.playingTime.text = currentTime.getTimeString()
self.playerSlider.value = currentTime/duration
}
})
}
func reloadNowPlayingInfo() {
var info = [String : Any]()
info[MPMediaItemPropertyTitle] = self.titleText
info[MPMediaItemPropertyArtwork] = MPMediaItemArtwork.init("some image")
info[MPMediaItemPropertyPlaybackDuration] = seconds
info[MPNowPlayingInfoPropertyElapsedPlaybackTime] = currentSecs
info[MPMediaItemPropertyArtist] = "Artist name"
MPNowPlayingInfoCenter.default().nowPlayingInfo = info
}
对于指挥中心,
func setupCommandCenter() {
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.playCommand.isEnabled = true
commandCenter.pauseCommand.isEnabled = true
commandCenter.playCommand.addTarget(self, action: #selector(self.playCommand(_:)))
commandCenter.pauseCommand.addTarget(self, action: #selector(self.pauseCommand(_:)))
}
@objc func playCenter(_ action: MPRemoteCommandEvent) {
self.state = .play
self.playBtn.setBackgroundImage("some image"), for: .normal)
self.player.play()
self.fetchTracks()
}
@objc func pauseCenter(_ action: MPRemoteCommandEvent) {
self.state = .pause
self.playBtn.setBackgroundImage("some image"), for: .normal)
self.player.pause()
self.fetchTracks()
}
最佳答案
除了您提供的代码之外,您还可能在应用委托(delegate)的某处调用了以下代码:
UIApplication.shared.beginReceivingRemoteControlEvents()
除了使用 MPRemoteCommandCenter.shared()
之外执行此操作似乎会导致竞争条件。
In iOS 7.1 and later, use the shared MPRemoteCommandCenter object to register for remote control events. You do not need to call this method when using the shared command center object.
This method starts the delivery of remote control events using the responder chain.
从您的应用委托(delegate)中删除该方法,您应该没问题。
关于swift - MPRemoteCommandCenter 播放/暂停 触摸时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53989356/
我正在制作一个 iPhone 音乐应用程序来处理音乐播放和暂停并维护自己的播放列表。我正在尝试使播放/暂停 Remote 功能(在耳塞和上滑屏幕上)适用于我的应用程序中的音乐播放。 下面是我在音乐播放
如何从通知中心删除 MPRemoteCommandCenter.shared()。我尝试了这段代码,但只有命令和操作被禁用。我需要从通知中心删除完整的通知。当我们终止应用程序时,它不会出现在通知栏中,
亲爱的同事们,您好,我需要您的帮助。当我添加 MPChangePlaybackPositionCommand 时,我的所有控件(锁定屏幕上的播放/暂停/倒播/下一首轨道)已自动禁用。锁屏上的播放 sl
MPRemoteCommandCenter 有两个问题: 1) 当我换歌时, Remote 删除上一首歌曲图像,制作默认歌曲图像,制作下一首歌曲图像。我不想看到默认图像。我花了一些时间来寻找解决方案。
我已经实现了播放音频的 Avplayer。我已经使用 MPRemoteCommandCenter 来访问锁定屏幕。我可以通过以下方式获得所有访问权限: let commandCenter =
我正在开发一个处理 MPRemoteCommandCenter 类的录音应用程序。我已经设置了命令中心来播放和暂停命令。下面添加了代码片段。我遇到了 pauseCommand 的问题。 我从应用程序开
我在 MPRemoteCommandCenter 中切换播放和暂停按钮时遇到问题。无论出于何种原因,音频和事件都将正常工作,但命令中心不会将播放按钮更改为暂停按钮。这是我的代码... - (void)
我有一个显示 .m3u8 流的视频播放器。我已尝试实现远程控制,但该小部件并未同时出现在锁定屏幕、通知中心和命令中心中。 我只需要有播放暂停、音量控制和一些静态信息,如标题、艺术家和艺术作品。 这是我
我正在出于自己的目的编写一个应用程序,旨在无论系统中发生什么情况都能获取播放暂停事件。我已经做了这么多工作 let commandCenter = MPRemoteCommandCenter.shar
我有一个 iOS 9 应用程序,它使用 AudioGraph 播放类似 MIDI 的歌曲。我已经使用 MPRemoteCommandCenter 设置了远程控制命令,并使用 MPNowPlayingI
我在 iPhone 上使用 MPRemoteCommandCenter 和 MPMusicPlayerController.applicationMusicPlayer。 我正在尝试在用户播放音乐并双
我正在开发用 Swift 编写的音乐播放器应用程序,使用 AVPlayer 播放音频流,一切都很好 但是当我尝试将 MPRemoteCommandCenter 添加到我的应用程序时,出现了很多错误,我
我不知道如何切换播放和暂停按钮。我试过 TogglePlayPauseCommand。但它不起作用。 最佳答案 您能否发布有关如何尝试实现 TogglePlayPauseCommand 的代码?我认为
我一直在编写使用 [MPMusicPlayerController applicationMusicPlayer] 播放音乐的代码。 这已成功运行,并将在控制中心屏幕上显示当前播放轨道的详细信息。 不
我正在构建一个音乐播放器应用,一切正常。到目前为止,我一直在使用系统音乐播放器,但现在想改用应用程序音乐播放器,这就是我遇到问题的地方——我这辈子都不知道如何获得我的音乐播放器从 iOS 控制中心调用
MPRemoteCommandCenter 多次调用处理程序 block 并导致对选择器方法的不必要调用。 这是代码片段: MPRemoteCommandCenter *commandCenter =
我目前正在使用 AVSpeechSynthesizer 进行文本转语音。用于播放的类别是 AVAudioSessionCategoryPlayback 并且 AVAudioSession 设置为 Ac
我正在使用 MPRemoteCommandCenter 更改我的音乐广播应用程序中的歌曲。但是当我从锁定屏幕按下下一首轨道按钮时,它会跳 3 步而不是一步。 这是我的代码: func setupRem
我正在将 MPNowPlayingInfoCenter 集成到音乐播放应用中。当我在 iOS 模拟器中运行它时,它与 MPRemoteCommandCenter 的集成工作得很好。当我在设备上运行相同
Apple doc说“您可以通过将其启用属性设置为 NO 来禁用相应的 MPRemoteCommand 对象。” 我提到了 Is there a public way to force MPNowPl
我是一名优秀的程序员,十分优秀!