티스토리 뷰

반응형

저번 포스트에서 WebRTC 안드로이드 샘플 앱을 받아 갖고 놀았으니


이번에는 나만의 WebRTC 앱을 만들기 위해, 먼저 각 클래스들은 어떤 기능을 하는지 알아보고 


내가 앱을 만드는 데 샘플앱에서 필요없는(특히 디버깅과 관련된) 구성들을 임의대로 제거해 보았습니다.




1. util 패키지에 있는 AppRTCUtils (필수)

- 클래스 내의 설명은 스레드의 안전 관리를 위해 헬퍼를 제공한다고 되어있다.

- AudioManager, BlutoothManager, ProximitySensor에서, 로그를 찍거나 시스템 정보를 출력하기 위한 클래스


2. util 패키지에 있는 AsyncHttpURLConnection (필수)

- 웹소켓을 통해 https://appr.tc 와 통신하여 Room을 생성하기 위한 헬퍼 클래스.


3. AppRTCAudioManager (필수)

- 음성(입·출력)을 종합적으로 관리하여 전송하는데 필요한 클래스


4. AppRTCBluetoothManager (선택)

- 이어폰 등 음성과 관련된 블루투스 장치를 관리하는 데 필요한 클래스

- 기본적인 장치로 영상통화 하는 데 없어도 무방하지만 지우려면 코드를 여러번 수정해야 함. 안지우는걸 추천


5. AppRTCClient (필수)

- 영상통화를 하기 위해 클라이언트 객체를 만들고, 각 클라이언트 클래스에서 콜백메소드를 호출토록 하는 인터페이스.

- 클라이언트 클래스는 WebSocketClient, TCPClient가 있음.


6. AppRTCProximitySensor (선택)

- 근접센서를 통해 기기를 감지하는 데 필요한 클래스

- 기본적인 장치로 영상통화 하는 데 없어도 무방하지만 지우려면 코드를 여러번 수정해야 함. 안지우는걸 추천


7. CallActivity (필수)

- 영상통화를 하는 화면 클래스

- ConnectActivity를 통해 넘어온 인텐트들의 값을 분석하여 WebSocket 통신인지, TCP 통신이지 파악하여 AppRTCClient를 생성한 뒤, 영상통화를 시작함.


8. CallFragment (선택)

- 영상통화를 하는 도중 화면을 클릭하면 나오는 메뉴화면 프래그먼트 클래스.

- 메뉴를 커스텀하여 다르게 만들고 싶으면 이 클래스를 참고하여 다른 방법으로 만드셔도 무방.


9. CaptureQualityController (제거)

- Settings 메뉴에서, Capture quality slider를 선택하면 나오는 실시간 화면조절 SeekBar와 관련된 클래스.

- 실시간으로 화질 조정을 할 필요가 없어서 제거 함.


10. ConnectActivity (필수)

- 영상통화 하기 전 preference.xml에서 저장된 여러가지 많은 설정들(오디오, 비디오 등)과, EditText를 통해 입력한 방이름 등의 정보들을 CallActivity로 보내기 위한 클래스.


11. CpuMonitor (제거)

- HudFragment와 관련된 클래스. 스마트폰의 Cpu와 관련된 정보들을 얻기 위한 클래스이다. 디버깅할 때 사용.


12. DirectRTCClient (필수)

- TCP Socket을 통해 P2P 영상통화를 하기 위한 클래스.

- ConnectActivity 에서, Edittext 창에 상대방의 IP를 적으면 CallActivity에서 판별하여 객체로 생성되는 클래스.

- 보통 WebSocket을 사용하여 appr.tc와 연결되므로 이 클래스는 잘 사용하지 않음.

- 그러나, 쓸 일이 있을 수 있으므로 삭제하지 않음

- 20번의 TCPChannelClient와 같이 씀


13. HudFragment (제거)

- Settings 메뉴에서 Display call statistics. 를 선택하면 영상통화 화면 왼쪽 밑에 ⓘ 아이콘이 생길 것이다. 그걸 클릭하면 뜨는 프래그먼트.

- 디버깅과 관련된 클래스이므로 제거.


14. PeerConnectionClient (필수)

- CallActivity에서 오디오, 비디오 요소들을 바탕으로 ICE Candidate를 생성하여 데이터(오디오&비디오)를 p2p보내는 클래스 및 인터페이스

- CallActivity에서 콜백 메소드를 생성함.

※ICE, STUN, TURN을 공부하려면 여기로


15. RecordedAudioToFileController (제거)

- Settings 메뉴에서, Save input audio to file 와 관련된 클래스.

- 영상통화 하는 데 필요없다고 판단 함.


16. RoomParametersFetcher (필수)

- 영상통화를 웹소켓(https://appr.tc)을 통해 시작할 경우. Signalling 서버를 대신하는 AsyncTask 클래스.

- https://appr.tc 와 통신하여 방번호를 등록하고, 통화 상대방을 기다리기 까지의 절차를 수행함.


17. RtcEventLog (제거)

- Settings 메뉴에서 Enable RtcEventLog 와 관련된 클래스.

- 디버깅을 위해 이벤트 로그를 파일로 출력하는 클래스.


18. SettingsActivity (선택)

- 설정화면과 관련된 클래스. 사용자에게 설정을 맡기고 싶다면 남겨둬도 좋음.


19. SettingsFragment (선택)

- SettingsActivity에서, 설정이 저장된 preference.xml 파일을 로드시키는 클래스. SettingsActivity 클래스와 마찬가지로 지울거면 같이 지움.


20. TCPChannelClient (필수)

- TCP Socket을 통해 P2P 영상통화를 하기 위한 채널 클래스.


21. UnhandledExceptionHandler (필수)

- 기본적인 예외상황 외, 기타 예외상황(통신의 문제상 등)이 발생했을 때 다이얼로그로 보여주는 클래스.

- 주로 Throwable을 통해 야기된 오류를 여기서 보여줌


22. WebSocketChannelClient (필수)

- https://appr.tc 를 사용하여 영상통화를 하기 위해 필요한 클래스

- autobahn 라이브러리를 사용하여 웹 통신을 진행 함.

- WSS, WSS POST, TURN ,STUN 서버를 사용하여 가장 최적화 된 경로를 찾도록 함


23. WebSocketRTCClient (필수)

- 웹소켓을 사용하여 영상통화를 하기 위해 필요한 클래스

- AppRTCClient 인터페이스 및 WebSocketChannelClient 클래스를 사용하여 웹 통신을 진행함.







리소스 파일도 살펴보자.



1. Layout

activity_call.xml (필수) - 영상통화를 위한 화면

activity_connect.xml (필수) - 영상통화를 하기 전 화면

fragment_call.xml (선택) - 영상통화 할 때 메뉴를 팝업하기 위한 프래그먼트

fragment_hud (제거) - 영상통화를 디버깅 모드로 진행할 때 사용하는 프래그먼트



2. Menu(선택) - SettingsActivity 파일을 지웠다면 제거하고, 남겨두었다면 남겨놓는다.


끗~

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함