[android] 영상통화로 올 경우 receive 받는 방법있을까요?
조회수 796회
일반 통화를 수신받기 위해서는 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); } }
TelecomManager
의acceptRingingCall()
을 사용하라는 가이드가 있고 개발 문서 기준으로는 video call 도 수신 가능한 것으로 보입니다.val manager = context?.getSystemService(Context.TELECOM_SERVICE) as? TelecomManager manager?.acceptRingingCall()
https://developer.android.com/reference/android/telecom/TelecomManager#acceptRingingCall()
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력