2011-01-04 8 views
4

목표 : Android 플랫폼에서 사용자가 현재 통화하고있는 개인의 전화 번호를 감지합니다.Android : 현재 통화중인 전화 번호를 감지합니다.

현재 PhoneListener를 사용하면 통화 보류의 경우 다소 모호한 점이 있습니다.

사례 : 사용자가 통화 중에 누군가와 대화하고 있습니다 ("전화 1"). 따라서 사용자는 통화 상태가 OFFHOOK입니다. 그런 다음 사용자는 RINGING 상태로 들어오는 전화를 표시합니다 ("Call 2"). 그러면 상태가 OFFHOOK로 변경됩니다. 이것은 두 가지 가능성 중 하나를 나타낼 수 있습니다. 즉 사용자가 통화 2에 응답하고 통화 1을 보류 중으로 설정했습니다. 또는 사용자가 통화 2를 거절하고 통화 1로 돌아 왔습니다.

두 경우를 어떻게 구분할 수 있습니까? 휴대 전화에서 현재 통화의 전화 번호를 감지 할 수 있습니까?

답변

2

PhoneStateLister와 onCallStateChanged을 사용하십시오. 수신 전화 번호도 볼 수 있습니다.

+1

전화 번호를 수신 한 유일한 시간은 링잉 상태입니다. 모호성이라는 질문이 있습니다. 이 상태는 사용자가 현재 통화하고있는 사람을 의미하지 않으며 통화가 수신됨을 의미합니다. 전화 번호 1은 전화 번호 X입니다. 전화 번호 2가 오면 전화 번호 Y에서 RINGING 상태가됩니다. 이제 상태가 OFFHOOK로 되돌아갑니다. 누구 랑 이야기하는거야? 전화 1, 전화 번호 X, 또는 전화 2, 전화 번호 Y와 통화 중입니까? 그게 제가 풀려고하는 문제입니다. – ChaimKut

+0

하지만 상태가 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

관련 문제