0

我正在使用 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);
    }

这是我使用的代码。在我安装果冻豆之前它工作得很好,现在我注意到它只在用户接到电话时才打开扬声器,但如果他开始打电话,它什么也不做

4

1 回答 1

1

找到了。

TelephonyManager 似乎只适用于来电。

对于传出呼叫,使用 IntentFilter 的意图 android.intent.action.NEW_OUTGOING_CALL 字符串参数创建一个广播侦听器,并且不要忘记在 AndroidMenifest 中授予 PROCESS_OUTGOING_CALLS 权限。这将起作用。每当有传出呼叫时,将在广播侦听器中调用 onReceive。

于 2013-02-20T15:42:38.723 回答