首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在android中使用TelecomManager和TelecomManager的子类处理呼出呼叫的确切状态的示例用法

在android中使用TelecomManager和TelecomManager的子类处理呼出呼叫的确切状态的示例用法
EN

Stack Overflow用户
提问于 2015-09-21 00:46:26
回答 1查看 2.6K关注 0票数 2

我是Stack Overflow的新手,所以请容忍我,

我已经尝试了2-3天来处理呼出呼叫的状态。我只找到了PhoneStateListener,但这并不能解决我的问题,我们不能处理活动、振铃、拨号、已连接等状态。

在尝试了更多之后,我发现Android已经提供了一些东西来了解确切的状态。

https://developer.android.com/reference/android/telecom/Call.html

https://developer.android.com/reference/android/telecom/TelecomManager.html

但问题是,我没有任何示例说明如何在我的代码中使用/实现这些类来处理传出调用的状态。

如果你知道这些类的用法,请帮助我。

我试过这些东西

代码语言:javascript
复制
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状态。

然后我找到了另一个解决方案

代码语言:javascript
复制
      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")) {

      }

但它总是返回空闲状态。

我在上面找到了一些需要的东西,提供了两个链接,但我不知道如何使用这些类来查找呼叫状态,从哪里开始,以及如何将监听器与拨号器或电话状态绑定以了解呼出状态。

EN

回答 1

Stack Overflow用户

发布于 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)将为您提供电话呼叫的状态。对于去电,它有两种状态:空闲和摘机。摘机表示呼叫已接通。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32681844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档