2012-09-01 89 views
3

我已經到處尋找可以找到答案的地方,並且在Android中有大量關於音頻的問題,但沒有一個我可以找到該說話關於ICS中的新設置。Android ICS控制靜音模式關閉,振動或靜音

我的應用程序有一個功能,用戶可以按下一個按鈕,手機的振鈴器將會保持沉默,並且不會振動。這裏是我的代碼,到現在爲止已經工作得很好:

 mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); 
     mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
     mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0); 

現在發生的事情是,當用戶按下按鈕,音量變爲0還在,但手機,特別是銀河S3,有短暫振動。然後在設置 - >聲音中,靜音模式從關閉變爲振動。所以每當發生某些事情時,它仍然會有那麼短的振動通知。我還沒有足夠的時間去測試,以便知道具體發生了什麼,以便像這樣振動,但這不是問題的關鍵。

我的問題是我們如何控制關閉,振動和靜音的ICS靜音模式設置?我希望能夠在它們按下該按鈕時將其設置爲靜音,然後當它們再次打開時再返回到關閉或任何它們設置的位置。我嘗試使用mAudioManager.setStreamMute方法,但這不是所需的效果,也不會更改靜默模式的設置。

在此先感謝您的幫助,非常感謝!

保羅

+2

'mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);'將設置靜音模式。我認爲這條線將完成這項工作。 – iTurki

+1

我刪除了我的評論,它沒有工作,因爲其他因素似乎涉及!我認爲它確實有用,但我肯定會留下另一條評論。我將簡化我的代碼,這樣我就可以輕鬆檢查,因爲現在對於這種設置確實很有用。非常感謝!! – zpert

回答

4

好,我想通了!!!! +1 iturki的幫助,謝謝!我已經嘗試了RINGER_MODE_SILENT,但並不認爲它有效。它沒有奏效,但那是因爲它只是解決方案的一半。雖然需要!

這是它每次都爲我工作的方式:

我發現,在任何設置AudioManager.RINGER_MODE_NORMAL或AudioManager.RINGER_MODE_SILENT,我還在接收通知的振動。這就是爲什麼我評論說它不起作用。進一步的測試後,我發現,這是不是導致這個RINGER_MODE設置,其實它是這行代碼:

mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0); 

出於某種原因,未知對我來說,與正常或無聲要麼RINGER_MODE設置,當以這種方式將STREAM_RING音量設置爲0時,它會將Settings-> Sound中的Silent Mode設置更改爲Vibrate。

解決方案:

mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); 
    mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); 

我不得不刪除STREAM_RING設置,只是息事寧人。現在,當我將其設置爲RINGER_MODE_SILENT並將STREAM_RING獨立時,不會再有惱人的半秒振動!一個額外的說明,我沒有將VibrateSetting設置爲OFF進行測試,並且它仍然有效,但是由於其他原因,我將其留在了我的應用程序中。

重要提示:我不知道從RINGER_MODE_NORMAL到RINGER_MODE_SILENT的這種變化將如何影響以前版本的Android,因此請小心。如果有人確切知道這個改變會影響以前的版本,請隨時告訴我們!

再次感謝iturki的幫助!

+1

不客氣。並感謝分享解決方案:-) – iTurki

+1

很難找到這個解決方案,但這正是我期待的。此代碼也適用於以前的Android版本 - 我使用2.3.5進行了檢查。 – Remi

相關問題