2010-06-15 12 views
14

Мой mp3 играет код:AVAudioPlayer работает в симуляторе, но не на устройстве

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? Или что может быть проблемой? Я заметил, что как только код звуковой записи начинает работать, я больше не могу регулировать громкость на устройстве, так что, возможно, он блокирует воспроизведение звука ?.


EDIT

Решение, кажется, чтобы поставить это в моем коде. Я положил его в applicationDidFinishLaunching:

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil]; 
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride); 

Первая строка позволяет одновременно воспроизводить и записывать, в то время как другие линии, по-видимому перенаправлять вещи, чтобы сделать громкость громче.

Весь звуковой код - вуду для меня.

+0

Какая часть не работает? –

+0

Воспроизведение звуков не работает, на устройстве. Он работает на симуляторе. – cannyboy

ответ

1

Вот быстрая, простая вещь, чтобы попробовать:

я столкнулся с подобной проблемой с изображениями, а также звуками. IPhone чувствителен к крышке, даже расширения файлов, но симулятор не работает. Проверьте объект NSURL! = Nil в дополнение к soundObject.

Вы также можете попробовать [[NSBundle mainBundle] URLForResource:@"sound" ofType:@"mp3"]; и убедитесь, что файл копируется в .app под YourApp.app/Resources/

-Stephen

+0

Это не проблема. – cannyboy

2

Некоторые кода я знаю работы:

- (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's 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]; 

} 
0

когда-то работает на симуляторе, а не на устройстве, первое, что нужно сделать, это перезагрузить устройство и проверить его. иногда перезагрузка устройства работала для меня и сэкономила много времени. В противном случае вы можете начать отладку

10

Убедитесь, что ваш iPhone «Ringer Button» не показывает цвет красный.

+0

Как глупо ... и все же как верно! Это была моя проблема :) –

+0

То же самое и теперь я чувствую себя полным идиотом! : D – Shiri

+0

OH, боковой переключатель, который подавляет звук телефона. BLEH !! lol –

0

У меня был звук в симуляторе, но не на устройстве. Он начал работать, когда я установил делегат AVAudioPlayer.

0

Если вы используете код на симуляторе iOS 10, он не запрашивает разрешения безопасности, но если вы используете код на устройстве ios 10, вам нужно добавить ключ разрешения звука в plist. Добавить конфиденциальность - использование микрофона Описание в plist.

Смежные вопросы