2012-06-14 2 views
2

В моей разработке приложений мне нужно сделать вибрацию при подключении исходящего вызова, но я не могу получить состояние ответа на вызов. Я прочитал некоторую тему по этому вопросу, например: Outgoing call statusКак подключиться к исходящему вызову

Но на самом деле эти вопросы не получили правильного ответа. Использование BroadcastReceiver может принимать только холостые, offhook, звонящие состояния, но не активное состояние.

Активное состояние, определенное в Call.java во внутренней структуре, я понятия не имею, чтобы получить это состояние. Я использовал метод отражения, почти такой же, как https://stackoverflow.com/questions/5652660/accessing-callmanager-in-android, но не удалось.

ответ

0

Я никогда не пробовал с исходящими звонками, но с входящими вызовами, которые вы можете играть с ТРЕХ ГОСУДАРСТВАМИ, о которых вы упоминали.

  1. STATE_RINGING: звонок звонит.
  2. STATE_OFF_HOOK: если предыдущее состояние было RINGING, вызов был подключен.
  3. STATE_IDLE: если предыдущее состояние было RINGING: Call reject. Если предыдущее состояние было отключено (OFF_HOOK), а затем отключено (то есть завершено).

У меня есть код для этой реализации для входящих вызовов. Поскольку вы упомянули, что вы также можете получить доступ к этим состояниям в исходящих звонках, я думаю, что это также должно работать и для исходящих вызовов. Если вы хотите, я могу опубликовать свой код.

+1

Спасибо за ваш ответ. Исходящий вызов отличается от входящего вызова, STATE_OFF_HOOK не означает состояние соединения. В структуре есть 9 состояний, определенных в Call.java: IDLE, ACTIVE, HOLDING, DIALING, ALERTING, INCOMING, WAITING, DISCONNECTED, DISCONNECTING, на самом деле мне нужно состояние ACTIVE, но я не могу. – littlestone

+0

Если мы сможем получить точное время получения исходящего звонка, мы можем получить разрешение, см. Эту тему: http://stackoverflow.com/questions/10136475/how-to-get-exact-outgoing-call-receiving-time, но это тема не решается также. – littlestone

0

После интересно и тратить много времени на сети я нашел способ для достижения этой цели ...

Просто запросить историю вызовов устройства, основанное на время Вашего последнего набранного звонка, принесите длительность этот вызов, если найден больше 0, означает, что ваш звонок был принят, и он работает отлично.

Если кто-то не может его получить, дайте мне знать, что я разработаю его с кодом.

+0

Можете ли вы добавить пример кода в свой ответ? – Ren

+0

Не очень полезно, если вы хотите быстро проверить, было ли соединение создано, а затем перейти к другому коду. Ваше решение требует завершения вызова. – AndroidDev

+0

Привет, Я также ищу решение для этого. Можете ли вы посоветовать мне код? – itsrajesh4uguys

Смежные вопросы