首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用系统声音播放声音

使用系统声音播放声音
EN

Stack Overflow用户
提问于 2009-07-19 01:11:36
回答 3查看 2.7K关注 0票数 1

代码如下:

代码语言:javascript
复制
-(void)stop
{
    NSLog(@"Disposing Sounds");
    AudioServicesDisposeSystemSoundID (soundID);
    //AudioServicesRemoveSystemSoundCompletion (soundID);
}

static void completionCallback (SystemSoundID  mySSID, void* myself) {
    NSLog(@"completion Callback");
}
- (void) playall: (id) sender {

    [self stop];

    AudioServicesAddSystemSoundCompletion (soundID,NULL,NULL,
     completionCallback,
     (void*) self);


    OSStatus err = kAudioServicesNoError;
    NSString *aiffPath = [[NSBundle mainBundle] pathForResource:@"slide1" ofType:@"m4a"];
    NSURL *aiffURL = [NSURL fileURLWithPath:aiffPath];
    err = AudioServicesCreateSystemSoundID((CFURLRef) aiffURL, &soundID);
    AudioServicesPlaySystemSound (soundID);
    NSLog(@"Done Playing");
}

输出:

代码语言:javascript
复制
Disposing Sounds
Done Playing

实际上,根本不会播放任何声音,也不会调用完成回调。你知道这里会出什么问题吗?我想在播放当前声音之前停止任何以前的声音。

EN

回答 3

Stack Overflow用户

发布于 2010-06-06 09:01:46

AFAIK,仅支持.caf、.aif或.wav文件:

要播放您自己的声音,请将声音文件添加到应用程序包中;声音文件必须符合以下要求:

  • 必须是.caf、.aif或.wav文件。
  • 文件中的音频数据必须是PCM或IMA/ADPCM (IMA4)格式。
  • 文件的音频持续时间必须少于30秒。

Audio & Video Coding How-To's

票数 1
EN

Stack Overflow用户

发布于 2009-07-19 01:14:59

err包含什么?由此,您应该能够推断出问题所在。

票数 0
EN

Stack Overflow用户

发布于 2012-07-04 21:17:07

您可以使用AudioToolBox框架来实现以下功能:

代码语言:javascript
复制
CFBundleRef mainbundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef = CFBundleCopyResourceURL(mainbundle, CFSTR("tap"), CFSTR("aif"), NULL);
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundFileObject);
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
AudioServicesPlaySystemSound(1100);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1149029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档