From 26302881a78377bffadda1bdcfba6496857c7ae8 Mon Sep 17 00:00:00 2001
From: mueller-ma <mueller-ma@users.noreply.github.com>
Date: Mon, 15 Oct 2018 18:22:12 +0200
Subject: [PATCH] Update dependencies to Api 28 (#1020)

* Migrate to AndroidX
* Fix import of "LargeTest"
* Reorder imports
* Adapt checkstyle

Signed-off-by: mueller-ma <mueller-ma@users.noreply.github.com>
---
 gradle.properties                             | 10 +++++
 mobile/build.gradle                           | 26 ++++++-------
 .../org/openhab/habdroid/ApplicationTest.java | 22 -----------
 .../FragmentStatusIdlingResource.java         |  8 ++--
 .../habdroid/ProgressbarAwareTest.java        |  6 +--
 .../habdroid/ProgressbarIdlingResource.java   |  4 +-
 .../org/openhab/habdroid/TestWithIntro.java   |  2 +-
 .../openhab/habdroid/TestWithoutIntro.java    |  2 +-
 .../habdroid/screengrab/ScreengrabTest.java   | 17 ++++----
 .../openhab/habdroid/ui/BasicWidgetTest.java  | 39 +++++++++----------
 .../habdroid/ui/IntroActivityTest.java        | 24 ++++++------
 .../java/org/openhab/habdroid/ui/NfcTest.java | 28 ++++++-------
 .../habdroid/ui/VoiceRecognitionTest.java     | 16 ++++----
 .../habdroid/ui/WidgetAdapterTest.java        |  4 +-
 .../habdroid/core/CloudMessagingHelper.java   |  2 +-
 .../habdroid/core/CloudMessagingHelper.java   |  2 +-
 .../core/GcmMessageListenerService.java       |  5 +--
 .../habdroid/core/GcmRegistrationService.java |  5 +--
 .../openhab/habdroid/ui/MapViewHelper.java    |  1 -
 .../de/duenndns/ssl/MemorizingActivity.java   | 11 +++---
 .../duenndns/ssl/MemorizingTrustManager.java  | 17 +++++---
 .../habdroid/core/HabDroidApplication.java    |  2 +-
 .../openhab/habdroid/core/VoiceService.java   |  5 +--
 .../core/connection/AbstractConnection.java   |  3 +-
 .../core/connection/CloudConnection.java      |  2 +-
 .../habdroid/core/connection/Connection.java  |  2 +-
 .../core/connection/ConnectionFactory.java    |  5 +--
 .../core/connection/DefaultConnection.java    |  2 +-
 .../habdroid/model/CloudNotification.java     |  3 +-
 .../java/org/openhab/habdroid/model/Item.java |  3 +-
 .../openhab/habdroid/model/LinkedPage.java    |  1 -
 .../habdroid/model/ServerProperties.java      |  2 -
 .../org/openhab/habdroid/model/Sitemap.java   |  3 +-
 .../org/openhab/habdroid/model/Widget.java    |  3 +-
 .../openhab/habdroid/ui/AboutActivity.java    | 13 +++----
 .../habdroid/ui/CloudNotificationAdapter.java |  6 +--
 .../ui/CloudNotificationListFragment.java     | 13 +++----
 .../openhab/habdroid/ui/IntroActivity.java    | 13 +++----
 .../org/openhab/habdroid/ui/MainActivity.java | 29 +++++++-------
 .../habdroid/ui/PreferencesActivity.java      | 18 ++++-----
 .../openhab/habdroid/ui/WidgetAdapter.java    | 16 ++++----
 .../habdroid/ui/WidgetListFragment.java       | 12 +++---
 .../openhab/habdroid/ui/WriteTagActivity.java | 12 +++---
 .../ui/activity/ContentController.java        | 20 +++++-----
 .../ui/activity/ContentControllerOnePane.java |  4 +-
 .../ui/activity/ContentControllerTwoPane.java |  4 +-
 .../PageConnectionHolderFragment.java         |  6 +--
 .../ui/widget/DividerItemDecoration.java      |  2 +-
 .../habdroid/ui/widget/ExtendedSpinner.java   |  2 +-
 .../ui/widget/SegmentedControlButton.java     |  4 +-
 .../habdroid/ui/widget/WidgetImageView.java   |  5 +--
 .../habdroid/util/AsyncHttpClient.java        |  3 +-
 .../org/openhab/habdroid/util/HttpClient.java |  3 +-
 .../openhab/habdroid/util/MjpegStreamer.java  |  2 +-
 .../java/org/openhab/habdroid/util/Util.java  | 13 +++----
 mobile/src/main/res/layout/activity_about.xml |  2 +-
 mobile/src/main/res/layout/activity_main.xml  | 10 ++---
 mobile/src/main/res/layout/activity_prefs.xml |  2 +-
 .../openhabnotificationlist_fragment.xml      |  8 ++--
 .../res/layout/openhabwidgetlist_fragment.xml |  6 +--
 .../layout/openhabwidgetlist_frameitem.xml    |  2 +-
 .../layout/openhabwidgetlist_switchitem.xml   |  2 +-
 .../src/main/res/layout/openhabwritetag.xml   |  2 +-
 .../habdroid/core/CloudMessagingHelper.java   |  2 +-
 .../connection/ConnectionFactoryTest.java     |  1 -
 .../connection/DefaultConnectionTest.java     |  1 -
 .../core/connection/DemoConnectionTest.java   |  1 -
 .../habdroid/util/SyncHttpClientTest.java     |  1 -
 stickler/checkstyle.xml                       |  2 +-
 69 files changed, 245 insertions(+), 284 deletions(-)
 create mode 100644 gradle.properties
 delete mode 100644 mobile/src/androidTest/java/org/openhab/habdroid/ApplicationTest.java

diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 00000000..e83413e6
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,10 @@
+#
+# Copyright (c) 2010-2018, openHAB.org and others.
+#
+# All rights reserved. This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available
+# at https://www.eclipse.org/legal/epl-v10.html
+#
+
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/mobile/build.gradle b/mobile/build.gradle
index 2a6e190f..cb81e052 100644
--- a/mobile/build.gradle
+++ b/mobile/build.gradle
@@ -25,8 +25,8 @@ if(!isFoss) {
 apply plugin: 'witness'
 
 android {
-    buildToolsVersion '27.0.3'
-    compileSdkVersion 27
+    buildToolsVersion '28.0.3'
+    compileSdkVersion 28
     useLibrary 'org.apache.http.legacy'
 
     defaultConfig {
@@ -36,7 +36,7 @@ android {
         versionCode 85
         versionName "2.3.3-beta"
         multiDexEnabled true
-        testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
+        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
     }
     buildTypes {
         def IS_DEVELOPER = "IS_DEVELOPER"
@@ -99,11 +99,11 @@ repositories {
 }
 
 dependencies {
-    implementation "com.android.support:appcompat-v7:27.1.1"
-    implementation "com.android.support:support-v4:27.1.1"
-    implementation "com.android.support:recyclerview-v7:27.1.1"
-    implementation "com.android.support:design:27.1.1"
-    implementation 'com.android.support:multidex:1.0.3'
+    implementation "androidx.appcompat:appcompat:1.0.0"
+    implementation "androidx.legacy:legacy-support-v4:1.0.0"
+    implementation "androidx.recyclerview:recyclerview:1.0.0"
+    implementation "com.google.android.material:material:1.0.0"
+    implementation 'androidx.multidex:multidex:2.0.0'
     implementation 'org.jmdns:jmdns:3.5.4'
     implementation 'com.squareup.okhttp3:okhttp:3.11.0'
     implementation 'com.github.heremaps:oksse:0.9.0'
@@ -145,13 +145,13 @@ dependencies {
     testImplementation 'org.powermock:powermock-module-junit4:1.7.4'
 
     // Espresso UI tests
-    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2', {
+    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-beta01', {
         exclude group: 'com.android.support', module: 'support-annotations'
     }
-    androidTestImplementation 'com.android.support.test:runner:1.0.2'
-    androidTestImplementation 'com.android.support.test:rules:1.0.2'
-    androidTestImplementation 'com.android.support.test.espresso:espresso-intents:3.0.2'
-    androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2', {
+    androidTestImplementation 'androidx.test:runner:1.1.0-beta01'
+    androidTestImplementation 'androidx.test:rules:1.1.0-beta01'
+    androidTestImplementation 'androidx.test.espresso:espresso-intents:3.1.0-beta01'
+    androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.1.0-beta01', {
         exclude group: 'com.android.support', module: 'support-annotations'
     }
 
diff --git a/mobile/src/androidTest/java/org/openhab/habdroid/ApplicationTest.java b/mobile/src/androidTest/java/org/openhab/habdroid/ApplicationTest.java
deleted file mode 100644
index ef4e6536..00000000
--- a/mobile/src/androidTest/java/org/openhab/habdroid/ApplicationTest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2010-2016, openHAB.org and others.
- *
- *   All rights reserved. This program and the accompanying materials
- *   are made available under the terms of the Eclipse Public License v1.0
- *   which accompanies this distribution, and is available at
- *   http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.openhab.habdroid;
-
-import android.app.Application;
-import android.test.ApplicationTestCase;
-
-/*
- * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
- */
-public class ApplicationTest extends ApplicationTestCase<Application> {
-    public ApplicationTest() {
-        super(Application.class);
-    }
-}
\ No newline at end of file
diff --git a/mobile/src/androidTest/java/org/openhab/habdroid/FragmentStatusIdlingResource.java b/mobile/src/androidTest/java/org/openhab/habdroid/FragmentStatusIdlingResource.java
index 249132d3..dda5c96b 100644
--- a/mobile/src/androidTest/java/org/openhab/habdroid/FragmentStatusIdlingResource.java
+++ b/mobile/src/androidTest/java/org/openhab/habdroid/FragmentStatusIdlingResource.java
@@ -1,9 +1,9 @@
 package org.openhab.habdroid;
 
-import android.support.annotation.NonNull;
-import android.support.test.espresso.IdlingResource;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.test.espresso.IdlingResource;
 
 import org.openhab.habdroid.ui.WidgetListFragment;
 import org.openhab.habdroid.ui.activity.ContentController;
diff --git a/mobile/src/androidTest/java/org/openhab/habdroid/ProgressbarAwareTest.java b/mobile/src/androidTest/java/org/openhab/habdroid/ProgressbarAwareTest.java
index 6fb0d130..e7ec20bc 100644
--- a/mobile/src/androidTest/java/org/openhab/habdroid/ProgressbarAwareTest.java
+++ b/mobile/src/androidTest/java/org/openhab/habdroid/ProgressbarAwareTest.java
@@ -1,9 +1,9 @@
 package org.openhab.habdroid;
 
-import android.support.test.espresso.IdlingRegistry;
-import android.support.test.espresso.IdlingResource;
-import android.support.test.espresso.intent.rule.IntentsTestRule;
 import android.view.View;
+import androidx.test.espresso.IdlingRegistry;
+import androidx.test.espresso.IdlingResource;
+import androidx.test.espresso.intent.rule.IntentsTestRule;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/mobile/src/androidTest/java/org/openhab/habdroid/ProgressbarIdlingResource.java b/mobile/src/androidTest/java/org/openhab/habdroid/ProgressbarIdlingResource.java
index 1e8a8874..8bdab473 100644
--- a/mobile/src/androidTest/java/org/openhab/habdroid/ProgressbarIdlingResource.java
+++ b/mobile/src/androidTest/java/org/openhab/habdroid/ProgressbarIdlingResource.java
@@ -1,8 +1,8 @@
 package org.openhab.habdroid;
 
-import android.support.annotation.NonNull;
-import android.support.test.espresso.IdlingResource;
 import android.view.View;
+import androidx.annotation.NonNull;
+import androidx.test.espresso.IdlingResource;
 
 public class ProgressbarIdlingResource implements IdlingResource {
     private String mName;
diff --git a/mobile/src/androidTest/java/org/openhab/habdroid/TestWithIntro.java b/mobile/src/androidTest/java/org/openhab/habdroid/TestWithIntro.java
index 30a7103e..bd67e10d 100644
--- a/mobile/src/androidTest/java/org/openhab/habdroid/TestWithIntro.java
+++ b/mobile/src/androidTest/java/org/openhab/habdroid/TestWithIntro.java
@@ -1,7 +1,7 @@
 package org.openhab.habdroid;
 
 import android.preference.PreferenceManager;
-import android.support.test.InstrumentationRegistry;
+import androidx.test.InstrumentationRegistry;
 
 import org.openhab.habdroid.util.Constants;
 
diff --git a/mobile/src/androidTest/java/org/openhab/habdroid/TestWithoutIntro.java b/mobile/src/androidTest/java/org/openhab/habdroid/TestWithoutIntro.java
index 6d9abccf..ef7748b1 100644
--- a/mobile/src/androidTest/java/org/openhab/habdroid/TestWithoutIntro.java
+++ b/mobile/src/androidTest/java/org/openhab/habdroid/TestWithoutIntro.java
@@ -2,7 +2,7 @@ package org.openhab.habdroid;
 
 import android.content.SharedPreferences;
 import android.preference.PreferenceManager;
-import android.support.test.InstrumentationRegistry;
+import androidx.test.InstrumentationRegistry;
 
 import org.junit.Before;
 import org.openhab.habdroid.util.Constants;
diff --git a/mobile/src/androidTest/java/org/openhab/habdroid/screengrab/ScreengrabTest.java b/mobile/src/androidTest/java/org/openhab/habdroid/screengrab/ScreengrabTest.java
index 002b9445..e94853d4 100644
--- a/mobile/src/androidTest/java/org/openhab/habdroid/screengrab/ScreengrabTest.java
+++ b/mobile/src/androidTest/java/org/openhab/habdroid/screengrab/ScreengrabTest.java
@@ -1,22 +1,21 @@
 package org.openhab.habdroid.screengrab;
 
-import android.support.test.espresso.ViewInteraction;
-import android.support.test.espresso.contrib.RecyclerViewActions;
-import android.support.test.runner.AndroidJUnit4;
-import android.test.suitebuilder.annotation.LargeTest;
+import androidx.test.espresso.ViewInteraction;
+import androidx.test.espresso.contrib.RecyclerViewActions;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
 
 import org.junit.ClassRule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.TestWithoutIntro;
-
 import tools.fastlane.screengrab.locale.LocaleTestRule;
 
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.Espresso.pressBack;
-import static android.support.test.espresso.action.ViewActions.click;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.Espresso.pressBack;
+import static androidx.test.espresso.action.ViewActions.click;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
 import static tools.fastlane.screengrab.Screengrab.screenshot;
 
 @LargeTest
diff --git a/mobile/src/androidTest/java/org/openhab/habdroid/ui/BasicWidgetTest.java b/mobile/src/androidTest/java/org/openhab/habdroid/ui/BasicWidgetTest.java
index 1d3086c6..c3e6a50e 100644
--- a/mobile/src/androidTest/java/org/openhab/habdroid/ui/BasicWidgetTest.java
+++ b/mobile/src/androidTest/java/org/openhab/habdroid/ui/BasicWidgetTest.java
@@ -1,16 +1,15 @@
 package org.openhab.habdroid.ui;
 
-import android.support.annotation.IdRes;
-import android.support.test.espresso.DataInteraction;
-import android.support.test.espresso.UiController;
-import android.support.test.espresso.ViewAction;
-import android.support.test.espresso.ViewInteraction;
-import android.support.test.espresso.contrib.RecyclerViewActions;
-import android.support.test.espresso.matcher.BoundedMatcher;
-import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
-import android.test.suitebuilder.annotation.LargeTest;
 import android.view.View;
+import androidx.annotation.IdRes;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.test.espresso.DataInteraction;
+import androidx.test.espresso.UiController;
+import androidx.test.espresso.ViewAction;
+import androidx.test.espresso.ViewInteraction;
+import androidx.test.espresso.matcher.BoundedMatcher;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
 
 import org.hamcrest.Description;
 import org.hamcrest.Matcher;
@@ -20,16 +19,16 @@ import org.openhab.habdroid.BuildConfig;
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.TestWithoutIntro;
 
-import static android.support.test.espresso.Espresso.onData;
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.action.ViewActions.click;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.contrib.RecyclerViewActions.actionOnItemAtPosition;
-import static android.support.test.espresso.contrib.RecyclerViewActions.scrollToPosition;
-import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static android.support.test.espresso.matcher.ViewMatchers.withClassName;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
-import static android.support.test.espresso.matcher.ViewMatchers.withText;
+import static androidx.test.espresso.Espresso.onData;
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.action.ViewActions.click;
+import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.contrib.RecyclerViewActions.actionOnItemAtPosition;
+import static androidx.test.espresso.contrib.RecyclerViewActions.scrollToPosition;
+import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withClassName;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+import static androidx.test.espresso.matcher.ViewMatchers.withText;
 import static org.hamcrest.Matchers.anything;
 import static org.hamcrest.Matchers.is;
 
diff --git a/mobile/src/androidTest/java/org/openhab/habdroid/ui/IntroActivityTest.java b/mobile/src/androidTest/java/org/openhab/habdroid/ui/IntroActivityTest.java
index 5c8eb556..cbef7352 100644
--- a/mobile/src/androidTest/java/org/openhab/habdroid/ui/IntroActivityTest.java
+++ b/mobile/src/androidTest/java/org/openhab/habdroid/ui/IntroActivityTest.java
@@ -1,25 +1,23 @@
 package org.openhab.habdroid.ui;
 
-import android.support.test.espresso.ViewInteraction;
-import android.support.test.runner.AndroidJUnit4;
-import android.test.suitebuilder.annotation.LargeTest;
+import androidx.test.espresso.ViewInteraction;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
 
-import org.hamcrest.CoreMatchers;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.TestWithIntro;
 
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.action.ViewActions.click;
-import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
-import static android.support.test.espresso.matcher.ViewMatchers.withParent;
-import static android.support.test.espresso.matcher.ViewMatchers.withText;
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.action.ViewActions.click;
+import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
+import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+import static androidx.test.espresso.matcher.ViewMatchers.withParent;
+import static androidx.test.espresso.matcher.ViewMatchers.withText;
 import static org.hamcrest.Matchers.allOf;
-
 import static org.openhab.habdroid.TestUtils.childAtPosition;
 
 @LargeTest
diff --git a/mobile/src/androidTest/java/org/openhab/habdroid/ui/NfcTest.java b/mobile/src/androidTest/java/org/openhab/habdroid/ui/NfcTest.java
index 71fca779..d8853fd2 100644
--- a/mobile/src/androidTest/java/org/openhab/habdroid/ui/NfcTest.java
+++ b/mobile/src/androidTest/java/org/openhab/habdroid/ui/NfcTest.java
@@ -1,12 +1,12 @@
 package org.openhab.habdroid.ui;
 
 import android.content.Context;
-import android.support.annotation.StringRes;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.espresso.ViewInteraction;
-import android.support.test.espresso.contrib.RecyclerViewActions;
-import android.support.test.runner.AndroidJUnit4;
-import android.test.suitebuilder.annotation.LargeTest;
+import androidx.annotation.StringRes;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.espresso.ViewInteraction;
+import androidx.test.espresso.contrib.RecyclerViewActions;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
 
 import org.hamcrest.core.IsInstanceOf;
 import org.junit.Test;
@@ -14,14 +14,14 @@ import org.junit.runner.RunWith;
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.TestWithoutIntro;
 
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.action.ViewActions.click;
-import static android.support.test.espresso.action.ViewActions.longClick;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.contrib.RecyclerViewActions.actionOnItemAtPosition;
-import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
-import static android.support.test.espresso.matcher.ViewMatchers.withText;
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.action.ViewActions.click;
+import static androidx.test.espresso.action.ViewActions.longClick;
+import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.contrib.RecyclerViewActions.actionOnItemAtPosition;
+import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+import static androidx.test.espresso.matcher.ViewMatchers.withText;
 import static org.hamcrest.Matchers.allOf;
 
 @LargeTest
diff --git a/mobile/src/androidTest/java/org/openhab/habdroid/ui/VoiceRecognitionTest.java b/mobile/src/androidTest/java/org/openhab/habdroid/ui/VoiceRecognitionTest.java
index 3e711f1b..f89257dc 100644
--- a/mobile/src/androidTest/java/org/openhab/habdroid/ui/VoiceRecognitionTest.java
+++ b/mobile/src/androidTest/java/org/openhab/habdroid/ui/VoiceRecognitionTest.java
@@ -2,9 +2,9 @@ package org.openhab.habdroid.ui;
 
 import android.content.Context;
 import android.speech.SpeechRecognizer;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.espresso.ViewInteraction;
-import android.support.test.rule.ActivityTestRule;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.espresso.ViewInteraction;
+import androidx.test.rule.ActivityTestRule;
 
 import org.junit.Before;
 import org.junit.Rule;
@@ -12,11 +12,11 @@ import org.junit.Test;
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.TestWithoutIntro;
 
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
 import static org.hamcrest.CoreMatchers.allOf;
 import static org.junit.Assume.assumeTrue;
 
diff --git a/mobile/src/androidTest/java/org/openhab/habdroid/ui/WidgetAdapterTest.java b/mobile/src/androidTest/java/org/openhab/habdroid/ui/WidgetAdapterTest.java
index e68cfa57..c6430cb6 100644
--- a/mobile/src/androidTest/java/org/openhab/habdroid/ui/WidgetAdapterTest.java
+++ b/mobile/src/androidTest/java/org/openhab/habdroid/ui/WidgetAdapterTest.java
@@ -1,8 +1,8 @@
 package org.openhab.habdroid.ui;
 
 import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.v7.view.ContextThemeWrapper;
+import androidx.appcompat.view.ContextThemeWrapper;
+import androidx.test.InstrumentationRegistry;
 
 import org.junit.Test;
 import org.openhab.habdroid.R;
diff --git a/mobile/src/foss/java/org/openhab/habdroid/core/CloudMessagingHelper.java b/mobile/src/foss/java/org/openhab/habdroid/core/CloudMessagingHelper.java
index e8c8fb9f..c0978f4a 100644
--- a/mobile/src/foss/java/org/openhab/habdroid/core/CloudMessagingHelper.java
+++ b/mobile/src/foss/java/org/openhab/habdroid/core/CloudMessagingHelper.java
@@ -11,7 +11,7 @@ package org.openhab.habdroid.core;
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.annotation.StringRes;
+import androidx.annotation.StringRes;
 
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.core.connection.CloudConnection;
diff --git a/mobile/src/full/java/org/openhab/habdroid/core/CloudMessagingHelper.java b/mobile/src/full/java/org/openhab/habdroid/core/CloudMessagingHelper.java
index a8f361df..c25af4d1 100644
--- a/mobile/src/full/java/org/openhab/habdroid/core/CloudMessagingHelper.java
+++ b/mobile/src/full/java/org/openhab/habdroid/core/CloudMessagingHelper.java
@@ -11,7 +11,7 @@ package org.openhab.habdroid.core;
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.annotation.StringRes;
+import androidx.annotation.StringRes;
 
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.core.connection.CloudConnection;
diff --git a/mobile/src/full/java/org/openhab/habdroid/core/GcmMessageListenerService.java b/mobile/src/full/java/org/openhab/habdroid/core/GcmMessageListenerService.java
index 1db99ff8..1d31a778 100644
--- a/mobile/src/full/java/org/openhab/habdroid/core/GcmMessageListenerService.java
+++ b/mobile/src/full/java/org/openhab/habdroid/core/GcmMessageListenerService.java
@@ -23,12 +23,11 @@ import android.os.Build;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
 import android.service.notification.StatusBarNotification;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.content.ContextCompat;
 import android.text.TextUtils;
+import androidx.core.app.NotificationCompat;
+import androidx.core.content.ContextCompat;
 
 import com.google.android.gms.gcm.GcmListenerService;
-
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.core.connection.Connection;
 import org.openhab.habdroid.core.connection.ConnectionFactory;
diff --git a/mobile/src/full/java/org/openhab/habdroid/core/GcmRegistrationService.java b/mobile/src/full/java/org/openhab/habdroid/core/GcmRegistrationService.java
index 516d6fcb..657b0d5d 100644
--- a/mobile/src/full/java/org/openhab/habdroid/core/GcmRegistrationService.java
+++ b/mobile/src/full/java/org/openhab/habdroid/core/GcmRegistrationService.java
@@ -16,13 +16,12 @@ import android.content.Intent;
 import android.os.Build;
 import android.os.Bundle;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.v4.app.JobIntentService;
 import android.util.Log;
+import androidx.annotation.NonNull;
+import androidx.core.app.JobIntentService;
 
 import com.google.android.gms.gcm.GoogleCloudMessaging;
 import com.google.android.gms.iid.InstanceID;
-
 import org.openhab.habdroid.core.connection.CloudConnection;
 import org.openhab.habdroid.core.connection.Connection;
 import org.openhab.habdroid.core.connection.ConnectionFactory;
diff --git a/mobile/src/full/java/org/openhab/habdroid/ui/MapViewHelper.java b/mobile/src/full/java/org/openhab/habdroid/ui/MapViewHelper.java
index 33bf0d64..71670038 100644
--- a/mobile/src/full/java/org/openhab/habdroid/ui/MapViewHelper.java
+++ b/mobile/src/full/java/org/openhab/habdroid/ui/MapViewHelper.java
@@ -14,7 +14,6 @@ import com.google.android.gms.maps.model.LatLng;
 import com.google.android.gms.maps.model.LatLngBounds;
 import com.google.android.gms.maps.model.Marker;
 import com.google.android.gms.maps.model.MarkerOptions;
-
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.core.connection.Connection;
 import org.openhab.habdroid.model.Item;
diff --git a/mobile/src/main/java/de/duenndns/ssl/MemorizingActivity.java b/mobile/src/main/java/de/duenndns/ssl/MemorizingActivity.java
index 7de0d0a6..36194023 100644
--- a/mobile/src/main/java/de/duenndns/ssl/MemorizingActivity.java
+++ b/mobile/src/main/java/de/duenndns/ssl/MemorizingActivity.java
@@ -24,23 +24,24 @@
 package de.duenndns.ssl;
 
 
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.content.DialogInterface;
-import android.content.DialogInterface.*;
+import android.content.DialogInterface.OnCancelListener;
+import android.content.DialogInterface.OnClickListener;
 import android.content.Intent;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.v7.app.AlertDialog;
 import android.util.TypedValue;
 import android.view.ContextThemeWrapper;
+import androidx.appcompat.app.AlertDialog;
 
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.util.Util;
 
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
 public class MemorizingActivity extends Activity
 		implements OnClickListener,OnCancelListener {
 
diff --git a/mobile/src/main/java/de/duenndns/ssl/MemorizingTrustManager.java b/mobile/src/main/java/de/duenndns/ssl/MemorizingTrustManager.java
index 388e0a20..ea24ac1f 100644
--- a/mobile/src/main/java/de/duenndns/ssl/MemorizingTrustManager.java
+++ b/mobile/src/main/java/de/duenndns/ssl/MemorizingTrustManager.java
@@ -31,16 +31,16 @@ import android.app.Activity;
 import android.app.Application;
 import android.app.Notification;
 import android.app.NotificationManager;
-import android.app.Service;
 import android.app.PendingIntent;
+import android.app.Service;
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
+import android.os.Build;
+import android.os.Handler;
 import android.text.SpannableStringBuilder;
 import android.text.style.RelativeSizeSpan;
 import android.util.SparseArray;
-import android.os.Build;
-import android.os.Handler;
 
 import org.openhab.habdroid.R;
 
@@ -49,18 +49,23 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.security.cert.*;
 import java.security.KeyStore;
 import java.security.KeyStoreException;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+import java.security.cert.CertPathValidatorException;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateExpiredException;
+import java.security.cert.CertificateParsingException;
+import java.security.cert.X509Certificate;
 import java.text.SimpleDateFormat;
 import java.util.Collection;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Locale;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLSession;
diff --git a/mobile/src/main/java/org/openhab/habdroid/core/HabDroidApplication.java b/mobile/src/main/java/org/openhab/habdroid/core/HabDroidApplication.java
index 784dc0a2..b40c8bc2 100644
--- a/mobile/src/main/java/org/openhab/habdroid/core/HabDroidApplication.java
+++ b/mobile/src/main/java/org/openhab/habdroid/core/HabDroidApplication.java
@@ -1,6 +1,6 @@
 package org.openhab.habdroid.core;
 
-import android.support.multidex.MultiDexApplication;
+import androidx.multidex.MultiDexApplication;
 
 import org.openhab.habdroid.core.connection.ConnectionFactory;
 
diff --git a/mobile/src/main/java/org/openhab/habdroid/core/VoiceService.java b/mobile/src/main/java/org/openhab/habdroid/core/VoiceService.java
index 7f48b829..952d0c38 100644
--- a/mobile/src/main/java/org/openhab/habdroid/core/VoiceService.java
+++ b/mobile/src/main/java/org/openhab/habdroid/core/VoiceService.java
@@ -14,13 +14,12 @@ import android.content.Intent;
 import android.os.Handler;
 import android.os.Looper;
 import android.speech.RecognizerIntent;
-import android.support.annotation.Nullable;
-import android.support.v4.content.ContextCompat;
 import android.util.Log;
 import android.widget.Toast;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
 
 import es.dmoral.toasty.Toasty;
-
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.core.connection.Connection;
 import org.openhab.habdroid.core.connection.ConnectionFactory;
diff --git a/mobile/src/main/java/org/openhab/habdroid/core/connection/AbstractConnection.java b/mobile/src/main/java/org/openhab/habdroid/core/connection/AbstractConnection.java
index 612df0d1..e64d166a 100644
--- a/mobile/src/main/java/org/openhab/habdroid/core/connection/AbstractConnection.java
+++ b/mobile/src/main/java/org/openhab/habdroid/core/connection/AbstractConnection.java
@@ -1,10 +1,9 @@
 package org.openhab.habdroid.core.connection;
 
-import android.support.annotation.NonNull;
 import android.util.Log;
+import androidx.annotation.NonNull;
 
 import okhttp3.OkHttpClient;
-
 import org.openhab.habdroid.util.AsyncHttpClient;
 import org.openhab.habdroid.util.SyncHttpClient;
 
diff --git a/mobile/src/main/java/org/openhab/habdroid/core/connection/CloudConnection.java b/mobile/src/main/java/org/openhab/habdroid/core/connection/CloudConnection.java
index dae1890e..641b5379 100644
--- a/mobile/src/main/java/org/openhab/habdroid/core/connection/CloudConnection.java
+++ b/mobile/src/main/java/org/openhab/habdroid/core/connection/CloudConnection.java
@@ -1,7 +1,7 @@
 package org.openhab.habdroid.core.connection;
 
-import android.support.annotation.NonNull;
 import android.util.Log;
+import androidx.annotation.NonNull;
 
 import org.json.JSONException;
 import org.json.JSONObject;
diff --git a/mobile/src/main/java/org/openhab/habdroid/core/connection/Connection.java b/mobile/src/main/java/org/openhab/habdroid/core/connection/Connection.java
index 7fbe6556..7dbf530e 100644
--- a/mobile/src/main/java/org/openhab/habdroid/core/connection/Connection.java
+++ b/mobile/src/main/java/org/openhab/habdroid/core/connection/Connection.java
@@ -1,6 +1,6 @@
 package org.openhab.habdroid.core.connection;
 
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
 
 import org.openhab.habdroid.util.AsyncHttpClient;
 import org.openhab.habdroid.util.SyncHttpClient;
diff --git a/mobile/src/main/java/org/openhab/habdroid/core/connection/ConnectionFactory.java b/mobile/src/main/java/org/openhab/habdroid/core/connection/ConnectionFactory.java
index 4cf82883..74b060a0 100644
--- a/mobile/src/main/java/org/openhab/habdroid/core/connection/ConnectionFactory.java
+++ b/mobile/src/main/java/org/openhab/habdroid/core/connection/ConnectionFactory.java
@@ -15,14 +15,13 @@ import android.os.Message;
 import android.preference.PreferenceManager;
 import android.security.KeyChain;
 import android.security.KeyChainException;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.util.Pair;
 import android.util.Log;
+import androidx.annotation.VisibleForTesting;
+import androidx.core.util.Pair;
 
 import de.duenndns.ssl.MemorizingTrustManager;
 import okhttp3.OkHttpClient;
 import okhttp3.internal.tls.OkHostnameVerifier;
-
 import org.openhab.habdroid.core.CloudMessagingHelper;
 import org.openhab.habdroid.core.connection.exception.ConnectionException;
 import org.openhab.habdroid.core.connection.exception.NetworkNotAvailableException;
diff --git a/mobile/src/main/java/org/openhab/habdroid/core/connection/DefaultConnection.java b/mobile/src/main/java/org/openhab/habdroid/core/connection/DefaultConnection.java
index 0e5aeb84..297c6f55 100644
--- a/mobile/src/main/java/org/openhab/habdroid/core/connection/DefaultConnection.java
+++ b/mobile/src/main/java/org/openhab/habdroid/core/connection/DefaultConnection.java
@@ -1,6 +1,6 @@
 package org.openhab.habdroid.core.connection;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import okhttp3.OkHttpClient;
 
diff --git a/mobile/src/main/java/org/openhab/habdroid/model/CloudNotification.java b/mobile/src/main/java/org/openhab/habdroid/model/CloudNotification.java
index c0d0fb94..767cdae8 100644
--- a/mobile/src/main/java/org/openhab/habdroid/model/CloudNotification.java
+++ b/mobile/src/main/java/org/openhab/habdroid/model/CloudNotification.java
@@ -9,10 +9,9 @@
 
 package org.openhab.habdroid.model;
 
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
 
 import com.google.auto.value.AutoValue;
-
 import org.json.JSONException;
 import org.json.JSONObject;
 
diff --git a/mobile/src/main/java/org/openhab/habdroid/model/Item.java b/mobile/src/main/java/org/openhab/habdroid/model/Item.java
index 44224c8a..2481e491 100644
--- a/mobile/src/main/java/org/openhab/habdroid/model/Item.java
+++ b/mobile/src/main/java/org/openhab/habdroid/model/Item.java
@@ -10,10 +10,9 @@
 package org.openhab.habdroid.model;
 
 import android.os.Parcelable;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
 
 import com.google.auto.value.AutoValue;
-
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
diff --git a/mobile/src/main/java/org/openhab/habdroid/model/LinkedPage.java b/mobile/src/main/java/org/openhab/habdroid/model/LinkedPage.java
index 3743fbe5..ecc0bd3e 100644
--- a/mobile/src/main/java/org/openhab/habdroid/model/LinkedPage.java
+++ b/mobile/src/main/java/org/openhab/habdroid/model/LinkedPage.java
@@ -12,7 +12,6 @@ package org.openhab.habdroid.model;
 import android.os.Parcelable;
 
 import com.google.auto.value.AutoValue;
-
 import org.json.JSONObject;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
diff --git a/mobile/src/main/java/org/openhab/habdroid/model/ServerProperties.java b/mobile/src/main/java/org/openhab/habdroid/model/ServerProperties.java
index 52cd8316..480ce49c 100644
--- a/mobile/src/main/java/org/openhab/habdroid/model/ServerProperties.java
+++ b/mobile/src/main/java/org/openhab/habdroid/model/ServerProperties.java
@@ -4,11 +4,9 @@ import android.os.Parcelable;
 import android.util.Log;
 
 import com.google.auto.value.AutoValue;
-
 import okhttp3.Call;
 import okhttp3.Headers;
 import okhttp3.Request;
-
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
diff --git a/mobile/src/main/java/org/openhab/habdroid/model/Sitemap.java b/mobile/src/main/java/org/openhab/habdroid/model/Sitemap.java
index 4efe841e..b78f02a0 100644
--- a/mobile/src/main/java/org/openhab/habdroid/model/Sitemap.java
+++ b/mobile/src/main/java/org/openhab/habdroid/model/Sitemap.java
@@ -10,10 +10,9 @@
 package org.openhab.habdroid.model;
 
 import android.os.Parcelable;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
 
 import com.google.auto.value.AutoValue;
-
 import org.json.JSONObject;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
diff --git a/mobile/src/main/java/org/openhab/habdroid/model/Widget.java b/mobile/src/main/java/org/openhab/habdroid/model/Widget.java
index 6b8cba8d..6c485ee6 100644
--- a/mobile/src/main/java/org/openhab/habdroid/model/Widget.java
+++ b/mobile/src/main/java/org/openhab/habdroid/model/Widget.java
@@ -11,10 +11,9 @@ package org.openhab.habdroid.model;
 
 import android.graphics.Color;
 import android.os.Parcelable;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
 
 import com.google.auto.value.AutoValue;
-
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/AboutActivity.java b/mobile/src/main/java/org/openhab/habdroid/ui/AboutActivity.java
index 522fe50f..b721921c 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/AboutActivity.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/AboutActivity.java
@@ -4,18 +4,18 @@ import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
 
 import com.danielstone.materialaboutlibrary.MaterialAboutFragment;
 import com.danielstone.materialaboutlibrary.items.MaterialAboutActionItem;
@@ -24,7 +24,6 @@ import com.danielstone.materialaboutlibrary.items.MaterialAboutTitleItem;
 import com.danielstone.materialaboutlibrary.model.MaterialAboutCard;
 import com.danielstone.materialaboutlibrary.model.MaterialAboutList;
 import com.mikepenz.aboutlibraries.LibsBuilder;
-
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.openhab.habdroid.BuildConfig;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/CloudNotificationAdapter.java b/mobile/src/main/java/org/openhab/habdroid/ui/CloudNotificationAdapter.java
index 02321cd7..6b734033 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/CloudNotificationAdapter.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/CloudNotificationAdapter.java
@@ -11,15 +11,15 @@ package org.openhab.habdroid.ui;
 
 import android.content.Context;
 import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.v4.graphics.drawable.DrawableCompat;
-import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.core.graphics.drawable.DrawableCompat;
+import androidx.recyclerview.widget.RecyclerView;
 
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.core.connection.Connection;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/CloudNotificationListFragment.java b/mobile/src/main/java/org/openhab/habdroid/ui/CloudNotificationListFragment.java
index f0b12ef6..8e30ffdc 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/CloudNotificationListFragment.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/CloudNotificationListFragment.java
@@ -10,12 +10,6 @@
 package org.openhab.habdroid.ui;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -23,11 +17,16 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
 
 import okhttp3.Call;
 import okhttp3.Headers;
 import okhttp3.Request;
-
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/IntroActivity.java b/mobile/src/main/java/org/openhab/habdroid/ui/IntroActivity.java
index eff2a721..d9732519 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/IntroActivity.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/IntroActivity.java
@@ -1,16 +1,15 @@
 package org.openhab.habdroid.ui;
 
 import android.os.Bundle;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.v4.app.Fragment;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.Fragment;
 
 import com.github.paolorotolo.appintro.AppIntro;
 import com.github.paolorotolo.appintro.AppIntroFragment;
-
 import org.openhab.habdroid.R;
 
 public class IntroActivity extends AppIntro {
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/MainActivity.java b/mobile/src/main/java/org/openhab/habdroid/ui/MainActivity.java
index 2f9ae6d8..702c5589 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/MainActivity.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/MainActivity.java
@@ -33,19 +33,6 @@ import android.os.Bundle;
 import android.preference.PreferenceManager;
 import android.speech.RecognizerIntent;
 import android.speech.SpeechRecognizer;
-import android.support.annotation.ColorInt;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.design.widget.NavigationView;
-import android.support.design.widget.Snackbar;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.graphics.drawable.DrawableCompat;
-import android.support.v4.view.GravityCompat;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBarDrawerToggle;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.Toolbar;
 import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
 import android.text.style.RelativeSizeSpan;
@@ -61,11 +48,23 @@ import android.view.ViewStub;
 import android.view.WindowManager;
 import android.widget.ProgressBar;
 import android.widget.Toast;
-
+import androidx.annotation.ColorInt;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.appcompat.app.ActionBarDrawerToggle;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.core.content.ContextCompat;
+import androidx.core.graphics.drawable.DrawableCompat;
+import androidx.core.view.GravityCompat;
+import androidx.drawerlayout.widget.DrawerLayout;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.android.material.navigation.NavigationView;
+import com.google.android.material.snackbar.Snackbar;
 import es.dmoral.toasty.Toasty;
 import okhttp3.Headers;
 import okhttp3.Request;
-
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.core.CloudMessagingHelper;
 import org.openhab.habdroid.core.OnUpdateBroadcastReceiver;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java b/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java
index eb737fa0..91b0d124 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java
@@ -22,18 +22,18 @@ import android.preference.Preference;
 import android.preference.PreferenceFragment;
 import android.preference.PreferenceGroup;
 import android.preference.PreferenceScreen;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.NavUtils;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.graphics.drawable.DrawableCompat;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.MenuItem;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.annotation.VisibleForTesting;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.core.app.NavUtils;
+import androidx.core.content.ContextCompat;
+import androidx.core.graphics.drawable.DrawableCompat;
 
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.core.CloudMessagingHelper;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/WidgetAdapter.java b/mobile/src/main/java/org/openhab/habdroid/ui/WidgetAdapter.java
index dae4c587..e8a36b6a 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/WidgetAdapter.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/WidgetAdapter.java
@@ -22,13 +22,6 @@ import android.net.Uri;
 import android.os.Handler;
 import android.os.Message;
 import android.preference.PreferenceManager;
-import android.support.annotation.IdRes;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.SwitchCompat;
 import android.text.TextUtils;
 import android.util.Base64;
 import android.util.DisplayMetrics;
@@ -48,13 +41,18 @@ import android.widget.RadioGroup;
 import android.widget.SeekBar;
 import android.widget.TextView;
 import android.widget.VideoView;
+import androidx.annotation.IdRes;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.widget.SwitchCompat;
+import androidx.recyclerview.widget.RecyclerView;
 
 import com.larswerkman.holocolorpicker.ColorPicker;
 import com.larswerkman.holocolorpicker.SaturationBar;
 import com.larswerkman.holocolorpicker.ValueBar;
-
 import okhttp3.HttpUrl;
-
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.core.connection.Connection;
 import org.openhab.habdroid.model.Item;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/WidgetListFragment.java b/mobile/src/main/java/org/openhab/habdroid/ui/WidgetListFragment.java
index f45ab43c..e95946d5 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/WidgetListFragment.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/WidgetListFragment.java
@@ -12,16 +12,16 @@ package org.openhab.habdroid.ui;
 import android.app.AlertDialog;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.Fragment;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
 
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.model.Item;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/WriteTagActivity.java b/mobile/src/main/java/org/openhab/habdroid/ui/WriteTagActivity.java
index 21a403dd..8ae20a84 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/WriteTagActivity.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/WriteTagActivity.java
@@ -26,12 +26,6 @@ import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.content.ContextCompat;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -40,6 +34,12 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.Fragment;
 
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.util.Util;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/activity/ContentController.java b/mobile/src/main/java/org/openhab/habdroid/ui/activity/ContentController.java
index bd3c9dbc..470cfb27 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/activity/ContentController.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/activity/ContentController.java
@@ -16,16 +16,6 @@ import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
-import android.support.annotation.AnimRes;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.app.TaskStackBuilder;
-import android.support.v4.content.ContextCompat;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.Pair;
@@ -36,6 +26,16 @@ import android.view.ViewStub;
 import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.TextView;
+import androidx.annotation.AnimRes;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.core.app.TaskStackBuilder;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
 
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.core.connection.Connection;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/activity/ContentControllerOnePane.java b/mobile/src/main/java/org/openhab/habdroid/ui/activity/ContentControllerOnePane.java
index 1121c0ab..a62715bc 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/activity/ContentControllerOnePane.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/activity/ContentControllerOnePane.java
@@ -9,9 +9,9 @@
 
 package org.openhab.habdroid.ui.activity;
 
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
 import android.view.ViewStub;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
 
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.ui.MainActivity;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/activity/ContentControllerTwoPane.java b/mobile/src/main/java/org/openhab/habdroid/ui/activity/ContentControllerTwoPane.java
index 233fabc8..f3eab95e 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/activity/ContentControllerTwoPane.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/activity/ContentControllerTwoPane.java
@@ -10,11 +10,11 @@
 package org.openhab.habdroid.ui.activity;
 
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
 import android.util.Pair;
 import android.view.View;
 import android.view.ViewStub;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
 
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.model.LinkedPage;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/activity/PageConnectionHolderFragment.java b/mobile/src/main/java/org/openhab/habdroid/ui/activity/PageConnectionHolderFragment.java
index b7b4a197..855555e8 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/activity/PageConnectionHolderFragment.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/activity/PageConnectionHolderFragment.java
@@ -4,19 +4,17 @@ import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
 import android.text.TextUtils;
 import android.util.Log;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
 
 import com.here.oksse.ServerSentEvent;
-
 import okhttp3.Call;
 import okhttp3.Headers;
 import okhttp3.HttpUrl;
 import okhttp3.Request;
 import okhttp3.Response;
-
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.openhab.habdroid.core.connection.Connection;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/widget/DividerItemDecoration.java b/mobile/src/main/java/org/openhab/habdroid/ui/widget/DividerItemDecoration.java
index 99c4a862..589dcc59 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/widget/DividerItemDecoration.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/widget/DividerItemDecoration.java
@@ -5,8 +5,8 @@ import android.content.res.TypedArray;
 import android.graphics.Canvas;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
+import androidx.recyclerview.widget.RecyclerView;
 
 public class DividerItemDecoration extends RecyclerView.ItemDecoration {
     private final Drawable mDivider;
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/widget/ExtendedSpinner.java b/mobile/src/main/java/org/openhab/habdroid/ui/widget/ExtendedSpinner.java
index a9623e76..4b1e1058 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/widget/ExtendedSpinner.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/widget/ExtendedSpinner.java
@@ -1,8 +1,8 @@
 package org.openhab.habdroid.ui.widget;
 
 import android.content.Context;
-import android.support.v7.widget.AppCompatSpinner;
 import android.util.AttributeSet;
+import androidx.appcompat.widget.AppCompatSpinner;
 
 /*
  * An extended version of the Spinner class, which allows getting
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/widget/SegmentedControlButton.java b/mobile/src/main/java/org/openhab/habdroid/ui/widget/SegmentedControlButton.java
index 95142c6c..d721dbb2 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/widget/SegmentedControlButton.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/widget/SegmentedControlButton.java
@@ -22,9 +22,9 @@ import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Paint.Style;
 import android.graphics.drawable.Drawable;
-import android.support.v7.content.res.AppCompatResources;
-import android.support.v7.widget.AppCompatRadioButton;
 import android.util.AttributeSet;
+import androidx.appcompat.content.res.AppCompatResources;
+import androidx.appcompat.widget.AppCompatRadioButton;
 
 import org.openhab.habdroid.R;
 
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/widget/WidgetImageView.java b/mobile/src/main/java/org/openhab/habdroid/ui/widget/WidgetImageView.java
index f39498ca..683c7dcb 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/widget/WidgetImageView.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/widget/WidgetImageView.java
@@ -16,16 +16,15 @@ import android.graphics.drawable.Drawable;
 import android.os.Handler;
 import android.os.Message;
 import android.os.SystemClock;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.AppCompatImageView;
 import android.util.AttributeSet;
 import android.util.Log;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatImageView;
 
 import okhttp3.Call;
 import okhttp3.Headers;
 import okhttp3.HttpUrl;
 import okhttp3.Request;
-
 import org.openhab.habdroid.R;
 import org.openhab.habdroid.core.connection.Connection;
 import org.openhab.habdroid.util.AsyncHttpClient;
diff --git a/mobile/src/main/java/org/openhab/habdroid/util/AsyncHttpClient.java b/mobile/src/main/java/org/openhab/habdroid/util/AsyncHttpClient.java
index e6a66568..a0815183 100644
--- a/mobile/src/main/java/org/openhab/habdroid/util/AsyncHttpClient.java
+++ b/mobile/src/main/java/org/openhab/habdroid/util/AsyncHttpClient.java
@@ -17,11 +17,10 @@ import android.graphics.PorterDuff;
 import android.graphics.RectF;
 import android.os.Handler;
 import android.os.Looper;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import com.caverock.androidsvg.SVG;
 import com.caverock.androidsvg.SVGParseException;
-
 import okhttp3.Call;
 import okhttp3.Callback;
 import okhttp3.Headers;
diff --git a/mobile/src/main/java/org/openhab/habdroid/util/HttpClient.java b/mobile/src/main/java/org/openhab/habdroid/util/HttpClient.java
index afb62e3c..82e85629 100644
--- a/mobile/src/main/java/org/openhab/habdroid/util/HttpClient.java
+++ b/mobile/src/main/java/org/openhab/habdroid/util/HttpClient.java
@@ -9,10 +9,9 @@
 
 package org.openhab.habdroid.util;
 
-import android.support.annotation.VisibleForTesting;
+import androidx.annotation.VisibleForTesting;
 
 import com.here.oksse.OkSse;
-
 import okhttp3.CacheControl;
 import okhttp3.Call;
 import okhttp3.Credentials;
diff --git a/mobile/src/main/java/org/openhab/habdroid/util/MjpegStreamer.java b/mobile/src/main/java/org/openhab/habdroid/util/MjpegStreamer.java
index 8a36902b..c0c31af2 100644
--- a/mobile/src/main/java/org/openhab/habdroid/util/MjpegStreamer.java
+++ b/mobile/src/main/java/org/openhab/habdroid/util/MjpegStreamer.java
@@ -12,9 +12,9 @@ package org.openhab.habdroid.util;
 import android.graphics.Bitmap;
 import android.os.AsyncTask;
 import android.os.Handler;
-import android.support.annotation.NonNull;
 import android.util.Log;
 import android.widget.ImageView;
+import androidx.annotation.NonNull;
 
 import org.openhab.habdroid.core.connection.Connection;
 
diff --git a/mobile/src/main/java/org/openhab/habdroid/util/Util.java b/mobile/src/main/java/org/openhab/habdroid/util/Util.java
index c9fd628d..7bdd8393 100644
--- a/mobile/src/main/java/org/openhab/habdroid/util/Util.java
+++ b/mobile/src/main/java/org/openhab/habdroid/util/Util.java
@@ -17,17 +17,16 @@ import android.graphics.BitmapFactory;
 import android.net.Uri;
 import android.os.Build;
 import android.preference.PreferenceManager;
-import android.support.annotation.AnimRes;
-import android.support.annotation.AttrRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.StyleRes;
-import android.support.v4.widget.SwipeRefreshLayout;
 import android.util.Log;
 import android.util.TypedValue;
+import androidx.annotation.AnimRes;
+import androidx.annotation.AttrRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.StyleRes;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
 
 import okhttp3.Headers;
 import okhttp3.Request;
-
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
@@ -238,7 +237,7 @@ public class Util {
     }
 
     /**
-     * Sets {@link android.support.v4.widget.SwipeRefreshLayout} color scheme from
+     * Sets {@link SwipeRefreshLayout} color scheme from
      * a list of attributes pointing to color resources
      *
      * @param colorAttrIds color attributes to create color scheme from
diff --git a/mobile/src/main/res/layout/activity_about.xml b/mobile/src/main/res/layout/activity_about.xml
index 81554e61..9a4039d4 100644
--- a/mobile/src/main/res/layout/activity_about.xml
+++ b/mobile/src/main/res/layout/activity_about.xml
@@ -5,7 +5,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:orientation="vertical">
 
-    <android.support.v7.widget.Toolbar
+    <androidx.appcompat.widget.Toolbar
         android:id="@+id/openhab_toolbar"
         android:layout_width="match_parent"
         android:layout_height="?attr/actionBarSize"
diff --git a/mobile/src/main/res/layout/activity_main.xml b/mobile/src/main/res/layout/activity_main.xml
index e1a9cc5a..a7673d36 100644
--- a/mobile/src/main/res/layout/activity_main.xml
+++ b/mobile/src/main/res/layout/activity_main.xml
@@ -4,7 +4,7 @@
     android:layout_height="match_parent"
     android:orientation="vertical">
 
-    <android.support.v7.widget.Toolbar
+    <androidx.appcompat.widget.Toolbar
         android:id="@+id/openhab_toolbar"
         android:layout_width="fill_parent"
         android:layout_height="?attr/actionBarSize"
@@ -20,9 +20,9 @@
             android:layout_margin="16dp"
             android:indeterminateTint="#ffffff"
             android:indeterminateTintMode="src_in" />
-    </android.support.v7.widget.Toolbar>
+    </androidx.appcompat.widget.Toolbar>
 
-    <android.support.v4.widget.DrawerLayout
+    <androidx.drawerlayout.widget.DrawerLayout
         android:id="@+id/drawer_layout"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
@@ -32,12 +32,12 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent" />
 
-        <android.support.design.widget.NavigationView
+        <com.google.android.material.navigation.NavigationView
             android:id="@+id/left_drawer"
             android:layout_width="320dp"
             android:layout_height="match_parent"
             android:layout_gravity="start"
             android:background="?attr/themedDrawerBackground" />
 
-    </android.support.v4.widget.DrawerLayout>
+    </androidx.drawerlayout.widget.DrawerLayout>
 </LinearLayout>
diff --git a/mobile/src/main/res/layout/activity_prefs.xml b/mobile/src/main/res/layout/activity_prefs.xml
index fd5de55e..f41b12ef 100644
--- a/mobile/src/main/res/layout/activity_prefs.xml
+++ b/mobile/src/main/res/layout/activity_prefs.xml
@@ -5,7 +5,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:orientation="vertical">
 
-    <android.support.v7.widget.Toolbar
+    <androidx.appcompat.widget.Toolbar
         android:id="@+id/openhab_toolbar"
         android:layout_width="match_parent"
         android:layout_height="?attr/actionBarSize"
diff --git a/mobile/src/main/res/layout/openhabnotificationlist_fragment.xml b/mobile/src/main/res/layout/openhabnotificationlist_fragment.xml
index e98013c9..3d680975 100644
--- a/mobile/src/main/res/layout/openhabnotificationlist_fragment.xml
+++ b/mobile/src/main/res/layout/openhabnotificationlist_fragment.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/swipe_container"
@@ -10,7 +10,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
-        <android.support.v7.widget.RecyclerView
+        <androidx.recyclerview.widget.RecyclerView
             android:id="@android:id/list"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
@@ -24,7 +24,7 @@
             android:orientation="vertical"
             tools:visibility="visible">
 
-            <android.support.v7.widget.AppCompatImageView
+            <androidx.appcompat.widget.AppCompatImageView
                 android:id="@+id/watermark"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
@@ -56,4 +56,4 @@
 
     </FrameLayout>
 
-</android.support.v4.widget.SwipeRefreshLayout>
+</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
diff --git a/mobile/src/main/res/layout/openhabwidgetlist_fragment.xml b/mobile/src/main/res/layout/openhabwidgetlist_fragment.xml
index 9ea9b6c5..a5131321 100644
--- a/mobile/src/main/res/layout/openhabwidgetlist_fragment.xml
+++ b/mobile/src/main/res/layout/openhabwidgetlist_fragment.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.v4.widget.SwipeRefreshLayout
+<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/swiperefresh"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/recyclerview"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
 
-</android.support.v4.widget.SwipeRefreshLayout>
+</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
diff --git a/mobile/src/main/res/layout/openhabwidgetlist_frameitem.xml b/mobile/src/main/res/layout/openhabwidgetlist_frameitem.xml
index 8bc180a8..bfae8106 100644
--- a/mobile/src/main/res/layout/openhabwidgetlist_frameitem.xml
+++ b/mobile/src/main/res/layout/openhabwidgetlist_frameitem.xml
@@ -9,7 +9,7 @@
     android:paddingStart="@dimen/widgetlist_item_left_margin"
     android:paddingEnd="@dimen/widgetlist_item_right_margin">
 
-    <android.support.v4.widget.Space
+    <androidx.legacy.widget.Space
         android:id="@+id/spacer"
         android:layout_width="match_parent"
         android:layout_height="8dp"
diff --git a/mobile/src/main/res/layout/openhabwidgetlist_switchitem.xml b/mobile/src/main/res/layout/openhabwidgetlist_switchitem.xml
index d766212e..9189852d 100644
--- a/mobile/src/main/res/layout/openhabwidgetlist_switchitem.xml
+++ b/mobile/src/main/res/layout/openhabwidgetlist_switchitem.xml
@@ -6,7 +6,7 @@
 
     <include layout="@layout/openhabwidgetlist_iconsmallvaluetext" />
 
-    <android.support.v7.widget.SwitchCompat
+    <androidx.appcompat.widget.SwitchCompat
         android:id="@+id/toggle"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
diff --git a/mobile/src/main/res/layout/openhabwritetag.xml b/mobile/src/main/res/layout/openhabwritetag.xml
index 23eef454..0ca9794c 100644
--- a/mobile/src/main/res/layout/openhabwritetag.xml
+++ b/mobile/src/main/res/layout/openhabwritetag.xml
@@ -7,7 +7,7 @@
               android:orientation="vertical"
               tools:context="org.openhab.habdroid.ui.WriteTagActivity">
 
-    <android.support.v7.widget.Toolbar
+    <androidx.appcompat.widget.Toolbar
         android:id="@+id/openhab_toolbar"
         android:layout_width="match_parent"
         android:layout_height="?attr/actionBarSize"
diff --git a/mobile/src/test/java/org/openhab/habdroid/core/CloudMessagingHelper.java b/mobile/src/test/java/org/openhab/habdroid/core/CloudMessagingHelper.java
index ef54577a..92199d95 100644
--- a/mobile/src/test/java/org/openhab/habdroid/core/CloudMessagingHelper.java
+++ b/mobile/src/test/java/org/openhab/habdroid/core/CloudMessagingHelper.java
@@ -11,7 +11,7 @@ package org.openhab.habdroid.core;
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.annotation.StringRes;
+import androidx.annotation.StringRes;
 
 import org.openhab.habdroid.core.connection.CloudConnection;
 
diff --git a/mobile/src/test/java/org/openhab/habdroid/core/connection/ConnectionFactoryTest.java b/mobile/src/test/java/org/openhab/habdroid/core/connection/ConnectionFactoryTest.java
index 3a5f2c2e..18f1b90f 100644
--- a/mobile/src/test/java/org/openhab/habdroid/core/connection/ConnectionFactoryTest.java
+++ b/mobile/src/test/java/org/openhab/habdroid/core/connection/ConnectionFactoryTest.java
@@ -12,7 +12,6 @@ import android.os.Message;
 
 import okhttp3.mockwebserver.MockResponse;
 import okhttp3.mockwebserver.MockWebServer;
-
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
diff --git a/mobile/src/test/java/org/openhab/habdroid/core/connection/DefaultConnectionTest.java b/mobile/src/test/java/org/openhab/habdroid/core/connection/DefaultConnectionTest.java
index b0c6464a..c67039f6 100644
--- a/mobile/src/test/java/org/openhab/habdroid/core/connection/DefaultConnectionTest.java
+++ b/mobile/src/test/java/org/openhab/habdroid/core/connection/DefaultConnectionTest.java
@@ -2,7 +2,6 @@ package org.openhab.habdroid.core.connection;
 
 import okhttp3.Credentials;
 import okhttp3.OkHttpClient;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.openhab.habdroid.util.AsyncHttpClient;
diff --git a/mobile/src/test/java/org/openhab/habdroid/core/connection/DemoConnectionTest.java b/mobile/src/test/java/org/openhab/habdroid/core/connection/DemoConnectionTest.java
index f791ab8e..060152ef 100644
--- a/mobile/src/test/java/org/openhab/habdroid/core/connection/DemoConnectionTest.java
+++ b/mobile/src/test/java/org/openhab/habdroid/core/connection/DemoConnectionTest.java
@@ -1,7 +1,6 @@
 package org.openhab.habdroid.core.connection;
 
 import okhttp3.OkHttpClient;
-
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/mobile/src/test/java/org/openhab/habdroid/util/SyncHttpClientTest.java b/mobile/src/test/java/org/openhab/habdroid/util/SyncHttpClientTest.java
index 00c1cde9..040aab5e 100644
--- a/mobile/src/test/java/org/openhab/habdroid/util/SyncHttpClientTest.java
+++ b/mobile/src/test/java/org/openhab/habdroid/util/SyncHttpClientTest.java
@@ -1,7 +1,6 @@
 package org.openhab.habdroid.util;
 
 import okhttp3.OkHttpClient;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/stickler/checkstyle.xml b/stickler/checkstyle.xml
index 2dc5a010..0cc41a69 100644
--- a/stickler/checkstyle.xml
+++ b/stickler/checkstyle.xml
@@ -185,7 +185,7 @@
         <module name="CustomImportOrder">
             <property name="sortImportsInGroupAlphabetically" value="true"/>
             <property name="separateLineBetweenGroups" value="true"/>
-            <property name="specialImportsRegExp" value="^android \."/>
+            <property name="specialImportsRegExp" value="^(android|androidx)\."/>
             <property name="customImportOrderRules" value="SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE###STATIC"/>
         </module>
         <module name="MethodParamPad"/>
-- 
GitLab