Android - PhoneStateListener onCallStateChanged()不起作用

时间:2016-12-08 06:47:28

标签: android android-notifications phone-call phone-state-listener

我希望实现onCallStateChanged()的{​​{1}}并使用它的功能在收到来电时更改音频设置。

PhoneStateListener

如果启用了选项1和选项3,我想要通知通知,但许多新公司只提供一个通知和通话选项。 如果选项1和选项3打开,我已将设备设置为静音模式,但每当收到呼叫时,我希望我的设备响铃。因此,在private final class CallStateListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, String incomingNumber) { Utils.log("CallStateListener"); switch (state) { case TelephonyManager.CALL_STATE_IDLE: Utils.log("Idle"); break; case TelephonyManager.CALL_STATE_OFFHOOK: Utils.log("OFFHOOK"); break; case TelephonyManager.CALL_STATE_RINGING: SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); if(prefs.getBoolean(Constants.PREF_OPTION_1, false)){ final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); int maxStreamValue = audioManager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION); int volumeLevel = prefs.getInt(Constants.PREF_VOLUME_LEVEL, Constants.PREF_VOLUME_LEVEL_DEFAULT); int volume = (int) Math.ceil(maxStreamValue * (volumeLevel / 100.0)); if(prefs.getBoolean(Constants.PREF_OPTION_3, false)){ Utils.log("Option3 true ringing"); audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); } Utils.changeNotificationVolume(audioManager, volume); Utils.log("RINGING"); } break; } callState = state; } } 中,我的代码可以关闭静音模式并振铃设备。

这件事只适用于某个时候。在尝试了很多设备之后,我发现通常这个东西并不适用于那些滞后很多(非常慢)的手机。 我认为这是因为如果在移动开始响铃这项工作之前改变音频设置,如果没有,即使设置被更改,这也不起作用。我对吗?有没有解决这个问题的方法?有没有办法延迟Android设备的响铃?或者我可以做些什么来让它每次都有效吗?

0 个答案:

没有答案