【问题标题】:Mute/Silence an iOS device programmatically?以编程方式使 iOS 设备静音/静音?
【发布时间】:2012-05-09 10:08:19
【问题描述】:

我正在尝试从我的应用程序中将设备的铃声静音,但由于某种原因,使用 AVSystemController 就像在这个答案 (How to disable iOS System Sounds) 不会让我让设备一直静音.. 它下降到1 小节的音量,但并非完全静音。

我知道这可以做到,可能使用像 AVSystemController 这样的私有 API,并且我知道如果用户希望应用程序具有这种功能,Apple 仍然会批准该应用程序(因为我已经找到了 2 个应用程序在 App Store 中,它以编程方式使设备静音,无需越狱或类似的东西)。

这些应用实际上做得更好——它们实际上切换了实际静音,而不仅仅是将音量降低到零。

有人知道这是怎么做的吗?

任何帮助将不胜感激!谢谢!

【问题讨论】:

  • 这听起来很像你在尝试什么,大多数用户不喜欢未经他们同意就被应用程序完成。我向史蒂夫祈祷这是不可行的。
  • 我正在尝试做的是在您参加会议时自动使您的设备静音(请不要窃取这个想法)。用户会喜欢它,请不要徒劳地使用史蒂夫的名字。
  • 嗯,@Roshit,所以你是说我需要提交一个请求才能公开该 API?我认为这不是一个好主意,因为它确实为恶作剧打开了大门,但我相信即使它使用私有 API,Apple 也会批准我的应用程序......请问有人有实际有用的答案吗?谢谢。
  • 如果您有任何解决方案,请在此处分享,以便对其他人也有帮助。

标签: iphone ios ios5 mute avsystemcontroller


【解决方案1】:

这对我有用,我有一个按钮可以在游戏中打开和关闭声音。当我想要声音时,我将浮动设置为 10,当我想要关闭声音时,我将浮动设置为 0。

float value = 0.0f;
AudioSessionSetProperty(kAudioSessionProperty_CurrentHardwareOutputVolume, sizeof(float), &value);

更新:

另一个仍然适用于 iOS 9.1 的选项

float vol = [[AVAudioSession sharedInstance] outputVolume];
NSLog(@"output volume: %1.2f dB", 20.f*log10f(vol+FLT_MIN));

对于斯威夫特:

let volume = AVAudioSession.sharedInstance().outputVolume   
print("Output volume: \(volume)")

更新答案来源:Get System Volume iOS

【讨论】:

  • 在 iOS 8x 中已弃用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
相关资源
最近更新 更多