2012-06-26 195 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