Project: Weather App (REST API)
🌤️ Project: Weather App with REST API Integration
នៅក្នុងគម្រោងនេះ យើងនឹងបង្កើត Weather App មួយដែលប្រើ OpenWeatherMap API ដើម្បីទាញយកព័ត៌មានអាកាសធាតុ។ គម្រោងនេះផ្តោតលើ REST API calls, JSON parsing, និង AsyncTask/Volley library!
📋 Features នៃ Weather App
Feature | ពិពណ៌នា |
---|---|
🌍 City Search | ស្វែងរកទីក្រុងណាមួយក្នុងពិភពលោក |
🌡️ Current Weather | សីតុណ្ហភាព, ការពិពណ៌នា, រូបតំណាង |
💨 Wind & Humidity | ល្បឿនខ្យល់ និងសំណើម |
📅 5-Day Forecast | ព្យាករណ៍អាកាសធាតុ 5 ថ្ងៃ |
📍 Location Detection | ប្រើទីតាំងបច្ចុប្បន្ន (GPS) |
🌐 REST API | OpenWeatherMap API integration |
🔄 Pull to Refresh | Update ទិន្នន័យថ្មី |
📁 Project Structure
មុនពេលចាប់ផ្តើម សូមយល់ដឹងអំពីរចនាសម្ព័ន្ធ files នៃគម្រោង:
📦 WeatherApp/ ├── 📂 app/ │ ├── 📂 src/ │ │ ├── 📂 main/ │ │ │ ├── 📂 java/ │ │ │ │ └── 📂 com/example/weatherapp/ │ │ │ │ ├── MainActivity.java │ │ │ │ ├── WeatherData.java │ │ │ │ ├── ForecastData.java │ │ │ │ ├── ForecastAdapter.java │ │ │ │ └── WeatherApiService.java │ │ │ ├── 📂 res/ │ │ │ │ ├── 📂 layout/ │ │ │ │ │ ├── activity_main.xml │ │ │ │ │ └── item_forecast.xml │ │ │ │ ├── 📂 values/ │ │ │ │ │ ├── colors.xml │ │ │ │ │ └── strings.xml │ │ │ │ └── 📂 drawable/ │ │ │ └── AndroidManifest.xml │ └── build.gradle └── build.gradle
📝 Note: បង្កើត New Project នៅក្នុង Android Studio។ អ្នកត្រូវការ OpenWeatherMap API Key (ឥតគិតថ្លៃ) ពី openweathermap.org
🔑 Step 1: Get API Key
សូមធ្វើតាមជំហានទាំងនេះ:
- ចូលទៅកាន់ OpenWeatherMap
- បង្កើតគណនីឥតគិតថ្លៃ (Sign Up)
- ទទួលបាន API Key ពី Account → API Keys
- រង់ចាំ 10-15 នាទី ដើម្បីឱ្យ API Key active
💾 Step 2: Add Dependencies (build.gradle)
បន្ថែម Volley library សម្រាប់ network requests:
dependencies {
implementation 'com.android.volley:volley:1.2.1'
implementation 'com.squareup.picasso:picasso:2.8'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation 'com.google.android.gms:play-services-location:21.0.1'
}
🌐 Step 3: Add Permissions (AndroidManifest.xml)
បន្ថែម permissions សម្រាប់ Internet និង Location:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
🎨 Step 4: Weather Data Model (WeatherData.java)
បង្កើត model class សម្រាប់រក្សាទុកទិន្នន័យអាកាសធាតុ។
🎨 Step 5: Forecast Data Model (ForecastData.java)
បង្កើត model class សម្រាប់ព្យាករណ៍អាកាសធាតុ។
🌐 Step 6: Weather API Service (WeatherApiService.java)
បង្កើត service class សម្រាប់ API calls ជាមួយ Volley។
🎨 Step 7: Main Activity Layout (activity_main.xml)
បង្កើត UI layout សម្រាប់បង្ហាញព័ត៌មានអាកាសធាតុ។
🎨 Step 8: Forecast Item Layout (item_forecast.xml)
បង្កើត layout សម្រាប់ forecast item នីមួយៗ។
🔄 Step 9: Forecast Adapter (ForecastAdapter.java)
បង្កើត RecyclerView adapter សម្រាប់បង្ហាញ forecast list។
💻 Step 10: Main Activity (MainActivity.java)
បង្កើត main activity ដែលភ្ជាប់ទាំងអស់ជាមួយគ្នា។
🎯 API Integration Concepts
1. API Endpoints
Endpoint | Purpose |
---|---|
/weather |
Current weather data |
/forecast |
5-day weather forecast |
2. JSON Response Structure
{
"main": {
"temp": 298.15,
"humidity": 65
},
"weather": [{
"description": "clear sky",
"icon": "01d"
}],
"wind": {
"speed": 3.5
}
}
3. HTTP Methods
Method | Usage |
---|---|
GET | ទាញយកទិន្នន័យពី API |
POST | បញ្ជូនទិន្នន័យទៅ server |
✨ Advanced Features (Optional)
💡 អ្នកអាចបន្ថែមបាន:
- 🌍 Multiple cities support
- 💾 Cache data with Room database
- 📊 Weather charts and graphs
- 🔔 Weather alerts/notifications
- 🎨 Dynamic backgrounds based on weather
- 🌙 Hourly forecast
- 🗺️ Map integration
- 🌡️ Temperature unit conversion (°C/°F)
🐛 Common API Issues & Solutions
Issue | Solution |
---|---|
❌ 401 Unauthorized | Check API key, wait 10-15 minutes after creating |
❌ No internet connection | Check permissions, handle network errors gracefully |
❌ JSON parsing error | Validate JSON structure, use try-catch blocks |
❌ City not found | Show user-friendly error message |
❌ Slow loading | Add loading indicator, implement caching |
🎓 Learning Outcomes
បន្ទាប់ពីបញ្ចប់គម្រោងនេះ អ្នកនឹងយល់ដឹងពី:
- ✅ REST API integration with Volley
- ✅ JSON parsing with JSONObject
- ✅ HTTP GET requests
- ✅ Async network operations
- ✅ Error handling for network calls
- ✅ Image loading with Picasso
- ✅ Location services (GPS)
- ✅ SwipeRefreshLayout
- ✅ RecyclerView with API data
✅ Congratulations! អ្នកបានបង្កើត Weather App មួយដែលប្រើ REST API ពេញលេញ! នេះគឺជា foundation ល្អសម្រាប់ apps ណាដែលត្រូវការទិន្នន័យពី external APIs!
🚀 API Testing Tips
- ប្រើ Postman ដើម្បីសាកល្បង API endpoints មុនពេល code
- ពិនិត្យមើល API documentation យ៉ាងល្អិតល្អន់
- រក្សាទុក API key នៅក្នុង
strings.xml
ឬ BuildConfig - Handle rate limits (Free API មានដែនកំណត់ requests)
- Cache data ដើម្បីកាត់បន្ថយ API calls