Звук не работает в устройстве - PullRequest
1 голос
/ 04 августа 2009

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

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

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


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

Ответы [ 5 ]

1 голос
/ 04 августа 2009

Не думаю, что вы можете писать в resourcePath на устройстве, оно защищено. Найдите каталог документов приложения и напишите где-нибудь там:

NSArray *filePaths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *recordingDirectory = [filePaths objectAtIndex: 0];
NSString *resourcePath = [recordingDirectory stringByAppendingString:@"/sound.caf"];
self.soundFileURL = [NSURL fileURLWithPath:resourcePath];
0 голосов
/ 25 августа 2012

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

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

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

0 голосов
/ 24 октября 2009

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

0 голосов
/ 05 августа 2009

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

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

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

0 голосов
/ 05 августа 2009

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...