あなたができることがいくつかあります:
まず、 を使用して通話状態の変化をリッスンできますPhoneStateListener
。リスナーを TelephonyManager に登録できます。
PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (state == TelephonyManager.CALL_STATE_RINGING) {
//Incoming call: Pause music
} else if(state == TelephonyManager.CALL_STATE_IDLE) {
//Not in call: Play music
} else if(state == TelephonyManager.CALL_STATE_OFFHOOK) {
//A call is dialing, active or on hold
}
super.onCallStateChanged(state, incomingNumber);
}
};
TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
if(mgr != null) {
mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}
リスナーが不要になったら、忘れずに次のコマンドを使用して登録を解除してくださいPhoneStateListener.LISTEN_NONE
。
TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
if(mgr != null) {
mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
}
詳細については、ドキュメントを参照してください。
他にできることは、ブロードキャストを聞くことですandroid.intent.action.PHONE_STATE
。通話に関する情報を提供する追加情報が含まれTelephonyManager.EXTRA_STATE
ます。こちらのドキュメントをご覧ください。
android.permission.READ_PHONE_STATE
どちらの場合も - パーミッションが必要になることに注意してください。