AVPlayer类中有没有委托方法?我需要处理中断,如电话呼叫等。AVAudioPlayer支持。如果AVPlayer不支持,如何用AVAudioPlayer流式播放音频?
发布于 2012-03-12 02:53:14
AVPlayer没有您想要的方法,但是您可以改用AVAudioSession对象
1)选择AVAudioSession对象(例如[AVAudioSession sharedInstance])
2)调用setActive:error:方法将其设置为活动
3)设置其代理(实现AVAudioSessionDelegate协议的类)
4)实现委托的方法,如
-(void)beginInterruption;
-(void)endInterruptionWithFlags:(NSUInteger)flags;
-(void)endInterruption;发布于 2011-08-30 23:18:27
编辑
我在AVPlayer class中看不到任何可用的委派
那么,如何使用AVAudioPlayer流式传输音频呢?因为我们不知道您需要如何流式传输它,最重要的是,的提供了一些灵感
查看相关问题:
和教程
AVAudioPlayerDelegate协议参考 http://developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVAudioPlayerDelegateProtocolReference/Reference/Reference.html#//apple_ref/doc/uid/TP40008068
声音播放完成的
-音频解码错误的audioPlayerDidFinishPlaying:successfully:
-audioPlayerDecodeErrorDidOccur:错误:
- audioPlayerBeginInterruption:
- audioPlayerEndInterruption:
- audioPlayerEndInterruption:withFlags:
发布于 2011-08-30 23:23:13
我不认为AVPlayer会带你去那里。看看AVAudioPlayerDelegate,audioPlayerBeginInterruption将是您正在寻找的委托方法。
下面是我在AVAudioPlayer中使用的代码示例(我假设你已经知道如何构建你的url):
// Instantiates the AVAudioPlayer object, initializing it with the sound
NSError * errAV = nil;
AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfUrl: mUrl error: &errAV];
if (newPlayer == nil) {
NSString * msg = [[NSString alloc] initWithFormat:@"An internal error has occured: %@", [errAV localizedDescription]];
UIAlertView *uiav = [[UIAlertView alloc] initWithTitle:@"Play Sound"
message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[uiav show];
[uiav release];
[msg release];
} else {
self.appSoundPlayer = newPlayer;
[newPlayer release];
// "Preparing to play" attaches to the audio hardware and ensures that playback
// starts quickly when the user taps Play
[appSoundPlayer prepareToPlay];
[appSoundPlayer setVolume: 1.0];
[appSoundPlayer setDelegate: self];
[appSoundPlayer play];
}https://stackoverflow.com/questions/7245465
复制相似问题