2011-01-04 17 views
4

目的:Androidプラットフォームで、現在話している相手の電話番号を検出します。Android:通話中に現在有効な電話番号を検出

現在、PhoneListenerを使用すると、保留中のコールの場合にはあいまいさが存在します。

ケース:通話中にユーザーが相手と話しています(「通話1」)。したがって、ユーザはコール状態OFFHOOKになります。次に、ユーザは、電話着信を示す状態「RINGING」にある(「コール2」)。その後、状態はOFFHOOKに変わります。これは、ユーザがコール2に応答したか、コール1を保留したかの2つの可能性のうちの1つを示している可能性があります。代わりに、ユーザはコール2を拒否してコール1に戻りました。

2つのケースを区別することはどのように可能ですか?電話でCURRENT CALLの電話番号を検出することは可能ですか?

答えて

2

PhoneStateListerとonCallStateChangedを使用します。 着信番号も表示されます。

+1

曖昧さの問題があります。電話番号を受け取った唯一の時間は、RINGING状態です。この状態は、ユーザーが現時点で話している相手を意味するものではなく、単に電話が入っていることを意味します。コール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