0

音声の一時停止や再生などを行うために、Android で着信通話と発信通話の開始と終了を検出する信頼できる方法はありますか。

私は次のことをしました:

    telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
            callEventListener = new PhoneStateListener(){

                @Override
                public void onCallStateChanged(int state, String incomingNumber) {
                    super.onCallStateChanged(state, incomingNumber);
                    if (state == TelephonyManager.CALL_STATE_IDLE){
                        //....
                    }
                    else if (state == TelephonyManager.CALL_STATE_RINGING){
                        //....
                    }
                }
            };
telephonyManager.listen(callEventListener, PhoneStateListener.LISTEN_CALL_STATE);

これは着信通話では機能するようですが、発信通話では、通話が終了したときではなく、他の人が電話に出たときに CALL_STATE_IDLE を取得します。私は何かばかげたことをしているに違いないと思いますか、それともチェックできる何かを見逃していますか?

4

1 に答える 1

1

発信通話が開始されたときに状態の更新を取得しないという点で、あなたは正しいです。

インテント ブロードキャストACTION_NEW_OUTGOING_CALLにフックする必要があります。これが順序付けられたブロードキャストであるという事実を理解するのに役立つかもしれないAndroid 開発者ブログです。そして、このブロードキャストをセットアップして使用する方法の簡単な例を含むブログ投稿があります。

于 2011-07-13T02:29:19.033 に答える