2010-01-20 89 views
5

我的查询是,如果在我打出电话时对方接收方接听我的电话,我希望得到通知。是否可以使用Android SDK。打出电话状态

onCallStateChanged函数仅在人员从他的电话拨打号码(OFFHOOK)时调用,并且当呼叫接收者断开呼叫(IDLE),但没有状态参数可知时,另一个最终用户已收到电话?

public class MyPhoneStateListener extends PhoneStateListener{ 

    public void onCallStateChanged(int state,String incomingNumber){ 
     Log.d("Checking---->",TelephonyManager.ACTION_PHONE_STATE_CHANGED); 
    } 
} 

logcat中只给出了以下信息调用时收到的另一面:

01-19 19:33:30.633: DEBUG/CallNotifier(638): stopRing()... (OFFHOOK state) 
01-19 19:33:30.662: DEBUG/Ringer(638): stopRing()... 
01-19 19:33:30.694: DEBUG/Ringer(638): - stopRing: null mRingHandler! 
01-19 19:33:31.256: DEBUG/PhoneApp(638): updateWakeState: callscreen true, dialer false, speaker false... 
01-19 19:33:31.287: DEBUG/PhoneApp(638): updateWakeState: keepScreenOn = false (isRinging false, showingDisc false) 

回答

1

我有同样的问题。我使用PhoneStateListener进行传入呼叫,它运行良好。但对于传出的呼叫,我只能够注册一个BroadcastReceiver到intent android.intent.action.NEW_OUTGOING_CALL。

据我所知,没有办法确定另一方已经拿起或者没有拿到的天气。但是,您可以使用CallLog来脱机检索呼叫信息。除非您编译自己的Andoid,否则详细的调用状态事件只能通过内部类com.android.internal.telephony.Phone获得,您无法访问它们。

+2

这没有意义。制造商知道通话何时连接。如果它对他们有用,它就可以提供给你。 – 2012-08-21 19:14:42

+2

@RKS是的,这是有道理的。在拨号器拨打电话后,拨出呼叫状态立即从'CALL_STATE_IDLE'变为'CALL_STATE_OFFHOOK',即使合作伙伴尚未拿起手机。 – 2012-11-13 10:37:41