声音在模拟器中工作,而不是在iphone 3GS中

时间:2011-07-24 06:00:30

标签: iphone objective-c audio ios-simulator avaudioplayer

我在网站上搜索并尝试了所有可能的选项,以使声音在我的iPhone应用程序中工作,该应用程序可在模拟器上运行。

具体来说,我已经尝试过这里建议的内容: Sound working in emulator, not in real iPhone

此外,我尝试在我的应用程序中运行“.wav”和“.caf”文件,并使用以下代码:

CFURLRef soundFileURLRef = NULL;
soundFileURLRef = CFBundleCopyResourceURL (CFBundleGetMainBundle (),
    CFSTR ("applause"),CFSTR ("wav"),NULL );
NSLog(@"Clap Path: %s", CFURLGetString(soundFileURLRef));
AudioServicesCreateSystemSoundID (soundFileURLRef,&clappingFileID_ );

AudioServicesPlaySystemSound (clappingFileID_);

根据其他建议,我还将代码更改为以下内容:

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *clapPath = [documentsDir 
                       stringByAppendingPathComponent: @"applause.wav"];
// Put down default db if it doesn't already exist
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:clapPath]) {
    NSString *defaultClapPath = [[NSBundle mainBundle] 
                                  pathForResource:@"applause" ofType:@"wav"];
    if (defaultClapPath) {
        [fileManager copyItemAtPath:defaultClapPath toPath:clapPath error:NULL];
    }
}


// NSString *clapPath = [[NSBundle mainBundle] pathForResource:@"applause" ofType:@"caf"];
CFURLRef clapURL = (CFURLRef ) [NSURL fileURLWithPath:clapPath];
AudioServicesCreateSystemSoundID (clapURL, &clappingFileID_);

NSLog(@"calling initSounds..");
AudioServicesPlaySystemSound (clappingFileID_);

以上代码均适用于模拟器,但不适用于iphone。

  • 还通过执行getInfo检查.wav文件属性。它说: 比特率:176 kbps 采样率:11.025 kHz 样本大小:16位 大小62 Kb

  • 还尝试通过itunes添加它直接在应用程序上下文中运行iPhone上的.wav文件,这样可以正常工作。这表明iPhone上的编解码器存在于给定的.wav文件中并且没有损坏。

我的手机操作系统是4.1和iPhone 3GS。我编译了OS 3.2或更高版本的应用程序,直到4.2

2 个答案:

答案 0 :(得分:1)

请确认iPhone上的声音静音开关处于关闭位置。

答案 1 :(得分:0)

请尝试以下操作:在设备上,进入设置并调高音量 - > Ringer and Alerts

然后重试您的测试。