Потребность знать это так, чтобы я мог отправить DTMF и это будет моим вторым вопросом!
Вы можете использовать PhoneStateLisenter , чтобы отслеживать изменения в состоянии вызова.
Итак, вы слушаете изменение LISTEN_CALL_STATE .
С помощью метода onCallStateChanged .
Таким образом, когда состояние меняется с ЗВОНОК на ТРЯК, вы знаете, что телефонный звонок был подключен.
Тот же принцип применяется для ОТДЕЛЬНОГО ТРЯКА на ОТКРЫТОЙ трубку в вашей ситуации, прислушайтесь к изменению с ЗВОНОК на ОТКЛОНКУ, и вы узнаете, что подключен к звонку.
Вы также можете изучить намерение ACTION_NEW_OUTGOING_CALL, Android позволяет вам «перехватить» это при наборе номера, и вы можете получить обратно код результата, указывающий, был ли вызов соединен или нет.
Для тонов DTMF загляните в ToneGenerator, это позволяет вам создавать тоны DTMF, и .startTone () должен позволить вам проигрывать тон DTMF.
Однако вы не можете отправлять сигналы DTMF по восходящей линии связи.