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 に答える