由于呼入呼叫,可以将呼叫振铃器切换为静音吗?以编程方式关闭无声
我可以将手机更改为正常模式并设置铃声的音量,但由于手机之前处于静音状态,因此在更改设置后它不会刚刚响起。
我正在做的是,当手机处于静音状态,并且我收到一个未接来电时,基于某些条件,我希望手机实际上响铃。
如上所述,我改变了设置好,所以如果我收到后续的电话振铃的作品,但初始的呼叫(这触发了设置的变化)仍然继续在无声模式下响铃...有没有方式(在我设置振铃模式后)强制手机再次用新设置“响铃”?
更新:
我已经设置的铃声关闭静音,并设置使用下面的最大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)
是否有办法根本手动调用这些函数?
这是一种可能性,但正如你所说的那样,我不想那么做,除非它是最后的手段。如果我这样做,我可能不得不跟踪呼叫状态,并在电话接听等时停止播放声音,谢谢你的建议。 – FireEnigmaX 2011-06-11 16:42:10
然而,只是合乎逻辑,我认为这是唯一的选择。当系统收到呼叫并将事件交给应用时,我认为已经设置了通知的方式,因此此呼叫将保持沉默。应用程序正在踢这一切发生。 – yoshi 2012-04-09 20:07:16