Мой mp3-код:
NSError *error;
soundObject = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:audioPathString] error:&error];
if (soundObject == nil) NSLog(@"%@", [error description]);
soundObject.delegate = self;
soundObject.numberOfLoops = 0;
soundObject.volume = 1.0;
NSLog(@"about to play");
[soundObject prepareToPlay];
[soundObject play];
NSLog(@"[soundObject play];");
mp3, который использовался, чтобы играть отлично, и он по-прежнему работает на симуляторе. Но не на устройстве.
Недавно я добавил к программному обеспечению некоторый код записи (не мой). Он использует материал AudioQueue, который немного превосходит меня. Это противоречит AVAudioPlayer? Или что может быть проблемой? Я заметил, что как только код звуковой записи начнет работать, я больше не могу отрегулировать громкость на устройстве, так что, возможно, он блокирует воспроизведение звука?
ИЗМЕНИТЬ
Решение похоже на то, чтобы поместить это в мой код. Я положил его в applicationDidFinishLaunching:
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
Первая строка позволяет воспроизводить и записывать, в то время как другие строки, по-видимому, перенаправляют вещи, чтобы сделать громче громче.
Весь аудиокод - это voodoo для меня.