クラスcom.android.internal.telephony.CallManager
には、呼び出しが実際にいつ応答されるかに関する情報が必要です。getInstance()
これには、CallManager インスタンスを返すpublic static メソッドとgetActiveFgCallState()
、現在の通話状態をCall.State
列挙型として返す public メソッドがあります。
したがって、理論的には、次のようなものが機能する可能性があります。
Method getFgState = null;
Object cm = null;
try {
Class cmDesc = Class.forName("com.android.internal.telephony.CallManager");
Method getCM = cmDesc.getMethod("getInstance");
getFgState = cmDesc.getMethod("getActiveFgCallState");
cm = getCM.invoke(null);
} catch (Exception e) {
e.printStackTrace();
}
そして、状態を繰り返しポーリングします。
Object state = getFgState.invoke(cm);
if (state.toString().equals("IDLE")) {
...
} else if (state.toString().equals("ACTIVE")) {
// If the previous state wasn't "ACTIVE" then the
// call has been established.
}
これが実際に機能することは確認していません。また、API が変更される可能性があることを念頭に置いておく必要があります。これは、アプリ開発者が依存するものではないためです。