-
Notifications
You must be signed in to change notification settings - Fork 3
Seethrough_ProjectBlog
์จ์ค๋ฃจ ํ | ์ค์ง์, ์ดํ์ง
- ๋ฌธ์ ์ ์
- ์ฐ๋ฆฌ์ ๋ชฉํ
- ์ฌ์ฉ์ ์์ ์กฐ๊ฑด
- ์ ์ฉํ ๊ธฐ์
- GPS๋ก ํ์ฌ ์์น ์ธ์
- ๊ณต๊ณต๋ฐ์ดํฐ API ๋ถ๋ฌ์ค๊ธฐ
- Google Speech๋ฅผ ์ด์ฉํ ์์ฑ์ธ์ ๋ฐ ์์ฑ์๋ด
- ํ๋ก์ ํธ ์ฌ์ฉ ์์
- ์ธํฐํ์ด์ค ๊ตฌํ
์ฌ๋ฌ๋ถ ๋ชจ๋ ๋ฒ์ค ์ ๋ฅ์ฅ์์ ๋ฒ์ค๊ฐ ๋์ฐฉํ๋ค๋ ์๋ฆผ์ ์์ฑ์ผ๋ก ๋ค์ ๊ฒฝํ์ด ํ๋ฒ์ฏค์ ์์ผ์๊ฒ ์ฃ . ํ์ง๋ง ์ต๊ทผ ํฌํญ์์์๋ ์๋ฏผ๋ค์ ๋ฏผ์์ผ๋ก ์ธํด ๋์ฐฉ ์ ๋ณด์ ์์ฑ ์๋ด๋ฅผ ์ถ์ํ๊ฑฐ๋ ์ค๋จ ๋์๋ค๋ ๊ฒ์ ์์๋์? ํฌํญ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ช๋ช ์ง์ญ์์๋ ๋ฒ์ค ๋์ฐฉ ์ ๋ณด๋ฅผ ํ๋ฉด์๋ ๋์ฐ์ง๋ง, ์์ฑ์ผ๋ก ์๋ดํ๋ ์๋น์ค๋ ์ผ๋ถ ์ค๋จ๋์๋ค๊ณ ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์๋ฏผ๋ค์ ์ด๋ค ์ด์ ๋ก ๋ฏผ์์ ๋ฃ์๊ธฐ์ ์์ฑ ์๋ด ์๋น์ค๊ฐ ์ถ์ ํน์ ์ค๋จ๋์๋ ๊ฑธ๊น์?
์๋ฏผ๋ค์ด ๋ฏผ์์ ๋ฃ์๋ ์ด์ ๋ ๋ฐ๋ก ์์ ๋ฌธ์ ๋๋ฌธ์ด์์ต๋๋ค. ๋น์ฅ์ ์ธ ์๋ฏผ๋ค์ด ์๋๋ฝ๋ค๋ ์ด์ ๋ก ์์ฑ ์๋ด ์๋น์ค๋ฅผ ์ค๋จํ๊ฑฐ๋, ๋ณผ๋ฅจ์ ์ค์ฌ๋ฌ๋ผ๋ ๋ฏผ์์ ๋ฃ์ ๊ฒ์ด์์ต๋๋ค. ํ์ง๋ง ์๊ฐ์ฅ์ ์ธ ๋ฐ ์ ์๋ ฅ์๋ค์ ํ๋ฉด์ ๋ณผ ์ ์๊ฑฐ๋ ๋ณด๊ธฐ ํ๋ค๊ธฐ ๋๋ฌธ์ ์์ฑ ์๋ด ์๋น์ค์ ์์กดํ๋ ๊ฒ์ด ์ ๋ถ์๋๋ฐ์. ์ด๋ฌํ ์ํฉ ๋๋ฌธ์ ์๊ฐ์ฅ์ ์ธ๋ค์ ๋ฒ์ค๋ฅผ ์ด์ฉํ๋๋ฐ ํฐ ์ด๋ ค์์ ๊ฒช๊ฒ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ ๊ทธ๋ฆผ์ ๊ทธ๋ํ๋ฅผ ๋ณด๋ฉด ํ์ฌ ์๋น ์์ ์๊ฐ์ฅ์ ์ธ์ด ๋์ค๊ตํต์ ์ด์ฉํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์งํ์ฒ , ์ ์ฒ ๊ณผ ๋ฒ์ค๋ฅผ ์ด์ฉํ๋ ๋น์จ์ ์ดํด๋ณด๋ฉด ์ฝ 30%์ ํด๋นํด ๊ฐ์ฅ ํฐ ๋น์จ์ ์ฐจ์งํ๋ ์ฅ์ ์ธ ์ฝ๋ฐด๊ณผ ๊ฑฐ์ ๋น์ทํ ๋น์ค์ ์ฐจ์งํ๋๋ฐ์.
ํ์ง๋ง ์ฌ๊ธฐ์ ์ฃผ๋ชฉํด์ผ ํ ์ ์ ๋ฒ์ค ์ฌ์ฉ๋ฅ ๋ ๋ง์ง ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์๊ฐ์ฅ์ ์ธ๋ค์ ์ด๋ค ์ด์ ๋ก ๋ฒ์ค๋ฅผ ์ ์ด์ฉํ์ง ์๊ฒ ๋์์๊น์?
์๋์ ํ๋ฅผ ์ดํด๋ณด๋ฉด, ๊ตํต ์๋ด ์ ๋ณด๊ฐ ๋ถ์กฑํ๋ค๋ ์๊ฒฌ์ด ๊ฑฐ์ฃผ์ง์์ ํ์, ์ ์ฒ , ๋ฒ์ค์ ๋ฅ์ฅ๊น์ง ์ด๋ํ๊ธฐ ํ๋ค๋ค๋ผ๋ ์๊ฒฌ๊ณผ ํจ๊ป ๊ฐ์ฅ ํฐ ์ด์ ๋ก ๋๋ฌ๋ฌ์ต๋๋ค.
์ค๋งํธํฐ์ด ๋์คํ๋๋ฉด์ ์๊ฐ์ฅ์ ์ธ๋ค๋ ์ค๋งํธํฐ์ ์ฌ์ฉํ๋ ๋น์จ์ด ๋์์ง๊ฒ ๋์์ต๋๋ค. ์ด๋ก์จ ์๊ฐ์ฅ์ ์ธ๋ค์ด ์ค๋งํธํฐ์ ํตํด ๋ง์ ์ ๋ณด๋ฅผ ์ป์ ์ ์๊ฒ ๋์๋ค๊ณ ๋ณผ ์ ์์ฃ . ํ์ง๋ง ์์ ๋ง์๋๋ฆฐ ๊ฒ๊ณผ ๊ฐ์ด, ์ฌ์ ํ ๋์ค๊ตํต์ ์ด์ฉํ๋ ๋ฐ์ ์์ด์๋ ์ ๋ณด ํ์
์ ๋ถ์กฑํจ์ ๋๋๋ค๊ณ ๋๋ตํ์์ต๋๋ค.
๊ทธ๋์ ์ ํฌ๋ !! ์์ ์ธ๊ธ๋์๋ ์ ๋ณด ๋ถ์กฑ์ด๋ผ๋ ๋ฌธ์ ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด ์ค๋งํธํฐ์ ์ด์ฉํ์ฌ ์์ฑ์ผ๋ก ์๋ด ๋ฐ๋ ๋ฒ์ค ๋์ฐฉ ์๋ด ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค๊ฒ ๋์์ต๋๋ค.
๋ฌผ๋ก , ํ์ฌ ๋ง์ผ์๋ ๋ฒ์ค ๋์ฐฉ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ ๋ง์ ์ดํ๋ฆฌ์ผ์ด์
์ด ๋์ ์์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ดํ ์บก์ณ๋ณธ์ ๋ณด๋ฉด ์ ์
์๋ฏ์ด ์๊ฐ ์ฅ์ ์ธ๋ค์ด ์ฌ์ฉํ๊ธฐ์๋ ์์ ๋ฒํผ๊ณผ ๊ธ์จ, ๋ณต์กํ ์ธํฐํ์ด์ค, ์์ฑ์ธ์์ผ๋ก ๊ฒ์ ๋ฐ ์๋ด ๋ถ๊ฐ ๋ฑ ์ฌ๋ฌ ์กฐ์์ ์ด๋ ค์์ผ๋ก ์ธํด ์๊ฐ์ฅ์ ์ธ๋ค์ ์ฌ์ ํ ์ถฉ๋ถํ ์ ๋ณด๋ฅผ ์ ๊ณต ๋ฐ์ง ๋ชปํ๋ ์ํฉ์
๋๋ค.
๋ฐ๋ผ์, ์ ํฌ์ ์ดํ๋ฆฌ์ผ์ด์
์ ์์ฑ ์ธ์์ ๊ธฐ๋ฐ์ผ๋ก ํ์ํ ์ ๋ณด๋ฅผ ์
๋ ฅ, ์ถ๋ ฅ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ํ GPS๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ํ์ฌ ์์นํ ๋ฒ์ค์ ๋ฅ์ฅ์ด ์๋์ผ๋ก ์ธ์๋๊ฒ ํ๊ณ , ํด๋น ์ ๋ฅ์ฅ์์ ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๋ฒ์ค์ ๋์ฐฉ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํฉ๋๋ค. ๋จ, ๋ฒ์ค ๋์ฐฉ ์ ๋ณด๋ ํฌํญ์ ๋ฒ์ค์ ๋ํด ์ ํ์ ์ผ๋ก ์ ๊ณต๋๋ฉฐ, ์ฌ์ฉ์๊ฐ ๋ฒ์ค ์ ๋ฅ์ฅ์ ์์นํด์๋ ์ํฉ์์ ๊ฐ์ ํ์ฌ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ์์ต๋๋ค.
์ฌ๋ฌ ์ํฉ๊ณผ ๋๋ถ์ด ๋ง์ ๋ณ์๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์, ์ ํฌ๋ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ์ ์์ ์ฌ์ฉ์ ์์ ์กฐ๊ฑด์ ๋จผ์ ์ ํด๋ณด์์ต๋๋ค.
- ์ฌ์ฉ์๋ ์ค๋งํธ ํฐ์ ์์งํ๊ณ ์์ผ๋ฉฐ, ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ค์ด ๋ฐ์ ์ ์๋ค.
- ์ฌ์ฉ์๋ ์ํ๋ ๋ฒ์ค ์ ๋ฅ์ฅ๊น์ง ๊ฐ ์ ์๋ค.
- ์ฌ์ฉ์๋ ํ์นํ ๋ฒ์ค ๋ฒํธ๋ฅผ ์๊ณ ์๋ค.
์ ํฌ๋ ์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค๊ธฐ ์ํด ์๋๋ก์ด๋ ์คํ๋์ค ํด์ ์ฌ์ฉํ์์ต๋๋ค.
GPS๋ฅผ ์ด์ฉํ์ฌ ๋์ ์์น๋ฅผ ํ์ธํ๊ธฐ ์ํด์๋ 4๋จ๊ณ๊ฐ ํ์ํฉ๋๋ค.
1๋จ๊ณ : ์์น ๊ด๋ฆฌ์ ๊ฐ์ฒด ์ฐธ์กฐํ๊ธฐ
2๋จ๊ณ : ์์น ๋ฆฌ์ค๋ ๊ตฌํํ๊ธฐ
3๋จ๊ณ : ์์น ์ ๋ณด ์
๋ฐ์ดํธ ์์ฒญํ๊ธฐ
4๋จ๊ณ : ๋งค๋ํ์คํธ์ ๊ถํ ์ถ๊ฐํ๊ธฐ
๊ทธ๋ผ ์ด์ ๊ฐ ๋จ๊ณ๋ฅผ ์ธ๋ถ์ ์ผ๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค !
์์น ๊ด๋ฆฌ์(LocationManager)๋ ์์คํ
์๋น์ค์ด๋ฏ๋ก ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํด์๋ getSystemService()๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฐ์ startLocationService() ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์ด ๋ฉ์๋ ์์๋ ๋ด ์์น๋ฅผ ํ์ธํ๊ธฐ ์ํ ์ฝ๋๋ฅผ ์
๋ ฅํฉ๋๋ค.
๋นจ๊ฐ ๋ฐ์ค๋ ์์น ๊ด๋ฆฌ์ ๊ฐ์ฒด ์ฐธ์กฐ, ํ๋ ๋ฐ์ค๋ ์ต๊ทผ์ ํ์ธํ๋ ์์น ์ ๋ณด ํ์ธ์ ์๋ฏธํฉ๋๋ค.
์์น ๊ด๋ฆฌ์๋ฅผ ์ํ ์๋น์ค ์ด๋ฆ์ Context.LOCATION_SERVICE์ด๋ฏ๋ก ์ด ์ด๋ฆ์ ์ด์ฉํด ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ํ, ์ต๊ทผ ์์น ์ ๋ณด๋ฅผ ํ์ธํด ๋ณด๋ ์ฝ๋๋ฅผ ๋ฃ์ผ๋ฉด ๋ฐ๋ก ์์น ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. Location ๊ฐ์ฒด๋ ์๋์ ๊ฒฝ๋๊ฐ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, getLatitude()์ getLongitude()๋ฉ์๋๋ฅผ ์ด์ฉํด ๊ทธ ๊ฐ์ ํ์ธํ ์ ์์ต๋๋ค.
์์น ๋ฆฌ์ค๋๋ ์์น ๊ด๋ฆฌ์์์ ์ ๋ฌํ๋ ์์น ์ ๋ณด๋ฅผ ๋ฐ๊ธฐ ์ํด ์ ์๋ ์ธํฐํ์ด์ค์
๋๋ค. ์ฆ, ์์น ๊ด๋ฆฌ์๊ฐ ์์น ์ ๋ณด๋ฅผ ์ ๋ฌํ ๋ ํธ์ถ๋๋ฏ๋ก ์์น ์ ๋ณด๋ฅผ ๋ฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ์ด ๋ฆฌ์ค๋์ onLocationChanged() ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค.
์์น ๊ด๋ฆฌ์๋ ์ผ์ ํ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ์์น ์ ๋ณด๋ฅผ ํ์ธํ๊ฑฐ๋ ์ผ์ ๊ฑฐ๋ฆฌ ์ด์์ ์ด๋ํ์ ๋ ์์น ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์์น ๊ด๋ฆฌ์์๊ฒ ํ์ฌ ์์น๋ฅผ ์๋ ค๋ฌ๋ผ๊ณ ์์ฒญํ๊ธฐ ์ํด์๋ requestLocationUpdate() ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํ๋๋ฐ ํ๋ผ๋ฏธํฐ๋ก๋ ์ต์ ์๊ฐ๊ณผ ์ต์ ๊ฑฐ๋ฆฌ ๊ทธ๋ฆฌ๊ณ ์์น ๋ฆฌ์ค๋ ๊ฐ์ฒด๊ฐ ์ ๋ฌ๋์ด์ผ ํฉ๋๋ค.
๋นจ๊ฐ ๋ฐ์ค๋ ์๋ก ์ ์ํ GPSListener ๊ฐ์ฒด ์์ฑ, ํ๋ ๋ฐ์ค๋ ์์น ๊ด๋ฆฌ์ ๊ฐ์ฒด์ requestLocationUpdates() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์์น ์ ๋ณด ์์ ์์์ ์๋ฏธํฉ๋๋ค. ์ต์ ์๊ฐ์ผ๋ก๋ 10์ด, ์ต์ ๊ฑฐ๋ฆฌ๋ 0์ผ๋ก ํ์ฌ 10์ด๋ง๋ค ์์น ์ ๋ณด๋ฅผ ์ ๋ฌ๋ฐ๊ฒ ๋ฉ๋๋ค.
GPS๋ฅผ ์ด์ฉํด ์์น ์ ๋ณด๋ฅผ ๋ฐ๊ธฐ ์ํ ๊ถํ์ ACCESS_FINE_LOCATION์ผ๋ก ์ ์๋์ด ์์ผ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ ๋งค๋ํ์คํธ์ ๊ถํ์ ์ถ๊ฐํด์ผ ์ฑ์ด ์ ์์ ์ผ๋ก ์คํ๋ฉ๋๋ค.
<uses-permission android:name=โandroid.permission.ACCESS_FINE_LOCATION" />
์ด ๊ถํ์ ์ํ ๊ถํ์ผ๋ก ๋ถ๋ฅ๋์ด ์์ผ๋ฏ๋ก build.gradle(Moodule:app)ํ์ผ์ ์ด๊ณ targetSDKVersion์ ๊ฐ์ 22๋ก ๋ฎ์ถ๋ ๊ฒ๋ ์์ง ๋ง์์ผ ํฉ๋๋ค !
์ ํฌ๋ GPS๋ฅผ ํตํด ํ์ฌ ์์น์ ์๋, ๊ฒฝ๋ ๊ฐ์ ๋ฐ์์ ๊ณต๊ณต๋ฐ์ดํฐ API๋ฅผ ํ์ฑํ์ฌ ํ์ฌ ์๋ ์์น์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ๋ฅ์ฅ์ ๋ฐ์ดํฐ์ ํด๋น ์ ๋ฅ์ฅ์ ๋ฒ์ค ๋์ฐฉ ์ ๋ณด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ต๋๋ค. ์ฌ๊ธฐ์ ํ์ฑ(Parsing)์ด๋, ์ด๋ค ํ์ด์ง(๋ฌธ์, html ๋ฑ)์์ ์์ ์ด ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ํน์ ํจํด์ด๋ ์์๋ก ์ถ์ถํ์ฌ ์ ๋ณด๋ก ๊ฐ๊ณตํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
์์ ์ฌ์ฉ์์ ์กฐ๊ฑด์ ๋ฐ๋ฅด๋ฉด, ์ฌ์ฉ์๋ ํ์ฌ ๋ฒ์ค ์ ๋ฅ์ฅ์ ์์นํด ์๋ ์ํฉ์
๋๋ค. ์ฌ์ฉ์๊ฐ ๋ฒ์ค ์ดํ์ ์คํํ๋ฉด ํ์ฌ ์์นํด ์๋ ์ ๋ฅ์ฅ์ ์ด๋ฆ์ ์์ฑ์ผ๋ก ์๋ด๋ฐ์ต๋๋ค. ์ด๋ GPS๋ฅผ ์ด์ฉํด ํ์ฌ ์์น์ ์ขํ๋ฅผ ๋ฐ์์ ๊ณต๊ณต๋ฐ์ดํฐ API๋ฅผ ํตํด ํ์ฌ ์์นํ ๋ฒ์ค ์ ๋ฅ์ฅ์ ์ด๋ฆ, ์๋, ๊ฒฝ๋๋ฅผ ์ฝ์ด ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ฉด ์์์๋ ์ ์ผ ์์์ text ์ฐฝ์ ๋์์ง๊ฒ ๋ฉ๋๋ค! ๋ค์์ ๊ณต๊ณต๋ฐ์ดํฐ API๋ฅผ ๋ฐ์์ค๊ธฐ ์ํด ์ฌ์ฉํ ์ฝ๋์
๋๋ค.
XMLPullParser๋ฅผ ์ด์ฉํด ๋ฒ์ค ์ ๋ฅ์ฅ์ ์์น ์ ๋ณด๋ฅผ ๋ฐ์์ค๋๋ก ํ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ XML ํ์ฑ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์์ผ๋ฏ๋ก ์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
<XMLParser.java>
XMLParser๋ URL์ ์ด์ฉํด์ XMLPullParser ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค. ์ด ๋ฐํ๋ ๊ฒ์ ๊ฐ์ง๊ณ Tag ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ค๊ฒ ๋๋ ๊ฒ์
๋๋ค. getXMLParser(string type)์์ type์ utf-8, euc-kr๋ฑ XML์ ๊ฐ์ง๊ณ ์ฌ ๋ ์ด๋ค ํํ๋ก ๊ฐ์ง๊ณ ์ฌ ๊ฒ์ธ๊ฐ๋ฅผ ์ค๋ช
ํด ์ฃผ๋ ๊ฒ์
๋๋ค. ๋๋ถ๋ถ utf-8๋ก ๋์ด์์ง๋ง ๊ฐํน ๊นจ์ง๋ ๊ฒฝ์ฐ์๋ euc-kr๋ก ๋ณ๊ฒฝํด ๋ณด๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค!
<BusStationXMLParser.java>
BusStationXMLParser๋ XMLParser์์ ๊ฐ์ง๊ณ ์จ ๋ฒ์ค ์ ๋ฅ์ฅ์ ์ ๋ณด๋ฅผ ์ด์ฉํด์ ์ํ๋ ๊ฐ์ BusStationDatas ๊ฐ์ฒด์ ์ ์ฅํด์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ญ๋๋ค. ์์ฑ์๋ก handler๋ฅผ ๋ฐ๋ ์ด์ ๋! ์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํ์ฑ์ด ๋๋ ํ Activity ์ ๋๋ฌ๋ค๋ ๊ฒ์ ์ ๋ฌํ๊ธฐ ์ํจ์
๋๋ค. ๋ํ ๋ถ๋ชจ class์ธ getXMLParser(โutf-8โ)์ ์ด์ฉํด์ XMLPullParser ๊ฐ์ฒด๋ฅผ ๋ฐ์์ค๊ณ ์์ต๋๋ค.
32๋ฒ ์งธ ์ค์ getEventType()๋ฅผ ์ฌ์ฉํด์ ํ์ฌ ์ฌ๊ฑด์ธ์ง๋ฅผ ์กฐ์ฌํ๋ฉฐ, ์ฌ๊ธฐ์ ์ป์ ์ ๋ณด๋ START_DOCUMENT(๋ฌธ์ ์ฒ์), END_DOCUMENT(๋ฌธ์ ๋), START_TAG(ํ๊ทธ์ ์์(), END_TAG(), TEXT(๋ฐ์ดํฐ)์ค ํ๋๊ฐ ๋ ๊ฒ์
๋๋ค. 33๋ฒ์งธ ์ค์ tagIdentifier๋ ๊ฐ ํ๊ทธ๋ฅผ ์๋ณํ๊ณ ํด๋น ํ๊ทธ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ ๋ณ์์
๋๋ค. ๊ทธ๋ฆฌ๊ณ next ์์๋๋ฅผ ์ฌ์ฉํด์ ๋ค์ ์ฌ๊ฑด์ ์กฐ์ฌํ๋ฉด์ ๋ฌธ์๋ฅผ ์ฒ์๋ถํฐ ์ํํฉ๋๋ค. getName ๋ฉ์๋๋ ํ๊ทธ๋ฅผ ๊ฐ์ ธ์ค๊ณ , getText๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ญํ ์ ํฉ๋๋ค. parsing์ด ๋๋๋ฉด handler์๊ฒ empty message๋ฅผ ๋ณด๋ด ์ค๋๋ค.
์ค์ ๋ฐ์์ค๋ ๋ฒ์ค ์ ๋ฅ์ฅ ์ ๋ณด์ ๋ํด์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฌ๊ธฐ์ ์ํ๋ ์ ๋ณด๋ gpslati, gpslong, nodenm์ธ๋ฐ์! ํ์ฑํ ๋๋ ๋ค๋ฅธ ์ ๋ณด๋ ๋นผ๊ณ , ์ ํ๊ทธ์ ๋ฐ์ดํฐ๋ง ๊ฐ์ง๊ณ ์ค๋ฉด ๋ฉ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฐ์ ์ด ๊ฒฐ๊ณผ๋ ํ์ฌ ์์น์ ์๋, ๊ฒฝ๋๋ฅผ ํฌํญ ์ก๊ฑฐ๋ฆฌ ์ ๋ฅ์ฅ์ ์๋, ๊ฒฝ๋๊ฐ์ ๊ฐ์ ธ์ ์์๋ก ๋ง๋ Url๋ก ๋์จ ๊ฒฐ๊ณผ์ด๋ฉฐ ์๋๋ก์ด๋ ์คํ๋์ค log์ฐฝ์ ๋์ด ๊ฒ์
๋๋ค. ์ด์ฒ๋ผ ๊ณต๊ณต๋ฐ์ดํฐAPI๋ tag์ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ ์ํ๋ ์ ๋ณด๋ง์ ์ป์ ์ ์์ต๋๋ค.
์ ํฌ๋ ๊ตฌ๊ธ ์๋๋ก์ด๋์์ ์ ๊ณตํ๋ google speech API๋ฅผ ํตํด ๋ฒ์ค ๋์ฐฉ ์๋ด์ ํ์ํ ์ ๋ณด๋ฅผ ์๊ฐ์ฅ์ ์ธ์๊ฒ ์์ฑ์ผ๋ก ์
๋ ฅ ๋ฐ๊ณ , ์์ฑ์ผ๋ก ์ถ๋ ฅํ ์ ์๋๋ก ๋ง๋ค์ด๋ณด์์ต๋๋ค. ์๋๋ก์ด๋ ์์ฒด์์ ์ ๊ณตํ๋ google speech API๋ฅผ ์ด์ฉํจ์ผ๋ก์จ ์ฌ์ฉ์์๊ฒ ๊ธฐ๋ฅ์ ์ ๊ณตํ์๊ณ , ์ฌ์ฉ์๋ ์๋๋ก์ด๋ ๊ธฐ๊ธฐ์ ์ค์ -์ผ๋ฐ-์ ๊ทผ์ฑ ํญ์์ ๊ธฐ๋ฅ ํ์ฑํ๋ฅผ ์กฐ์ ํ ์ ์๋๋ฐ์. ์ด๋ฅผ ๋๊ฐ์ง๋ก ๋๋์ด ์ค๋ช
ํ๋ฉด ํฌ๊ฒ STT(Speech To Text), TTS(Text To Speech)๋ก ๋๋ ์ ์์ต๋๋ค.
์ฐ์ STT(Speech To Text)๋ ์ฌ์ฉ์์ ์์ฑ ์
๋ ฅ์ ์ค๋งํธํฐ ํ๋ฉด์์ ๊ธ์๋ก ๋ณํ์์ผ์ฃผ๋ ๊ธฐ๋ฅ์ ๋งํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์๊ณ ์ ํ๋ ๋ฒ์ค์ ๋ฒํธ๋ฅผ ์์ฑ์ผ๋ก ์
๋ ฅ ๋ฐ์ ํ๋ฉด์์ ๋ํ๋ผ ์ ์๋๋ก STT๋ฅผ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค.
STT ๊ธฐ๋ฅ์ด ๊ตฌํ๋๋ ์๋ฆฌ๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค๋ช
ํ์๋ฉด, ์์ฑ์ผ๋ก ์
๋ ฅํ input์ด ์๋ฒ๋ก stream ๋๊ณ , ์ด์ ์๋ฒ์์๋ voice๊ฐ text๋ก ๋ณํ๋์ด ์ด๋ฅผ app์ผ๋ก ๋๋๋ ค ๋ณด๋ด๋ ๋ฐฉ์์
๋๋ค.
์ ๋ STT์ TTS ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ด๋ฐ ๋ช๊ฐ์ง instance๋ฅผ ๋ง๋ค์๋๋ฐ์, ๊ฐ๊ฐ์ ์ฐ์์ ๊ฐ๋จํ ์ฃผ์์ผ๋ก ๋ฌ์๋์์ต๋๋ค. ์์ธํ ์ฐ์์ ์ ์ ํ ๋ฑ์ฅํ๋ ๊ทธ ๋ ์ค๋ช
ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ๋ฅ์ฅ ์ธ์ ํ์, ๋ง์ดํฌ ๋ชจ์ ๋ฒํผ์ ๋๋ฅด๋ฉด โ๋ฒ์ค ๋ฒํธ๋ฅผ ํ ์๋ฆฌ์ฉ ์ซ์๋ก ๋ง์ํ์ธ์.โ๋ผ๋ ๋ง์ด ์ ํ ์ฐฝ์ด ๋จ๊ณ ๋์์ ์ด ๋ง์ ์์ฑ์ผ๋ก ์ฝ์ด์ค๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด์ ๋ฒ์ค ๋ฒํธ๋ฅผ ํ์๋ฆฌ์ฉ ์ซ์๋ก ์ฝ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
btnSpeak์ด๋ผ๋ ์ด๋ฆ์ ์ด๋ฏธ์ง ๋ฒํผ์ ๋๋ฅด๋ฉด ์์ฑ ์
๋ ฅ์ ๋ฐ๊ธฐ ๋๋ฌธ์ setOnClickListener๋ก ์์ฑ ์
๋ ฅ์ ์์ํ๋๋ก ์ค์ ํด ๋์์ต๋๋ค.
(ํ๋ฉด์ ๋ํ๋๋ ์ฐฝ์ ์ด๋ฐ ๋ชจ์ต์
๋๋ค.)
์ฌ์ฉ์์๊ฒ ๋ฒ์ค ๋ฒํธ ์
๋ ฅ์ ์๋ดํ๋ ์์ฑ์ด ๋์ค๊ณ ๋๋ฉด, โ๋ฉ๋โ ํ๋ ์๋ฆฌ์ ํจ๊ป ์์ฑ ๋
น์์ด ์์๋ฉ๋๋ค. ์๋์ ๋ณด์ด๋ promptSpeechInput() ์ ํด๋นํ๋ ๋ถ๋ถ์ด์ง์. ์ฌ์ฉ์๊ฐ ๋ ์ด์ ๋ง์ ํ์ง ์์ผ๋ฉด ์๋์ผ๋ก ์ข
๋ฃ๋ฅผ ์ธ์ํ๊ณ ๋ ๋ค์ โ๋ฉ๋โ์๋ฆฌ์ ํจ๊ป ๋
น์์ ์ข
๋ฃ๋ฉ๋๋ค. ์ฐพ์๋ณธ ๊ฒฐ๊ณผ ์ฝ 2.75์ด ์ ๋๊ฐ ์ง๋๋ฉด ์ข
๋ฃ๋์ด ์๋ ๊ฒ์ผ๋ก ์ค์ ๋์ด์์ต๋๋ค.
์ฌ๊ธฐ์ ์ ๋ ฅ ๋ฐ์ ๋ฒ์ค ๋ฒํธ๋ onActivityResult๋ผ๋ object์์ stirng ๋ณ์ busnum์ ์ ์ฅ๋๊ฒ ํ์ต๋๋ค. ๋ฒ์ค ๋์ฐฉ ์ ๋ณด๋ฅผ ์ป์ผ๋ ค๋ฉด ๋ฒ์ค ์ ๋ณด๋ฅผ ๋๊ฒจ์ผ ํ๋๊น์..!
๋ค์์ผ๋ก TTS(TextToSpeech)๋ ํ๋ฉด์์ ๋ํ๋ ๊ธ์๋ฅผ ์์ฑ์ผ๋ก ์ฝ์ด์ฃผ๋ ๊ธฐ๋ฅ์
๋๋ค. ์ฌ์ฉ์๋ก๋ถํฐ ์
๋ ฅ ๋ฐ์ ๋ฒํธ์ ํด๋นํ๋ ๋ฒ์ค์ ๋์ฐฉ ์๋ด ์ ๋ณด๋ฅผ ๊ณต๊ณต ๋ฐ์ดํฐ์์ ๋ฐ์์ค๋ฉด, ์ด๋ฅผ ํ๋ฉด์ ๋ํ๋ด๊ฒ ๋ฉ๋๋ค. ์ด๊ฒ์ TTS๊ธฐ๋ฅ์ ์ฌ์ฉํด ์์ฑ์ผ๋ก ์ฝ๋๋ก ํ์ฌ ๋์ฐฉ ์ ๋ณด๋ฅผ ๋ค์ ์ ์๊ฒ ํ์ต๋๋ค.
๊ทธ๋ฆผ ์๋จ์ ํ์ํ ๊ฒ ์ฒ๋ผ TTS ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ฐ์ main Activity class์์ TextToSpeech.OnInitListener ๋ก๋ถํฐ Implement๋ฅผ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ TTS๋ฅผ ์ฌ์ฉ ํ ๋ ์ธ ์ธ์ด๋ ์ค์ ํ ์ ์๋๋ฐ์, onInit() method์์ ์ค์ ํ ์ ์์ต๋๋ค.
๋จผ์ ์๋๋ถ๋ถ์ ์๋ onInit method๋ถํฐ ์ค๋ช
ํ์๋ฉด, ๊ฐ๋จํ ๋งํด TTS ๊ธฐ๋ฅ์ ์ค์ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. Result ๊ฐ์ ๋ํด ํ๊ตญ์ด๋ก ์ค์ ํ๊ธฐ ์ํด KOREA๋ผ๊ณ ์ ํ ๊ฒ์ด ๋ณด์ด์์ฃ ? ๊ทธ๋ฆฌ๊ณ ์ธ์ด ์ค์ ๋ฟ ์๋๋ผ ์์ฑ ์ถ๋ ฅ์์ ๋์ค๋ ๋ชฉ์๋ฆฌ์ ๋๋ฎ์ด์ ๋น ๋ฅด๊ธฐ๋ ์กฐ์ ํ ์ ์์ต๋๋ค.
ํํธ, TTS ๊ฒฐ๊ณผ๋ speakOut(); ์ด๋ผ๋ method๋ฅผ ํตํด ์์ฑ ์ถ๋ ฅ์ด ๋๋๋ฐ์. ๋ง์ฝ ์ฝ์ data๊ฐ ์๊ฑฐ๋ ์ธ์ด๊ฐ ์ง์๋์ง ์๋ ๊ฒฝ์ฐ์๋ TTS ๊ธฐ๋ฅ์ด ๋ถ๊ฐ๋ฅ ํ๋ค๋ ๋ฉ์์ง๋ฅผ ๋์ฐ๊ณ , ํด๋น ์ฌํญ ์์ด ์ ์ ์๋ ํ๋ ๊ฒฝ์ฐ์๋ง speakOut(); method๋ฅผ ์คํํฉ๋๋ค.
TTS๋ฅผ ์ฌ์ฉํ์ค ๋ ์ฃผ์ํ์ค ์ ์, shutdown์ ๊ผญ ์ํค์
์ผ ํ๋ค๋ ์ ์
๋๋ค! OnDestroy method๋ฅผ ํตํด ๋ฆฌ์์ค๋ฅผ ํด์ ์ํค๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ด์ฃ .
์ด์ TTS๋ฅผ ์ฌ์ฉํ ์ค๋น๊ฐ ๋์์ต๋๋ค! ์ฝ์ ๋์์ด ์ ํด์ง๊ณ ๋๋ฉด, speakOut()์ด๋ผ๋ object๋ฅผ ํตํด ์์ฑ ์ถ๋ ฅ์ด ๋ฉ๋๋ค.
์๋ ์ฝ๋๋ STT๋ฅผ ํตํด ์
๋ ฅ๋ฐ์ txtSpeechInput์ ๊ฒฐ๊ณผ๋ฅผ text๋ผ๋ string์ ์ ์ฅํ๊ณ , ๊ทธ๊ฒ์ ์ฝ์ด์ฃผ๋ ๋ถ๋ถ์
๋๋ค. ํ๋ก๊ทธ๋จ์์ txtSpeechInput์ ๊ฐ๋ง ๋ฐ๊ฟ๊ฐ๋ฉฐ speakOut ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๋ก ๋ง๋ค์์ต๋๋ค. ์ฐธ๊ณ ๋ก, ์ฌ๊ธฐ์ QUEUE_FLUSH์ ์๋ฏธ๋ ํ์ ์๋ ๋ด์ฉ์ ๋น์ฐ๊ณ ์๋ก์ด ๋ด์ฉ, ์ฆ ์๋ก์ด data๋ฅผ ์ฝ์ด์ฃผ๊ฒ ๋ค๋ ์๋ฏธ์
๋๋ค. ์ด๋ ๊ฒ ํด์ผ ๊ทธ๋ ๊ทธ๋ ๋ฐ๋๋ data๋ฅผ ์ฝ์ด๋ผ ์ ์๊ฒ ์ฃ ?
ํ๋ก๊ทธ๋จ ์คํ ์ **GPS๋ก ์ฌ์ฉ์์ ํ์ฌ ์์น๋ฅผ ํ์ **ํ๊ณ , ํ์ฌ ์ฌ์ฉ์์ ์ขํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฒ์ค ์ ๋ฅ์ฅ์ ์ฐพ์ ํ๋ฉด์ ๋ํ๋ ๋๋ค.
ํด๋น ์ ๋ฅ์ฅ์ด ์ธ์๋ ํ, ์ฌ์ฉ์๋ ํ๋จ์ ๋ฒํผ์ ๋๋ฌ ํ๊ณ ์ ํ๋ ๋ฒ์ค์ ๋ฒํธ๋ฅผ ์์ฑ์ผ๋ก ์
๋ ฅํฉ๋๋ค.(์: 100-1๋ฒ ๋ฒ์ค์ ๊ฒฝ์ฐ '์ผ๊ณต๊ณต ๋ค์ ์ผ' ํน์ '์๊ณต๊ณต ๋ค์ ์ผ')
๋ฒ์ค ๋์ฐฉ ์๋ด ์ ๋ณด๋ STT(Speech to Text)๊ธฐ๋ฅ์ ํตํด ๋ฌธ์๋ก ํ๋ฉด์ ๋ํ๋๊ณ TTS(Text to Speech)๋ฅผ ํตํด ์ฌ์ฉ์์๊ฒ ํ์ธ ๋ฐ์ ์ ์์ต๋๋ค. ์ด ๋, ๊ฐ์ ๋ฒํธ์ ๋ฒ์ค ์ ๋ณด๊ฐ ์ฌ๋ฌ ๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ ํ์ฌ ์์น ์ ๋ฅ์ฅ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฒ์ค์ ์ ๋ณด๋ฅผ ๋ฐ์์ต๋๋ค.
ํ๋ฉด์ ํด๋น ๋ฒ์ค์ ๋์ฐฉ ์ ๋ณด๊ฐ ๋ํ๋๋ฉด, TTS๊ธฐ๋ฅ์ ์ด์ฉํด ์ฌ์ฉ์์๊ฒ ์์ฑ์ผ๋ก ์๋ดํฉ๋๋ค.
๋ง์ฝ ๋ฒ์ค ์ ๋ณด๊ฐ ์กด์ฌํ์ง ์๊ฑฐ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ ์์ฑ์ผ๋ก ์๋ดํฉ๋๋ค.
- ๊ฒ์ ํ๋ฉด๊ณผ ํฐ ํฐ๊ธ์จ
์๊ฐ์ฅ์ ์ธ ๋ฐ ์ ์๋ ฅ์๋ฅผ ๋์์ผ๋ก ํ๋ ๋งํผ, ๊ฐ๋
์ฑ์ ์ํด ๊ฐ์ฅ ๊ฐ๋จํ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ฑํ์์ต๋๋ค.
- ๋จ์ํ ์กฐ์ ๋ค์ํ ๋ฉ๋ด๋ ์ฌ๋ฌ ๋ ์ด์ด์ ํ๋ฉด ๋์ , ํ ํ๋ฉด์์ ๋ชจ๋ ๊ฒ์ ๊ตฌ์ถํ์ฌ ์์ฑ ์๋ด ์๋ง ์์กดํ์ฌ๋ ์กฐ์ํ๊ธฐ์ ์ด๋ ค์์ด ์๋๋ก ๊ตฌ์ฑํ์์ต๋๋ค!! ๋ํ ํด๋น ์ ๋ฅ์ฅ์ ์์น๋ฅผ GPS๋ฅผ ํตํด ์๋์ผ๋ก ์ธ์ํ๊ฒ ํ์ฌ ์ฌ์ฉ์ ๋์ฑ ํธ๋ฆฌํจ์ ์ฃผ๊ณ ์ ํ์์ต๋๋ค.
์ ํฌ๋ ์ง๊ธ๊น์ง ์๊ฐ์ฅ์ ์ธ ๋ฐ ์ ์๋ ฅ์๋ฅผ ์ํ ๋ฒ์ค ๋์ฐฉ ์ ๋ณด ์๋ด ์ดํ๋ฆฌ์ผ์ด์
์ ์๊ฐํ์๋๋ฐ์. ๊ฐ๋จํ๊ฒ ๋ช๊ฐ์ง ํน์ง์ ์์ฝํด๋ณด๊ฒ ์ต๋๋ค.
์ฒซ์งธ, ๋จ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ถ๊ตฌํ์ฌ ๊ฐ๋จํ ๋ฉ๋ด ๊ตฌ์ฑ๊ณผ, ๊ฒ์ ๋ฐํ์ ํฐ ๊ธ์จ๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์๊ฐ์ฅ์ ์ธ์ด ์ดํ๋ฆฌ์ผ์ด์
์ ํตํด ์ฝ๊ฒ ์ ๋ณด๋ฅผ ์ป์ ์ ์๊ฒ ํ์์ต๋๋ค.
๋์งธ, ์ฌ์ฉ์์ GPS๋ฅผ ํตํด ํ์ฌ ์์น๋ฅผ ์๋์ผ๋ก ์ธ์ํ๊ณ , ๋ฒ์ค ๋์ฐฉ ์ ๋ณด ๋ฐ ๊ทธ์ ํ์ํ ์ ๋ณด๋ค์ ์์ฑ์ผ๋ก ์
์ถ๋ ฅ ํ์ฌ ์ฌ์ฉ์๊ฐ ํธ๋ฆฌํ๊ฒ ์ ๋ณด๋ฅผ ํ์
ํ ์ ์๋๋ก ํ์์ต๋๋ค. ์๊ฐ์ฅ์ ์ธ๊ณผ ์ ์๋ ฅ์ ๋ฟ ์๋๋ผ ๋น์ฅ์ ์ฌ์ฉ์๋ค๋ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ์ฃ ?
[์์ผ๋ก์ ๊ณํ]
์ฒซ ๋ฒ์งธ ํ์ผ์ GPS๋ฅผ ํตํด ํ์ฌ ์์น์ ์๋, ๊ฒฝ๋๋ฅผ ์ธ์ํ์ฌ ๊ฐ๊น์ด ์ ๋ฅ์์ ๋ฆฌ์คํธ๋ฅผ log์ ๋์ฐ๋ ๊ฒ๊น์ง ๊ตฌํ๋์๊ณ , ๋ ๋ฒ์งธ ํ์ผ์ ํ์ฌ ์์น์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ๋ฅ์ฅ์ ์๋, ๊ฒฝ๋ ๊ฐ์ ์์๋ก ์ค์ ํ๊ณ ํด๋น ์ ๋ฅ์ฅ์์์ ๋ฒ์ค ๋์ฐฉ ์๋ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ์์ฑ์ผ๋ก ์
๋ ฅ ๋ฐ ์๋ด๊น์ง ๊ตฌํ๋์์ต๋๋ค.
์์ผ๋ก ๋ ๊ฐ๋ฐํด์ผํ ๋ถ๋ถ์ ๊ฐ๊น์ด ์ ๋ฅ์์ ๋ฆฌ์คํธ ์ค์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ๋ฅ์๋ฅผ ๊ณ์ฐํ์ฌ ๊ทธ ๋ฐ์ดํฐ ๊ฐ์ ๋ ๋ฒ์งธ ํ์ผ๋ก ๋ณด๋ด Url์ ์์ฑ์ํค๋ ๊ฒ์
๋๋ค!!