代码之家  ›  专栏  ›  技术社区  ›  JOM agenthunt

声音在模拟器中工作,而不是在真正的iPhone中

  •  2
  • JOM agenthunt  · 技术社区  · 14 年前

    寥寥无几 音响效果 示例,播放 仿真器没问题,但在真正的iphone里根本没有。 3GS。以下是来自Apple SyssSound示例的代码:

    CFBundleRef mb = CFBundleGetMainBundle ();
    CFURLRef soundFileURLRef = CFBundleCopyResourceURL
        (mb, CFSTR("mySound"), CFSTR ("caf"), NULL);
    
    SystemSoundID sid;
    AudioServicesCreateSystemSoundID(soundFileURLRef, &sid);
    AudioServicesPlaySystemSound(sid);
    

    使用iPhone时,我可以听到来自iTunes的按键声和音乐(不是在播放声音的同时使用),但根本听不到我的声音。Vibra工作正常,所以应该正确设置框架。

    甚至尝试了soundeffect.h/m示例代码,没有更改。使用了相同的声音文件,但CAF不应该是正常的,特别是当它在模拟器中播放时?

    下一步我可以尝试什么?

    4 回复  |  直到 12 年前
        1
  •  2
  •   coneybeare    14 年前

    尝试转换为其他格式,如wav或mp3,然后重新播放。如果要使用CAF,请确保在terminal.app中正确格式化CAF:

    afconvert -f caff -d ima4 mysound.wav
    
        2
  •  2
  •   TheJerkMan24    12 年前

    就像旁注一样,我也遇到了同样的问题,大概花了将近一个小时的时间将文件转换成正确的格式,等等。但问题在于iPad上的“静音”开关。所以即使音量调大了,我也能在iPad上听到其他声音,因为静音开关打开了,它也不能播放系统声音。

    更令人困惑的是,这个应用程序使用文本到语音转换,而抄写出来的音量非常好,只是声音来自 AudioServicesPlaySystemSound() 我听不见。

        3
  •  0
  •   justin    14 年前

    有点长,但请记住,手机的文件系统区分大小写,而Mac通常不区分大小写。请仔细检查您的文件名。

        4
  •  0
  •   JOM agenthunt    14 年前

    找到了一个更简单的解决方案: 使用AIF声音文件 :

    • 单击iTunes>首选项
    • 单击“常规”选项卡
    • 点击“导入设置”按钮
    • 在“使用导入”下拉列表中,选择“AIFF编码器”
    • 保存更改
    • 选择声音文件并选择“创建AIFF版本”

    这是我正在使用的代码,连同 音效 音响效果 苹果样品 BubbleLevel :

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

    现在相同的代码和声音效果- 在模拟器和硬件中工作 . 顺便说一句,别忘了切换回原来的iTunes设置!