2013年4月22日月曜日

Androidアプリ開発 着信イベント 取得方法

Androidで、電話の状態イベントを取得するには、
android.telephonyパッケージのTelephonyManagerクラスとPhoneStateListenerクラスを使う。

・リスナーの定義
 PhoneStateListenerのonCallStateChanged()メソッドをオーバーライドして、
 イベント取得時の処理を記述する。
 
・リスナーの登録
 TelephonyManagerクラスのlisten()メソッドを呼び出し、PhoneStateListenerを登録する。

なお、TeleohonyManagerは、getSystemService()で取得する。

(例)抜粋

        TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        // リスナーの作成
        PhoneStateListener listener = new PhoneStateListener() {
            @Override
            public void onCallStateChanged(int state, String incomingNumber) {
                String stateString = "なし";
                switch (state) {
                case TelephonyManager.CALL_STATE_IDLE: //待ち受け状態
                    stateString = "待ち状態";
                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK: //通話開始時
                    stateString = "通話開始 "+ incomingNumber;
                    break;
                case TelephonyManager.CALL_STATE_RINGING: //着信時
                    stateString = "着信中"+ incomingNumber;
                    break;
                }
                text.append(String.format("\n電話: %s",stateString)); // TextView(text)に出力
            }
        };

        // リスナーの登録
        telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
    }


なお、Android.manifest.xmlにpermissionの登録も必要
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

0 件のコメント:

コメントを投稿