๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿค์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ ๊ธฐ๋ก/โ˜€๏ธ ํ•˜๊ณ„ ์ธํ„ด ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ ๊ธฐ๋ก

โ˜”๏ธ ์œ„์น˜ ๋ฐ์ดํ„ฐ ์ธก์ •ํ•  ๋•Œ ์ฃผ์˜์ 

by hyeonha 2024. 11. 2.

๐Ÿ˜‚ ๋น„ ์˜ค๋Š” ๋‚ ์„ ํ”ผํ•˜์ž!!

GPS๋ฅผ ํ†ตํ•ด ์œ„์น˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ธก์ •ํ•  ๊ฒฝ์šฐ ์‹ค๋‚ด , ๋‚ ์”จ๊ฐ€ ์•ˆ์ข‹์„ ๋•Œ๋ฅผ ํ”ผํ•ด์•ผํ•œ๋‹ค..! ์œ„์น˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ธก์ •๋˜์ง€ ์•Š์•„ ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ์ ๊ฒ€ํ•˜๊ณ  ์ˆ˜์ •ํ•ด๋ณด์•„๋„ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค.

ํ˜น์‹œ ๋ชฐ๋ผ ์›Œ์น˜์— ์„ค์น˜๋œ ๋‹ค๋ฅธ ์•ฑ ์ค‘ ์‚ฌ์šฉ์ž์˜ ์œ„์น˜๋ฅผ ์–ป์–ด์˜ค๋Š” ์•ฑ์„ ์‹คํ–‰์‹œ์ผœ๋ณด์•˜๋Š”๋ฐ..! ๋‹ค๋ฅธ ์•ฑ ๋˜ํ•œ ์œ„์น˜๋ฅผ ๋ฐ›์•„์˜ค์ง€ ์•Š์•˜๋‹ค. 

๋‹น์‹œ๋Š” ์ด๋ฒˆ ์—ฌ๋ฆ„์œผ๋กœ ์—„์ฒญ ๋น„๊ฐ€ ๋งŽ์ด์˜ค๊ณ  ํ๋ฆฐ ๋‚ ๋“ค์ด์—ˆ๋‹ค.

 

๋น„๊ฐ€ ๊ทธ์น˜๊ณ  ํ•˜๋Š˜์ด ๋ง‘์•„์ง„ ๋‚  ๋‹ค์‹œ ํ…Œ์ŠคํŠธํ•ด๋ณด๋‹ˆ ๊ฑฐ์ง“๋ง์ฒ˜๋Ÿผ ์œ„์น˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ์ธก์ •๋˜์—ˆ๋‹ค.

 

Gps๋ฅผ ์ด์šฉํ•œ ์œ„์น˜ ๋ฐ์ดํ„ฐ๋Š” ๋‚ ์”จ์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๊ฐ€๋ณด๋‹ค.. ์•„๋ฌด๋ž˜๋„ GPS ์‹ ํ˜ธ๋ฅผ ํ†ตํ•ด์„œ ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™๋‹ค.


๊ฐœ์„ ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ์ผ๊นŒ?

๋‚ ์”จ๊ฐ€ ์•ˆ์ข‹์„ ๋•Œ๋งˆ๋‹ค ์œ„์น˜๋ฅผ ์ œ๋Œ€๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.
ํ˜„์žฌ๋Š” LocationManager ๋ฐฉ์‹์œผ๋กœ ์œ„์น˜๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์žˆ์—ˆ๋‹ค.

์ฒ˜์Œ์—๋Š”  LocationManager.GPS_PROVIDER์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜์˜€๋‹ค. 

์ด๋Š” ์ฃผ๋กœ ์‹ค์™ธ์—์„œ ์ •ํ™•ํžˆ ์ž‘๋™ํ•˜๊ณ , ์œ„์„ฑ ์‹ ํ˜ธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌด์—‡๋ณด๋‹ค ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๊ฐ€ ๋†’์€ ๋ฐฉ์‹์ด์—ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์‹œ ์œ„์น˜๊ฐ€ ์ž˜ ์ธก์ •๋  ๋•Œ๋„ ์žˆ์—ˆ์ง€๋งŒ, ์žฅ๋งˆ ๊ธฐ๊ฐ„์ด ๋˜์ž ์‹ค๋‚ด์—์„œ๋Š” ์œ„์น˜๊ฐ’์ด null๋กœ ๋Œ์•„์™”๋‹ค. 

 

