{"id":26127788,"url":"https://github.com/kwabenberko/openweathermap-android-library","last_synced_at":"2025-08-02T08:07:21.153Z","repository":{"id":114904574,"uuid":"98332181","full_name":"KwabenBerko/OpenWeatherMap-Android-Library","owner":"KwabenBerko","description":"A wrapper for the openweathermap  REST API","archived":false,"fork":false,"pushed_at":"2020-12-08T09:42:06.000Z","size":308,"stargazers_count":102,"open_issues_count":0,"forks_count":34,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-06-07T07:02:56.243Z","etag":null,"topics":["android","android-library","java","java-library","openweathermap","openweathermap-android","openweathermap-api","retrofit2","wrapper-library"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KwabenBerko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-25T17:22:59.000Z","updated_at":"2025-04-25T17:41:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"6778e6b2-f94c-475d-82e5-e1a0a1b79c40","html_url":"https://github.com/KwabenBerko/OpenWeatherMap-Android-Library","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/KwabenBerko/OpenWeatherMap-Android-Library","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KwabenBerko%2FOpenWeatherMap-Android-Library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KwabenBerko%2FOpenWeatherMap-Android-Library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KwabenBerko%2FOpenWeatherMap-Android-Library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KwabenBerko%2FOpenWeatherMap-Android-Library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KwabenBerko","download_url":"https://codeload.github.com/KwabenBerko/OpenWeatherMap-Android-Library/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KwabenBerko%2FOpenWeatherMap-Android-Library/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268351324,"owners_count":24236383,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-library","java","java-library","openweathermap","openweathermap-android","openweathermap-api","retrofit2","wrapper-library"],"created_at":"2025-03-10T18:37:38.007Z","updated_at":"2025-08-02T08:07:21.120Z","avatar_url":"https://github.com/KwabenBerko.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## OpenWeatherMap-Android-Library  \n[![](https://jitpack.io/v/KwabenBerko/OpenWeatherMap-Android-Library.svg)](https://jitpack.io/#KwabenBerko/OpenWeatherMap-Android-Library)\n\n\n**You need an API Key to use the OpenWeatherMap API. Head on over to their [website](http://openweathermap.org/) if you don't already have one.**\n\n\n## Download\n\n#### Step 1. Add the JitPack repository to your root ```build.gradle``` file.\n\n``` java\nallprojects {\n  repositories {\n    ...\n    maven { url 'https://jitpack.io' }\n  }\n}\n```\n\n#### Step 2 : Download via ```Gradle```:\n\n```java\nimplementation 'com.github.KwabenBerko:OpenWeatherMap-Android-Library:2.1.0'\n```\n\n**Note: Remember to include the INTERNET permission to your manifest file**\n\n## Usage\n\n#### Instantiate Class With Your OpenWeatherMap Api Key\n\n``` java \nOpenWeatherMapHelper helper = new OpenWeatherMapHelper(getString(R.string.OPEN_WEATHER_MAP_API_KEY));\n```\n\n#### Set your Units (Optional, STANDARD by default)\n\n``` java \nhelper.setUnits(Units.IMPERIAL);\n```\n\n##### Unit Options: \n\n1. ```Units.IMPERIAL (Fahrenheit)```\n\n2. ```Units.METRIC (Celsius)```\n\n#### Set your Language (ENGLISH by default)\n\n``` java\nhelper.setLanguage(Languages.ENGLISH);\n```\n\n## Features\n\n\n### (1) Current Weather\n#### Get current weather by City Name:\n\n```java\n helper.getCurrentWeatherByCityName(\"Accra\", new CurrentWeatherCallback() {\n     @Override\n     public void onSuccess(CurrentWeather currentWeather) {\n         Log.v(TAG, \"Coordinates: \" + currentWeather.getCoord().getLat() + \", \"+currentWeather.getCoord().getLon() +\"\\n\"\n                         +\"Weather Description: \" + currentWeather.getWeather().get(0).getDescription() + \"\\n\"\n                         +\"Temperature: \" + currentWeather.getMain().getTempMax()+\"\\n\"\n                         +\"Wind Speed: \" + currentWeather.getWind().getSpeed() + \"\\n\"\n                         +\"City, Country: \" + currentWeather.getName() + \", \" + currentWeather.getSys().getCountry()\n         );\n     }\n\n     @Override\n     public void onFailure(Throwable throwable) {\n         Log.v(TAG, throwable.getMessage());\n     }\n });\n```\n\n#### Get current weather by City ID:\n```java\n helper.getCurrentWeatherByCityID(\"524901\", new CurrentWeatherCallback() {\n     @Override\n     public void onSuccess(CurrentWeather currentWeather) {\n         Log.v(TAG, \"Coordinates: \" + currentWeather.getCoord().getLat() + \", \"+currentWeather.getCoord().getLon() +\"\\n\"\n                         +\"Weather Description: \" + currentWeather.getWeather().get(0).getDescription() + \"\\n\"\n                         +\"Temperature: \" + currentWeather.getMain().getTempMax()+\"\\n\"\n                         +\"Wind Speed: \" + currentWeather.getWind().getSpeed() + \"\\n\"\n                         +\"City, Country: \" + currentWeather.getName() + \", \" + currentWeather.getSys().getCountry()\n         );\n     }\n\n     @Override\n     public void onFailure(Throwable throwable) {\n         Log.v(TAG, throwable.getMessage());\n     }\n });\n```\n#### Get current weather by Geographic Coordinates:\n\n```java\n helper.getCurrentWeatherByGeoCoordinates(5.6037, 0.1870, new CurrentWeatherCallback() {\n     @Override\n     public void onSuccess(CurrentWeather currentWeather) {\n         Log.v(TAG, \"Coordinates: \" + currentWeather.getCoord().getLat() + \", \"+currentWeather.getCoord().getLon() +\"\\n\"\n                         +\"Weather Description: \" + currentWeather.getWeather().get(0).getDescription() + \"\\n\"\n                         +\"Temperature: \" + currentWeather.getMain().getTempMax()+\"\\n\"\n                         +\"Wind Speed: \" + currentWeather.getWind().getSpeed() + \"\\n\"\n                         +\"City, Country: \" + currentWeather.getName() + \", \" + currentWeather.getSys().getCountry()\n         );\n     }\n\n     @Override\n     public void onFailure(Throwable throwable) {\n         Log.v(TAG, throwable.getMessage());\n     }\n });\n```\n#### Get current weather by Zip Code:\n```java\n helper.getCurrentWeatherByZipCode(\"90003\", new CurrentWeatherCallback() {\n     @Override\n     public void onSuccess(CurrentWeather currentWeather) {\n         Log.v(TAG, \"Coordinates: \" + currentWeather.getCoord().getLat() + \", \"+currentWeather.getCoord().getLon() +\"\\n\"\n                         +\"Weather Description: \" + currentWeather.getWeather().get(0).getDescription() + \"\\n\"\n                         +\"Temperature: \" + currentWeather.getMain().getTempMax()+\"\\n\"\n                         +\"Wind Speed: \" + currentWeather.getWind().getSpeed() + \"\\n\"\n                         +\"City, Country: \" + currentWeather.getName() + \", \" + currentWeather.getSys().getCountry()\n         );\n     }\n\n     @Override\n     public void onFailure(Throwable throwable) {\n         Log.v(TAG, throwable.getMessage());\n     }\n });\n```\n### (2) 5 day / 3 hour forecast\n#### Get three hour forecast by City Name:\n```java\n helper.getThreeHourForecastByCityName(\"Pretoria\", new ThreeHourForecastCallback() {\n     @Override\n     public void onSuccess(ThreeHourForecast threeHourForecast) {\n         Log.v(TAG, \"City/Country: \"+ threeHourForecast.getCity().getName() + \"/\" + threeHourForecast.getCity().getCountry() +\"\\n\"\n                         +\"Forecast Array Count: \" + threeHourForecast.getCnt() +\"\\n\"\n                         //For this example, we are logging details of only the first forecast object in the forecasts array\n                         +\"First Forecast Date Timestamp: \" + threeHourForecast.getList().get(0).getDt() +\"\\n\"\n                         +\"First Forecast Weather Description: \" + threeHourForecast.getList().get(0).getWeather().get(0).getDescription()+ \"\\n\"\n                         +\"First Forecast Max Temperature: \" + threeHourForecast.getList().get(0).getMain().getTempMax()+\"\\n\"\n                         +\"First Forecast Wind Speed: \" + threeHourForecast.getList().get(0).getWind().getSpeed() + \"\\n\"\n         );\n     }\n\n     @Override\n     public void onFailure(Throwable throwable) {\n         Log.v(TAG, throwable.getMessage());\n     }\n });\n```\n#### Get three hour forecast by City ID:\n```java\n helper.getThreeHourForecastByCityID(\"524901\", new ThreeHourForecastCallback() {\n     @Override\n     public void onSuccess(ThreeHourForecast threeHourForecast) {\n         Log.v(TAG, \"City/Country: \"+ threeHourForecast.getCity().getName() + \"/\" + threeHourForecast.getCity().getCountry() +\"\\n\"\n                         +\"Forecast Array Count: \" + threeHourForecast.getCnt() +\"\\n\"\n                         //For this example, we are logging details of only the first forecast object in the forecasts array\n                         +\"First Forecast Date Timestamp: \" + threeHourForecast.getList().get(0).getDt() +\"\\n\"\n                         +\"First Forecast Weather Description: \" + threeHourForecast.getList().get(0).getWeather().get(0).getDescription()+ \"\\n\"\n                         +\"First Forecast Max Temperature: \" + threeHourForecast.getList().get(0).getMain().getTempMax()+\"\\n\"\n                         +\"First Forecast Wind Speed: \" + threeHourForecast.getList().get(0).getWind().getSpeed() + \"\\n\"\n         );\n     }\n\n     @Override\n     public void onFailure(Throwable throwable) {\n         Log.v(TAG, throwable.getMessage());\n     }\n });\n```\n#### Get three hour forecast by Geographic Coordinates:\n```java\n helper.getThreeHourForecastByGeoCoordinates(6.5244,3.3792, new ThreeHourForecastCallback() {\n     @Override\n     public void onSuccess(ThreeHourForecast threeHourForecast) {\n         Log.v(TAG, \"City/Country: \"+ threeHourForecast.getCity().getName() + \"/\" + threeHourForecast.getCity().getCountry() +\"\\n\"\n                         +\"Forecast Array Count: \" + threeHourForecast.getCnt() +\"\\n\"\n                         //For this example, we are logging details of only the first forecast object in the forecasts array\n                         +\"First Forecast Date Timestamp: \" + threeHourForecast.getList().get(0).getDt() +\"\\n\"\n                         +\"First Forecast Weather Description: \" + threeHourForecast.getList().get(0).getWeather().get(0).getDescription()+ \"\\n\"\n                         +\"First Forecast Max Temperature: \" + threeHourForecast.getList().get(0).getMain().getTempMax()+\"\\n\"\n                         +\"First Forecast Wind Speed: \" + threeHourForecast.getList().get(0).getWind().getSpeed() + \"\\n\"\n         );\n     }\n\n     @Override\n     public void onFailure(Throwable throwable) {\n         Log.v(TAG, throwable.getMessage());\n     }\n });\n```\n#### Get three hour forecast by Zip Code:\n```java\n helper.getThreeHourForecastByZipCode(\"94040\", new ThreeHourForecastCallback() {\n     @Override\n     public void onSuccess(ThreeHourForecast threeHourForecast) {\n         Log.v(TAG, \"City/Country: \"+ threeHourForecast.getCity().getName() + \"/\" + threeHourForecast.getCity().getCountry() +\"\\n\"\n                         +\"Forecast Array Count: \" + threeHourForecast.getCnt() +\"\\n\"\n                         //For this example, we are logging details of only the first forecast object in the forecasts array\n                         +\"First Forecast Date Timestamp: \" + threeHourForecast.getList().get(0).getDt() +\"\\n\"\n                         +\"First Forecast Weather Description: \" + threeHourForecast.getList().get(0).getWeather().get(0).getDescription()+ \"\\n\"\n                         +\"First Forecast Max Temperature: \" + threeHourForecast.getList().get(0).getMain().getTempMax()+\"\\n\"\n                         +\"First Forecast Wind Speed: \" + threeHourForecast.getList().get(0).getWind().getSpeed() + \"\\n\"\n         );\n     }\n\n     @Override\n     public void onFailure(Throwable throwable) {\n         Log.v(TAG, throwable.getMessage());\n     }\n });\n```\n\n\n\n\n\n### Upcoming Features\n1. Hourly Forecast 4 days\n2. Daily Forecast 16 days\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkwabenberko%2Fopenweathermap-android-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkwabenberko%2Fopenweathermap-android-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkwabenberko%2Fopenweathermap-android-library/lists"}