2009-08-04 6 views
1

Я пишу приложение, и его часть записывает и воспроизводит звук с использованием классов AVAudioRecorder и AVAudioPlayer. Я установил звуковой файл, как показано ниже.Звук, не работающий в устройстве

NSString *resourcePath = [[NSBundle mainBundle] resourcePath]; 
resourcePath = [resourcePath stringByAppendingString:@"/sound.caf"];  
self.soundFileURL = [NSURL fileURLWithPath:resourcePath]; 

Когда я запустить приложение в симуляторе, он работает fine.However, когда я загрузить приложение в устройство не work.Does Кто-нибудь есть какие-либо идеи, что может быть проблема.


Hi coob. Я попытался с вашим ответом. Но никакого звука в устройстве. Он работает в симуляторе. Когда я тестировал в устройстве распределения, я получил сообщение о сбое «неизвестный ядро ​​[0]: ОШИБКА: сброс AMC [нефатальная ошибка]: не удалось заблокировать БСУ«

ответ

1

Я не думаю, что вы можете написать в ресурсPath on устройство, оно защищено. Найти каталог документов в App и написать где-то есть:

NSArray *filePaths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *recordingDirectory = [filePaths objectAtIndex: 0]; 
NSString *resourcePath = [recordingDirectory stringByAppendingString:@"/sound.caf"]; 
self.soundFileURL = [NSURL fileURLWithPath:resourcePath]; 
0

Возможно ли, что вы сделали то же самое, что я сделал в первый раз, когда я пытался получить звук работать на iPhone? Звук отключен?

Другая возможность:

Я обнаружил, что имена файлов в пучке чувствительны к регистру на устройстве, но не в симуляторе. (Или более чувствительный к регистру - я не экспериментировал с тем, что работает на каждом из них.) Поэтому, если в файле неправильный случай, он может просто проскальзывать на симуляторе, но возвращать нуль вместо файла, когда он работает на устройстве.

Я знаю, это звучит странно, но я только что подтвердил это в своем собственном проекте. Попробуйте взять файл, который вы знаете, загрузите правильно, измените регистр имени файла и посмотрите, как он работает на устройстве. - пояснение - измените случай имени, по которому вы извлекаете файл, чтобы он больше не соответствовал имени файла внутри пакета.

Это не значит, что это ваша проблема, но, тем не менее, нужно следить.

+0

Пробовал с вышеуказанным решением. Тогда и то же самое случается. Работает в симуляторе и без звука в устройстве. Любые другие альтернативы? – diana

+0

Значит, вы говорите, что вы проверили регистр (заглавные буквы) имен файлов, чтобы убедиться, что то, что вы просите, совпадает с тем, что находится в комплекте? (Я предполагаю, что ответ «да», но я просто хочу убедиться.) – Amagrammer

0

Я только что просмотрел некоторые из моих кодов. Согласование ваших намерений, я придумываю:

NSString *soundName = @"sound"; // without extension -- mimicing your naming 
NSString *resourcePath = [[NSBundle mainBundle] pathForResource: soundName ofType: @"caf"]] 
self.soundFileURL = [NSURL fileURLWithPath:resourcePath]; 

Это работает?

0

Убедитесь, что ваше устройство не находится в режиме «Без звука». Короткие звуки не работают в бесшумном режиме.

0

У меня была такая же проблема, я добавляю Audiosession, тогда она отлично работает.

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 

Надеюсь, что это сработает.

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