2017-05-21 11 views
-1

나는 안드로이드에서 newbee입니다. 나는 안드로이드 전화 통신 아키텍처를 겪고 있었고 다음과 같은 질문을 가지고 있습니다. 애플리케이션이 ACTION_CALL 인 텐트를 가진 android API를 호출 할 때 SIP 설정을 사용하여 세션을 설정하고 RTP 패킷을 송수신하기 위해 RIL을 거칩니다. SIP 호출 방식 및시기, SIP 연결이 설정된 시점, RTP를 통해 RTP를 호출하는 방법 및시기 (함수 호출과 함께)에 대한 소스 코드 흐름을 알려주십시오. 한쪽 통화 흐름 또는 한 통화 흐름조차 도움이됩니다.callACTION_CALL 후 "SIP 프로토콜 호출 다음에 RTP 패킷 흐름"코드 흐름

미리 감사드립니다 ... 작은 포인터도 도움이 될 것입니다. 감사 -Nagendra

답변

0

나는 "1. 안드로이드 전화 (등보다 폰, 에어텔, 같은 기반 전형적인 캐리어)"와 동안 신호/데이터 흐름의 경로 "2. SIP 기반의 VoIP 통화를"발견 할 수 무엇 다르다 .

  1. 안드로이드 전화 : 안드로이드 스마트 폰에는 두 개의 프로세서가 있습니다. 하나는 자바와 네이티브 코드를위한 것이고 다른 하나는 벤더 특정 코드, 즉베이스 밴드 프로세서를 실행하기위한 것이다. 모든 신호는 RIL Layer (발신자와 수신자 즉 자바와 Jni 코드)와 RILD/'Vendor Specific Library'사이의 소켓을 통해 전달됩니다. 따라서 모든 통신 세부 정보는 hardware/ril 폴더에 있습니다. 연결 (신호)이 설정되면 Java API는 Vendor Specific library에서 소켓을 통해 Ringing 또는 Connection Established 콜백 중 하나를 가져옵니다. 연결 설정조차도 VSL (Vendor Specific Library)에서 발생합니다. 따라서 우리는 소스 코드에 접근 할 수 없습니다.

  2. SIP 기반 VOIP 호출 : 이것은 응용 프로그램 수준 프로토콜이며 인터넷 연결 만 필요합니다. 모든 오픈 소스 SIP 구현 (PJSIP, MJSIP 등)을 사용하고 SIP 프로토콜의 API와 링크하여 자신의 Calling App을 작성할 수 있습니다. 이 방법으로 SIP를 포함한 소스 코드를 완벽하게 제어 할 수 있습니다. 신호와 데이터의 코드 흐름은 인터넷을 통해 (UDP, 소켓을 통해) 동일합니다.