【问题标题】:How come my .aif short sound file will only play on iOS simulator and not on device?为什么我的 .aif 短声音文件只能在 iOS 模拟器上播放,而不能在设备上播放?
【发布时间】:2013-04-04 13:59:17
【问题描述】:

我希望根据按下的按钮在我的 iPhone (iOS 6.1) 上播放声音。

在转换为 aif、caf、wav 和压缩格式后,我无法在设备上听到声音。已检查音量,已重新启动设备,文件名中不包含大写字母。

我阅读了很多关于这个问题的主题,但找不到合适的解决方案,这意味着我的问题要么更复杂,要么很愚蠢——当然很愚蠢。

这是我播放声音的代码:

// Plays sound of given filename
- (void) playSound:(NSString*)name {
    SystemSoundID sound = [self createSoundID:name];
    AudioServicesPlaySystemSound(sound);
    NSLog(@"file played: %@",name);
}

// Creates a playable sound out of filename
-(SystemSoundID) createSoundID:(NSString*) name
{
    NSString *path = [NSString stringWithFormat: @"%@/%@",
                      [[NSBundle mainBundle] resourcePath], name];


    NSURL* filePath = [NSURL fileURLWithPath: path isDirectory: NO];
    SystemSoundID soundID;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID);
    return soundID;
}

【问题讨论】:

    标签: iphone ios objective-c audio


    【解决方案1】:

    如果声音在模拟器上可以正常工作,但在真实设备上却不行,这意味着您应该打开设备的铃声和警报设置。您还应该检查静音按钮是否打开。

    【讨论】:

    • 感谢您的回答。这个已经检查过了,iPhone上的所有其他声音都打开了。
    【解决方案2】:

    问题在于调用 playSound 的方法没有使用 NSTimer 调用。似乎要播放声音,它们必须由应用程序的主线程调用(这似乎是合法的......)。

    所以我修改了应用程序,以便主线程可以调用这些声音,瞧,它也可以在设备上运行。上面的代码是正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 2014-09-17
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多