add retrofit call weatherapi
continuous-integration/drone/push Build is passing Details

OpenWeatherApi
Lucas Delanier 2 years ago
parent ab0f8a0462
commit 2b44820d67

@ -51,5 +51,7 @@ dependencies {
implementation "androidx.room:room-runtime:2.5.1" implementation "androidx.room:room-runtime:2.5.1"
kapt "androidx.room:room-compiler:2.5.1" kapt "androidx.room:room-compiler:2.5.1"
implementation "androidx.room:room-ktx:2.5.1" implementation "androidx.room:room-ktx:2.5.1"
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
} }

@ -14,7 +14,6 @@ import androidx.navigation.fragment.findNavController
import com.example.shakecraft.model.Player import com.example.shakecraft.model.Player
class HomeFragment : Fragment() { class HomeFragment : Fragment() {
private lateinit var pseudo : TextView private lateinit var pseudo : TextView
private lateinit var progressbar : ProgressBar private lateinit var progressbar : ProgressBar
@ -32,6 +31,7 @@ class HomeFragment : Fragment() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
} }
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?

@ -12,12 +12,20 @@ import androidx.navigation.findNavController
import androidx.navigation.ui.NavigationUI import androidx.navigation.ui.NavigationUI
import androidx.navigation.ui.setupWithNavController import androidx.navigation.ui.setupWithNavController
import com.example.shakecraft.data.Stub import com.example.shakecraft.data.Stub
import com.example.shakecraft.services.OpenWeatherMapService
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
class MainActivity: AppCompatActivity() { class MainActivity: AppCompatActivity() {
var currentPlayer = Stub().load() var currentPlayer = Stub().load()
var isRaining = false
@RequiresApi(Build.VERSION_CODES.R) @RequiresApi(Build.VERSION_CODES.R)
@ -40,6 +48,26 @@ class MainActivity: AppCompatActivity() {
hideSystemUI() hideSystemUI()
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)
val apiKey = "85a2724ad38b3994c2b7ebe1d239bbff"
val cityName = "Clermont-Ferrand"
val retrofit = Retrofit.Builder()
.baseUrl("https://api.openweathermap.org/data/2.5/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val openWeatherMapService = retrofit.create(OpenWeatherMapService::class.java)
GlobalScope.launch(Dispatchers.Main) {
val weatherResponse = withContext(Dispatchers.IO) {
openWeatherMapService.getCurrentWeather(cityName, apiKey)
}
isRaining =
weatherResponse.weather.any { it.main.contains("rain", ignoreCase = true) }
println(isRaining)
}
bottomNav = findViewById(R.id.bottomNavigationView) bottomNav = findViewById(R.id.bottomNavigationView)
val navController = findNavController(R.id.fragment) val navController = findNavController(R.id.fragment)
@ -56,9 +84,12 @@ class MainActivity: AppCompatActivity() {
} }
} }
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()

@ -0,0 +1,19 @@
package com.example.shakecraft.data
data class WeatherResponse(
val weather: List<Weather>,
val info: Info
)
data class Weather(
val id: Int,
val main: String,
val description: String,
val icon: String
)
data class Info(
val temp: Double,
val feelsLike: Double,
val humidity: Int
)

@ -0,0 +1,12 @@
package com.example.shakecraft.services
import com.example.shakecraft.data.WeatherResponse
import retrofit2.http.GET
import retrofit2.http.Query
interface OpenWeatherMapService {
@GET("weather")
suspend fun getCurrentWeather(
@Query("q") cityName: String,
@Query("appid") apiKey: String
): WeatherResponse
}
Loading…
Cancel
Save