2

我有一个简短的方法,它使用 AudioToolbox/AudioServices 库播放音频通知(为简洁起见,我删除了大部分功能代码):

- (IBAction)thatWasEasy:(id)sender {

    NSBundle *mainBundle = [NSBundle mainBundle];
    NSString *filePath = [mainBundle pathForResource:@"easy" ofType:@"mp3"];
    NSURL *aFileURL = [NSURL fileURLWithPath:filePath isDirectory:NO];

    SystemSoundID soundID;
    AudioServicesCreateSystemSoundID((__bridge_retained CFURLRef)aFileURL, &soundID) ;
    AudioServicesPlaySystemSound(soundID);     
}

音频在模拟器以及 iPad 1 和 iPad 2 设备上正常播放,但在 iPad 3(Verizon LTE 版本)上听不到声音。我已经彻底检查了设备的声音设置,并将音频文件类型转换为 wav 和 caf,行为没有差异。

关于更深入地解决此问题的任何建议?不幸的是,我没有另一台 iPad 3 可供比较。感谢帮助!

4

2 回答 2

0

弄清楚了。当您转到 [设置] 并在 [常规] 选项卡下选择 [声音] 时,您可以验证您的铃声和警报音量是否高于零,并且当移动滑块时,设备将在新设置的水平上响铃。此外,您会注意到您的所有特定音调都在下面的列表中启用。这就是检查设备设置时让我失望的原因。我启动了 YouTube 和其他应用程序,并且能够很好地播放声音。

直到我和另一个人(他更了解产品)交谈后我才意识到,还有另一种方法可以使系统声音静音。通过按圆形按钮两次,屏幕底部会显示一个图标栏。如果用手指向右拖动图标,则会显示扬声器图标。由于某种原因,这碰巧被静音了……大概是在我最近执行系统还原之后。点按它即可取消静音并让您重新开始工作。不知道为什么 Apple 会这样设计它,但如果它可以在设备设置下访问,它会很有帮助(并为我节省了几个小时的修补时间)。

于 2012-09-04T17:22:45.680 回答
0

我不认为您可以使用 AudioServicesPlaySystemSound AudioServicesPlaySystemSound 苹果文档在设备上播放 mp3 文件

-(void)playAif:(NSString *)filename {
//  NSLog(@"play: %@", filename);

SystemSoundID soundID;
NSString *path = [[NSBundle mainBundle]
                  pathForResource:filename ofType:@"aif"];    


if (path) { // test for path, to guard against crashes

    UInt32 sessionCategory = kAudioSessionCategory_AmbientSound;    // 1

    AudioSessionSetProperty (
                             kAudioSessionProperty_AudioCategory,                        // 2
                             sizeof (sessionCategory),                                   // 3
                             &sessionCategory                                            // 4
                             );

    AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID);
    AudioServicesPlaySystemSound (soundID);

}
}
于 2012-09-04T17:25:05.430 回答