2010-01-14 2 views
2

Есть несколько коротких звуковых эффектов образцов, в которых играют просто отлично в эмуляторе, но совсем нет в реальном iPhone 3GS. Вот код, примерно как-от компании Apple SysSound образца:Звук, работающий в эмуляторе, а не в реальном iPhone

CFBundleRef mb = CFBundleGetMainBundle(); 
CFURLRef soundFileURLRef = CFBundleCopyResourceURL 
    (mb, CFSTR("mySound"), CFSTR ("caf"), NULL); 

SystemSoundID sid; 
AudioServicesCreateSystemSoundID(soundFileURLRef, &sid); 
AudioServicesPlaySystemSound(sid); 

При использовании iPhone, я могу услышать keyclicks и музыку из ITunes (не пытается использовать в то же время, как играть мой звук) - но не может услышать мой звук вообще. Vibra работает нормально, поэтому даже Framework следует настроить правильно.

Пробовал даже образец кода SoundEffect.h/m, без изменений. Используются те же звуковые файлы, но не должны CAF быть в порядке, особенно когда он играет в эмуляторе?

Что я могу попробовать дальше?

+0

Извините, если я заявляю очевидное, но аппаратный переключатель на вашем iPhone отключен? – Michael

+0

Когда я сказал «Я слышу keyclicks и музыку из iTunes», это означает, что iPhone находится в не-тихом режиме. Хорошо проверить, так или иначе ... – JOM

ответ

2

Попробуйте конвертировать в другой формат, такой как wav или mp3, а затем снова играть. Если вы хотите использовать кафе, убедитесь, что вы правильно форматировать кафе в Terminal.app:

afconvert -f caff -d ima4 mysound.wav 
+0

Скорее всего, я переделал неправильно ... Все еще не могу понять, почему эмулятор будет воспроизводить эти звуки, а реальное устройство - нет. Эмулятор должен эмулировать реальное устройство, верно? Это цель эмулятора! – JOM

+1

неправильный. Симулятор не является эмулятором. Он не ограничивает скорость вашей сети, скорость процессора или что-то еще. Это просто визуальный инструмент, чтобы увидеть, как приложение будет выглядеть и взаимодействовать с прикосновениями. Вероятно, потому, что на вашем компьютере есть много кодеков на нем, чем на избранных, которые были отправлены с iphone. – coneybeare

+0

Спасибо, это сработало для меня. –

0

вид длинного выстрела, но помните, что файловая система телефона чувствительна к регистру, в то время как Mac обычно нет. Дважды проверьте имя вашего файла

+0

Я думал, что это * основанный на nix, будет чувствительным к регистру :) – willcodejavaforfood

+0

Можно было бы так подумать, но это было бы слишком легко. Если у вас есть файл «Foo» и напишите код, чтобы открыть его как «foo», он работает в симуляторе, не работает на устройстве. – justin

+0

Прояснение немного – justin

0

Найдено простое решение: использование AIF звуковых файлов:

  • Нажмите Itunes> Настройки
  • Нажмите на вкладку
  • Нажмите кнопку «Параметры импорта» «Общие»
  • В «Импорт Использование» выпадающего меню выберите «AIFF кодировщик»
  • Сохраните изменения
  • Выберите ваши звуковые файлы и выберите «Создать AIFF версия»

Вот код, я использую вместе с SoundEffect.h и SoundEffect.m от компании Apple образца BubbleLevel:

NSBundle *mainBundle = [NSBundle mainBundle]; 
buzzerSound = [[SoundEffect alloc] initWithContentsOfFile:[mainBundle pathForResource:@"buzzerSound" ofType:@"aif"]]; 
[buzzerSound play]; 

Теперь же код - и звуковые эффекты - работа в обоих эмулятора а nd аппаратное обеспечение. Btw не забудьте вернуть исходные настройки iTunes!

2

Как и в случае с сайдтотом - у меня была одна и та же проблема, и я потратил, вероятно, около часа на конвертацию файлов в правильный формат и т. Д. Однако проблема заключалась в том, что на iPad был отключен «немой» переключатель. Так что даже если громкость была поднята, и я слышал другие звуки на iPad, потому что переключатель отключения звука был включен, он не воспроизводил системные звуки.

Чтобы добавить к путанице, это приложение использует текст в речь, а громкость, исходящая от транскрипции, была прекрасной, это были только звуки, исходящие от AudioServicesPlaySystemSound(), которые я не мог слышать.

+0

Хороший вопрос, сделал то же самое пару раз :) – JOM

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