2012-06-26 142 views
5

可能重复:
Mute/Silence an iOS device programmatically?关闭设备音量 - iOS设备

我需要以编程方式关闭设备的体积。有谁知道一种方式?

到目前为止,我已经发现,也许我可以使用AudioSessionSetProperty()函数,使用属性“kAudioSessionProperty_CurrentHardwareOutputVolume”, 但此属性仅只读的。所以我不知道这是否会工作:

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

目前已经有应用程式在App商店做这个,例如AutoSilent:

http://itunes.apple.com/nl/app/autosilent/id474777148?mt=8

回答

3

无法与iOS做到这一点。使iOS设备静音的唯一方法是使用硬件开关。您可以detect it并相应地静音您的应用程序,但不能将您的应用程序中的整个设备静音。

+0

我不认为你是对的,因为appstore中有应用程序可以做到这一点......例如, AutoSilent请参阅 http://itunes.apple.com/nl/app/autosilent/id474777148?mt=8 – revolutionary

+0

我想他们使用一些私人的API,这是不允许的。他们如何获得这些应用程序?我不知道。我想他们只是幸运的,因为应用程序提交系统是有点乐透:-) – Adam

0

看到这个问题:How to disable iOS System Sounds

而且这个问题:Mute/Silence an iOS device programmatically?

他们说有,这是可能的,虽然你必须使用一个专用的框架称为天体框架。你可以使用AVSystemController沉默电话,像这样:

[[AVSystemController sharedAVSystemController] setVolumeTo:0 forCategory:@"Ringtone"]; 

使用在您的应用程序专用的框架将导致其被苹果拒绝,所以我不建议使用它。一些人认为,在您的应用中使用私有框架最初可能会被Apple允许(如果他们错过了它),但是当他们意识到您正在使用私有框架时,它很快就会从App Store中删除。

希望这会有所帮助!

+0

我认为必须有一种非私人的方式来做到这一点,因为这些应用程序正在执行的唯一的事情,例如AutoSilent和SilentAlert,是关闭设备音量..... 我不相信苹果可能会错过,当这是这些应用程序的目的。 – revolutionary

+1

他们批准了至少两次假“反恐精英”比赛。所以是的,我认为他们也可能会错过。 – Adam