我是Stack Overflow的新手,所以请容忍我,
我已经尝试了2-3天来处理呼出呼叫的状态。我只找到了PhoneStateListener,但这并不能解决我的问题,我们不能处理活动、振铃、拨号、已连接等状态。
在尝试了更多之后,我发现Android已经提供了一些东西来了解确切的状态。
https://developer.android.com/reference/android/telecom/Call.html
https://developer.android.com/reference/android/telecom/TelecomManager.html
但问题是,我没有任何示例说明如何在我的代码中使用/实现这些类来处理传出调用的状态。
如果你知道这些类的用法,请帮助我。
我试过这些东西
PhoneStateListener listener=new PhoneStateListener(){
@Override
public void onCallStateChanged(int state, String incomingNumber) {
// TODO Auto-generated method stub
super.onCallStateChanged(state, incomingNumber);
switch(state){
case TelephonyManager.CALL_STATE_IDLE:
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_RINGING:
break;
}
}
};但是对于呼出的呼叫,这种振铃状态是未知的,只要我们一拨打它,它就会触发OffHook状态。
然后我找到了另一个解决方案
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 = null;
try {
state = getFgState.invoke(cm);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
if (state.toString().equals("IDLE")) {
} else if (state.toString().equals("ACTIVE")) {
}但它总是返回空闲状态。
我在上面找到了一些需要的东西,提供了两个链接,但我不知道如何使用这些类来查找呼叫状态,从哪里开始,以及如何将监听器与拨号器或电话状态绑定以了解呼出状态。
发布于 2015-09-26 04:06:50
调用接口(https://developer.android.com/reference/android/telecom/Call.html)仅在Android6.0(接口级别23)中提供,用于提供调用的详细状态。但我怀疑到目前为止还没有运行6.0的手机。
使用TelephonyManager (http://developer.android.com/reference/android/telephony/TelephonyManager.html)将为您提供电话呼叫的状态。对于去电,它有两种状态:空闲和摘机。摘机表示呼叫已接通。
https://stackoverflow.com/questions/32681844
复制相似问题