[android] 영상통화로 올 경우 receive 받는 방법있을까요?

조회수 791회

일반 통화를 수신받기 위해서는 android.intent.action.PHONE_STATE 라는 액션값을 받으면 되는데 영상 통화일 경우 어떻게 수신받을 수 있는지 궁금합니다.

아래는 일반 통화 수신시 쓰는 코드입니다. 하지만 영상 통화 수신하기 위해 아래 함수 사용시 일반통화로 전환되어 버립니다. 영상통화 받기 위한 키워드나 개발에 참고할만한 내용을 말씀해주시면 감사하겠습니다..

public void answerCall() {
        TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
        //int phone_state = CallStateListner.getInstance().getPhoneState();
        int phone_state = getPhoneState();
        if (phone_state == TelephonyManager.CALL_STATE_RINGING) {
            ITelephony telephonyService = null;
            try {
                Class<?> c = Class.forName(telephonyManager.getClass().getName());
                Method m = c.getDeclaredMethod("getITelephony");
                m.setAccessible(true);
                telephonyService = (ITelephony) m.invoke(telephonyManager);
                try {
                    telephonyService.answerRingingCall();
                } catch (Exception e) {
                }
            } catch (Exception e) {
            }
        }
    }

댓글 꼭 부탁드리겠습니다. 감사합니다 :)

1 답변

  • 일단 코드를 추적해보니 answerRingingCall() 은 deprecated 된 듯 합니다.

    /**
      * @deprecated Use {@link android.telecom.TelecomManager#acceptRingingCall} instead
      * @hide
      */
      @Deprecated
      @SystemApi
      @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
      public void answerRingingCall() {
          try {
              ITelephony telephony = getITelephony();
              if (telephony != null)
                  telephony.answerRingingCall();
          } catch (RemoteException e) {
              Log.e(TAG, "Error calling ITelephony#answerRingingCall", e);
          }
      }
    

    TelecomManageracceptRingingCall() 을 사용하라는 가이드가 있고 개발 문서 기준으로는 video call 도 수신 가능한 것으로 보입니다.

    val manager = context?.getSystemService(Context.TELECOM_SERVICE) as? TelecomManager
    manager?.acceptRingingCall()
    

    https://developer.android.com/reference/android/telecom/TelecomManager#acceptRingingCall()

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)