您的位置:首页 > 移动开发 > Android开发

MTK Android拨打电话如何获取适时状态

2012-09-21 17:01 441 查看
/**
* 获取适时电话状态,需真机验证
* step1:
* import com.android.internal.telephony.Call;
* import com.android.internal.telephony.Phone;
* import com.android.internal.telephony.PhoneFactory;
* step2:
* private static final int PHONE_STATE_CHANGED = 101;
* private static final int SOS_SEND_MESSAGE = 102;
* public Phone mPhone;
* public Call.State mPreviousCallState = Call.State.IDLE;
* step3:
* mPhone = PhoneFactory.getDefaultPhone();
* mPhone.registerForPreciseCallStateChanged(mCallHandler, PHONE_STATE_CHANGED, null);
* step4
* mPhone.unregisterForPreciseCallStateChanged(mCallHandler);
* 以上函数注册发送消息回调
*/
private Handler mCallHandler = new Handler()
{/*
public void handleMessage(Message msg)
{
switch (msg.what)
{
case PHONE_STATE_CHANGED:
getCurCallState();
break;

case SOS_SEND_MESSAGE:
mCalledIdx = 0;
SOSSendSMS(mCalledIdx);//发送第一条短信
break;

default:
break;
}
}*/
};


/**
* 拨号电话状态改变Handler回调
*/
public void getCurCallState()
{
/*	Log.d(AppUtil.SIMDOSOS, "szsxd caihr mPreviousCallState = " + mPreviousCallState +
"; curCallState = " + mPhone.getForegroundCall().getState());

if ((mPhone.getForegroundCall().getState()  == Call.State.ACTIVE) // 对方接通电话瞬间
&& ((mPreviousCallState == Call.State.DIALING) || (mPreviousCallState == Call.State.ALERTING)))
{

}
else if ((mPhone.getForegroundCall().getState()  == Call.State.DISCONNECTING) //拨打方挂断
&& ((mPreviousCallState == Call.State.DIALING) || (mPreviousCallState == Call.State.ALERTING)))
{

}
else if ((mPhone.getForegroundCall().getState()  == Call.State.DISCONNECTED) //对方挂断
&& ((mPreviousCallState == Call.State.DIALING) || (mPreviousCallState == Call.State.ALERTING)))
{

}

mPreviousCallState = mPhone.getForegroundCall().getState();*/
}


/**
* 电话监听
* @author caihr 2012.09.19
*/
class SOSPhoneCallListener extends PhoneStateListener
{
@Override
public void onCallStateChanged(int state, String incomingNumber)
{
super.onCallStateChanged(state, incomingNumber);
switch (state)
{
//褰撳浜庡緟鏈虹姸鎬佷腑
case TelephonyManager.CALL_STATE_IDLE:
{
if (!mFistCall)
{
Log.d(AppUtil.SIMDOSOS, "szsxd caihr SSOSPhoneCallListener():CALL_STATE_IDLE -->SOSCall()");
mFistCall = true;
sosCall();
}
break;
}
//褰撳浜庢鍦ㄦ嫧鍙峰嚭鍘伙紝鎴栬€呮鍦ㄩ€氳瘽涓?
case TelephonyManager.CALL_STATE_OFFHOOK:
{
break;
}
//澶栭潰鎷ㄨ繘鏉ワ紝杩樻病鏈夋帴閫氾紝澶勫湪鎷ㄥ彿鐘舵€佷腑..
case TelephonyManager.CALL_STATE_RINGING:
{
break;
}
default:
break;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: