使用PhoneStateListener设置扬声器

时间:2013-02-20 15:34:29

标签: java android

我正在使用PhoneStateListener,因此当用户接听电话或开始通话时,扬声器将立即开启。

    PhoneStateListener phoneStateListener = new PhoneStateListener()
    {
        @Override
        public void onCallStateChanged(int state, String incomingNumber)
        {
            if (state == TelephonyManager.CALL_STATE_RINGING) 
            {


            } else if(state == TelephonyManager.CALL_STATE_IDLE)
            {

                AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

                audioManager.setSpeakerphoneOn(false);

            } else if(state == TelephonyManager.CALL_STATE_OFFHOOK)
            {

                AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
                audioManager.setSpeakerphoneOn(true);
            }
            super.onCallStateChanged(state, incomingNumber);
        }
    };

    TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

    if(mgr != null) 
    {
        mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
    }

这是我使用的代码。它工作正常,直到我安装了果冻豆,现在我注意到它只在用户接到电话时设置扬声器,但如果他开始呼叫它什么都不做

1 个答案:

答案 0 :(得分:1)

找到它。

TelephonyManager似乎只适用于来电。

对于传出呼叫,为IntentFilter创建一个具有意图android.intent.action.NEW_OUTGOING_CALL字符串参数的广播侦听器,并且不要忘记将AndroidMenifest中的权限授予PROCESS_OUTGOING_CALLS。这会奏效。只要有拨出呼叫,就会在广播监听器中调用onReceive。