我一直在努力學習AVAudioPlayer
它的行爲。AVAudioPlayer行爲處理問題
於是開始與我寫
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = -1;
[player play];
只要應用程序沒有進入後臺它確實行之有效。所以,我再次搜索,發現我需要添加的plist條目,還寫了下面的代碼
NSError *activationError = nil;
if([[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&activationError] == NO)
NSLog(@"*** %@ ***", activationError);
[[AVAudioSession sharedInstance] setActive: YES error: nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
現在我的示例應用程序播放聲音在背景爲好。然後我遇到了另一個問題。如果我在進行所有這些處理之前進行了睡眠,請在睡眠期間將我的應用程序放在背景中,然後從其他應用程序開始播放音樂,在這種情況下,我的應用程序無法播放聲音。這可能是因爲它沒有得到其他音樂應用程序所採用的音頻會話。
問題 我明白,有是否有其他聲音響起來檢測的方式,但我找不到我怎麼阻止它。有些方法可以阻止iPod等標準應用程序聲音,但有沒有其他通用方法可以阻止任何其他應用程序的聲音。 2.[player play];
給出NO
作爲失敗的結果。我如何找到造成失敗的原因。我已經實施了audioPlayerDecodeErrorDidOccur:error:
方法,但它永遠不會被調用。
請分享你的知識。我已經經歷了大部分關於相同的堆棧溢出問題,但沒有發現對這個特定問題有用的任何東西。
請打印soundFileURL – 2013-02-22 06:34:16
@Manohar:使用下面的代碼獲取URL '的NSString * soundFilePath = [[一個NSBundle mainBundle] pathForResource:@ 「聲音」 ofType:@ 「MP3」]; NSURL * soundFileURL = [NSURL fileURLWithPath:soundFilePath];' 它確實工作,直到應用程序在後臺,沒有其他人在玩。所以我不認爲URL在這裏有任何問題。 – Sagrian 2013-02-22 06:54:05
NSURL * soundFileURL = [NSURL URLWithString:soundFilePath];試試這個 – 2013-02-22 07:07:08