๋๋ฌผ์ ์ฒ์ ๋์ ๋ฐ๋ ค ์๋ฌผ์ ๋ฑ๋กํ๊ณ ๊ด๋ฆฌํ๋ฉฐ, ์๋ฌผ ์ฑ์ฅ์ ์ค์ํ ๋ ์จ ์ ๋ณด๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์ธํ๊ณ ์๋ฆผ์ ๋ฐ์ ์ ์๋ ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค.
์ด ํ๋ก์ ํธ๋ ์ฌ์ฉ์๊ฐ ํค์ฐ๋ ์๋ฌผ์ ๋ฌผ์ฃผ๊ธฐ ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๊ณ , ์ฑ์ฅ ๊ณผ์ ์ ๊ธฐ๋กํ๋ฉฐ, ์ธ๋ถ ๋ ์จ API๋ฅผ ํ์ฉํด ์๋ฌผ ๊ด๋ฆฌ์ ํ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ฐ๋ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, Flask ์๋ฒ๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ๋ ํ์ด๋ธ๋ฆฌ๋ ํต์ ๋ฐฉ์์ ์ฑํํ๊ณ ์์ต๋๋ค.
- ์๋ฌผ ๋ฑ๋ก ๋ฐ ์กฐํ: ์๋ฌผ์ ์ข
๋ฅ, ๋ณ๋ช
, ๋ฌผ์ฃผ๊ธฐ ์ฃผ๊ธฐ, ์
์ ๋ ์ง ๋ฑ์ ๋ฑ๋กํ๊ณ
StaggeredGridLayout์ ํตํด ์นด๋ ํํ๋ก ๋ชจ์๋ณผ ์ ์์ต๋๋ค. - ๋ฌผ์ฃผ๊ธฐ ์๋ฆผ ์์คํ
:
- ๋ฑ๋ก๋
last_watered_date์watering_cycle์ ๊ณ์ฐํ์ฌ ๋ฌผ์ฃผ๊ธฐ๊ฐ ํ์ํ ๋ ์ง๋ฅผ ์๋์ผ๋ก ํ๋จํฉ๋๋ค. - ๋ฌผ์ฃผ๊ธฐ๊ฐ ํ์ํ ๋น์ผ, ๋ฉ์ธ ํ๋ฉด์ ์๋ฆผ ์์ด์ฝ์ด ํ์ฑํ๋๋ฉฐ ์ฌ์ฉ์์๊ฒ ๋ฆฌ์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
AlarmManager๋ฅผ ํ์ฉํ์ฌ ๋งค์ผ ์ค์ ๋ ์๊ฐ์ ํธ์ ์๋ฆผ์ ๋ฐ์กํฉ๋๋ค.
- ๋ฑ๋ก๋
- ์ฑ์ฅ ๊ธฐ๋ก: ์๋ฌผ๋ณ๋ก ์ฌ์ง๊ณผ ๋ฉ๋ชจ๋ฅผ ๋จ๊ฒจ ์ฑ์ฅ ๊ณผ์ ์ ํ์๋ผ์ธ์ฒ๋ผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. (DB ํ
์ด๋ธ
plant_memos,plant_images์ฐ๋)
- ์ค์๊ฐ ๋ ์จ ๋ชจ๋ํฐ๋ง:
- OpenWeatherMap API๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ ์ฅํ ์ง์ญ์ ์ค์๊ฐ ๋ ์จ(์จ๋, ์ํ)๋ฅผ ์กฐํํฉ๋๋ค.
ViewPager2๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์ง์ญ์ ๋ ์จ ์ ๋ณด๋ฅผ ์ค์์ดํํ์ฌ ํ์ธํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ๋ง์ถคํ ๊ธฐ์ ์๋ฆผ:
WorkManager๋ฅผ ์ด์ฉํด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ ์จ๋ฅผ ์ฒดํฌํฉ๋๋ค.- ์ฌ์ฉ์๊ฐ ์ค์ ํ ์กฐ๊ฑด(๋น/๋ ์๋ณด, ํน์ ์ต์ /์ต๊ณ ์จ๋ ๋๋ฌ) ์ถฉ์กฑ ์ ์๋ฆผ์ ๋ฐ์กํ์ฌ ์๋ฌผ์ ์ค๋ด๋ก ๋ค์ด๊ฑฐ๋ ๋ณดํธํ ์ ์๋๋ก ๋์ต๋๋ค.
- ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ: MySQL ๊ธฐ๋ฐ์ ํ์ ์ธ์ฆ ์์คํ ์ ๊ฐ์ถ๊ณ ์์ผ๋ฉฐ, ๋น๋ฐ๋ฒํธ๋ ํด์ฑ ์ฒ๋ฆฌ๋์ด ์์ ํ๊ฒ ์ ์ฅ๋ฉ๋๋ค.
- ๊ณ์ ๊ด๋ฆฌ: ์ด๋ฉ์ผ ๋ณ๊ฒฝ(์ธ์ฆ ํฌํจ), ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ, ๋ฐ์ดํฐ ์ด๊ธฐํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์๋ ๋ก๊ทธ์ธ:
SharedPreferences๋ฅผ ํ์ฉํ์ฌ ์ฑ ์ฌ์คํ ์ ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์งํฉ๋๋ค.
- ์ฌ์ง ์
๋ก๋:
Retrofit2๋ฅผ ์ฌ์ฉํ์ฌ Flask ๊ธฐ๋ฐ์ ์น ์๋ฒ๋ก ์๋ฌผ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํฉ๋๋ค. - ์ด๋ฏธ์ง ๋ก๋ฉ:
Glide๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ํจ์จ์ ์ผ๋ก ๋ก๋ฉํ๊ณ ์บ์ฑํฉ๋๋ค.
- Language: Java 11
- SDK: Min SDK 28 (Android 9.0) / Target SDK 35
- UI Components:
RecyclerView,ViewPager2,DrawerLayout,CardView,CoordinatorLayout - Networking:
- Retrofit2 & OkHttp3: ๋ ์จ API ์กฐํ ๋ฐ ์ด๋ฏธ์ง ์ ๋ก๋ ์๋ฒ ํต์
- JDBC (MySQL Connector): ์๊ฒฉ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ง์ ์ฐ๊ฒฐ ๋ฐ ์ฟผ๋ฆฌ ์ํ
- Async & Background:
- WorkManager: ์ฃผ๊ธฐ์ ์ธ ๋ ์จ ์ฒดํฌ ์์ ์์ฝ
- Thread & Handler: DB ์์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐ UI ์ ๋ฐ์ดํธ
- Image Loader: Glide 4.12.0
์ด ํ๋ก์ ํธ๋ ๋ณด์์ ์ํด API ํค์ ์๋ฒ ์ ๋ณด๋ฅผ local.properties ํ์ผ์์ ๊ด๋ฆฌํฉ๋๋ค. ์ฑ์ ๋น๋ํ๊ธฐ ์ํด์๋ ํ๋ก์ ํธ ๋ฃจํธ์ local.properties ํ์ผ์ ๋ค์ ํญ๋ชฉ๋ค์ ์ค์ ํด์ผ ํฉ๋๋ค.
# local.properties
# Android SDK ๊ฒฝ๋ก
sdk.dir=...
# Database Connection (MySQL)
db.host=YOUR_DB_HOST
db.name=YOUR_DB_NAME
db.user=YOUR_DB_USER
db.password=YOUR_DB_PASSWORD
# Image Server (Flask)
server.ip=YOUR_SERVER_IP
# External APIs
geo.apikey=YOUR_GEOCODING_API_KEY
weather.apikey=YOUR_OPENWEATHERMAP_API_KEY