Visit GitHub RepoWeather


Release Build Status license Codacy Badge

Android library for the gov.uk Flood Monitoring API: http://environment.data.gov.uk/flood-monitoring/doc/reference

The Flood Monitoring API is RESTful and follows HATEOAS, this means where the Android library requires a url you can use the id of an object: getId()

A couple of apps using this library:
Flood Alerts: https://play.google.com/store/apps/details?id=eu.fiskur.floodmonitor
River Levels: https://play.google.com/store/apps/details?id=eu.fiskur.riverlevels

The library uses RxJava, example usage:

	.subscribe(new Observer<ThreeDayForecast>() {
	    public void onCompleted() {

	    public void onError(Throwable e) {

	    public void onNext(ThreeDayForecast threeDayForecast) {


Add jitpack.io to your root build.gradle, eg:

allprojects {
    repositories {
        maven { url "https://jitpack.io" }

then add the dependency to your project build.gradle:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.github.fiskurgit:FloodMonitoring:1.5'

You can find the latest version in the releases tab above: https://github.com/fiskurgit/FloodMonitoring/releases

More options at jitpack.io: https://jitpack.io/#fiskurgit/FloodMonitoring


Full licence here: https://github.com/fiskurgit/FloodMonitoring/blob/master/LICENSE.md

In short:

The MIT License is a permissive license that is short and to the point. It lets people do anything they want with your code as long as they provide attribution back to you and don’t hold you liable.


You can turn on logging to see the network response:


Then register a log listener:

FloodApiLogger.getInstance().setApiLogListener(new FloodApiLogger.ApiLogListener() {
    public void apiLog(String message) {
        Log.d(TAG, message);

#3 Day Forecast

3 day forecast

getThreeDayForecast() returns a general overview of the forecast for England and Wales over the next 3 days. A small image of the UK marked with forecast warnings can be fetched using getDayImageBytes(int day) (with 1, 2, or 3) this returns a Retrofit ResponseBody containing the image bytes, a convenience method in the utils class helps populate an ImageView: FloodUtils.loadImage(responseBody, imageView). Alternatively get the image URLs for use with Picasso or similar: getDayImageUrl(int day).

#Flood Warnings

getAllWarnings() returns List<FloodWarning> of all current alerts (including any that have been removed in the last 24 hours, use getSeverityLevel() to build your UI).

getAreaWarnings(double latitude, double longitude, int distance) returns List<FloodWarning> of any flood alerts in the area.

getFloodAreaFromUrl(String url) returns the FloodArea including latitude and longitude for plotting warning locations on a map.

#Water Level Stations

getAreaStations(double latitude, double longitude, int distance) returns List<StationOverview> containing some detail, but you should use the id to fetch the full StationDetail object: getStation(String url).

getReadings(String url, int count) gets the last count Reading objects, normally taken at 15 minute intervals that you can use to create graphs, you can also use getReadingsToday(String url) and getReadingsDays(String url, int days) which will ge the last x days worth of readings (although the API docs state data is held for a month it only seems to return up to two weeks worth of readings).

##Code Coverage codecov.io

Become a better Android Developer
Millions of developers are learning at MindOrks

Online Training Program

Featured Blogs

Our Team

MindOrks is Certainly one of the best online blog to stay on top of all the Android development news, coding and design patterns. Finally a blog I can count on to keep myself updated with latest and greatest things happening in Android world.

Vipul Shah
Android Developer

Become Pro in Android by watching videos