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; } } }
相关文章推荐
- 【Android】在控件、视图绘制或改变之后如何获取其部分状态和属性(比如高、宽、TextView绘制后的文字行数等)
- android关于监听电话拨打后,对方接听的状态(COLP被连接线识别提示)
- Android 如何判断拨打电话对方是否接听
- android 如何调用系统拨打电话的功能
- android 中如何获取camera当前状态
- popupwindow全屏幕显示被状态栏挡住如何解决+Android获取状态栏高度
- Android中如何监听手机电话状态
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- Swift3.0拨打电话,获取通话状态(接通,挂断...)<CoreTelephony,CallKit.CXCallObserver>
- android如何将音乐文件放入sdcard,如何拨打电话
- popupwindow全屏幕显示被状态栏挡住如何解决+Android获取状态栏高度
- 如何自动获取android 安装APK成功后的状态
- Android游戏中获取电话的状态来进行游戏的暂停和继续
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- Android 如何让EditText不自动获取焦点,默认未编辑状态
- Android 6.0 获取拨打电话的权限
- android 电话号码的获取及拨打电话
- 解析Android游戏中获取电话状态进行游戏暂停或继续的解决方法