LocationManager.NETWORK_PROVIDER๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์—๋„ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค.

์ด๋Š” gps ๋ฐฉ์‹์— ๋น„ํ•ด ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๊ฐ€ ๋‚ฎ๊ณ  ์œ„์„ฑ์‹ ํ˜ธ๊ฐ€ ์•„๋‹Œ ๊ธฐ์ง€๊ตญ, WIFI ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ธก์ •ํ•œ๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง„ ๋ฐฉ์‹์ด๋‹ค.

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,5*1000, 0f) {
 // ์ด ๊ฒฝ์šฐ GPS๋ฅผ ํ†ตํ•ด ์œ„์น˜ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ ์”จ์˜ ์˜ํ–ฅ๊ณผ ์‹ค๋‚ด์—์„œ๋Š” ์ œ๋Œ€๋กœ ์ธก์ •๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
}

 

์–ด๋Š ๋‚  ์ถœ๊ทผํ•ด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๋‹ˆ ๊ฐ‘์ž๊ธฐ ์œ„์น˜๊ฐ€ ์ฐํ˜”๊ณ , ์žฅ๋งˆ๊ฐ€ ๋๋‚˜๋Š” ๋•Œ์™€ ์‹œ๊ธฐ๊ฐ€ ์œ ์‚ฌํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค๋‚ด์—์„œ ์ธก์ •, ๋‚ ์”จ์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค๊ณ  ๊ฒฐ๋ก ์ง€์—ˆ๋‹ค.

 

๋ฌธ์ œ์™€๋Š” ๋ณ„๊ฐœ๋กœ LocationManager ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ GPS๋‚˜ ๋„คํŠธ์›Œํฌ ๋“ฑ์˜ ์œ„์น˜ ์ œ๊ณต์ž๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๊ณ  ํ™˜๊ฒฝ์ ์ธ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค๋Š” ์ ์ด ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์šฐ๋ ค๋˜์—ˆ๋‹ค. (์ด๋ฏธ ๊ฒฝํ—˜ํ•˜๊ธฐ๋„ ํ–ˆ๊ณ ....)

 

๋ฌผ๋ก  ๊ฑด์„ค ํ™˜๊ฒฝ ๊ทผ๋กœ์ž๋ถ„๋“ค์€ ์‹ค์™ธ + ๋‚ ์”จ๊ฐ€ ๋ง‘์„ ๋•Œ ๊ทผ๋ฌดํ•˜์‹ค ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์ง€๋งŒ ํ˜น์‹œ๋‚˜ ์ƒ๊ธด ์œ„ํ—˜ ์ƒํ™ฉ์—์„œ ์œ„์น˜๊ฐ€ ์ œ๋Œ€๋กœ ์ฐํžˆ์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. 

๋”ฐ๋ผ์„œ ์ข€ ๋” ๊ฐœ์„ ๋œ ๋ฐฉ์‹์ธ FusedLocationClient์œผ๋กœ ์ˆ˜์ •ํ•˜๊ณ ์ž ํ–ˆ๋‹ค. LocationManager์™€ ๋‹ฌ๋ฆฌ ๋‹ค์–‘ํ•œ ์œ„์น˜ ์ œ๊ณต์ž๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋˜ํ•œ ๋ฐฐํ„ฐ๋ฆฌ ํšจ์œจ์„ฑ๋„ ๋” ์ข‹๋‹ค๊ณ  ํ•˜๋‹ˆ ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์ตœ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์˜€๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์ด fusedLocationClient๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ˆ˜์ • ํ›„ ๋งˆ๋ฌด๋ฆฌํ•˜์˜€๋‹ค : )

 fusedLocationClient.requestLocationUpdates(
                locationRequest,
                locationCallback,
                Looper.getMainLooper()
            )

 

 

๋!!

728x90