需要访问 iPhone 使用的默认相机快门声音

Posted

技术标签:

【中文标题】需要访问 iPhone 使用的默认相机快门声音【英文标题】:Need to access the default camera shutter sound used by the iPhone 【发布时间】:2014-04-03 22:13:41 【问题描述】:

现在,当用户按下按钮时,我会播放自定义相机快门声音。

但是,如果可能的话,我宁愿只使用您使用 iPhone 拍照时默认播放的相机快门声音。

有没有办法可以访问和使用默认的 iPhone 相机快门声音?如果是,那么它的实际位置在哪里?

我需要弄清楚它的文件路径,以便我可以将它与下面的代码一起使用,只需更改 pathForResource 的输入:

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"shutter" ofType: @"wav"];

    NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:soundFilePath ];

    self.myAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];

    [self.myAudioPlayer play];

感谢您的帮助。

【问题讨论】:

【参考方案1】:
AudioservicesPlaySystemSound(1108);

基于: Are there any other iOS system sounds available other than 'tock'? 和 http://iphonedevwiki.net/index.php/AudioServices

2016 年 ....

    if #available(iOS 9.0, *) 
        AudioServicesPlaySystemSoundWithCompletion(SystemSoundID(1108), nil)
     else 
        AudioServicesPlaySystemSound(1108)
    

【讨论】:

从 iOS9 开始,AudioServicesPlaySystemSoundWithCompletion 是首选 - AudioServicesPlaySystemSound 的标头 cmets 表明它将被弃用。 请注意,您需要导入 AVKit 才能访问这些方法【参考方案2】:

查看 stevesliva 的回答对我帮助很大。但是,我最终得到了这个:

Unexpected type name 'SystemSoundID': expected expression

...使用这条线...

AudioServicesPlaySystemSoundWithCompletion(SystemSoundID(1108), nil);

所以,使用这段代码让我的应用播放了相机快门噪音:

SystemSoundID soundID = 1108;

AudioServicesPlaySystemSoundWithCompletion(soundID, ^
    AudioServicesDisposeSystemSoundID(soundID);
);

希望这对某人有所帮助。

【讨论】:

那是因为你引用的代码是 Swift。你甚至看过 ObjC/C API 吗?应该是AudioServicesPlaySystemSoundWithCompletion((SystemSoundID)1108, nil); OP 问题在 Obj-C 中。公认的答案是 Swift - 我觉得这很奇怪。我添加了我的评论,希望我的实际 Obj-C 响应对某人有所帮助。 答案在 Obj C 中,并且已经用 Swift 进行了编辑。

以上是关于需要访问 iPhone 使用的默认相机快门声音的主要内容,如果未能解决你的问题,请参考以下文章

V6版如何关闭相机快门声音和截图声音

android静音相机快门声音?

怎么关安卓手机照相机声音

如何在安卓手机上静音相机快门声音

想要获得像在 iphone 中打开相机快门一样的动画

三星手机,安卓系统,怎么关闭照相机声音?