Audio Call
audiocall์ 1:1 ์ ํ ๊ธฐ๋ฅ์ ์ธํฐ๋ท์ ์ด์ฉํ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๊ตฌํํ ๊ฒ์ ๋๋ค. ํตํ ๋ฐ์ ์๋ caller, ์ฐฉ์ ์๋ฅผ callee๋ผ๋ ํต์ ์ฉ์ด๋ก ๊ตฌ๋ถํฉ๋๋ค. Omnitalk SDK๋ฅผ ์ฌ์ฉํ์ฌ offerCall(), answerCall()์ ๊ฐ๊ฐ ํธ์ถํ๊ณ ํด๋น ์ด๋ฒคํธ ๋ฉ์์ง์ ๋์ํ๋ ๊ฒ์ผ๋ก ์ ํ ๊ธฐ๋ฅ์ ๊ฐ๋จํ ๊ตฌํํ ์ ์์ต๋๋ค.
Call Flow ์์๋ audiocall์ ํ๋ฆ์ sequence diagram์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
Step 1. ์ธ์
์์ฑ
Omnitalk SDK์ ์ด๊ธฐํ๋ฅผ ์ ์ธํ ๋ชจ๋ API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ฐ์ ์ ์ผ๋ก createSession()์ ํธ์ถํ์ฌ ์ธ์ ์ ์์ฑํด์ผ ํฉ๋๋ค. createSession()์ ํ๋ผ๋ฏธํฐ์ธ userId๋ ์ฌ์ฉ์๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ๊ณ ์ ํ id์ด๋ฉฐ audiocall ๋ฐ์ ์ ์ํ offerCall() ํธ์ถ์ ์ฌ์ฉ๋ฉ๋๋ค. userId๋ Optional ์ด๋ฉฐ, null๋ก ์ ๋ฌํ ๊ฒฝ์ฐ Omnitalk ์๋ฒ์์ ์์์ id๋ฅผ ๋ถ์ฌํฉ๋๋ค.
Step 2. ๋ฐ์
๋์ผํ Service Id๋ก ์ธ์ ์ ์์ฑํ ์ฌ์ฉ์ ์ค idle state์ ์ฌ์ฉ์์๊ฒ ์ ํ ์์ฒญ์ ํ ์ ์์ต๋๋ค.
offerCall() API๋ก ์ ํ ์์ฒญ์ ํ ์ ์์ต๋๋ค. ํ๋ผ๋ฏธํฐ๋ก callType, callee์ userId, ๋ น์ ์ฌ๋ถ๋ฅผ ์ ๋ฌํ๋ฉด ๋ฉ๋๋ค.
callType: ์ ํ ํ์ ์ ์๋ฏธํฉ๋๋ค. CALL_TYPE์ Omnitalk SDK์์ enum type์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์์ฑ ํตํ๋ฅผ ์ํด์๋
audiocall
์ ์ ๋ฌํ์๋ฉด ๋ฉ๋๋ค.callee: callee์ userId๋ฅผ ์ ๋ฌํ์๋ฉด ๋ฉ๋๋ค.
record: Optional ํ๋ผ๋ฏธํฐ๋ก, ๋ น์ ์ฌ๋ถ๋ฅผ ์๋ฏธํฉ๋๋ค. defalut = false
localView, remoteView: ์์ ํตํ์ ์ฌ์ฉ๋๋ ํ๋ผ๋ฏธํฐ์ ๋๋ค. 1:1 ์ ํ ๊ธฐ๋ฅ์์๋ null๋ก ์ ์ฉํ์๋ฉด ๋ฉ๋๋ค.
offerCall ํธ์ถ ์ฑ๊ณต์ caller๋ RINGBACK_EVEVT
, callee๋ RINGING_EVENT
๋ฅผ ์์ ํฉ๋๋ค.
Step 3. ์์
Android SDK ์์๋ ์๋ ๋ ์ํฉ์ ๋ํด์ answerCall() API๋ฅผ ์ค๋ฒ๋ก๋ฉํ์ฌ ๊ฐ๊ฐ ์ ๊ณตํฉ๋๋ค.
callee๊ฐ RINGING_EVENT๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ
callee๊ฐ ์ธ์
์ ์์ฑํ ์ํ์์ caller๊ฐ offerCall(์ ํ ์์ฒญ)์ ํ์ฌRINGING_EVENT
๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ, callee๋ ๋ณ๋์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ์ง ์๊ณ answerCall()์ ํธ์ถํ์ฌ ์ ํ๋ฅผ ์์ ํ ์ ์์ต๋๋ค. ์์ ๊ฑฐ์ ์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ leave()๋ฅผ ํธ์ถํ์๋ฉด ๋ฉ๋๋ค.
localView, remoteView: ์์ ํตํ์ ์ฌ์ฉ๋๋ ํ๋ผ๋ฏธํฐ์ ๋๋ค. 1:1 ์ ํ ๊ธฐ๋ฅ์์๋ null๋ก ์ ์ฉํ์๋ฉด ๋ฉ๋๋ค.
callee๊ฐ ์ ํ ์์ฒญ(offerCall) ์ดํ์ session์ ์์ฑํ ๊ฒฝ์ฐ
callee๊ฐ ์ธ์
์ ์์ฑํ๊ธฐ ์ caller๊ฐ offerCall(์ ํ ์์ฒญ)์ ํ์ฌ RINGING_EVENT
๋ฅผ ๋ฐ์ง ๋ชปํ ๊ฒฝ์ฐ, callee๋ answerCall()์ ํ๋ผ๋ฏธํฐ์ callType๊ณผ caller๋ฅผ ์ ๋ฌํ์ฌ ์ ํ๋ฅผ ์์ ํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ, ์ ํ๋ฆฌ์ผ์ด์
์์ callee ์๊ฒ callType๊ณผ caller๋ฅผ ์ ๋ฌํด ์ฃผ์ด์ผ ํฉ๋๋ค.
callType: ์ ํ ํ์ ์ ์๋ฏธํฉ๋๋ค. caller๊ฐ offerCall()์ ํธ์ถํ ๋์ ๋์ผํ๊ฒ
audiocall
์ ์ ๋ฌํ์๋ฉด ๋ฉ๋๋ค.caller: caller(์ ํ ๋ฐ์ ์)์ userId๋ฅผ ์ ๋ฌํ์๋ฉด ๋ฉ๋๋ค.
localView, remoteView: ์์ ํตํ์ ์ฌ์ฉ๋๋ ํ๋ผ๋ฏธํฐ์ ๋๋ค. 1:1 ์ ํ ๊ธฐ๋ฅ์์๋ null๋ก ์ ์ฉํ์๋ฉด ๋ฉ๋๋ค.
Step 4. ์ฐ๊ฒฐ ์ฑ๊ณต
์์ฑ ํตํ ์ฐ๊ฒฐ์ด ์ฑ๊ณตํ๋ฉด caller, callee ์์ธก ๋ชจ๋ CONNECTED_EVENT
๋ฅผ ์์ ํฉ๋๋ค.
Step 5. ์ ํ ๋๊ธฐ
leave() API๋ฅผ ํตํด์ ์ ํ ์ฐ๊ฒฐ์ ๋์ ์ ์์ต๋๋ค.
์ค๋์ค ์ฅ์น ์ ์ด
mute/unmute
์ ํ ํตํ์ค์ ์์๊ฑฐ๋ฅผ ํ ์ ์๋๋ก API๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ๋ฒ๊ณผ ์์ธํ ๋ด์ฉ์ API Reference์ mute/unmute ๋ถ๋ถ์ ์ฐธ์กฐ ๋ฐ๋๋๋ค. mute/unmute API์ ํ๋ผ๋ฏธํฐ์ธ TRACK_TYPE ์ Omnitalk SDK์์ enum type์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
์
๋ ฅ ์ฅ์น ๋ณ๊ฒฝ
์ ํ ํตํ์ค์ ์
๋ ฅ(๋ง์ดํฌ) ์ฅ์น๋ฅผ ๋ณ๊ฒฝํ ์ ์๋๋ก setAudioDevice() API๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ๋ผ๋ฏธํฐ์ธ MIC_TYPE์ Omnitalk SDK์์ enum type์ผ๋ก ์ ๊ณตํฉ๋๋ค. ๊ท์ ๋์ด ์ ํ๋ฐ๋ defaultInEar
ํ์
๊ณผ ์คํผ์ปคํฐ ๋ชจ๋์ธ speaker
๋ ๊ฐ์ง๋ก ์ ๊ณต ๋ฉ๋๋ค. ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
Last updated