2011-01-04 3 views
4

Цель: на платформе Android определить номер телефона человека, с которым пользователь разговаривает.Android: обнаружение активного номера телефона во время телефонного звонка

В настоящее время, используя PhoneListener, существует определенная двусмысленность в случае удержания вызовов.

Дело: пользователь разговаривает с кем-либо во время разговора («Звонок 1»). Таким образом, пользователь находится в состоянии вызова OFFHOOK. Затем пользователь находится в состоянии RINGING, указывая входящий телефонный звонок («Call 2»). Затем состояние переходит в положение OFFHOOK. Это может указывать на одну из двух возможностей: либо пользователь ответил на вызов 2, либо переместил вызов 1 на удержание. В качестве альтернативы пользователь отклонил вызов 2 и вернулся к вызову 1.

Как можно различать два случая? Можно ли определить номер телефона ТЕКУЩЕГО ЗВОНКА на телефоне?

ответ

2

Используйте PhoneStateLister и onCallStateChanged. Там вы также можете увидеть входящий номер.

+1

Существует проблема двусмысленности - единственный раз, когда номер телефона получен, находится в состоянии RINGING. Это состояние не подразумевает, с кем разговаривает пользователь в данный момент, только что входящий звонок. Звонок 1 - номер телефона X. Звонок 2 входит, я получаю состояние RINGING с номера телефона Y. Теперь состояние возвращается в OFFHOOK. С кем я разговариваю? Я говорю с Call 1, номер телефона X или Call 2, номер телефона Y? Это проблема, которую я пытаюсь решить. – ChaimKut

+0

, но этот метод всегда имеет значение rinining в качестве параметра, также если состояние OFFHOOK. Поэтому я думаю, что номер телефона в состоянии OFFHOOK - это номер телефона, с которым вы сейчас разговариваете. Но, конечно, вам нужно проверить или найти документацию по методу onCallStateChanged. –

+0

Я тестирую NexusOne на 2.1, и OFFHOOK НЕ предоставляет номер телефона в качестве параметра, строка просто пуста (хотя это поле в методе onCallStateChanged). Можете ли вы подтвердить или отклонить это поведение на своем телефоне? Вот какой быстрый и грязный пример кода для тестирования: http://www.tutorialforandroid.com/2009/01/get-phone-state-when-someone-is-calling_22.html – ChaimKut