How to integrate a weather API in Android Studio

Weather is an essential aspect of our daily lives, and it’s no surprise that many developers want to incorporate weather data into their apps. In this article, we will discuss how to integrate a weather API in Android Studio using the OpenWeatherMap API, which provides access to real-time weather data for over 200 countries worldwide.

First Things First: Obtaining an API Key

To use the OpenWeatherMap API, you’ll need an API key. You can obtain an API key by visiting the OpenWeatherMap website (https://openweathermap.org/api) and signing up for a free account. Once you have signed up, navigate to the API keys section and click on the “Create API Key” button. Enter a name for your API key and click on the “Create API Key” button again. Your new API key will be displayed on the screen.

Implementing the OpenWeatherMap API in Android Studio

To implement the OpenWeatherMap API in your app, you will need to add a few dependencies to your project. First, add the Retrofit dependency to your <build.gradle> file:

groovy
implementation ‘com.squareup.retrofit2:retrofit:2.9.0’
implementation ‘com.squareup.retrofit2:converter-gson:2.9.0’

Implementing the OpenWeatherMap API in Android Studio

Next, create a new file named <OpenWeatherMapApiClient.kt> in your app’s data directory. This file will contain the Retrofit client that will be used to make requests to the OpenWeatherMap API. Here is an example of what this file might look like:

kotlin
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory

object OpenWeatherMapApiClient {

private const val BASE_URL  "https://api.openweathermap.org/data/2.5/"

fun getCurrentWeather(city: String, apiKey: String): Call<WeatherResponse>

{
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()

return retrofit.create(OpenWeatherMapApi::class.java).getCurrentWeather(city, apiKey)

}
}

In this file, we define a Retrofit object that will be used to make requests to the OpenWeatherMap API. We also define a function called getCurrentWeather() that takes in two parameters: city, which is the name of the city for which we want to retrieve weather data, and apiKey, which is our OpenWeatherMap API key. This function returns a Call<WeatherResponse> object, which we can use to make the actual request to the API.

Defining the API Endpoint

The OpenWeatherMap API provides several endpoints that can be used to retrieve different types of weather data. In this tutorial, we will use the /data/2.5/weather endpoint, which returns current weather data for a given city. Here is an example of what the request URL might look like:

php
https://api.openweathermap.org/data/2.5/weather?qLondon&appidYOUR_API_KEY

In this URL, we specify the city for which we want to retrieve weather data (in this case, “London”), as well as our API key.

Implementing the API in Your App

To implement the OpenWeatherMap API in your app, you will need to make a request to the API using the getCurrentWeather() function from the OpenWeatherMapApiClient object we defined earlier. Here is an example of what this might look like:

kotlin
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response

class MainActivity : AppCompatActivity() {

private lateinit var viewModel: MainViewModel
private val apiKey = “YOUR_API_KEY”

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

viewModel = ViewModelProvider(this).get(MainViewModel::class.java)

val apiClient OpenWeatherMapApiClient()

apiClient.getCurrentWeather(“London”, apiKey).enqueue(object : Callback<WeatherResponse> {
override fun onResponse(call: Call<WeatherResponse>, response: Response<WeatherResponse>) {
// Do something with the weather data here
}

override fun onFailure(call: Call<WeatherResponse>, t: Throwable) {

// Handle failure to retrieve weather data here
}
})
}
}

In this code, we first import the necessary dependencies for making requests to the API. We then define a MainActivity class that extends AppCompatActivity. In the onCreate() method of this class, we create an instance of our MainViewModel object and make a request to the OpenWeatherMap API using the getCurrentWeather() function from the OpenWeatherMapApiClient object. This request will be asynchronous, so we do not need to wait for it to complete before continuing with the rest of our code.

Summary

In this tutorial, we have learned how to implement the OpenWeatherMap API in an Android app using Retrofit and LiveData. We have also seen how to retrieve current weather data for a given city and handle the response asynchronously.