티스토리 뷰
저번 포스트에서 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 파일을 지웠다면 제거하고, 남겨두었다면 남겨놓는다.
끗~
'개발일지 > 안드로이드 개발' 카테고리의 다른 글
리사이클러 뷰(Recycler View) 최하단 감지하여, 무한 스크롤링 하기 (0) | 2018.06.25 |
---|---|
Firebase Cloud Messaging(FCM) 을 사용하여 내 단말기에 메시지를 보내보자. (0) | 2018.06.20 |
안드로이드 Webrtc에 파이어베이스를 연동시켜 영상통화를 진행해보자. (2) | 2018.06.18 |
안드로이드 WebRTC를 개발하기 위해 AppRTC 안드로이드 샘플을 다운받고, 실행해보자. (5) | 2018.06.16 |
EventBus(GreenBot) 라이브러리를 사용하여, FCM 서비스에서 받은 메시지를 TextView에 출력해보자. (0) | 2018.06.10 |