gpt4 book ai didi

iPhone:应用程序在后台播放音乐

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:26:36 29 4
gpt4 key购买 nike

我有一个使用 Matt Gallagher 的 AudioStreamer 类流式传输音乐的应用程序。这作为后台进程工作正常,除了我希望能够在流结束后跳到下一首歌曲。不幸的是,这部分不起作用。最初我有一个监控流的计时器,但我意识到当应用程序后台运行时,该计时器不再运行。所以我尝试在数据包读取函数中添加一个委托(delegate)回调:

void ASReadStreamCallBack(CFReadStreamRef aStream, CFStreamEventType eventType, void* inClientInfo)
{
AudioStreamer* streamer = (AudioStreamer *)inClientInfo;
double percent = [streamer progress]/[streamer duration];
if(percent>=0.98 || (percent>=0.95 && [streamer isIdle])){
if([streamer.delegate respondsToSelector:@selector(didFinishPlayingStream:)] ){
[streamer.delegate didFinishPlayingStream:streamer];
streamer.delegate = nil;
}
}


[streamer handleReadFromStream:aStream eventType:eventType];
}

当应用程序在前台时,这可以正常工作,但当应用程序在后台时,它就不再工作了。委托(delegate)方法基本上发送请求以获取下一首歌曲的流 URL,然后一旦它创建一个新的 AudioStreamer 类

最佳答案

当应用程序处于后台时,您可以实现委托(delegate)来处理不同的远程控制状态。

- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent { 
switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
if (player.isPlaying) {
[player pause];
} else {
[player start];
}
break;

case UIEventSubtypeRemoteControlPreviousTrack:
break;

case UIEventSubtypeRemoteControlNextTrack:
[self skipSong:nil];
break;

default:
break;
} }

像这样的东西对我有用。

关于iPhone:应用程序在后台播放音乐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5970571/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com