1

嘿,我想在通话过程中按 1 或 2。例如,当您致电呼叫中心并希望按 1 键去销售部门而不用手单击此号码时,但我想在通话期间单击它有问题。

现在我可以调用按键并处理呼叫事件,但它不起作用。

PhoneStateListener myCallListener = new PhoneStateListener(){
            @Override
            public void onCallStateChanged(int state, String incomingNumber) {
            // the variable incomingNumber holds the number calling.
            // the state variable holds the state of the phone (Ringing, Idle ...)
              switch (state) {
              case TelephonyManager.CALL_STATE_RINGING:
                  Log.e("Incoming_call", incomingNumber+" is calling me ...");
                  break;
                case TelephonyManager.CALL_STATE_OFFHOOK:
                    KeyEvent eventDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_1);
                    dispatchKeyEvent(eventDown);
                  // your logic here, right now the incoming caller is logged.
                  Log.e("Out Call", incomingNumber+" is calling me ...");
                break;
                default:
                break;
            }
            super.onCallStateChanged(state, incomingNumber);
           }
        };
        TelephonyManager phoneManager = (TelephonyManager) 
        this.getSystemService(TELEPHONY_SERVICE);
        phoneManager.listen(myCallListener,
        PhoneStateListener.LISTEN_CALL_STATE);
4

2 回答 2

1

可以以编程方式拨打电话,并根据需要添加 DTMF 音和暂停:

Intent i = new Intent("android.intent.action.CALL",Uri.parse("tel://" + number + ',' + dtmf));

无法在通话过程中决定将 DTMF 音调插入音频上行链路,尽管这是一项要求的功能

于 2012-05-18T16:56:08.340 回答
0

您的代码将为您的活动生成按键事件,而不是为电话应用程序生成按键事件。

据我所知,不可能实现你想要的,但我可能是错的。但是,如果可能的话,这是一个潜在的问题,因为任何应用程序都可以在通话期间发送任何按键,并在用户不知情的情况下触发不良事件。

于 2012-05-18T16:48:27.440 回答