2011-06-11 112 views
0

由於呼入呼叫,可以將呼叫振鈴器切換爲靜音嗎?以編程方式關閉無聲

我可以將手機更改爲正常模式並設置鈴聲的音量,但由於手機之前處於靜音狀態,因此在更改設置後它不會剛剛響起。

我正在做的是,當手機處於靜音狀態,並且我收到一個未接來電時,基於某些條件,我希望手機實際上響鈴。

如上所述,我改變了設置好,所以如果我收到後續的電話振鈴的作品,但初始的呼叫(這觸發了設置的變化)仍然繼續在無聲模式下響鈴...有沒有方式(在我設置振鈴模式後)強制手機再次用新設置「響鈴」?

更新:

我已經設置的鈴聲關閉靜音,並設置使用下面的最大volumne響:

 AudioManager mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE); 

    int origionalVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_RING); 
    int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING); 

    mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
    mAudioManager.setStreamVolume(AudioManager.STREAM_RING, maxVolume, AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND); 

我可以在振鈴實際播放時的日誌中看到,它註銷:

06-13 19:22:33.984: DEBUG/CallNotifier(126): RINGING... (new) 
06-13 19:22:33.984: DEBUG/CallNotifier(126): onNewRingingConnection(): incoming: true state: INCOMING post dial state: NOT_STARTED 
06-13 19:22:34.094: INFO/ActivityManager(59): Start proc android.process.acore for content provider com.android.providers.contacts/.ContactsProvider2: pid=294 uid=10000 gids={3003, 1015} 
06-13 19:22:34.444: INFO/ActivityThread(294): Publishing provider com.android.social: com.android.providers.contacts.SocialProvider 
06-13 19:22:34.494: INFO/ActivityThread(294): Publishing provider applications: com.android.providers.applications.ApplicationsProvider 
06-13 19:22:34.594: WARN/CallNotifier(126): CallerInfo query took too long; manually starting ringer 
06-13 19:22:34.594: WARN/CallNotifier(126): CallerInfo query took too long; falling back to default ringtone 
06-13 19:22:34.594: DEBUG/Ringer(126): ring()... 
06-13 19:22:34.664: INFO/ActivityManager(59): Start proc com.android.settings for broadcast com.android.settings/.widget.SettingsAppWidgetProvider: pid=301 uid=1000 gids={3002, 3001, 3003} 
06-13 19:22:34.684: DEBUG/Ringer(126): mRingHandler: PLAY_RING_ONCE... 
06-13 19:22:34.684: DEBUG/Ringer(126): creating ringtone: content://settings/system/ringtone 
06-13 19:22:34.734: INFO/ActivityManager(59): Starting activity: Intent { act=android.intent.action.MAIN flg=0x10840000 cmp=com.android.phone/.InCallScreen } 
06-13 19:22:35.374: DEBUG/InCallScreen(126): onCreate()... this = [email protected] 
06-13 19:22:35.504: INFO/ActivityThread(294): Publishing provider contacts;com.android.contacts: com.android.providers.contacts.ContactsProvider2 
06-13 19:22:36.184: DEBUG/AudioHardwareInterface(34): setMode(RINGTONE) 

是否有辦法根本手動調用這些函數?

回答

0

您可以考慮何時調用電話,您的應用程序開始播放默認鈴聲。雖然

+0

這是一種可能性,但正如你所說的那樣,我不想那麼做,除非它是最後的手段。如果我這樣做,我可能不得不跟蹤呼叫狀態,並在電話接聽等時停止播放聲音,謝謝你的建議。 – FireEnigmaX 2011-06-11 16:42:10

+0

然而,只是合乎邏輯,我認爲這是唯一的選擇。當系統收到呼叫並將事件交給應用時,我認爲已經設置了通知的方式,因此此呼叫將保持沉默。應用程序正在踢這一切發生。 – yoshi 2012-04-09 20:07:16

0

我認爲你可以製作一個廣播接收器來感應來電,所以在它的onReceive方法中,你可以改變你的電話設置,因此這個設置會在你接到電話後立即生效。

希望這項工作。

0

檢查出AudioManager,它顯示了開發指南如何使用它在您的應用程序中動態更改響鈴類型。