Ответ 1
Убедитесь, что ваш iPhone Кнопка звонка" не показывает цвет красного цвета.
Мой 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 для меня.
Убедитесь, что ваш iPhone Кнопка звонка" не показывает цвет красного цвета.
Некоторый код, который я знаю, работает:
- (void)playOnce:(NSString *)aSound {
// Gets the file system path to the sound to play.
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:aSound ofType:@"caf"];
// Converts the sound file path to an NSURL object
NSURL *soundURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
self.soundFileURL = soundURL;
[soundURL release];
AVAudioPlayer * newAudio=[[AVAudioPlayer alloc] initWithContentsOfURL: soundFileURL error:nil];
self.theAudio = newAudio; // automatically retain audio and dealloc old file if new file is loaded
[newAudio release]; // release the audio safely
[theAudio prepareToPlay];
// set it up and play
[theAudio setNumberOfLoops:0];
[theAudio setVolume: volumeLevel];
[theAudio setDelegate: self];
[theAudio play];
}
Здесь быстро и просто попробовать:
У меня возникла аналогичная проблема с изображениями, а также звуками. IPhone чувствителен к крышке, даже расширения файлов, но симулятор не работает. Проверьте объект NSURL
!= Nil в дополнение к soundObject.
Вы также можете попробовать [[NSBundle mainBundle] URLForResource:@"sound" ofType:@"mp3"];
и убедиться, что файл скопирован в .app под YourApp.app/Resources/
-Stephen
когда что-то работает на симуляторе, а не на устройстве, первое, что нужно сделать, это перезагрузить устройство и проверить. иногда перезагрузка устройства работала для меня и сэкономила много времени. В противном случае вы можете начать отладку
У меня был звук в симуляторе, но не на устройстве. Он начал работать, когда я установил делегат AVAudioPlayer
Если вы запускаете код на симуляторе iOS 10, он не запрашивает разрешения безопасности, но, если вы используете код на устройстве ios 10, вам нужно добавить ключ разрешения звука в plist. Добавить конфиденциальность - использование микрофона Описание в plist.