build: migrate to androidx

* use androidx support library
* update gradle
* update dependencies

Change-Id: Iba7a2734e783a4ce0d5e6459dc33b9036e46d2a5
diff --git a/ring-android/app/build.gradle b/ring-android/app/build.gradle
index e6dbe6e..5703048 100644
--- a/ring-android/app/build.gradle
+++ b/ring-android/app/build.gradle
@@ -65,21 +65,21 @@
 }
 
 dependencies {
-    def android_support_version = "28.0.0-beta01"
-    def butterknife_version = "8.8.1"
-    def dagger_version = "2.12"
+    def android_support_version = '1.0.0-rc01'
+    def butterknife_version = "9.0.0-SNAPSHOT"
+    def dagger_version = "2.17"
 
     implementation fileTree(include: '*.jar', dir: 'libs')
     implementation project(':libringclient')
 
-    implementation "com.android.support:support-v13:$android_support_version"
-    implementation "com.android.support:design:$android_support_version"
-    implementation "com.android.support:cardview-v7:$android_support_version"
-    implementation "com.android.support:preference-v14:$android_support_version"
-    implementation "com.android.support:recyclerview-v7:$android_support_version"
-    implementation "com.android.support:appcompat-v7:$android_support_version"
-    implementation "com.android.support:leanback-v17:$android_support_version"
-    implementation "com.android.support:preference-leanback-v17:$android_support_version"
+    implementation "androidx.legacy:legacy-support-v13:$android_support_version"
+    implementation "com.google.android.material:material:$android_support_version"
+    implementation "androidx.cardview:cardview:$android_support_version"
+    implementation "androidx.legacy:legacy-preference-v14:$android_support_version"
+    implementation "androidx.recyclerview:recyclerview:$android_support_version"
+    implementation "androidx.appcompat:appcompat:$android_support_version"
+    implementation "androidx.leanback:leanback:$android_support_version"
+    implementation "androidx.leanback:leanback-preference:$android_support_version"
 
     // ORM
     implementation 'com.j256.ormlite:ormlite-android:4.48'
@@ -98,11 +98,11 @@
     annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"
 
     // Glide
-    implementation 'com.github.bumptech.glide:glide:4.7.1'
-    annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
+    implementation 'com.github.bumptech.glide:glide:4.8.0'
+    annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
 
     // RxAndroid
-    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
+    implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
 
     implementation 'com.jsibbold:zoomage:1.1.0'
 
diff --git a/ring-android/app/src/main/AndroidManifest.xml b/ring-android/app/src/main/AndroidManifest.xml
index 8b69d7c..8e551d8 100644
--- a/ring-android/app/src/main/AndroidManifest.xml
+++ b/ring-android/app/src/main/AndroidManifest.xml
@@ -334,7 +334,7 @@
             android:theme="@style/LeanbackPreferences" />
 
         <provider
-            android:name="android.support.v4.content.FileProvider"
+            android:name="androidx.core.content.FileProvider"
             android:authorities="cx.ring.file_provider"
             android:exported="false"
             android:grantUriPermissions="true">
diff --git a/ring-android/app/src/main/java/cx/ring/about/AboutBottomSheetDialogFragment.java b/ring-android/app/src/main/java/cx/ring/about/AboutBottomSheetDialogFragment.java
index 130a6f1..3aba914 100644
--- a/ring-android/app/src/main/java/cx/ring/about/AboutBottomSheetDialogFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/about/AboutBottomSheetDialogFragment.java
@@ -20,10 +20,10 @@
 package cx.ring.about;
 
 import android.app.Dialog;
-import android.support.annotation.NonNull;
-import android.support.design.widget.BottomSheetBehavior;
-import android.support.design.widget.BottomSheetDialogFragment;
-import android.support.design.widget.CoordinatorLayout;
+import androidx.annotation.NonNull;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
 import android.view.View;
 
 import cx.ring.R;
diff --git a/ring-android/app/src/main/java/cx/ring/about/AboutFragment.java b/ring-android/app/src/main/java/cx/ring/about/AboutFragment.java
index 7b16a20..807b157 100644
--- a/ring-android/app/src/main/java/cx/ring/about/AboutFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/about/AboutFragment.java
@@ -23,9 +23,9 @@
 import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.Bundle;
-import android.support.design.widget.BottomSheetDialogFragment;
-import android.support.design.widget.Snackbar;
-import android.support.v7.app.AppCompatActivity;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
+import com.google.android.material.snackbar.Snackbar;
+import androidx.appcompat.app.AppCompatActivity;
 import android.text.Html;
 import android.view.LayoutInflater;
 import android.view.Menu;
diff --git a/ring-android/app/src/main/java/cx/ring/account/AccountEditionActivity.java b/ring-android/app/src/main/java/cx/ring/account/AccountEditionActivity.java
index 10ba907..3f056da 100644
--- a/ring-android/app/src/main/java/cx/ring/account/AccountEditionActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/account/AccountEditionActivity.java
@@ -27,16 +27,16 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.design.widget.TabLayout;
-import android.support.v13.app.FragmentPagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import com.google.android.material.tabs.TabLayout;
+import androidx.legacy.app.FragmentPagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
diff --git a/ring-android/app/src/main/java/cx/ring/account/AccountWizardActivity.java b/ring-android/app/src/main/java/cx/ring/account/AccountWizardActivity.java
index a3292d6..155daff 100644
--- a/ring-android/app/src/main/java/cx/ring/account/AccountWizardActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/account/AccountWizardActivity.java
@@ -21,8 +21,6 @@
 package cx.ring.account;
 
 import android.app.Activity;
-import android.app.Fragment;
-import android.app.FragmentManager;
 import android.app.ProgressDialog;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
@@ -30,11 +28,13 @@
 import android.graphics.Bitmap;
 import android.net.Uri;
 import android.os.Bundle;
-import android.support.v7.app.AlertDialog;
+import androidx.appcompat.app.AlertDialog;
 import android.widget.Toast;
 
 import java.io.ByteArrayOutputStream;
 
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
 import butterknife.ButterKnife;
 import cx.ring.R;
 import cx.ring.application.RingApplication;
@@ -89,7 +89,7 @@
                 args.putString(AccountMigrationFragment.ACCOUNT_ID, getIntent().getData().getLastPathSegment());
                 Fragment fragment = new AccountMigrationFragment();
                 fragment.setArguments(args);
-                FragmentManager fragmentManager = getFragmentManager();
+                FragmentManager fragmentManager = getSupportFragmentManager();
                 fragmentManager
                         .beginTransaction()
                         .replace(R.id.wizard_container, fragment)
@@ -153,7 +153,7 @@
     @Override
     public void goToHomeCreation() {
         Fragment fragment = new HomeAccountCreationFragment();
-        FragmentManager fragmentManager = getFragmentManager();
+        FragmentManager fragmentManager = getSupportFragmentManager();
         fragmentManager.beginTransaction()
                 .replace(R.id.wizard_container, fragment, HomeAccountCreationFragment.TAG)
                 .commit();
@@ -162,7 +162,7 @@
     @Override
     public void goToSipCreation() {
         Fragment fragment = new SIPAccountCreationFragment();
-        FragmentManager fragmentManager = getFragmentManager();
+        FragmentManager fragmentManager = getSupportFragmentManager();
         fragmentManager.beginTransaction()
                 .replace(R.id.wizard_container, fragment, SIPAccountCreationFragment.TAG)
                 .commit();
diff --git a/ring-android/app/src/main/java/cx/ring/account/AccountsAdapter.java b/ring-android/app/src/main/java/cx/ring/account/AccountsAdapter.java
index 6195c09..6e83832 100644
--- a/ring-android/app/src/main/java/cx/ring/account/AccountsAdapter.java
+++ b/ring-android/app/src/main/java/cx/ring/account/AccountsAdapter.java
@@ -19,14 +19,13 @@
 package cx.ring.account;
 
 import android.graphics.Color;
-import android.support.annotation.NonNull;
-import android.support.v4.content.ContextCompat;
-import android.support.v7.widget.RecyclerView;
+import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
+import androidx.recyclerview.widget.RecyclerView;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.BaseAdapter;
 import android.widget.CheckBox;
 import android.widget.ImageView;
 import android.widget.TextView;
diff --git a/ring-android/app/src/main/java/cx/ring/account/ConfirmRevocationDialog.java b/ring-android/app/src/main/java/cx/ring/account/ConfirmRevocationDialog.java
index 25bdeed..aa8db24 100644
--- a/ring-android/app/src/main/java/cx/ring/account/ConfirmRevocationDialog.java
+++ b/ring-android/app/src/main/java/cx/ring/account/ConfirmRevocationDialog.java
@@ -22,8 +22,8 @@
 import android.app.Dialog;
 import android.app.DialogFragment;
 import android.os.Bundle;
-import android.support.design.widget.TextInputLayout;
-import android.support.v7.app.AlertDialog;
+import com.google.android.material.textfield.TextInputLayout;
+import androidx.appcompat.app.AlertDialog;
 import android.view.View;
 import android.view.WindowManager;
 import android.view.inputmethod.EditorInfo;
diff --git a/ring-android/app/src/main/java/cx/ring/account/HomeAccountCreationFragment.java b/ring-android/app/src/main/java/cx/ring/account/HomeAccountCreationFragment.java
index fac13a4..49bc168 100644
--- a/ring-android/app/src/main/java/cx/ring/account/HomeAccountCreationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/account/HomeAccountCreationFragment.java
@@ -19,18 +19,18 @@
  */
 package cx.ring.account;
 
-import android.app.Fragment;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;
 
+import androidx.fragment.app.Fragment;
 import butterknife.BindView;
 import butterknife.OnClick;
 import cx.ring.R;
 import cx.ring.dependencyinjection.RingInjectionComponent;
-import cx.ring.mvp.BaseFragment;
+import cx.ring.mvp.BaseSupportFragment;
 
-public class HomeAccountCreationFragment extends BaseFragment<HomeAccountCreationPresenter> implements HomeAccountCreationView {
+public class HomeAccountCreationFragment extends BaseSupportFragment<HomeAccountCreationPresenter> implements HomeAccountCreationView {
 
     public static final String TAG = HomeAccountCreationFragment.class.getSimpleName();
 
diff --git a/ring-android/app/src/main/java/cx/ring/account/ProfileCreationFragment.java b/ring-android/app/src/main/java/cx/ring/account/ProfileCreationFragment.java
index 3065a7f..35d4578 100644
--- a/ring-android/app/src/main/java/cx/ring/account/ProfileCreationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/account/ProfileCreationFragment.java
@@ -21,7 +21,6 @@
 
 import android.Manifest;
 import android.app.Activity;
-import android.app.Fragment;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.graphics.Bitmap;
@@ -29,8 +28,7 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.MediaStore;
-import android.support.annotation.NonNull;
-import android.support.v4.app.ActivityCompat;
+import androidx.annotation.NonNull;
 import android.text.Editable;
 import android.text.TextWatcher;
 import android.util.Log;
@@ -42,18 +40,19 @@
 
 import java.io.ByteArrayOutputStream;
 
+import androidx.fragment.app.Fragment;
 import butterknife.BindView;
 import butterknife.OnClick;
 import butterknife.OnTextChanged;
 import cx.ring.R;
 import cx.ring.adapters.ContactDetailsTask;
 import cx.ring.dependencyinjection.RingInjectionComponent;
-import cx.ring.mvp.BaseFragment;
+import cx.ring.mvp.BaseSupportFragment;
 import cx.ring.mvp.RingAccountViewModel;
 import cx.ring.utils.BitmapUtils;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 
-public class ProfileCreationFragment extends BaseFragment<ProfileCreationPresenter> implements ProfileCreationView, TextWatcher {
+public class ProfileCreationFragment extends BaseSupportFragment<ProfileCreationPresenter> implements ProfileCreationView, TextWatcher {
     public static final String TAG = ProfileCreationFragment.class.getSimpleName();
     public static final String KEY_IS_LINK = "IS_LINK";
 
@@ -215,16 +214,12 @@
 
     @Override
     public void askStoragePermission() {
-        ActivityCompat.requestPermissions(getActivity(),
-                new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
-                REQUEST_PERMISSION_READ_STORAGE);
+        requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_PERMISSION_READ_STORAGE);
     }
 
     @Override
     public void askPhotoPermission() {
-        ActivityCompat.requestPermissions(getActivity(),
-                new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE},
-                REQUEST_PERMISSION_CAMERA);
+        requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION_CAMERA);
     }
 
     @Override
diff --git a/ring-android/app/src/main/java/cx/ring/account/RegisterNameDialog.java b/ring-android/app/src/main/java/cx/ring/account/RegisterNameDialog.java
index be4f9d5..2fc1ce6 100644
--- a/ring-android/app/src/main/java/cx/ring/account/RegisterNameDialog.java
+++ b/ring-android/app/src/main/java/cx/ring/account/RegisterNameDialog.java
@@ -22,8 +22,8 @@
 import android.app.Dialog;
 import android.app.DialogFragment;
 import android.os.Bundle;
-import android.support.design.widget.TextInputLayout;
-import android.support.v7.app.AlertDialog;
+import com.google.android.material.textfield.TextInputLayout;
+import androidx.appcompat.app.AlertDialog;
 import android.text.InputFilter;
 import android.text.TextWatcher;
 import android.view.View;
diff --git a/ring-android/app/src/main/java/cx/ring/account/RenameDeviceDialog.java b/ring-android/app/src/main/java/cx/ring/account/RenameDeviceDialog.java
index 27673cf..c42202c 100644
--- a/ring-android/app/src/main/java/cx/ring/account/RenameDeviceDialog.java
+++ b/ring-android/app/src/main/java/cx/ring/account/RenameDeviceDialog.java
@@ -21,8 +21,8 @@
 import android.app.Dialog;
 import android.app.DialogFragment;
 import android.os.Bundle;
-import android.support.design.widget.TextInputLayout;
-import android.support.v7.app.AlertDialog;
+import com.google.android.material.textfield.TextInputLayout;
+import androidx.appcompat.app.AlertDialog;
 import android.view.View;
 import android.view.WindowManager;
 import android.view.inputmethod.EditorInfo;
diff --git a/ring-android/app/src/main/java/cx/ring/account/RingAccountCreationFragment.java b/ring-android/app/src/main/java/cx/ring/account/RingAccountCreationFragment.java
index 16e408a..493d05e 100644
--- a/ring-android/app/src/main/java/cx/ring/account/RingAccountCreationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/account/RingAccountCreationFragment.java
@@ -21,7 +21,7 @@
 
 import android.app.Activity;
 import android.os.Bundle;
-import android.support.design.widget.TextInputLayout;
+import com.google.android.material.textfield.TextInputLayout;
 import android.text.Editable;
 import android.text.InputFilter;
 import android.view.View;
@@ -40,10 +40,11 @@
 import cx.ring.R;
 import cx.ring.dependencyinjection.RingInjectionComponent;
 import cx.ring.mvp.BaseFragment;
+import cx.ring.mvp.BaseSupportFragment;
 import cx.ring.mvp.RingAccountViewModel;
 import cx.ring.utils.RegisteredNameFilter;
 
-public class RingAccountCreationFragment extends BaseFragment<RingAccountCreationPresenter> implements RingAccountCreationView {
+public class RingAccountCreationFragment extends BaseSupportFragment<RingAccountCreationPresenter> implements RingAccountCreationView {
 
     public static final String KEY_RING_ACCOUNT = "RING_ACCOUNT";
 
diff --git a/ring-android/app/src/main/java/cx/ring/account/RingAccountSummaryFragment.java b/ring-android/app/src/main/java/cx/ring/account/RingAccountSummaryFragment.java
index cefc3a0..e0fcd9f 100644
--- a/ring-android/app/src/main/java/cx/ring/account/RingAccountSummaryFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/account/RingAccountSummaryFragment.java
@@ -24,12 +24,12 @@
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.support.design.widget.TextInputLayout;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.graphics.drawable.DrawableCompat;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.content.res.AppCompatResources;
-import android.support.v7.widget.SwitchCompat;
+import com.google.android.material.textfield.TextInputLayout;
+import androidx.core.content.ContextCompat;
+import androidx.core.graphics.drawable.DrawableCompat;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.content.res.AppCompatResources;
+import androidx.appcompat.widget.SwitchCompat;
 import android.text.Layout;
 import android.text.Spannable;
 import android.text.SpannableString;
diff --git a/ring-android/app/src/main/java/cx/ring/account/RingLinkAccountFragment.java b/ring-android/app/src/main/java/cx/ring/account/RingLinkAccountFragment.java
index 39a2b68..8523034 100644
--- a/ring-android/app/src/main/java/cx/ring/account/RingLinkAccountFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/account/RingLinkAccountFragment.java
@@ -33,9 +33,10 @@
 import cx.ring.R;
 import cx.ring.dependencyinjection.RingInjectionComponent;
 import cx.ring.mvp.BaseFragment;
+import cx.ring.mvp.BaseSupportFragment;
 import cx.ring.mvp.RingAccountViewModel;
 
-public class RingLinkAccountFragment extends BaseFragment<RingLinkAccountPresenter> implements RingLinkAccountView {
+public class RingLinkAccountFragment extends BaseSupportFragment<RingLinkAccountPresenter> implements RingLinkAccountView {
 
     public static final String TAG = RingLinkAccountFragment.class.getSimpleName();
 
diff --git a/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java b/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java
index fd14121..d82ffce 100644
--- a/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java
+++ b/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java
@@ -23,16 +23,15 @@
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Environment;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.ActivityOptionsCompat;
-import android.support.v4.content.FileProvider;
-import android.support.v4.view.ViewCompat;
-import android.support.v7.widget.RecyclerView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.app.ActivityOptionsCompat;
+import androidx.core.content.FileProvider;
+import androidx.core.view.ViewCompat;
+import androidx.recyclerview.widget.RecyclerView;
 import android.text.format.DateUtils;
 import android.util.Log;
 import android.util.TypedValue;
@@ -45,7 +44,6 @@
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
 
-import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.resource.bitmap.CenterInside;
 import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
 import com.bumptech.glide.request.target.DrawableImageViewTarget;
diff --git a/ring-android/app/src/main/java/cx/ring/adapters/SmartListAdapter.java b/ring-android/app/src/main/java/cx/ring/adapters/SmartListAdapter.java
index 5d61724..53be6cd 100644
--- a/ring-android/app/src/main/java/cx/ring/adapters/SmartListAdapter.java
+++ b/ring-android/app/src/main/java/cx/ring/adapters/SmartListAdapter.java
@@ -22,18 +22,15 @@
 
 import android.content.Context;
 import android.graphics.Typeface;
-import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import android.support.v7.util.DiffUtil;
-import android.support.v7.widget.RecyclerView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
+import androidx.recyclerview.widget.RecyclerView;
 import android.text.format.DateUtils;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import com.bumptech.glide.Glide;
-
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/ring-android/app/src/main/java/cx/ring/adapters/SmartListDiffUtil.java b/ring-android/app/src/main/java/cx/ring/adapters/SmartListDiffUtil.java
index 10492f7..10709c9 100644
--- a/ring-android/app/src/main/java/cx/ring/adapters/SmartListDiffUtil.java
+++ b/ring-android/app/src/main/java/cx/ring/adapters/SmartListDiffUtil.java
@@ -19,7 +19,7 @@
  */
 package cx.ring.adapters;
 
-import android.support.v7.util.DiffUtil;
+import androidx.recyclerview.widget.DiffUtil;
 
 import java.util.List;
 
diff --git a/ring-android/app/src/main/java/cx/ring/application/RingApplication.java b/ring-android/app/src/main/java/cx/ring/application/RingApplication.java
index 254d4a1..ebab64d 100644
--- a/ring-android/app/src/main/java/cx/ring/application/RingApplication.java
+++ b/ring-android/app/src/main/java/cx/ring/application/RingApplication.java
@@ -27,10 +27,12 @@
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
 import android.media.AudioManager;
+import android.os.Build;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Looper;
-import android.support.v7.app.AppCompatDelegate;
+import androidx.appcompat.app.AppCompatDelegate;
+import android.util.Log;
 
 import com.bumptech.glide.Glide;
 
@@ -59,7 +61,6 @@
 import cx.ring.services.HardwareService;
 import cx.ring.services.PreferencesService;
 import cx.ring.services.PresenceService;
-import cx.ring.utils.Log;
 
 public abstract class RingApplication extends Application {
 
@@ -214,7 +215,7 @@
 
         sInstance = this;
 
-        if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP)
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
             AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
 
         setDefaultUncaughtExceptionHandler();
diff --git a/ring-android/app/src/main/java/cx/ring/client/CallActivity.java b/ring-android/app/src/main/java/cx/ring/client/CallActivity.java
index 2b92d87..37df977 100644
--- a/ring-android/app/src/main/java/cx/ring/client/CallActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/client/CallActivity.java
@@ -28,7 +28,7 @@
 import android.content.res.Configuration;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatActivity;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.WindowManager;
diff --git a/ring-android/app/src/main/java/cx/ring/client/ConversationActivity.java b/ring-android/app/src/main/java/cx/ring/client/ConversationActivity.java
index 821a178..49d8258 100644
--- a/ring-android/app/src/main/java/cx/ring/client/ConversationActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/client/ConversationActivity.java
@@ -22,9 +22,9 @@
 
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
 import android.view.KeyEvent;
 
 import butterknife.BindView;
diff --git a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
index 0bd7dd3..1d7f826 100644
--- a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
@@ -27,15 +27,15 @@
 import android.graphics.Bitmap;
 import android.graphics.Color;
 import android.os.Bundle;
-import android.support.design.widget.FloatingActionButton;
-import android.support.design.widget.NavigationView;
-import android.support.v4.view.GravityCompat;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.ActionBarDrawerToggle;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+import com.google.android.material.navigation.NavigationView;
+import androidx.core.view.GravityCompat;
+import androidx.drawerlayout.widget.DrawerLayout;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.ActionBarDrawerToggle;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
 
 import android.text.TextUtils;
 import android.util.Log;
@@ -47,7 +47,6 @@
 import android.widget.TextView;
 
 import java.io.File;
-import java.util.List;
 
 import javax.inject.Inject;
 
diff --git a/ring-android/app/src/main/java/cx/ring/client/MediaViewerActivity.java b/ring-android/app/src/main/java/cx/ring/client/MediaViewerActivity.java
index b0c247a..dc5b10d0 100644
--- a/ring-android/app/src/main/java/cx/ring/client/MediaViewerActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/client/MediaViewerActivity.java
@@ -20,8 +20,8 @@
 package cx.ring.client;
 
 import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
 
 import cx.ring.R;
 
diff --git a/ring-android/app/src/main/java/cx/ring/client/MediaViewerFragment.java b/ring-android/app/src/main/java/cx/ring/client/MediaViewerFragment.java
index 1fb9c50..a29c65d 100644
--- a/ring-android/app/src/main/java/cx/ring/client/MediaViewerFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/client/MediaViewerFragment.java
@@ -22,8 +22,8 @@
 import android.app.Activity;
 import android.app.Fragment;
 import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.LayoutInflater;
diff --git a/ring-android/app/src/main/java/cx/ring/client/ShareActivity.java b/ring-android/app/src/main/java/cx/ring/client/ShareActivity.java
index 9c83479..a7ab1f9 100644
--- a/ring-android/app/src/main/java/cx/ring/client/ShareActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/client/ShareActivity.java
@@ -1,7 +1,7 @@
 package cx.ring.client;
 
 import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatActivity;
 
 import cx.ring.R;
 
diff --git a/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListAdapter.java b/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListAdapter.java
index 42872e4..f436fc9 100644
--- a/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListAdapter.java
+++ b/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListAdapter.java
@@ -19,14 +19,13 @@
  */
 package cx.ring.contactrequests;
 
-import android.support.v7.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
 
 import cx.ring.R;
 import cx.ring.model.CallContact;
diff --git a/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListFragment.java b/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListFragment.java
index bb5d9c5..4f68f42 100644
--- a/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListFragment.java
@@ -19,9 +19,9 @@
 package cx.ring.contactrequests;
 
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -30,7 +30,6 @@
 import android.widget.TextView;
 
 import java.util.Collection;
-import java.util.List;
 
 import butterknife.BindView;
 import cx.ring.R;
diff --git a/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListViewHolder.java b/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListViewHolder.java
index a55bb75..55d2eb4 100644
--- a/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListViewHolder.java
+++ b/ring-android/app/src/main/java/cx/ring/contactrequests/BlackListViewHolder.java
@@ -19,16 +19,12 @@
  */
 package cx.ring.contactrequests;
 
-import android.graphics.drawable.Drawable;
-import android.support.v7.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView;
 import android.view.View;
 import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
-
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import cx.ring.R;
diff --git a/ring-android/app/src/main/java/cx/ring/contactrequests/ContactRequestsFragment.java b/ring-android/app/src/main/java/cx/ring/contactrequests/ContactRequestsFragment.java
index 547ab63..0562bb4 100644
--- a/ring-android/app/src/main/java/cx/ring/contactrequests/ContactRequestsFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/contactrequests/ContactRequestsFragment.java
@@ -20,8 +20,8 @@
 
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
diff --git a/ring-android/app/src/main/java/cx/ring/dependencyinjection/ServiceInjectionModule.java b/ring-android/app/src/main/java/cx/ring/dependencyinjection/ServiceInjectionModule.java
index fa8f576..372c0b9 100755
--- a/ring-android/app/src/main/java/cx/ring/dependencyinjection/ServiceInjectionModule.java
+++ b/ring-android/app/src/main/java/cx/ring/dependencyinjection/ServiceInjectionModule.java
@@ -20,12 +20,11 @@
 package cx.ring.dependencyinjection;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
 
 import javax.inject.Named;
 import javax.inject.Singleton;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/AccountMigrationFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/AccountMigrationFragment.java
index 73d50fd..d731faf 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/AccountMigrationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/AccountMigrationFragment.java
@@ -20,13 +20,12 @@
 package cx.ring.fragments;
 
 import android.app.Activity;
-import android.app.Fragment;
 import android.app.ProgressDialog;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v7.app.AlertDialog;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -41,6 +40,7 @@
 
 import javax.inject.Inject;
 
+import androidx.fragment.app.Fragment;
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java
index 085db4f..6b0cc7f 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java
@@ -24,9 +24,9 @@
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuInflater;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/AdvancedAccountFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/AdvancedAccountFragment.java
index 02e24f1..e22063b 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/AdvancedAccountFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/AdvancedAccountFragment.java
@@ -20,10 +20,10 @@
 package cx.ring.fragments;
 
 import android.os.Bundle;
-import android.support.v7.preference.EditTextPreference;
-import android.support.v7.preference.ListPreference;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.TwoStatePreference;
+import androidx.preference.EditTextPreference;
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.TwoStatePreference;
 import android.text.TextUtils;
 import android.view.inputmethod.EditorInfo;
 
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
index 9ec6f9f..a8002f3 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
@@ -33,10 +33,8 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.os.PowerManager;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import android.util.DisplayMetrics;
 import android.util.Rational;
 import android.view.Menu;
@@ -60,6 +58,8 @@
 import java.util.Locale;
 import java.util.Random;
 
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
 import butterknife.BindView;
 import butterknife.OnClick;
 import cx.ring.R;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/CodecPreference.java b/ring-android/app/src/main/java/cx/ring/fragments/CodecPreference.java
index a5a9f4d..3ba3275 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/CodecPreference.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/CodecPreference.java
@@ -21,9 +21,9 @@
 package cx.ring.fragments;
 
 import android.content.Context;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceViewHolder;
-import android.support.v7.widget.RecyclerView;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+import androidx.recyclerview.widget.RecyclerView;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
index 3fcd9d9..554ab51 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
@@ -29,17 +29,17 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.provider.MediaStore;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.design.widget.Snackbar;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.FileProvider;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.SimpleItemAnimator;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import com.google.android.material.snackbar.Snackbar;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.FileProvider;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.DefaultItemAnimator;
+import androidx.recyclerview.widget.RecyclerView;
+
 import android.text.Editable;
 import android.text.TextWatcher;
 import android.util.Log;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/GeneralAccountFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/GeneralAccountFragment.java
index b888d21..b71ae5a 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/GeneralAccountFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/GeneralAccountFragment.java
@@ -20,11 +20,11 @@
 package cx.ring.fragments;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v7.preference.EditTextPreference;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.SwitchPreferenceCompat;
-import android.support.v7.preference.TwoStatePreference;
+import androidx.annotation.NonNull;
+import androidx.preference.EditTextPreference;
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreferenceCompat;
+import androidx.preference.TwoStatePreference;
 import android.view.inputmethod.EditorInfo;
 
 import cx.ring.R;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/MediaPreferenceFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/MediaPreferenceFragment.java
index 768a1ea..08e4ca9 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/MediaPreferenceFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/MediaPreferenceFragment.java
@@ -27,12 +27,12 @@
 import android.content.pm.PackageManager;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v13.app.FragmentCompat;
-import android.support.v14.preference.SwitchPreference;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.TwoStatePreference;
+import androidx.annotation.NonNull;
+import androidx.legacy.app.FragmentCompat;
+import androidx.preference.SwitchPreference;
+import androidx.appcompat.app.AlertDialog;
+import androidx.preference.Preference;
+import androidx.preference.TwoStatePreference;
 
 import java.io.File;
 import java.util.ArrayList;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/SIPAccountCreationFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/SIPAccountCreationFragment.java
index 3f54907..0c82304 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/SIPAccountCreationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/SIPAccountCreationFragment.java
@@ -24,7 +24,7 @@
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
-import android.support.v7.app.AlertDialog;
+import androidx.appcompat.app.AlertDialog;
 import android.view.KeyEvent;
 import android.view.inputmethod.EditorInfo;
 import android.widget.Button;
@@ -38,10 +38,11 @@
 import cx.ring.application.RingApplication;
 import cx.ring.dependencyinjection.RingInjectionComponent;
 import cx.ring.mvp.BaseFragment;
+import cx.ring.mvp.BaseSupportFragment;
 import cx.ring.mvp.SIPCreationView;
 import cx.ring.wizard.SIPCreationPresenter;
 
-public class SIPAccountCreationFragment extends BaseFragment<SIPCreationPresenter> implements SIPCreationView {
+public class SIPAccountCreationFragment extends BaseSupportFragment<SIPCreationPresenter> implements SIPCreationView {
 
     public static final String TAG = SIPAccountCreationFragment.class.getSimpleName();
 
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/SecurityAccountFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/SecurityAccountFragment.java
index 2db0d15..51d3912 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/SecurityAccountFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/SecurityAccountFragment.java
@@ -23,11 +23,11 @@
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
-import android.support.v7.preference.EditTextPreference;
-import android.support.v7.preference.ListPreference;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceCategory;
-import android.support.v7.preference.TwoStatePreference;
+import androidx.preference.EditTextPreference;
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.TwoStatePreference;
 import android.util.Pair;
 
 import java.io.File;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/ShareWithFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/ShareWithFragment.java
index d5b0b51..5e9ee7e 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/ShareWithFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/ShareWithFragment.java
@@ -26,11 +26,11 @@
 import android.os.Bundle;
 import android.app.Fragment;
 
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.Toolbar;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.appcompat.widget.Toolbar;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java
index 22140ad..9027a4a 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java
@@ -22,18 +22,17 @@
 
 import android.app.Activity;
 import android.content.Intent;
-import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
-import android.support.design.widget.Snackbar;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.SearchView;
-import android.support.v7.widget.Toolbar;
+import androidx.annotation.Nullable;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+import com.google.android.material.snackbar.Snackbar;
+import androidx.appcompat.app.AlertDialog;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.appcompat.widget.SearchView;
+import androidx.appcompat.widget.Toolbar;
 import android.text.InputType;
 import android.util.Log;
 import android.view.Menu;
@@ -47,7 +46,6 @@
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
-import com.bumptech.glide.Glide;
 import com.google.zxing.integration.android.IntentIntegrator;
 import com.google.zxing.integration.android.IntentResult;
 
diff --git a/ring-android/app/src/main/java/cx/ring/launch/LaunchActivity.java b/ring-android/app/src/main/java/cx/ring/launch/LaunchActivity.java
index a7580e6..0605184 100644
--- a/ring-android/app/src/main/java/cx/ring/launch/LaunchActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/launch/LaunchActivity.java
@@ -23,9 +23,9 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.app.ActivityCompat;
-import android.support.v7.app.AlertDialog;
+import androidx.annotation.NonNull;
+import androidx.core.app.ActivityCompat;
+import androidx.appcompat.app.AlertDialog;
 import android.util.Log;
 
 import cx.ring.R;
diff --git a/ring-android/app/src/main/java/cx/ring/mvp/BaseActivity.java b/ring-android/app/src/main/java/cx/ring/mvp/BaseActivity.java
index 8fed762..6f6bde0 100644
--- a/ring-android/app/src/main/java/cx/ring/mvp/BaseActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/mvp/BaseActivity.java
@@ -20,7 +20,7 @@
 package cx.ring.mvp;
 
 import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatActivity;
 
 import javax.inject.Inject;
 
diff --git a/ring-android/app/src/main/java/cx/ring/mvp/BaseFragment.java b/ring-android/app/src/main/java/cx/ring/mvp/BaseFragment.java
index 157c522..718e837 100644
--- a/ring-android/app/src/main/java/cx/ring/mvp/BaseFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/mvp/BaseFragment.java
@@ -21,9 +21,9 @@
 
 import android.app.Fragment;
 import android.os.Bundle;
-import android.support.annotation.IdRes;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.Nullable;
+import androidx.annotation.IdRes;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.Nullable;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -106,22 +106,4 @@
 
     protected void initPresenter(T presenter) {
     }
-
-    protected void replaceFragmentWithSlide(Fragment fragment, @IdRes int content) {
-        getFragmentManager()
-                .beginTransaction()
-                .setCustomAnimations(R.animator.slide_in_left,
-                        R.animator.slide_out_right, R.animator.slide_in_right, R.animator.slide_out_left)
-                .replace(content, fragment, RingAccountCreationFragment.TAG)
-                .addToBackStack(RingAccountCreationFragment.TAG)
-                .commit();
-    }
-
-    protected void replaceFragment(Fragment fragment, @IdRes int content) {
-        getFragmentManager()
-                .beginTransaction()
-                .replace(content, fragment, RingAccountCreationFragment.TAG)
-                .addToBackStack(RingAccountCreationFragment.TAG)
-                .commit();
-    }
 }
diff --git a/ring-android/app/src/main/java/cx/ring/mvp/BasePreferenceFragment.java b/ring-android/app/src/main/java/cx/ring/mvp/BasePreferenceFragment.java
index db564b2..0b74cc6 100644
--- a/ring-android/app/src/main/java/cx/ring/mvp/BasePreferenceFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/mvp/BasePreferenceFragment.java
@@ -20,7 +20,7 @@
 package cx.ring.mvp;
 
 import android.os.Bundle;
-import android.support.v14.preference.PreferenceFragment;
+import androidx.preference.PreferenceFragment;
 import android.view.View;
 
 import javax.inject.Inject;
diff --git a/ring-android/app/src/main/java/cx/ring/mvp/BaseSupportFragment.java b/ring-android/app/src/main/java/cx/ring/mvp/BaseSupportFragment.java
new file mode 100644
index 0000000..f4dcc82
--- /dev/null
+++ b/ring-android/app/src/main/java/cx/ring/mvp/BaseSupportFragment.java
@@ -0,0 +1,127 @@
+/*
+ *  Copyright (C) 2004-2018 Savoir-faire Linux Inc.
+ *
+ *  Author: Hadrien De Sousa <hadrien.desousa@savoirfairelinux.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package cx.ring.mvp;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Toast;
+
+import javax.inject.Inject;
+
+import androidx.annotation.IdRes;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import butterknife.ButterKnife;
+import butterknife.Unbinder;
+import cx.ring.R;
+import cx.ring.account.RingAccountCreationFragment;
+import cx.ring.application.RingApplication;
+import cx.ring.dependencyinjection.RingInjectionComponent;
+import cx.ring.model.RingError;
+
+public abstract class BaseSupportFragment<T extends RootPresenter> extends Fragment implements BaseView {
+
+    protected static final String TAG = BaseSupportFragment.class.getSimpleName();
+
+    @Inject
+    protected T presenter;
+
+    private Unbinder mUnbinder;
+
+    @LayoutRes
+    public abstract int getLayout();
+
+    public abstract void injectFragment(RingInjectionComponent component);
+
+    @Nullable
+    @Override
+    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
+        final View inflatedView = inflater.inflate(getLayout(), container, false);
+        // dependency injection
+        injectFragment(((RingApplication) getActivity().getApplication()).getRingInjectionComponent());
+        //Butterknife
+        mUnbinder = ButterKnife.bind(this, inflatedView);
+        return inflatedView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        //Be sure to do the injection in onCreateView method
+        presenter.bindView(this);
+        initPresenter(presenter);
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        presenter.unbindView();
+        // Butterknife unbinding
+        mUnbinder.unbind();
+    }
+
+    public void displayErrorToast(int error) {
+        String errorString;
+        switch (error) {
+            case RingError.NO_INPUT:
+                errorString = getString(R.string.call_error_no_camera_no_microphone);
+                break;
+            case RingError.INVALID_FILE:
+                errorString = getString(R.string.invalid_file);
+                break;
+            case RingError.NOT_ABLE_TO_WRITE_FILE:
+                errorString = getString(R.string.not_able_to_write_file);
+                break;
+            case RingError.NO_SPACE_LEFT:
+                errorString = getString(R.string.no_space_left_on_device);
+                break;
+            default:
+                errorString = getString(R.string.generic_error);
+                break;
+        }
+
+        Toast.makeText(getActivity(), errorString, Toast.LENGTH_LONG).show();
+    }
+
+    protected void initPresenter(T presenter) {
+    }
+
+    protected void replaceFragmentWithSlide(Fragment fragment, @IdRes int content) {
+        getFragmentManager()
+                .beginTransaction()
+                .setCustomAnimations(R.anim.slide_in_right,
+                        R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
+                .replace(content, fragment, RingAccountCreationFragment.TAG)
+                .addToBackStack(RingAccountCreationFragment.TAG)
+                .commit();
+    }
+
+    protected void replaceFragment(Fragment fragment, @IdRes int content) {
+        getFragmentManager()
+                .beginTransaction()
+                .replace(content, fragment, RingAccountCreationFragment.TAG)
+                .addToBackStack(RingAccountCreationFragment.TAG)
+                .commit();
+    }
+}
diff --git a/ring-android/app/src/main/java/cx/ring/navigation/AccountAdapter.java b/ring-android/app/src/main/java/cx/ring/navigation/AccountAdapter.java
index a52063d..2918164 100644
--- a/ring-android/app/src/main/java/cx/ring/navigation/AccountAdapter.java
+++ b/ring-android/app/src/main/java/cx/ring/navigation/AccountAdapter.java
@@ -22,8 +22,8 @@
 import android.content.Context;
 import android.graphics.Color;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
diff --git a/ring-android/app/src/main/java/cx/ring/navigation/NavigationAdapter.java b/ring-android/app/src/main/java/cx/ring/navigation/NavigationAdapter.java
index 5018f60..9d4b5ca 100644
--- a/ring-android/app/src/main/java/cx/ring/navigation/NavigationAdapter.java
+++ b/ring-android/app/src/main/java/cx/ring/navigation/NavigationAdapter.java
@@ -20,9 +20,9 @@
 
 import android.graphics.Color;
 import android.graphics.drawable.Drawable;
-import android.support.v4.graphics.drawable.DrawableCompat;
-import android.support.v7.widget.AppCompatImageView;
-import android.support.v7.widget.RecyclerView;
+import androidx.core.graphics.drawable.DrawableCompat;
+import androidx.appcompat.widget.AppCompatImageView;
+import androidx.recyclerview.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
diff --git a/ring-android/app/src/main/java/cx/ring/navigation/RingNavigationFragment.java b/ring-android/app/src/main/java/cx/ring/navigation/RingNavigationFragment.java
index 52c2985..1c7e604 100644
--- a/ring-android/app/src/main/java/cx/ring/navigation/RingNavigationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/navigation/RingNavigationFragment.java
@@ -27,11 +27,11 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.MediaStore;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.res.ResourcesCompat;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.res.ResourcesCompat;
+import androidx.appcompat.app.AlertDialog;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
diff --git a/ring-android/app/src/main/java/cx/ring/service/DRingService.java b/ring-android/app/src/main/java/cx/ring/service/DRingService.java
index d6fbf50..7a55f4e 100644
--- a/ring-android/app/src/main/java/cx/ring/service/DRingService.java
+++ b/ring-android/app/src/main/java/cx/ring/service/DRingService.java
@@ -38,9 +38,9 @@
 import android.os.PowerManager;
 import android.os.RemoteException;
 import android.provider.ContactsContract;
-import android.support.annotation.NonNull;
-import android.support.v4.app.RemoteInput;
-import android.support.v4.content.WakefulBroadcastReceiver;
+import androidx.annotation.NonNull;
+import androidx.core.app.RemoteInput;
+import androidx.legacy.content.WakefulBroadcastReceiver;
 import android.text.TextUtils;
 import android.util.Log;
 
diff --git a/ring-android/app/src/main/java/cx/ring/services/ContactServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/ContactServiceImpl.java
index bf1db0f..3dfa41e 100644
--- a/ring-android/app/src/main/java/cx/ring/services/ContactServiceImpl.java
+++ b/ring-android/app/src/main/java/cx/ring/services/ContactServiceImpl.java
@@ -24,7 +24,7 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.provider.ContactsContract;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 import android.util.Log;
 import android.util.LongSparseArray;
 
diff --git a/ring-android/app/src/main/java/cx/ring/services/DeviceRuntimeServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/DeviceRuntimeServiceImpl.java
index bec847a..9af903a 100644
--- a/ring-android/app/src/main/java/cx/ring/services/DeviceRuntimeServiceImpl.java
+++ b/ring-android/app/src/main/java/cx/ring/services/DeviceRuntimeServiceImpl.java
@@ -27,7 +27,7 @@
 import android.net.NetworkInfo;
 import android.os.Build;
 import android.provider.ContactsContract;
-import android.support.v4.content.ContextCompat;
+import androidx.core.content.ContextCompat;
 
 import java.io.File;
 import java.util.concurrent.ScheduledExecutorService;
diff --git a/ring-android/app/src/main/java/cx/ring/services/HardwareServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/HardwareServiceImpl.java
index 443675f..5617168 100644
--- a/ring-android/app/src/main/java/cx/ring/services/HardwareServiceImpl.java
+++ b/ring-android/app/src/main/java/cx/ring/services/HardwareServiceImpl.java
@@ -34,7 +34,7 @@
 import android.media.AudioManager;
 import android.media.MediaRecorder;
 import android.os.Build;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
 import android.text.TextUtils;
 import android.util.Size;
 import android.view.Surface;
diff --git a/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
index c48023c..d0149f4 100644
--- a/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
+++ b/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
@@ -29,31 +29,25 @@
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
 import android.media.AudioAttributes;
 import android.media.RingtoneManager;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.annotation.RequiresApi;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationManagerCompat;
-import android.support.v4.app.RemoteInput;
-import android.support.v4.content.res.ResourcesCompat;
-import android.text.Html;
-import android.text.Spanned;
-import android.text.format.DateUtils;
+import androidx.annotation.RequiresApi;
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
+import androidx.core.app.RemoteInput;
+import androidx.core.content.res.ResourcesCompat;
+
 import android.util.SparseArray;
 
 import com.bumptech.glide.Glide;
 
 import java.io.File;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
 import java.util.Random;
 import java.util.Set;
 import java.util.TreeMap;
-import java.util.concurrent.ExecutionException;
 
 import javax.inject.Inject;
 
@@ -72,11 +66,9 @@
 import cx.ring.model.TextMessage;
 import cx.ring.model.Uri;
 import cx.ring.service.DRingService;
-import cx.ring.utils.BitmapUtils;
 import cx.ring.utils.FileUtils;
 import cx.ring.utils.Log;
 import cx.ring.utils.ResourceMapper;
-import ezvcard.property.Photo;
 import io.reactivex.disposables.CompositeDisposable;
 
 public class NotificationServiceImpl extends NotificationService {
diff --git a/ring-android/app/src/main/java/cx/ring/services/RingChooserTargetService.java b/ring-android/app/src/main/java/cx/ring/services/RingChooserTargetService.java
index 9c73b42..50f5d11 100644
--- a/ring-android/app/src/main/java/cx/ring/services/RingChooserTargetService.java
+++ b/ring-android/app/src/main/java/cx/ring/services/RingChooserTargetService.java
@@ -21,16 +21,15 @@
 import android.content.ComponentName;
 import android.content.IntentFilter;
 import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.os.Build;
 import android.os.Bundle;
 import android.service.chooser.ChooserTarget;
 import android.service.chooser.ChooserTargetService;
-import android.support.annotation.RequiresApi;
 import android.util.Log;
 
+import androidx.annotation.RequiresApi;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.Future;
diff --git a/ring-android/app/src/main/java/cx/ring/services/SharedPreferencesServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/SharedPreferencesServiceImpl.java
index 5d7682a..409e843 100644
--- a/ring-android/app/src/main/java/cx/ring/services/SharedPreferencesServiceImpl.java
+++ b/ring-android/app/src/main/java/cx/ring/services/SharedPreferencesServiceImpl.java
@@ -22,7 +22,7 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 import android.text.TextUtils;
 
 import java.util.HashMap;
diff --git a/ring-android/app/src/main/java/cx/ring/settings/SettingsFragment.java b/ring-android/app/src/main/java/cx/ring/settings/SettingsFragment.java
index ad95f34..d06ce57 100644
--- a/ring-android/app/src/main/java/cx/ring/settings/SettingsFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/settings/SettingsFragment.java
@@ -24,10 +24,10 @@
 import android.content.pm.PackageManager;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.design.widget.Snackbar;
-import android.support.v4.content.ContextCompat;
-import android.support.v7.app.AlertDialog;
+import androidx.annotation.NonNull;
+import com.google.android.material.snackbar.Snackbar;
+import androidx.core.content.ContextCompat;
+import androidx.appcompat.app.AlertDialog;
 import android.text.TextUtils;
 import android.view.Menu;
 import android.view.MenuInflater;
diff --git a/ring-android/app/src/main/java/cx/ring/share/ShareFragment.java b/ring-android/app/src/main/java/cx/ring/share/ShareFragment.java
index 6867921..5e581c6 100644
--- a/ring-android/app/src/main/java/cx/ring/share/ShareFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/share/ShareFragment.java
@@ -22,7 +22,7 @@
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.os.Bundle;
-import android.support.v7.widget.AppCompatButton;
+import androidx.appcompat.widget.AppCompatButton;
 import android.text.TextUtils;
 import android.view.Menu;
 import android.view.MenuInflater;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/about/AboutDetailsFragment.java b/ring-android/app/src/main/java/cx/ring/tv/about/AboutDetailsFragment.java
index 9d454d9..a8c23a6 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/about/AboutDetailsFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/about/AboutDetailsFragment.java
@@ -20,15 +20,15 @@
 import android.content.res.Resources;
 import android.graphics.BitmapFactory;
 import android.os.Bundle;
-import android.support.v17.leanback.app.DetailsFragment;
-import android.support.v17.leanback.app.DetailsFragmentBackgroundController;
-import android.support.v17.leanback.widget.ArrayObjectAdapter;
-import android.support.v17.leanback.widget.ClassPresenterSelector;
-import android.support.v17.leanback.widget.DetailsOverviewRow;
-import android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter;
-import android.support.v17.leanback.widget.ListRow;
-import android.support.v17.leanback.widget.ListRowPresenter;
-import android.support.v17.leanback.widget.RowPresenter;
+import androidx.leanback.app.DetailsFragment;
+import androidx.leanback.app.DetailsFragmentBackgroundController;
+import androidx.leanback.widget.ArrayObjectAdapter;
+import androidx.leanback.widget.ClassPresenterSelector;
+import androidx.leanback.widget.DetailsOverviewRow;
+import androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter;
+import androidx.leanback.widget.ListRow;
+import androidx.leanback.widget.ListRowPresenter;
+import androidx.leanback.widget.RowPresenter;
 import android.view.View;
 import android.view.ViewGroup;
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/about/AboutDetailsPresenter.java b/ring-android/app/src/main/java/cx/ring/tv/about/AboutDetailsPresenter.java
index a72f2a3..bfaa93a 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/about/AboutDetailsPresenter.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/about/AboutDetailsPresenter.java
@@ -18,7 +18,7 @@
 package cx.ring.tv.about;
 
 import android.content.Context;
-import android.support.v17.leanback.widget.Presenter;
+import androidx.leanback.widget.Presenter;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/RingGuidedStepFragment.java b/ring-android/app/src/main/java/cx/ring/tv/account/RingGuidedStepFragment.java
index 2763dd5..ba7fd4a 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/RingGuidedStepFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/RingGuidedStepFragment.java
@@ -20,8 +20,8 @@
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.support.v17.leanback.app.GuidedStepSupportFragment;
-import android.support.v17.leanback.widget.GuidedAction;
+import androidx.leanback.app.GuidedStepSupportFragment;
+import androidx.leanback.widget.GuidedAction;
 import android.text.InputType;
 import android.view.View;
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/RingPreferenceFragment.java b/ring-android/app/src/main/java/cx/ring/tv/account/RingPreferenceFragment.java
index cfb8f9e..0c077f1 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/RingPreferenceFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/RingPreferenceFragment.java
@@ -20,7 +20,7 @@
 package cx.ring.tv.account;
 
 import android.os.Bundle;
-import android.support.v17.preference.LeanbackPreferenceFragment;
+import androidx.leanback.preference.LeanbackPreferenceFragment;
 import android.view.View;
 
 import javax.inject.Inject;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/RingSettingsFragment.java b/ring-android/app/src/main/java/cx/ring/tv/account/RingSettingsFragment.java
index cba7d97..a4e0190 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/RingSettingsFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/RingSettingsFragment.java
@@ -20,7 +20,7 @@
 package cx.ring.tv.account;
 
 import android.os.Bundle;
-import android.support.v17.preference.LeanbackSettingsFragment;
+import androidx.leanback.preference.LeanbackSettingsFragment;
 import android.view.View;
 
 import javax.inject.Inject;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/TVAccountExport.java b/ring-android/app/src/main/java/cx/ring/tv/account/TVAccountExport.java
index 65bc09c..6a0fe3e 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/TVAccountExport.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/TVAccountExport.java
@@ -23,9 +23,9 @@
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v17.leanback.widget.GuidanceStylist;
-import android.support.v17.leanback.widget.GuidedAction;
+import androidx.annotation.NonNull;
+import androidx.leanback.widget.GuidanceStylist;
+import androidx.leanback.widget.GuidedAction;
 import android.text.Layout;
 import android.text.Spannable;
 import android.text.SpannableString;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/TVAccountWizard.java b/ring-android/app/src/main/java/cx/ring/tv/account/TVAccountWizard.java
index c9fac1a..5d8c98a 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/TVAccountWizard.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/TVAccountWizard.java
@@ -25,8 +25,8 @@
 import android.content.pm.ActivityInfo;
 import android.graphics.Bitmap;
 import android.os.Bundle;
-import android.support.v17.leanback.app.GuidedStepSupportFragment;
-import android.support.v7.app.AlertDialog;
+import androidx.leanback.app.GuidedStepSupportFragment;
+import androidx.appcompat.app.AlertDialog;
 import android.widget.Toast;
 
 import java.io.ByteArrayOutputStream;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/TVHomeAccountCreationFragment.java b/ring-android/app/src/main/java/cx/ring/tv/account/TVHomeAccountCreationFragment.java
index 24a97ad..6ad540f 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/TVHomeAccountCreationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/TVHomeAccountCreationFragment.java
@@ -19,10 +19,10 @@
 
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v17.leanback.app.GuidedStepSupportFragment;
-import android.support.v17.leanback.widget.GuidanceStylist;
-import android.support.v17.leanback.widget.GuidedAction;
+import androidx.annotation.NonNull;
+import androidx.leanback.app.GuidedStepSupportFragment;
+import androidx.leanback.widget.GuidanceStylist;
+import androidx.leanback.widget.GuidedAction;
 import android.view.View;
 
 import java.util.List;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/TVProfileCreationFragment.java b/ring-android/app/src/main/java/cx/ring/tv/account/TVProfileCreationFragment.java
index 6f7daf0..163df38 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/TVProfileCreationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/TVProfileCreationFragment.java
@@ -29,11 +29,11 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.MediaStore;
-import android.support.annotation.NonNull;
-import android.support.v17.leanback.app.GuidedStepSupportFragment;
-import android.support.v17.leanback.widget.GuidanceStylist;
-import android.support.v17.leanback.widget.GuidedAction;
-import android.support.v7.app.AlertDialog;
+import androidx.annotation.NonNull;
+import androidx.leanback.app.GuidedStepSupportFragment;
+import androidx.leanback.widget.GuidanceStylist;
+import androidx.leanback.widget.GuidedAction;
+import androidx.appcompat.app.AlertDialog;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/TVProfileEditingActivity.java b/ring-android/app/src/main/java/cx/ring/tv/account/TVProfileEditingActivity.java
index 8a1e40a..8b0a1e7 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/TVProfileEditingActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/TVProfileEditingActivity.java
@@ -20,7 +20,7 @@
 package cx.ring.tv.account;
 
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
+import androidx.fragment.app.FragmentActivity;
 
 import cx.ring.R;
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/TVProfileEditingFragment.java b/ring-android/app/src/main/java/cx/ring/tv/account/TVProfileEditingFragment.java
index 98c681b..70a94fb 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/TVProfileEditingFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/TVProfileEditingFragment.java
@@ -27,11 +27,11 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.MediaStore;
-import android.support.annotation.NonNull;
-import android.support.v17.leanback.app.GuidedStepSupportFragment;
-import android.support.v17.leanback.widget.GuidanceStylist;
-import android.support.v17.leanback.widget.GuidedAction;
-import android.support.v7.app.AlertDialog;
+import androidx.annotation.NonNull;
+import androidx.leanback.app.GuidedStepSupportFragment;
+import androidx.leanback.widget.GuidanceStylist;
+import androidx.leanback.widget.GuidedAction;
+import androidx.appcompat.app.AlertDialog;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/TVRingAccountCreationFragment.java b/ring-android/app/src/main/java/cx/ring/tv/account/TVRingAccountCreationFragment.java
index ec5d59f..cab33cb 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/TVRingAccountCreationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/TVRingAccountCreationFragment.java
@@ -20,9 +20,9 @@
 import android.app.Activity;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v17.leanback.widget.GuidanceStylist;
-import android.support.v17.leanback.widget.GuidedAction;
+import androidx.annotation.NonNull;
+import androidx.leanback.widget.GuidanceStylist;
+import androidx.leanback.widget.GuidedAction;
 import android.text.Editable;
 import android.text.TextWatcher;
 import android.view.View;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/TVRingLinkAccountFragment.java b/ring-android/app/src/main/java/cx/ring/tv/account/TVRingLinkAccountFragment.java
index 8df547f..48cf380 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/TVRingLinkAccountFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/TVRingLinkAccountFragment.java
@@ -19,9 +19,9 @@
 
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v17.leanback.widget.GuidanceStylist;
-import android.support.v17.leanback.widget.GuidedAction;
+import androidx.annotation.NonNull;
+import androidx.leanback.widget.GuidanceStylist;
+import androidx.leanback.widget.GuidedAction;
 import android.view.View;
 
 import java.util.List;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/TVSettingsFragment.java b/ring-android/app/src/main/java/cx/ring/tv/account/TVSettingsFragment.java
index bc8cc1e..2278422 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/TVSettingsFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/TVSettingsFragment.java
@@ -21,11 +21,11 @@
 
 import android.app.Fragment;
 import android.os.Bundle;
-import android.support.v14.preference.PreferenceFragment;
-import android.support.v14.preference.SwitchPreference;
-import android.support.v17.preference.LeanbackSettingsFragment;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
+import androidx.preference.PreferenceFragment;
+import androidx.preference.SwitchPreference;
+import androidx.leanback.preference.LeanbackSettingsFragment;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
 import android.util.Log;
 import android.view.View;
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/call/TVCallFragment.java b/ring-android/app/src/main/java/cx/ring/tv/call/TVCallFragment.java
index 2a12969..2db9b7a 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/call/TVCallFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/call/TVCallFragment.java
@@ -26,8 +26,8 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.PowerManager;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.SurfaceHolder;
@@ -41,7 +41,6 @@
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
-import com.bumptech.glide.Glide;
 import com.rodolfonavalon.shaperipplelibrary.ShapeRipple;
 import com.rodolfonavalon.shaperipplelibrary.model.Circle;
 
@@ -59,10 +58,7 @@
 import cx.ring.model.SipCall;
 import cx.ring.mvp.BaseFragment;
 import cx.ring.services.HardwareServiceImpl;
-import io.reactivex.Single;
-import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.CompositeDisposable;
-import io.reactivex.schedulers.Schedulers;
 
 public class TVCallFragment extends BaseFragment<CallPresenter> implements CallView {
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/cards/AbstractCardPresenter.java b/ring-android/app/src/main/java/cx/ring/tv/cards/AbstractCardPresenter.java
index ad3de5c..2e074cd 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/cards/AbstractCardPresenter.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/cards/AbstractCardPresenter.java
@@ -14,8 +14,8 @@
 package cx.ring.tv.cards;
 
 import android.content.Context;
-import android.support.v17.leanback.widget.BaseCardView;
-import android.support.v17.leanback.widget.Presenter;
+import androidx.leanback.widget.BaseCardView;
+import androidx.leanback.widget.Presenter;
 import android.view.ViewGroup;
 
 /**
diff --git a/ring-android/app/src/main/java/cx/ring/tv/cards/Card.java b/ring-android/app/src/main/java/cx/ring/tv/cards/Card.java
index 6d55475..772002e 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/cards/Card.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/cards/Card.java
@@ -17,7 +17,7 @@
 package cx.ring.tv.cards;
 
 import android.graphics.Color;
-import android.support.annotation.DrawableRes;
+import androidx.annotation.DrawableRes;
 
 /**
  * This is a generic example of a custom data object, containing info we might want to keep with
diff --git a/ring-android/app/src/main/java/cx/ring/tv/cards/CardListRow.java b/ring-android/app/src/main/java/cx/ring/tv/cards/CardListRow.java
index e340207..fb38884 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/cards/CardListRow.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/cards/CardListRow.java
@@ -14,13 +14,13 @@
  */
 package cx.ring.tv.cards;
 
-import android.support.v17.leanback.widget.HeaderItem;
-import android.support.v17.leanback.widget.ListRow;
-import android.support.v17.leanback.widget.ObjectAdapter;
+import androidx.leanback.widget.HeaderItem;
+import androidx.leanback.widget.ListRow;
+import androidx.leanback.widget.ObjectAdapter;
 
 /**
  * The {@link CardListRow} allows the {@link ShadowRowPresenterSelector} to access the {@link CardRow}
- * held by the row and determine whether to use a {@link android.support.v17.leanback.widget.Presenter}
+ * held by the row and determine whether to use a {@link androidx.leanback.widget.Presenter}
  * with or without a shadow.
  */
 public class CardListRow extends ListRow {
diff --git a/ring-android/app/src/main/java/cx/ring/tv/cards/CardPresenterSelector.java b/ring-android/app/src/main/java/cx/ring/tv/cards/CardPresenterSelector.java
index d60a4d6..c594f1a 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/cards/CardPresenterSelector.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/cards/CardPresenterSelector.java
@@ -15,8 +15,8 @@
 package cx.ring.tv.cards;
 
 import android.content.Context;
-import android.support.v17.leanback.widget.Presenter;
-import android.support.v17.leanback.widget.PresenterSelector;
+import androidx.leanback.widget.Presenter;
+import androidx.leanback.widget.PresenterSelector;
 
 import java.security.InvalidParameterException;
 import java.util.HashMap;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/cards/NoDimListRowPresenter.java b/ring-android/app/src/main/java/cx/ring/tv/cards/NoDimListRowPresenter.java
index 9e97093..d66701b 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/cards/NoDimListRowPresenter.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/cards/NoDimListRowPresenter.java
@@ -19,8 +19,8 @@
  */
 package cx.ring.tv.cards;
 
-import android.support.v17.leanback.widget.ListRowPresenter;
-import android.support.v17.leanback.widget.RowPresenter;
+import androidx.leanback.widget.ListRowPresenter;
+import androidx.leanback.widget.RowPresenter;
 
 public class NoDimListRowPresenter extends ListRowPresenter {
     @Override
diff --git a/ring-android/app/src/main/java/cx/ring/tv/cards/ShadowRowPresenterSelector.java b/ring-android/app/src/main/java/cx/ring/tv/cards/ShadowRowPresenterSelector.java
index 54ccfa1..e968c73 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/cards/ShadowRowPresenterSelector.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/cards/ShadowRowPresenterSelector.java
@@ -14,9 +14,9 @@
  */
 package cx.ring.tv.cards;
 
-import android.support.v17.leanback.widget.ListRowPresenter;
-import android.support.v17.leanback.widget.Presenter;
-import android.support.v17.leanback.widget.PresenterSelector;
+import androidx.leanback.widget.ListRowPresenter;
+import androidx.leanback.widget.Presenter;
+import androidx.leanback.widget.PresenterSelector;
 
 /**
  * This {@link PresenterSelector} will return a {@link ListRowPresenter} which has shadow support
diff --git a/ring-android/app/src/main/java/cx/ring/tv/cards/contacts/ContactCardPresenter.java b/ring-android/app/src/main/java/cx/ring/tv/cards/contacts/ContactCardPresenter.java
index fffcd08..82d94f3 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/cards/contacts/ContactCardPresenter.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/cards/contacts/ContactCardPresenter.java
@@ -21,13 +21,11 @@
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v17.leanback.widget.ImageCardView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.leanback.widget.ImageCardView;
 import android.view.ContextThemeWrapper;
-import android.widget.ImageView;
 
-import com.bumptech.glide.request.target.ImageViewTarget;
 import com.bumptech.glide.request.target.ViewTarget;
 import com.bumptech.glide.request.transition.Transition;
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/cards/iconcards/IconCard.java b/ring-android/app/src/main/java/cx/ring/tv/cards/iconcards/IconCard.java
index 5a70490..735cc01 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/cards/iconcards/IconCard.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/cards/iconcards/IconCard.java
@@ -19,7 +19,7 @@
  */
 package cx.ring.tv.cards.iconcards;
 
-import android.support.annotation.DrawableRes;
+import androidx.annotation.DrawableRes;
 
 import cx.ring.tv.cards.Card;
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/cards/iconcards/IconCardPresenter.java b/ring-android/app/src/main/java/cx/ring/tv/cards/iconcards/IconCardPresenter.java
index 182d06a..1dd4b06 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/cards/iconcards/IconCardPresenter.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/cards/iconcards/IconCardPresenter.java
@@ -22,8 +22,8 @@
 import android.animation.ObjectAnimator;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
-import android.support.v17.leanback.widget.ImageCardView;
-import android.support.v4.content.ContextCompat;
+import androidx.leanback.widget.ImageCardView;
+import androidx.core.content.ContextCompat;
 import android.view.ContextThemeWrapper;
 import android.widget.ImageView;
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/contactrequest/TVContactRequestActivity.java b/ring-android/app/src/main/java/cx/ring/tv/contactrequest/TVContactRequestActivity.java
index 6180331..28a619f 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/contactrequest/TVContactRequestActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/contactrequest/TVContactRequestActivity.java
@@ -20,7 +20,7 @@
 package cx.ring.tv.contactrequest;
 
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
+import androidx.fragment.app.FragmentActivity;
 
 import cx.ring.R;
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/contactrequest/TVContactRequestDetailPresenter.java b/ring-android/app/src/main/java/cx/ring/tv/contactrequest/TVContactRequestDetailPresenter.java
index 227d1bb..ea38d3f 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/contactrequest/TVContactRequestDetailPresenter.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/contactrequest/TVContactRequestDetailPresenter.java
@@ -19,7 +19,7 @@
  */
 package cx.ring.tv.contactrequest;
 
-import android.support.v17.leanback.widget.AbstractDetailsDescriptionPresenter;
+import androidx.leanback.widget.AbstractDetailsDescriptionPresenter;
 
 import cx.ring.tv.model.TVListViewModel;
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/contactrequest/TVContactRequestFragment.java b/ring-android/app/src/main/java/cx/ring/tv/contactrequest/TVContactRequestFragment.java
index f32b493..66000bf 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/contactrequest/TVContactRequestFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/contactrequest/TVContactRequestFragment.java
@@ -21,22 +21,21 @@
 package cx.ring.tv.contactrequest;
 
 import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.support.v17.leanback.app.BackgroundManager;
-import android.support.v17.leanback.widget.Action;
-import android.support.v17.leanback.widget.ArrayObjectAdapter;
-import android.support.v17.leanback.widget.BrowseFrameLayout;
-import android.support.v17.leanback.widget.ClassPresenterSelector;
-import android.support.v17.leanback.widget.DetailsOverviewLogoPresenter;
-import android.support.v17.leanback.widget.DetailsOverviewRow;
-import android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter;
-import android.support.v17.leanback.widget.FullWidthDetailsOverviewSharedElementHelper;
-import android.support.v17.leanback.widget.ListRow;
-import android.support.v17.leanback.widget.ListRowPresenter;
-import android.support.v17.leanback.widget.Presenter;
-import android.support.v17.leanback.widget.SparseArrayObjectAdapter;
-import android.support.v4.content.ContextCompat;
+import androidx.leanback.app.BackgroundManager;
+import androidx.leanback.widget.Action;
+import androidx.leanback.widget.ArrayObjectAdapter;
+import androidx.leanback.widget.BrowseFrameLayout;
+import androidx.leanback.widget.ClassPresenterSelector;
+import androidx.leanback.widget.DetailsOverviewLogoPresenter;
+import androidx.leanback.widget.DetailsOverviewRow;
+import androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter;
+import androidx.leanback.widget.FullWidthDetailsOverviewSharedElementHelper;
+import androidx.leanback.widget.ListRow;
+import androidx.leanback.widget.ListRowPresenter;
+import androidx.leanback.widget.Presenter;
+import androidx.leanback.widget.SparseArrayObjectAdapter;
+import androidx.core.content.ContextCompat;
 import android.util.DisplayMetrics;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
@@ -44,8 +43,6 @@
 import android.view.ViewGroup;
 import android.widget.ImageView;
 
-import com.bumptech.glide.Glide;
-
 import cx.ring.R;
 import cx.ring.application.RingApplication;
 import cx.ring.contacts.AvatarFactory;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/main/BaseBrowseFragment.java b/ring-android/app/src/main/java/cx/ring/tv/main/BaseBrowseFragment.java
index d732106..80719c7 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/main/BaseBrowseFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/main/BaseBrowseFragment.java
@@ -20,7 +20,7 @@
 package cx.ring.tv.main;
 
 import android.os.Bundle;
-import android.support.v17.leanback.app.BrowseSupportFragment;
+import androidx.leanback.app.BrowseSupportFragment;
 import android.view.View;
 import android.widget.Toast;
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/main/BaseDetailFragment.java b/ring-android/app/src/main/java/cx/ring/tv/main/BaseDetailFragment.java
index 9d4b929..315aa78 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/main/BaseDetailFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/main/BaseDetailFragment.java
@@ -20,7 +20,7 @@
 package cx.ring.tv.main;
 
 import android.os.Bundle;
-import android.support.v17.leanback.app.DetailsFragment;
+import androidx.leanback.app.DetailsFragment;
 import android.view.View;
 import android.widget.Toast;
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/main/HomeActivity.java b/ring-android/app/src/main/java/cx/ring/tv/main/HomeActivity.java
index 173c73b..e2e5555 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/main/HomeActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/main/HomeActivity.java
@@ -21,8 +21,8 @@
 package cx.ring.tv.main;
 
 import android.os.Bundle;
-import android.support.v17.leanback.app.GuidedStepSupportFragment;
-import android.support.v4.app.FragmentActivity;
+import androidx.leanback.app.GuidedStepSupportFragment;
+import androidx.fragment.app.FragmentActivity;
 
 import java.io.File;
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/main/MainFragment.java b/ring-android/app/src/main/java/cx/ring/tv/main/MainFragment.java
index 88f65df..c039282 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/main/MainFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/main/MainFragment.java
@@ -22,16 +22,16 @@
 import android.content.Intent;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.support.v17.leanback.app.BackgroundManager;
-import android.support.v17.leanback.app.GuidedStepSupportFragment;
-import android.support.v17.leanback.widget.ArrayObjectAdapter;
-import android.support.v17.leanback.widget.HeaderItem;
-import android.support.v17.leanback.widget.ImageCardView;
-import android.support.v17.leanback.widget.OnItemViewClickedListener;
-import android.support.v17.leanback.widget.Presenter;
-import android.support.v17.leanback.widget.Row;
-import android.support.v17.leanback.widget.RowPresenter;
-import android.support.v4.app.ActivityOptionsCompat;
+import androidx.leanback.app.BackgroundManager;
+import androidx.leanback.app.GuidedStepSupportFragment;
+import androidx.leanback.widget.ArrayObjectAdapter;
+import androidx.leanback.widget.HeaderItem;
+import androidx.leanback.widget.ImageCardView;
+import androidx.leanback.widget.OnItemViewClickedListener;
+import androidx.leanback.widget.Presenter;
+import androidx.leanback.widget.Row;
+import androidx.leanback.widget.RowPresenter;
+import androidx.core.app.ActivityOptionsCompat;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -65,7 +65,6 @@
 import cx.ring.tv.views.CustomTitleView;
 import ezvcard.VCard;
 import ezvcard.property.FormattedName;
-import ezvcard.property.Photo;
 
 public class MainFragment extends BaseBrowseFragment<MainPresenter> implements MainView {
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/main/SpinnerFragment.java b/ring-android/app/src/main/java/cx/ring/tv/main/SpinnerFragment.java
index fbd87ee..f89b380 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/main/SpinnerFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/main/SpinnerFragment.java
@@ -15,7 +15,7 @@
 
 
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/search/BaseSearchFragment.java b/ring-android/app/src/main/java/cx/ring/tv/search/BaseSearchFragment.java
index 2432b0b..bc47e3e 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/search/BaseSearchFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/search/BaseSearchFragment.java
@@ -30,7 +30,7 @@
 import cx.ring.mvp.BaseView;
 import cx.ring.mvp.RootPresenter;
 
-public class BaseSearchFragment<T extends RootPresenter> extends android.support.v17.leanback.app.SearchFragment
+public class BaseSearchFragment<T extends RootPresenter> extends androidx.leanback.app.SearchFragment
         implements BaseView {
 
     protected static final String TAG = BaseSearchFragment.class.getSimpleName();
diff --git a/ring-android/app/src/main/java/cx/ring/tv/search/RingSearchFragment.java b/ring-android/app/src/main/java/cx/ring/tv/search/RingSearchFragment.java
index 72dd1a0..4dcd1be 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/search/RingSearchFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/search/RingSearchFragment.java
@@ -21,18 +21,18 @@
 
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v17.leanback.app.SearchFragment;
-import android.support.v17.leanback.widget.ArrayObjectAdapter;
-import android.support.v17.leanback.widget.HeaderItem;
-import android.support.v17.leanback.widget.ListRow;
-import android.support.v17.leanback.widget.ListRowPresenter;
-import android.support.v17.leanback.widget.ObjectAdapter;
-import android.support.v17.leanback.widget.OnItemViewClickedListener;
-import android.support.v17.leanback.widget.Presenter;
-import android.support.v17.leanback.widget.Row;
-import android.support.v17.leanback.widget.RowPresenter;
-import android.support.v17.leanback.widget.SearchEditText;
-import android.support.v4.content.ContextCompat;
+import androidx.leanback.app.SearchFragment;
+import androidx.leanback.widget.ArrayObjectAdapter;
+import androidx.leanback.widget.HeaderItem;
+import androidx.leanback.widget.ListRow;
+import androidx.leanback.widget.ListRowPresenter;
+import androidx.leanback.widget.ObjectAdapter;
+import androidx.leanback.widget.OnItemViewClickedListener;
+import androidx.leanback.widget.Presenter;
+import androidx.leanback.widget.Row;
+import androidx.leanback.widget.RowPresenter;
+import androidx.leanback.widget.SearchEditText;
+import androidx.core.content.ContextCompat;
 import android.view.View;
 
 import butterknife.BindView;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/views/CustomTitleView.java b/ring-android/app/src/main/java/cx/ring/tv/views/CustomTitleView.java
index 66f898b..15ceca0 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/views/CustomTitleView.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/views/CustomTitleView.java
@@ -15,7 +15,7 @@
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
-import android.support.v17.leanback.widget.TitleViewAdapter;
+import androidx.leanback.widget.TitleViewAdapter;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -30,7 +30,7 @@
 import cx.ring.contacts.AvatarFactory;
 
 /**
- * Custom title view to be used in {@link android.support.v17.leanback.app.BrowseFragment}.
+ * Custom title view to be used in {@link androidx.leanback.app.BrowseFragment}.
  */
 public class CustomTitleView extends RelativeLayout implements TitleViewAdapter.Provider {
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/views/DetailsOverviewRowTarget.java b/ring-android/app/src/main/java/cx/ring/tv/views/DetailsOverviewRowTarget.java
index 63a4758..6fb404b 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/views/DetailsOverviewRowTarget.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/views/DetailsOverviewRowTarget.java
@@ -21,14 +21,12 @@
 package cx.ring.tv.views;
 
 import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v17.leanback.widget.DetailsOverviewRow;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.leanback.widget.DetailsOverviewRow;
 import android.util.Log;
 
-import com.bumptech.glide.request.target.BaseTarget;
 import com.bumptech.glide.request.target.SimpleTarget;
-import com.bumptech.glide.request.target.SizeReadyCallback;
 import com.bumptech.glide.request.transition.Transition;
 
 public class DetailsOverviewRowTarget extends SimpleTarget<Drawable> {
diff --git a/ring-android/app/src/main/java/cx/ring/utils/ActionHelper.java b/ring-android/app/src/main/java/cx/ring/utils/ActionHelper.java
index 6f0f67f..135e0d1 100644
--- a/ring-android/app/src/main/java/cx/ring/utils/ActionHelper.java
+++ b/ring-android/app/src/main/java/cx/ring/utils/ActionHelper.java
@@ -24,7 +24,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.provider.ContactsContract;
-import android.support.v7.app.AlertDialog;
+import androidx.appcompat.app.AlertDialog;
 
 import java.util.ArrayList;
 
diff --git a/ring-android/app/src/main/java/cx/ring/utils/BitmapUtils.java b/ring-android/app/src/main/java/cx/ring/utils/BitmapUtils.java
index 22388e1..b8af6c9 100644
--- a/ring-android/app/src/main/java/cx/ring/utils/BitmapUtils.java
+++ b/ring-android/app/src/main/java/cx/ring/utils/BitmapUtils.java
@@ -29,8 +29,8 @@
 import android.graphics.Shader;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 
 import java.nio.ByteBuffer;
 
diff --git a/ring-android/app/src/main/java/cx/ring/utils/CircleTransform.java b/ring-android/app/src/main/java/cx/ring/utils/CircleTransform.java
index 3a7f139..04288b7 100644
--- a/ring-android/app/src/main/java/cx/ring/utils/CircleTransform.java
+++ b/ring-android/app/src/main/java/cx/ring/utils/CircleTransform.java
@@ -22,14 +22,12 @@
 import android.graphics.Bitmap;
 import android.graphics.BitmapShader;
 import android.graphics.Canvas;
-import android.graphics.Color;
 import android.graphics.Paint;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
 import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
 
-import java.io.UnsupportedEncodingException;
 import java.security.MessageDigest;
 
 public class CircleTransform extends BitmapTransformation {
diff --git a/ring-android/app/src/main/java/cx/ring/utils/RegisteredNameTextWatcher.java b/ring-android/app/src/main/java/cx/ring/utils/RegisteredNameTextWatcher.java
index 79ebd3d..e989171 100644
--- a/ring-android/app/src/main/java/cx/ring/utils/RegisteredNameTextWatcher.java
+++ b/ring-android/app/src/main/java/cx/ring/utils/RegisteredNameTextWatcher.java
@@ -19,7 +19,7 @@
 package cx.ring.utils;
 
 import android.content.Context;
-import android.support.design.widget.TextInputLayout;
+import com.google.android.material.textfield.TextInputLayout;
 import android.text.Editable;
 import android.text.TextUtils;
 import android.text.TextWatcher;
diff --git a/ring-android/app/src/main/java/cx/ring/utils/RingGlideModule.java b/ring-android/app/src/main/java/cx/ring/utils/RingGlideModule.java
index 1a6a9ce..42a7700 100644
--- a/ring-android/app/src/main/java/cx/ring/utils/RingGlideModule.java
+++ b/ring-android/app/src/main/java/cx/ring/utils/RingGlideModule.java
@@ -1,7 +1,7 @@
 package cx.ring.utils;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import com.bumptech.glide.GlideBuilder;
 import com.bumptech.glide.annotation.GlideModule;
diff --git a/ring-android/app/src/main/java/cx/ring/viewholders/SmartListViewHolder.java b/ring-android/app/src/main/java/cx/ring/viewholders/SmartListViewHolder.java
index 2557308..88ab782 100644
--- a/ring-android/app/src/main/java/cx/ring/viewholders/SmartListViewHolder.java
+++ b/ring-android/app/src/main/java/cx/ring/viewholders/SmartListViewHolder.java
@@ -20,7 +20,7 @@
 package cx.ring.viewholders;
 
 import android.graphics.drawable.Drawable;
-import android.support.v7.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
diff --git a/ring-android/app/src/main/java/cx/ring/views/AvatarDrawable.java b/ring-android/app/src/main/java/cx/ring/views/AvatarDrawable.java
index 09b4c9f..4a007c6 100644
--- a/ring-android/app/src/main/java/cx/ring/views/AvatarDrawable.java
+++ b/ring-android/app/src/main/java/cx/ring/views/AvatarDrawable.java
@@ -33,6 +33,9 @@
 import android.graphics.RectF;
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
+
+import androidx.annotation.NonNull;
+import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
 import cx.ring.R;
 import cx.ring.model.Account;
 import cx.ring.model.CallContact;
@@ -41,8 +44,6 @@
 import cx.ring.utils.VCardUtils;
 
 import android.media.ThumbnailUtils;
-import android.support.annotation.NonNull;
-import android.support.graphics.drawable.VectorDrawableCompat;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.TypedValue;
diff --git a/ring-android/app/src/main/java/cx/ring/views/CheckableImageButton.java b/ring-android/app/src/main/java/cx/ring/views/CheckableImageButton.java
index 8610f77..3a110b6 100644
--- a/ring-android/app/src/main/java/cx/ring/views/CheckableImageButton.java
+++ b/ring-android/app/src/main/java/cx/ring/views/CheckableImageButton.java
@@ -2,7 +2,7 @@
 
 import android.content.Context;
 import android.content.res.TypedArray;
-import android.support.v7.widget.AppCompatImageButton;
+import androidx.appcompat.widget.AppCompatImageButton;
 import android.util.AttributeSet;
 import android.widget.Checkable;
 
diff --git a/ring-android/app/src/main/java/cx/ring/views/ConversationViewHolder.java b/ring-android/app/src/main/java/cx/ring/views/ConversationViewHolder.java
index 1e2f0b3..300b651 100644
--- a/ring-android/app/src/main/java/cx/ring/views/ConversationViewHolder.java
+++ b/ring-android/app/src/main/java/cx/ring/views/ConversationViewHolder.java
@@ -20,7 +20,7 @@
  */
 package cx.ring.views;
 
-import android.support.v7.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
diff --git a/ring-android/app/src/main/java/cx/ring/views/CredentialPreferenceDialog.java b/ring-android/app/src/main/java/cx/ring/views/CredentialPreferenceDialog.java
index ab78101..5968b41 100644
--- a/ring-android/app/src/main/java/cx/ring/views/CredentialPreferenceDialog.java
+++ b/ring-android/app/src/main/java/cx/ring/views/CredentialPreferenceDialog.java
@@ -20,9 +20,9 @@
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v14.preference.PreferenceDialogFragment;
-import android.support.v7.app.AlertDialog;
+import androidx.annotation.NonNull;
+import androidx.preference.PreferenceDialogFragment;
+import androidx.appcompat.app.AlertDialog;
 import android.util.Pair;
 import android.view.LayoutInflater;
 import android.view.View;
diff --git a/ring-android/app/src/main/java/cx/ring/views/CredentialsPreference.java b/ring-android/app/src/main/java/cx/ring/views/CredentialsPreference.java
index 9ca742b..a100c6c 100644
--- a/ring-android/app/src/main/java/cx/ring/views/CredentialsPreference.java
+++ b/ring-android/app/src/main/java/cx/ring/views/CredentialsPreference.java
@@ -22,7 +22,7 @@
 import android.content.Context;
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.support.v7.preference.DialogPreference;
+import androidx.preference.DialogPreference;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 
@@ -41,7 +41,7 @@
     }
 
     public CredentialsPreference(Context context, AttributeSet attrs) {
-        this(context, attrs, android.support.v7.preference.R.attr.dialogPreferenceStyle);
+        this(context, attrs, androidx.preference.R.attr.dialogPreferenceStyle);
     }
 
     public CredentialsPreference(Context context) {
diff --git a/ring-android/app/src/main/java/cx/ring/views/EditTextIntegerPreference.java b/ring-android/app/src/main/java/cx/ring/views/EditTextIntegerPreference.java
index 3170d48..0be96aa 100644
--- a/ring-android/app/src/main/java/cx/ring/views/EditTextIntegerPreference.java
+++ b/ring-android/app/src/main/java/cx/ring/views/EditTextIntegerPreference.java
@@ -19,7 +19,7 @@
 package cx.ring.views;
 
 import android.content.Context;
-import android.support.v7.preference.EditTextPreference;
+import androidx.preference.EditTextPreference;
 import android.util.AttributeSet;
 
 public class EditTextIntegerPreference extends EditTextPreference {
diff --git a/ring-android/app/src/main/java/cx/ring/views/EditTextPreferenceDialog.java b/ring-android/app/src/main/java/cx/ring/views/EditTextPreferenceDialog.java
index 76f9d1b..ad8ea4e 100644
--- a/ring-android/app/src/main/java/cx/ring/views/EditTextPreferenceDialog.java
+++ b/ring-android/app/src/main/java/cx/ring/views/EditTextPreferenceDialog.java
@@ -18,7 +18,7 @@
 package cx.ring.views;
 
 import android.os.Bundle;
-import android.support.v14.preference.EditTextPreferenceDialogFragment;
+import androidx.preference.EditTextPreferenceDialogFragment;
 import android.view.View;
 import android.widget.EditText;
 
diff --git a/ring-android/app/src/main/java/cx/ring/views/MessageEditText.java b/ring-android/app/src/main/java/cx/ring/views/MessageEditText.java
index dbb555c..a295f92 100644
--- a/ring-android/app/src/main/java/cx/ring/views/MessageEditText.java
+++ b/ring-android/app/src/main/java/cx/ring/views/MessageEditText.java
@@ -20,10 +20,10 @@
 
 import android.content.Context;
 import android.os.Build;
-import android.support.v13.view.inputmethod.EditorInfoCompat;
-import android.support.v13.view.inputmethod.InputConnectionCompat;
-import android.support.v13.view.inputmethod.InputContentInfoCompat;
-import android.support.v7.widget.AppCompatEditText;
+import androidx.core.view.inputmethod.EditorInfoCompat;
+import androidx.core.view.inputmethod.InputConnectionCompat;
+import androidx.core.view.inputmethod.InputContentInfoCompat;
+import androidx.appcompat.widget.AppCompatEditText;
 import android.util.AttributeSet;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputConnection;
diff --git a/ring-android/app/src/main/java/cx/ring/views/PasswordPreference.java b/ring-android/app/src/main/java/cx/ring/views/PasswordPreference.java
index ef34fb8..fdd6e26 100644
--- a/ring-android/app/src/main/java/cx/ring/views/PasswordPreference.java
+++ b/ring-android/app/src/main/java/cx/ring/views/PasswordPreference.java
@@ -20,7 +20,7 @@
 package cx.ring.views;
 
 import android.content.Context;
-import android.support.v7.preference.EditTextPreference;
+import androidx.preference.EditTextPreference;
 import android.util.AttributeSet;
 
 public class PasswordPreference extends EditTextPreference {
diff --git a/ring-android/app/src/main/res/anim/slide_in_left.xml b/ring-android/app/src/main/res/anim/slide_in_left.xml
new file mode 100644
index 0000000..eddce2b
--- /dev/null
+++ b/ring-android/app/src/main/res/anim/slide_in_left.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:fromXDelta="-100%"
+        android:toXDelta="0"
+        android:interpolator="@android:anim/decelerate_interpolator"
+        android:duration="@integer/animDefaultDur"/>
+
+</set>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/anim/slide_in_right.xml b/ring-android/app/src/main/res/anim/slide_in_right.xml
new file mode 100644
index 0000000..8c4ffcc
--- /dev/null
+++ b/ring-android/app/src/main/res/anim/slide_in_right.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:fromXDelta="100%"
+        android:toXDelta="0"
+        android:interpolator="@android:anim/decelerate_interpolator"
+        android:duration="@integer/animDefaultDur"/>
+
+</set>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/anim/slide_out_left.xml b/ring-android/app/src/main/res/anim/slide_out_left.xml
new file mode 100644
index 0000000..49d32f2
--- /dev/null
+++ b/ring-android/app/src/main/res/anim/slide_out_left.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:fromXDelta="0"
+        android:toXDelta="-100%"
+        android:interpolator="@android:anim/decelerate_interpolator"
+        android:duration="@integer/animDefaultDur"/>
+
+</set>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/anim/slide_out_right.xml b/ring-android/app/src/main/res/anim/slide_out_right.xml
new file mode 100644
index 0000000..828e9bf
--- /dev/null
+++ b/ring-android/app/src/main/res/anim/slide_out_right.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:fromXDelta="0"
+        android:toXDelta="100%"
+        android:interpolator="@android:anim/decelerate_interpolator"
+        android:duration="@integer/animDefaultDur"/>
+
+</set>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/animator/slide_in_left.xml b/ring-android/app/src/main/res/animator/slide_in_left.xml
deleted file mode 100644
index f665fda..0000000
--- a/ring-android/app/src/main/res/animator/slide_in_left.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
-        android:duration="300"
-        android:propertyName="x"
-        android:valueFrom="1000"
-        android:valueTo="0"
-        android:valueType="floatType" />
-</set>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/animator/slide_in_right.xml b/ring-android/app/src/main/res/animator/slide_in_right.xml
deleted file mode 100644
index fd63b42..0000000
--- a/ring-android/app/src/main/res/animator/slide_in_right.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
-        android:duration="300"
-        android:propertyName="x"
-        android:valueFrom="-1000"
-        android:valueTo="0"
-        android:valueType="floatType" />
-
-</set>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/animator/slide_out_left.xml b/ring-android/app/src/main/res/animator/slide_out_left.xml
deleted file mode 100644
index 54c3896..0000000
--- a/ring-android/app/src/main/res/animator/slide_out_left.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
-        android:duration="300"
-        android:propertyName="x"
-        android:valueFrom="0"
-        android:valueTo="1000"
-        android:valueType="floatType" />
-
-</set>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/animator/slide_out_right.xml b/ring-android/app/src/main/res/animator/slide_out_right.xml
deleted file mode 100644
index bae4dfd..0000000
--- a/ring-android/app/src/main/res/animator/slide_out_right.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
-        android:duration="300"
-        android:propertyName="x"
-        android:valueFrom="0"
-        android:valueTo="-1000"
-        android:valueType="floatType" />
-
-</set>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout-land/frag_acc_profile_create.xml b/ring-android/app/src/main/res/layout-land/frag_acc_profile_create.xml
index 172e8cc..ddbad72 100644
--- a/ring-android/app/src/main/res/layout-land/frag_acc_profile_create.xml
+++ b/ring-android/app/src/main/res/layout-land/frag_acc_profile_create.xml
@@ -67,7 +67,7 @@
                         android:scaleType="fitCenter"
                         tools:src="@drawable/ic_contact_picture_fallback" />
 
-                    <android.support.design.widget.FloatingActionButton
+                    <com.google.android.material.floatingactionbutton.FloatingActionButton
                         android:id="@+id/camera"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
@@ -86,7 +86,7 @@
                         android:layout_alignBottom="@+id/profile_photo"
                         android:layout_centerHorizontal="true" />
 
-                    <android.support.design.widget.FloatingActionButton
+                    <com.google.android.material.floatingactionbutton.FloatingActionButton
                         android:id="@+id/gallery"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout-land/frag_share.xml b/ring-android/app/src/main/res/layout-land/frag_share.xml
index 1b35dc7..f4cba71 100644
--- a/ring-android/app/src/main/res/layout-land/frag_share.xml
+++ b/ring-android/app/src/main/res/layout-land/frag_share.xml
@@ -51,7 +51,7 @@
         android:layout_alignParentBottom="true"
         android:background="@color/color_primary_dark">
 
-        <android.support.v7.widget.AppCompatButton
+        <androidx.appcompat.widget.AppCompatButton
             android:id="@+id/share_button"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout-w720dp-land/activity_home.xml b/ring-android/app/src/main/res/layout-w720dp-land/activity_home.xml
index ee52dbb..54da0f9 100644
--- a/ring-android/app/src/main/res/layout-w720dp-land/activity_home.xml
+++ b/ring-android/app/src/main/res/layout-w720dp-land/activity_home.xml
@@ -4,14 +4,14 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <android.support.v4.widget.DrawerLayout
+    <androidx.drawerlayout.widget.DrawerLayout
         android:id="@+id/drawer_layout"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:saveEnabled="false"
         tools:context=".client.HomeActivity">
 
-        <android.support.design.widget.NavigationView
+        <com.google.android.material.navigation.NavigationView
             android:id="@+id/left_drawer"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
@@ -26,9 +26,9 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content" />
 
-        </android.support.design.widget.NavigationView>
+        </com.google.android.material.navigation.NavigationView>
 
-    </android.support.v4.widget.DrawerLayout>
+    </androidx.drawerlayout.widget.DrawerLayout>
 
     <RelativeLayout
         android:id="@+id/content_frame"
@@ -37,7 +37,7 @@
         android:paddingEnd="0dp"
         android:paddingStart="@dimen/drawer_content_padding">
 
-        <android.support.v7.widget.Toolbar
+        <androidx.appcompat.widget.Toolbar
             android:id="@+id/main_toolbar"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -84,7 +84,7 @@
             android:layout_below="@+id/toolbar_spacer"
             android:orientation="vertical" />
 
-        <android.support.design.widget.FloatingActionButton
+        <com.google.android.material.floatingactionbutton.FloatingActionButton
             android:id="@+id/action_button"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout-w720dp-land/frag_pending_contact_requests.xml b/ring-android/app/src/main/res/layout-w720dp-land/frag_pending_contact_requests.xml
index 13550b1..16c0a7f 100644
--- a/ring-android/app/src/main/res/layout-w720dp-land/frag_pending_contact_requests.xml
+++ b/ring-android/app/src/main/res/layout-w720dp-land/frag_pending_contact_requests.xml
@@ -25,7 +25,7 @@
             android:textColor="@color/text_color_primary"
             android:visibility="gone" />
 
-        <android.support.v7.widget.RecyclerView
+        <androidx.recyclerview.widget.RecyclerView
             android:id="@+id/requests_list"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
diff --git a/ring-android/app/src/main/res/layout-w720dp-land/frag_smartlist.xml b/ring-android/app/src/main/res/layout-w720dp-land/frag_smartlist.xml
index f1e251d..9481fcc 100644
--- a/ring-android/app/src/main/res/layout-w720dp-land/frag_smartlist.xml
+++ b/ring-android/app/src/main/res/layout-w720dp-land/frag_smartlist.xml
@@ -34,7 +34,7 @@
         android:layout_height="match_parent"
         android:layout_below="@+id/newcontact_element">
 
-        <android.support.v7.widget.RecyclerView
+        <androidx.recyclerview.widget.RecyclerView
             android:id="@+id/confs_list"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
@@ -61,7 +61,7 @@
             android:layout_height="wrap_content"
             android:layout_gravity="center" />
 
-        <android.support.design.widget.FloatingActionButton
+        <com.google.android.material.floatingactionbutton.FloatingActionButton
             android:id="@+id/newconv_fab"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout-w720dp-land/tv_frag_call.xml b/ring-android/app/src/main/res/layout-w720dp-land/tv_frag_call.xml
index a39edc1..53662a6 100644
--- a/ring-android/app/src/main/res/layout-w720dp-land/tv_frag_call.xml
+++ b/ring-android/app/src/main/res/layout-w720dp-land/tv_frag_call.xml
@@ -127,7 +127,7 @@
                 android:layout_margin="12dp"
                 android:orientation="horizontal">
 
-                <android.support.design.widget.FloatingActionButton
+                <com.google.android.material.floatingactionbutton.FloatingActionButton
                     android:id="@+id/call_refuse_btn"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -140,7 +140,7 @@
                     app:srcCompat="@drawable/ic_call_end_white"
                     app:useCompatPadding="true" />
 
-                <android.support.design.widget.FloatingActionButton
+                <com.google.android.material.floatingactionbutton.FloatingActionButton
                     android:id="@+id/call_accept_btn"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -157,7 +157,7 @@
         </LinearLayout>
     </LinearLayout>
 
-    <android.support.design.widget.FloatingActionButton
+    <com.google.android.material.floatingactionbutton.FloatingActionButton
         android:id="@+id/call_hangup_btn"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout/activity_account_settings.xml b/ring-android/app/src/main/res/layout/activity_account_settings.xml
index d2042d2..f410290 100644
--- a/ring-android/app/src/main/res/layout/activity_account_settings.xml
+++ b/ring-android/app/src/main/res/layout/activity_account_settings.xml
@@ -13,26 +13,24 @@
         android:elevation="4dp"
         android:orientation="vertical">
 
-        <android.support.v7.widget.Toolbar
+        <androidx.appcompat.widget.Toolbar
             android:id="@+id/main_toolbar"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:background="@color/color_primary_light"
             android:minHeight="?attr/actionBarSize"
-            android:popupTheme="@style/Theme.AppCompat.Light.NoActionBar"
-            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
+            android:popupTheme="@style/Theme.MaterialComponents.Light.NoActionBar"
+            android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"
             android:titleTextAppearance="@style/ToolbarTitle"
             app:contentInsetStart="72dp"
             app:titleTextAppearance="@style/ToolbarTitle" />
 
-        <android.support.design.widget.TabLayout
+        <com.google.android.material.tabs.TabLayout
             android:id="@+id/sliding_tabs"
+            style="@style/Widget.MaterialComponents.TabLayout.Colored"
+            android:background="@color/color_primary_light"
             android:layout_width="match_parent"
-            android:layout_height="48dp"
-            android:textColor="@color/text_color_primary_dark"
-            app:tabIndicatorColor="@color/text_color_primary_dark"
-            app:tabSelectedTextColor="@color/text_color_primary_dark"
-            app:tabTextColor="@color/text_color_primary_dark" />
+            android:layout_height="48dp" />
 
     </LinearLayout>
 
@@ -46,7 +44,7 @@
             android:layout_centerInParent="true"
             app:bounded_width="600dp">
 
-            <android.support.v4.view.ViewPager
+            <androidx.viewpager.widget.ViewPager
                 android:id="@+id/pager"
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
diff --git a/ring-android/app/src/main/res/layout/activity_conversation.xml b/ring-android/app/src/main/res/layout/activity_conversation.xml
index be163ed..7bbbb84 100644
--- a/ring-android/app/src/main/res/layout/activity_conversation.xml
+++ b/ring-android/app/src/main/res/layout/activity_conversation.xml
@@ -7,7 +7,7 @@
     android:background="#ebeff0"
     tools:context=".client.ConversationActivity">
 
-    <android.support.v7.widget.Toolbar
+    <androidx.appcompat.widget.Toolbar
         android:id="@+id/main_toolbar"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -16,8 +16,8 @@
         android:background="@color/color_primary_light"
         android:elevation="4dp"
         android:minHeight="?attr/actionBarSize"
-        android:popupTheme="@style/Theme.AppCompat.Light.NoActionBar"
-        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
+        android:popupTheme="@style/Theme.MaterialComponents.Light.NoActionBar"
+        android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"
         app:contentInsetStart="72dp"
         app:elevation="4dp"
         app:subtitleTextAppearance="@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle"
diff --git a/ring-android/app/src/main/res/layout/activity_home.xml b/ring-android/app/src/main/res/layout/activity_home.xml
index 749a503..39c21ce 100644
--- a/ring-android/app/src/main/res/layout/activity_home.xml
+++ b/ring-android/app/src/main/res/layout/activity_home.xml
@@ -19,7 +19,7 @@
  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.          
 -->
 
-<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/drawer_layout"
@@ -36,7 +36,7 @@
         android:paddingEnd="0dp"
         android:paddingStart="@dimen/drawer_content_padding">
 
-        <android.support.v7.widget.Toolbar
+        <androidx.appcompat.widget.Toolbar
             android:id="@+id/main_toolbar"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -45,8 +45,8 @@
             android:background="@color/color_primary_light"
             android:elevation="@dimen/toolbar_elevation"
             android:minHeight="?attr/actionBarSize"
-            android:popupTheme="@style/Theme.AppCompat.Light.NoActionBar"
-            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
+            android:popupTheme="@style/Theme.MaterialComponents.Light.NoActionBar"
+            android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"
             android:titleTextAppearance="@style/ToolbarTitle"
             app:contentInsetStart="@dimen/toolbar_content_inset"
             app:elevation="@dimen/toolbar_elevation"
@@ -83,7 +83,7 @@
             android:layout_below="@+id/toolbar_spacer"
             android:orientation="vertical" />
 
-        <android.support.design.widget.FloatingActionButton
+        <com.google.android.material.floatingactionbutton.FloatingActionButton
             android:id="@+id/action_button"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
@@ -102,7 +102,7 @@
 
     </RelativeLayout>
 
-    <android.support.design.widget.NavigationView
+    <com.google.android.material.navigation.NavigationView
         android:id="@+id/left_drawer"
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
@@ -117,6 +117,6 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content" />
 
-    </android.support.design.widget.NavigationView>
+    </com.google.android.material.navigation.NavigationView>
 
-</android.support.v4.widget.DrawerLayout>
\ No newline at end of file
+</androidx.drawerlayout.widget.DrawerLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/add_new_device_layout.xml b/ring-android/app/src/main/res/layout/add_new_device_layout.xml
index 7f617be..1617a71 100644
--- a/ring-android/app/src/main/res/layout/add_new_device_layout.xml
+++ b/ring-android/app/src/main/res/layout/add_new_device_layout.xml
@@ -34,14 +34,12 @@
         android:elevation="4dp"
         android:orientation="vertical">
 
-        <Button
+        <com.google.android.material.button.MaterialButton
             android:id="@+id/btn_add_device"
-            style="@style/Base.TextAppearance.AppCompat.Widget.Button.Borderless.Colored"
-            android:layout_width="match_parent"
+            style="@style/Widget.MaterialComponents.Button.TextButton"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:background="?attr/selectableItemBackground"
-            android:paddingBottom="5dp"
-            android:paddingTop="5dp"
+            android:layout_gravity="center_horizontal"
             android:text="@string/account_link_export_button"
             android:textColor="@color/white" />
 
@@ -52,7 +50,7 @@
             android:orientation="vertical">
 
             <ScrollView
-                android:layout_width="wrap_content"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content">
 
                 <LinearLayout
@@ -65,16 +63,16 @@
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:gravity="top"
-                        android:paddingBottom="0dp"
                         android:paddingLeft="16dp"
-                        android:paddingRight="16dp"
                         android:paddingTop="5dp"
+                        android:paddingRight="16dp"
+                        android:paddingBottom="0dp"
                         android:text="@string/account_link_export_info"
                         android:textColor="@color/text_color_primary_dark"
                         android:textIsSelectable="true"
                         android:textSize="14sp" />
 
-                    <android.support.design.widget.TextInputLayout
+                    <com.google.android.material.textfield.TextInputLayout
                         android:id="@+id/password_layout"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
@@ -82,34 +80,29 @@
                         android:paddingRight="16dp"
                         app:passwordToggleEnabled="true">
 
-                        <android.support.design.widget.TextInputEditText
+                        <com.google.android.material.textfield.TextInputEditText
                             android:id="@+id/ring_password"
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
                             android:hint="@string/account_enter_password"
                             android:imeOptions="actionDone"
                             android:inputType="textPassword" />
-                    </android.support.design.widget.TextInputLayout>
+                    </com.google.android.material.textfield.TextInputLayout>
 
-                    <Button
+                    <com.google.android.material.button.MaterialButton
                         android:id="@+id/btn_start_export"
-                        style="?attr/borderlessButtonStyle"
-                        android:layout_width="match_parent"
+                        android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:background="?attr/selectableItemBackground"
-                        android:paddingBottom="5dp"
-                        android:paddingTop="5dp"
+                        android:layout_gravity="center_horizontal"
                         android:text="@string/account_start_export_button"
                         android:textColor="@color/white" />
 
-                    <Button
+                    <com.google.android.material.button.MaterialButton
                         android:id="@+id/btn_end_export"
-                        style="?attr/borderlessButtonStyle"
-                        android:layout_width="match_parent"
+                        style="@style/Widget.MaterialComponents.Button.TextButton"
+                        android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:background="?attr/selectableItemBackground"
-                        android:paddingBottom="5dp"
-                        android:paddingTop="5dp"
+                        android:layout_gravity="center_horizontal"
                         android:text="@string/account_end_export_button"
                         android:textColor="@color/white"
                         android:visibility="gone" />
diff --git a/ring-android/app/src/main/res/layout/camerapicker.xml b/ring-android/app/src/main/res/layout/camerapicker.xml
index 0736652..006a8e7 100644
--- a/ring-android/app/src/main/res/layout/camerapicker.xml
+++ b/ring-android/app/src/main/res/layout/camerapicker.xml
@@ -9,7 +9,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
 
-    <android.support.design.widget.FloatingActionButton
+    <com.google.android.material.floatingactionbutton.FloatingActionButton
         android:id="@+id/button_capture"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout/dialog_confirm_revocation.xml b/ring-android/app/src/main/res/layout/dialog_confirm_revocation.xml
index ad3c674..37959c3 100644
--- a/ring-android/app/src/main/res/layout/dialog_confirm_revocation.xml
+++ b/ring-android/app/src/main/res/layout/dialog_confirm_revocation.xml
@@ -5,7 +5,7 @@
     android:orientation="vertical"
     android:paddingTop="16dp">
 
-    <android.support.design.widget.TextInputLayout
+    <com.google.android.material.textfield.TextInputLayout
         android:id="@+id/ring_password_txt_box"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -13,7 +13,7 @@
         android:layout_marginLeft="12dp"
         android:layout_marginRight="12dp">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/ring_password_txt"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -22,6 +22,6 @@
             android:inputType="textPassword"
             android:lines="1"
             android:maxLines="1" />
-    </android.support.design.widget.TextInputLayout>
+    </com.google.android.material.textfield.TextInputLayout>
 
 </LinearLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/dialog_device_rename.xml b/ring-android/app/src/main/res/layout/dialog_device_rename.xml
index b7a04a3..4eb269b 100644
--- a/ring-android/app/src/main/res/layout/dialog_device_rename.xml
+++ b/ring-android/app/src/main/res/layout/dialog_device_rename.xml
@@ -5,7 +5,7 @@
     android:orientation="vertical"
     android:paddingTop="16dp">
 
-    <android.support.design.widget.TextInputLayout
+    <com.google.android.material.textfield.TextInputLayout
         android:id="@+id/ring_device_name_txt_box"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -13,7 +13,7 @@
         android:layout_marginLeft="12dp"
         android:layout_marginRight="12dp">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/ring_device_name_txt"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -22,6 +22,6 @@
             android:inputType="textCapWords"
             android:lines="1"
             android:maxLines="1" />
-    </android.support.design.widget.TextInputLayout>
+    </com.google.android.material.textfield.TextInputLayout>
 
 </LinearLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/dialog_profile.xml b/ring-android/app/src/main/res/layout/dialog_profile.xml
index b146220..29045a2 100644
--- a/ring-android/app/src/main/res/layout/dialog_profile.xml
+++ b/ring-android/app/src/main/res/layout/dialog_profile.xml
@@ -37,7 +37,7 @@
                 android:scaleType="fitCenter"
                 app:srcCompat="@drawable/ic_contact_picture_fallback" />
 
-            <android.support.design.widget.FloatingActionButton
+            <com.google.android.material.floatingactionbutton.FloatingActionButton
                 android:id="@+id/gallery"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
@@ -56,7 +56,7 @@
                 android:layout_alignBottom="@+id/profile_photo"
                 android:layout_centerHorizontal="true" />
 
-            <android.support.design.widget.FloatingActionButton
+            <com.google.android.material.floatingactionbutton.FloatingActionButton
                 android:id="@+id/camera"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout/frag_about.xml b/ring-android/app/src/main/res/layout/frag_about.xml
index 5ea4bdd..c9caa06 100644
--- a/ring-android/app/src/main/res/layout/frag_about.xml
+++ b/ring-android/app/src/main/res/layout/frag_about.xml
@@ -220,7 +220,7 @@
 
         </LinearLayout>
 
-        <android.support.v7.widget.AppCompatButton
+        <androidx.appcompat.widget.AppCompatButton
             android:id="@+id/credits"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout/frag_acc_home_create.xml b/ring-android/app/src/main/res/layout/frag_acc_home_create.xml
index a044ebc..8c47a94 100644
--- a/ring-android/app/src/main/res/layout/frag_acc_home_create.xml
+++ b/ring-android/app/src/main/res/layout/frag_acc_home_create.xml
@@ -45,7 +45,7 @@
             android:textSize="14sp"
             android:textColor="@color/text_color_primary_dark" />
 
-        <android.support.v7.widget.AppCompatButton
+        <androidx.appcompat.widget.AppCompatButton
             android:id="@+id/ring_add_account"
             android:theme="@style/ButtonColored"
             android:layout_width="300dp"
@@ -55,7 +55,7 @@
             android:text="@string/account_link_button" />
 
 
-        <android.support.v7.widget.AppCompatButton
+        <androidx.appcompat.widget.AppCompatButton
             android:id="@+id/ring_create_btn"
             android:theme="@style/ButtonColored"
             android:layout_width="300dp"
diff --git a/ring-android/app/src/main/res/layout/frag_acc_profile_create.xml b/ring-android/app/src/main/res/layout/frag_acc_profile_create.xml
index 1a636ef..87b9595 100644
--- a/ring-android/app/src/main/res/layout/frag_acc_profile_create.xml
+++ b/ring-android/app/src/main/res/layout/frag_acc_profile_create.xml
@@ -60,7 +60,7 @@
                     android:scaleType="fitCenter"
                     tools:src="@drawable/ic_contact_picture_fallback" />
 
-                <android.support.design.widget.FloatingActionButton
+                <com.google.android.material.floatingactionbutton.FloatingActionButton
                     android:id="@+id/camera"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -79,7 +79,7 @@
                     android:layout_alignBottom="@+id/profile_photo"
                     android:layout_centerHorizontal="true" />
 
-                <android.support.design.widget.FloatingActionButton
+                <com.google.android.material.floatingactionbutton.FloatingActionButton
                     android:id="@+id/gallery"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout/frag_acc_ring_create.xml b/ring-android/app/src/main/res/layout/frag_acc_ring_create.xml
index bc2fcd6..3b259f8 100644
--- a/ring-android/app/src/main/res/layout/frag_acc_ring_create.xml
+++ b/ring-android/app/src/main/res/layout/frag_acc_ring_create.xml
@@ -49,7 +49,7 @@
                 android:layout_height="wrap_content"
                 android:orientation="vertical">
 
-                <android.support.design.widget.TextInputLayout
+                <com.google.android.material.textfield.TextInputLayout
                     android:id="@+id/ring_username_txt_box"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
@@ -57,7 +57,7 @@
                     android:layout_marginLeft="12dp"
                     android:layout_marginRight="12dp">
 
-                    <android.support.design.widget.TextInputEditText
+                    <com.google.android.material.textfield.TextInputEditText
                         android:id="@+id/ring_username"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
@@ -67,7 +67,7 @@
                         android:inputType="text"
                         android:lines="1"
                         android:maxLines="1" />
-                </android.support.design.widget.TextInputLayout>
+                </com.google.android.material.textfield.TextInputLayout>
 
             </LinearLayout>
 
@@ -81,7 +81,7 @@
                 android:text="@string/help_password_choose"
                 android:textColor="@color/text_color_primary_dark" />
 
-            <android.support.design.widget.TextInputLayout
+            <com.google.android.material.textfield.TextInputLayout
                 android:id="@+id/ring_password_txt_box"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -89,16 +89,16 @@
                 android:layout_marginRight="12dp"
                 app:passwordToggleEnabled="true">
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/ring_password"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:hint="@string/prompt_new_password"
                     android:imeOptions="actionNext"
                     android:inputType="textPassword" />
-            </android.support.design.widget.TextInputLayout>
+            </com.google.android.material.textfield.TextInputLayout>
 
-            <android.support.design.widget.TextInputLayout
+            <com.google.android.material.textfield.TextInputLayout
                 android:id="@+id/ring_password_repeat_txt_box"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -106,7 +106,7 @@
                 android:layout_marginRight="12dp"
                 app:passwordToggleEnabled="true">
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/ring_password_repeat"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
@@ -114,7 +114,7 @@
                     android:imeActionLabel="@string/action_create_short"
                     android:imeOptions="actionDone"
                     android:inputType="textPassword" />
-            </android.support.design.widget.TextInputLayout>
+            </com.google.android.material.textfield.TextInputLayout>
 
         </LinearLayout>
 
diff --git a/ring-android/app/src/main/res/layout/frag_acc_ring_link.xml b/ring-android/app/src/main/res/layout/frag_acc_ring_link.xml
index 5f8b54d..92f77de 100644
--- a/ring-android/app/src/main/res/layout/frag_acc_ring_link.xml
+++ b/ring-android/app/src/main/res/layout/frag_acc_ring_link.xml
@@ -45,7 +45,7 @@
                 android:textColor="@color/text_color_primary_dark"
                 android:textSize="14sp" />
 
-            <android.support.design.widget.TextInputLayout
+            <com.google.android.material.textfield.TextInputLayout
                 android:id="@+id/ring_password_txt_box"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -53,14 +53,14 @@
                 android:layout_marginRight="12dp"
                 app:passwordToggleEnabled="true">
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/ring_existing_password"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:hint="@string/prompt_password"
                     android:imeOptions="actionNext"
                     android:inputType="textPassword" />
-            </android.support.design.widget.TextInputLayout>
+            </com.google.android.material.textfield.TextInputLayout>
 
             <TextView
                 android:layout_width="match_parent"
@@ -73,14 +73,14 @@
                 android:textColor="@color/text_color_primary_dark"
                 android:textSize="14sp" />
 
-            <android.support.design.widget.TextInputLayout
+            <com.google.android.material.textfield.TextInputLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="12dp"
                 android:layout_marginRight="12dp"
                 app:passwordToggleEnabled="true">
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/ring_add_pin"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
@@ -89,7 +89,7 @@
                     android:inputType="textNoSuggestions"
                     android:singleLine="true"/>
 
-            </android.support.design.widget.TextInputLayout>
+            </com.google.android.material.textfield.TextInputLayout>
 
         </LinearLayout>
 
diff --git a/ring-android/app/src/main/res/layout/frag_acc_sip_create.xml b/ring-android/app/src/main/res/layout/frag_acc_sip_create.xml
index f03aec7..69776d0 100644
--- a/ring-android/app/src/main/res/layout/frag_acc_sip_create.xml
+++ b/ring-android/app/src/main/res/layout/frag_acc_sip_create.xml
@@ -60,11 +60,11 @@
                 android:text="@string/help_sip"
                 android:textSize="14sp" />
 
-            <android.support.design.widget.TextInputLayout
+            <com.google.android.material.textfield.TextInputLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content">
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/alias"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
@@ -73,13 +73,13 @@
                     android:imeOptions="flagNoExtractUi"
                     android:maxLines="1"
                     android:singleLine="true" />
-            </android.support.design.widget.TextInputLayout>
+            </com.google.android.material.textfield.TextInputLayout>
 
-            <android.support.design.widget.TextInputLayout
+            <com.google.android.material.textfield.TextInputLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content">
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/hostname"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
@@ -89,13 +89,13 @@
                     android:maxLines="1"
                     android:singleLine="true"
                     android:typeface="monospace" />
-            </android.support.design.widget.TextInputLayout>
+            </com.google.android.material.textfield.TextInputLayout>
 
-            <android.support.design.widget.TextInputLayout
+            <com.google.android.material.textfield.TextInputLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content">
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/username"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
@@ -105,14 +105,14 @@
                     android:maxLines="1"
                     android:singleLine="true"
                     android:typeface="monospace" />
-            </android.support.design.widget.TextInputLayout>
+            </com.google.android.material.textfield.TextInputLayout>
 
-            <android.support.design.widget.TextInputLayout
+            <com.google.android.material.textfield.TextInputLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 app:passwordToggleEnabled="true">
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/password"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
@@ -124,7 +124,7 @@
                     android:maxLines="1"
                     android:singleLine="true"
                     android:typeface="monospace" />
-            </android.support.design.widget.TextInputLayout>
+            </com.google.android.material.textfield.TextInputLayout>
 
         </LinearLayout>
     </cx.ring.views.BoundedScrollView>
diff --git a/ring-android/app/src/main/res/layout/frag_account_migration.xml b/ring-android/app/src/main/res/layout/frag_account_migration.xml
index 96364ee..e267268 100644
--- a/ring-android/app/src/main/res/layout/frag_account_migration.xml
+++ b/ring-android/app/src/main/res/layout/frag_account_migration.xml
@@ -34,7 +34,7 @@
         android:orientation="vertical"
         app:bounded_width="320dp">
 
-        <android.support.v7.widget.CardView
+        <androidx.cardview.widget.CardView
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginBottom="16dp"
@@ -97,12 +97,12 @@
                         android:background="@color/color_primary_light"
                         android:orientation="vertical">
 
-                        <android.support.design.widget.TextInputLayout
+                        <com.google.android.material.textfield.TextInputLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
                             app:passwordToggleEnabled="true">
 
-                            <android.support.design.widget.TextInputEditText
+                            <com.google.android.material.textfield.TextInputEditText
                                 android:id="@+id/ring_password"
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
@@ -112,7 +112,7 @@
                                 android:hint="@string/prompt_password"
                                 android:imeOptions="actionNext"
                                 android:inputType="textPassword" />
-                        </android.support.design.widget.TextInputLayout>
+                        </com.google.android.material.textfield.TextInputLayout>
 
                     </LinearLayout>
 
@@ -129,7 +129,7 @@
 
             </RelativeLayout>
 
-        </android.support.v7.widget.CardView>
+        </androidx.cardview.widget.CardView>
 
     </cx.ring.views.BoundedLinearLayout>
 
diff --git a/ring-android/app/src/main/res/layout/frag_accounts_list.xml b/ring-android/app/src/main/res/layout/frag_accounts_list.xml
index 2806cd6..39a5bbe 100644
--- a/ring-android/app/src/main/res/layout/frag_accounts_list.xml
+++ b/ring-android/app/src/main/res/layout/frag_accounts_list.xml
@@ -15,7 +15,7 @@
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -->
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -44,7 +44,7 @@
             android:clipToPadding="false"
             android:elevation="2dp">
 
-            <android.support.v7.widget.RecyclerView
+            <androidx.recyclerview.widget.RecyclerView
                 android:id="@+id/accounts_list"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -67,4 +67,4 @@
 
         </FrameLayout>
     </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
\ No newline at end of file
+</androidx.core.widget.NestedScrollView>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/frag_blacklist.xml b/ring-android/app/src/main/res/layout/frag_blacklist.xml
index 5e3b2c0..bd43ee9 100644
--- a/ring-android/app/src/main/res/layout/frag_blacklist.xml
+++ b/ring-android/app/src/main/res/layout/frag_blacklist.xml
@@ -6,7 +6,7 @@
     android:animateLayoutChanges="true"
     tools:context=".client.HomeActivity">
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/blacklist"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
diff --git a/ring-android/app/src/main/res/layout/frag_call.xml b/ring-android/app/src/main/res/layout/frag_call.xml
index 44ab682..a54b416 100644
--- a/ring-android/app/src/main/res/layout/frag_call.xml
+++ b/ring-android/app/src/main/res/layout/frag_call.xml
@@ -134,7 +134,7 @@
             android:orientation="horizontal"
             tools:visibility="gone">
 
-            <android.support.design.widget.FloatingActionButton
+            <com.google.android.material.floatingactionbutton.FloatingActionButton
                 android:id="@+id/call_refuse_btn"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
@@ -148,7 +148,7 @@
                 app:srcCompat="@drawable/ic_call_end_white"
                 app:useCompatPadding="true" />
 
-            <android.support.design.widget.FloatingActionButton
+            <com.google.android.material.floatingactionbutton.FloatingActionButton
                 android:id="@+id/call_accept_btn"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
@@ -221,7 +221,7 @@
             android:inputType="phone"
             android:visibility="visible" />
 
-        <android.support.design.widget.FloatingActionButton
+        <com.google.android.material.floatingactionbutton.FloatingActionButton
             android:id="@+id/call_hangup_btn"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout/frag_conversation.xml b/ring-android/app/src/main/res/layout/frag_conversation.xml
index eb072b5..26903a1 100644
--- a/ring-android/app/src/main/res/layout/frag_conversation.xml
+++ b/ring-android/app/src/main/res/layout/frag_conversation.xml
@@ -37,7 +37,7 @@
 
     </LinearLayout>
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/hist_list"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -73,7 +73,7 @@
             android:textColor="@color/text_color_primary" />
     </LinearLayout>
 
-    <android.support.v7.widget.CardView
+    <androidx.cardview.widget.CardView
         android:id="@+id/unknownContactPrompt"
         style="?android:attr/buttonBarStyle"
         android:layout_width="match_parent"
@@ -89,7 +89,7 @@
 
         <Button
             android:id="@+id/btnAddContact"
-            style="?attr/buttonBarButtonStyle"
+            style="@style/Widget.MaterialComponents.Button.TextButton"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_margin="0dp"
@@ -98,9 +98,9 @@
             android:padding="0dp"
             android:text="@string/ab_action_contact_add"
             android:textColor="@color/white" />
-    </android.support.v7.widget.CardView>
+    </androidx.cardview.widget.CardView>
 
-    <android.support.v7.widget.CardView
+    <androidx.cardview.widget.CardView
         android:id="@+id/trustRequestPrompt"
         style="?android:attr/buttonBarStyle"
         android:layout_width="match_parent"
@@ -124,7 +124,7 @@
 
             <Button
                 android:id="@+id/btnBlock"
-                style="?android:attr/buttonBarButtonStyle"
+                style="@style/Widget.MaterialComponents.Button.TextButton"
                 android:layout_width="0dp"
                 android:layout_height="match_parent"
                 android:layout_weight="1"
@@ -135,7 +135,7 @@
 
             <Button
                 android:id="@+id/btnRefuse"
-                style="?android:attr/buttonBarButtonStyle"
+                style="@style/Widget.MaterialComponents.Button.TextButton"
                 android:layout_width="0dp"
                 android:layout_height="match_parent"
                 android:layout_weight="1"
@@ -146,7 +146,7 @@
 
             <Button
                 android:id="@+id/btnAccept"
-                style="?android:attr/buttonBarButtonStyle"
+                style="@style/Widget.MaterialComponents.Button.TextButton"
                 android:layout_width="0dp"
                 android:layout_height="match_parent"
                 android:layout_weight="1"
@@ -155,9 +155,9 @@
                 android:text="@string/accept"
                 android:textColor="#4CAF50" />
         </LinearLayout>
-    </android.support.v7.widget.CardView>
+    </androidx.cardview.widget.CardView>
 
-    <android.support.v7.widget.CardView
+    <androidx.cardview.widget.CardView
         android:id="@+id/cvMessageInput"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -234,5 +234,5 @@
                 android:tint="@android:color/darker_gray"
                 app:srcCompat="@drawable/ic_send_black" />
         </LinearLayout>
-    </android.support.v7.widget.CardView>
+    </androidx.cardview.widget.CardView>
 </RelativeLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/frag_device_list.xml b/ring-android/app/src/main/res/layout/frag_device_list.xml
index 82d6cc1..0334809 100644
--- a/ring-android/app/src/main/res/layout/frag_device_list.xml
+++ b/ring-android/app/src/main/res/layout/frag_device_list.xml
@@ -60,7 +60,7 @@
                     tools:text="Registered" />
 
 
-                <android.support.v7.widget.SwitchCompat
+                <androidx.appcompat.widget.SwitchCompat
                     android:id="@+id/account_switch"
                     android:layout_width="50dp"
                     android:layout_height="wrap_content"
@@ -118,9 +118,9 @@
                         android:text="@string/no_registered_name_for_account"
                         android:textAlignment="center" />
 
-                    <Button
+                    <com.google.android.material.button.MaterialButton
                         android:id="@+id/register_name_btn"
-                        style="@style/Widget.AppCompat.Button.Colored"
+                        style="@style/Widget.MaterialComponents.Button"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:paddingEnd="16dp"
diff --git a/ring-android/app/src/main/res/layout/frag_navigation.xml b/ring-android/app/src/main/res/layout/frag_navigation.xml
index 61968b6..c36dd2d 100644
--- a/ring-android/app/src/main/res/layout/frag_navigation.xml
+++ b/ring-android/app/src/main/res/layout/frag_navigation.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 
-<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
@@ -40,7 +40,7 @@
                     android:layout_alignBottom="@+id/user_photo"
                     android:layout_centerHorizontal="true" />
 
-                <android.support.design.widget.FloatingActionButton
+                <com.google.android.material.floatingactionbutton.FloatingActionButton
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_alignTop="@+id/anchor"
@@ -68,7 +68,7 @@
 
             </RelativeLayout>
 
-            <android.support.v7.widget.AppCompatButton
+            <androidx.appcompat.widget.AppCompatButton
                 android:id="@+id/addaccount_btn"
                 style="@style/Widget.AppCompat.Button.Borderless"
                 android:layout_width="wrap_content"
@@ -88,14 +88,14 @@
             android:layout_height="wrap_content"
             android:paddingTop="8dp">
 
-            <android.support.v7.widget.RecyclerView
+            <androidx.recyclerview.widget.RecyclerView
                 android:id="@+id/drawer_menu"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:nestedScrollingEnabled="false"
                 tools:targetApi="lollipop" />
 
-            <android.support.v7.widget.RecyclerView
+            <androidx.recyclerview.widget.RecyclerView
                 android:id="@+id/drawer_accounts"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -105,6 +105,6 @@
         </FrameLayout>
 
     </LinearLayout>
-</android.support.v4.widget.NestedScrollView>
+</androidx.core.widget.NestedScrollView>
 
 
diff --git a/ring-android/app/src/main/res/layout/frag_pending_contact_requests.xml b/ring-android/app/src/main/res/layout/frag_pending_contact_requests.xml
index 2d9b676..0527b99 100644
--- a/ring-android/app/src/main/res/layout/frag_pending_contact_requests.xml
+++ b/ring-android/app/src/main/res/layout/frag_pending_contact_requests.xml
@@ -20,7 +20,7 @@
         android:textColor="@color/text_color_primary"
         android:visibility="gone" />
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/requests_list"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
diff --git a/ring-android/app/src/main/res/layout/frag_register_name.xml b/ring-android/app/src/main/res/layout/frag_register_name.xml
index f03ce48..37bcce4 100644
--- a/ring-android/app/src/main/res/layout/frag_register_name.xml
+++ b/ring-android/app/src/main/res/layout/frag_register_name.xml
@@ -5,7 +5,7 @@
     android:orientation="vertical"
     android:paddingTop="16dp">
 
-    <android.support.design.widget.TextInputLayout
+    <com.google.android.material.textfield.TextInputLayout
         android:id="@+id/ring_username_txt_box"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -13,7 +13,7 @@
         android:layout_marginLeft="12dp"
         android:layout_marginRight="12dp">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/ring_username"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -22,9 +22,9 @@
             android:inputType="text"
             android:lines="1"
             android:maxLines="1" />
-    </android.support.design.widget.TextInputLayout>
+    </com.google.android.material.textfield.TextInputLayout>
 
-    <android.support.design.widget.TextInputLayout
+    <com.google.android.material.textfield.TextInputLayout
         android:id="@+id/ring_password_txt_box"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -32,7 +32,7 @@
         android:layout_marginLeft="12dp"
         android:layout_marginRight="12dp">
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/ring_password_txt"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -41,6 +41,6 @@
             android:inputType="textPassword"
             android:lines="1"
             android:maxLines="1" />
-    </android.support.design.widget.TextInputLayout>
+    </com.google.android.material.textfield.TextInputLayout>
 
 </LinearLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/frag_share.xml b/ring-android/app/src/main/res/layout/frag_share.xml
index 8d37e81..d6ff163 100644
--- a/ring-android/app/src/main/res/layout/frag_share.xml
+++ b/ring-android/app/src/main/res/layout/frag_share.xml
@@ -10,7 +10,7 @@
         android:layout_alignParentBottom="true"
         android:background="@color/color_primary_dark">
 
-        <android.support.v7.widget.AppCompatButton
+        <androidx.appcompat.widget.AppCompatButton
             android:id="@+id/share_button"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout/frag_sharewith.xml b/ring-android/app/src/main/res/layout/frag_sharewith.xml
index e41b063..7693789 100644
--- a/ring-android/app/src/main/res/layout/frag_sharewith.xml
+++ b/ring-android/app/src/main/res/layout/frag_sharewith.xml
@@ -7,7 +7,7 @@
     android:layout_height="match_parent"
     android:orientation="vertical">
 
-    <android.support.v7.widget.Toolbar
+    <androidx.appcompat.widget.Toolbar
         android:id="@+id/toolbar"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -52,7 +52,7 @@
 
     </FrameLayout>
 
-    <android.support.v7.widget.RecyclerView
+    <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/shareList"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout/frag_smartlist.xml b/ring-android/app/src/main/res/layout/frag_smartlist.xml
index 1c815c3..8e3353a 100644
--- a/ring-android/app/src/main/res/layout/frag_smartlist.xml
+++ b/ring-android/app/src/main/res/layout/frag_smartlist.xml
@@ -83,7 +83,7 @@
         android:layout_height="match_parent"
         android:layout_below="@id/newcontact_element">
 
-        <android.support.v7.widget.RecyclerView
+        <androidx.recyclerview.widget.RecyclerView
             android:id="@+id/confs_list"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
@@ -113,7 +113,7 @@
             android:layout_centerInParent="true" />
     </RelativeLayout>
 
-    <android.support.design.widget.FloatingActionButton
+    <com.google.android.material.floatingactionbutton.FloatingActionButton
         android:id="@+id/newconv_fab"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout/item_account.xml b/ring-android/app/src/main/res/layout/item_account.xml
index 5daec42..a58f344 100644
--- a/ring-android/app/src/main/res/layout/item_account.xml
+++ b/ring-android/app/src/main/res/layout/item_account.xml
@@ -47,7 +47,7 @@
 
     <TextView
         android:id="@+id/account_disabled"
-        style="@style/TextAppearance.AppCompat.Small"
+        style="@style/TextAppearance.MaterialComponents.Subtitle2"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignBaseline="@+id/account_alias"
diff --git a/ring-android/app/src/main/res/layout/item_menu.xml b/ring-android/app/src/main/res/layout/item_menu.xml
index 5103ed6..a928581 100644
--- a/ring-android/app/src/main/res/layout/item_menu.xml
+++ b/ring-android/app/src/main/res/layout/item_menu.xml
@@ -7,7 +7,7 @@
     android:background="?android:attr/selectableItemBackground"
     android:drawSelectorOnTop="true">
 
-    <android.support.v7.widget.AppCompatImageView
+    <androidx.appcompat.widget.AppCompatImageView
         android:id="@+id/navigation_item_icon"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout/tv_frag_call.xml b/ring-android/app/src/main/res/layout/tv_frag_call.xml
index a39edc1..53662a6 100644
--- a/ring-android/app/src/main/res/layout/tv_frag_call.xml
+++ b/ring-android/app/src/main/res/layout/tv_frag_call.xml
@@ -127,7 +127,7 @@
                 android:layout_margin="12dp"
                 android:orientation="horizontal">
 
-                <android.support.design.widget.FloatingActionButton
+                <com.google.android.material.floatingactionbutton.FloatingActionButton
                     android:id="@+id/call_refuse_btn"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -140,7 +140,7 @@
                     app:srcCompat="@drawable/ic_call_end_white"
                     app:useCompatPadding="true" />
 
-                <android.support.design.widget.FloatingActionButton
+                <com.google.android.material.floatingactionbutton.FloatingActionButton
                     android:id="@+id/call_accept_btn"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -157,7 +157,7 @@
         </LinearLayout>
     </LinearLayout>
 
-    <android.support.design.widget.FloatingActionButton
+    <com.google.android.material.floatingactionbutton.FloatingActionButton
         android:id="@+id/call_hangup_btn"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/layout/tv_titleview.xml b/ring-android/app/src/main/res/layout/tv_titleview.xml
index ca51798..3dc85a4 100644
--- a/ring-android/app/src/main/res/layout/tv_titleview.xml
+++ b/ring-android/app/src/main/res/layout/tv_titleview.xml
@@ -3,7 +3,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
-    <android.support.v17.leanback.widget.SearchOrbView
+    <androidx.leanback.widget.SearchOrbView
         android:id="@+id/title_orb"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
diff --git a/ring-android/app/src/main/res/menu/smartlist_menu.xml b/ring-android/app/src/main/res/menu/smartlist_menu.xml
index c49233f..096c3e0 100644
--- a/ring-android/app/src/main/res/menu/smartlist_menu.xml
+++ b/ring-android/app/src/main/res/menu/smartlist_menu.xml
@@ -9,7 +9,7 @@
         android:hint="@string/searchbar_hint"
         android:icon="@drawable/ic_search_white"
         android:title="@string/searchbar_hint"
-        app:actionViewClass="android.support.v7.widget.SearchView"
+        app:actionViewClass="androidx.appcompat.widget.SearchView"
         app:showAsAction="collapseActionView|always" />
 
     <item
diff --git a/ring-android/app/src/main/res/values-v21/styles.xml b/ring-android/app/src/main/res/values-v21/styles.xml
index d6933fa..8034a47 100644
--- a/ring-android/app/src/main/res/values-v21/styles.xml
+++ b/ring-android/app/src/main/res/values-v21/styles.xml
@@ -1,6 +1,6 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <style name="AppTheme.ActionBar.Transparent" parent="@style/Theme.AppCompat">
+    <style name="AppTheme.ActionBar.Transparent" parent="@style/Theme.MaterialComponents">
         <item name="android:windowTranslucentStatus">true</item>
         <item name="android:windowTranslucentNavigation">true</item>
         <item name="android:windowContentOverlay">@null</item>
@@ -10,19 +10,17 @@
         <item name="actionBarStyle">@style/ActionBar.Transparent</item>
     </style>
 
-    <style name="AppThemeBase.Dark" parent="@style/Theme.AppCompat.NoActionBar">
+    <style name="AppThemeBase.Dark" parent="@style/Theme.MaterialComponents.NoActionBar">
         <item name="colorAccent">@color/color_primary_dark</item>
         <item name="colorPrimary">@color/color_primary_light</item>
         <item name="colorPrimaryDark">@color/color_primary_dark</item>
-        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
         <item name="android:windowContentTransitions">true</item>
     </style>
 
-    <style name="AppThemeBase" parent="@style/Theme.AppCompat.Light.NoActionBar">
+    <style name="AppThemeBase" parent="@style/Theme.MaterialComponents.Light.NoActionBar">
         <item name="colorAccent">@color/color_primary_dark</item>
         <item name="colorPrimary">@color/color_primary_light</item>
         <item name="colorPrimaryDark">@color/color_primary_dark</item>
-        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
         <item name="android:windowContentTransitions">true</item>
     </style>
 
diff --git a/ring-android/app/src/main/res/values/anims.xml b/ring-android/app/src/main/res/values/anims.xml
new file mode 100644
index 0000000..81e72f5
--- /dev/null
+++ b/ring-android/app/src/main/res/values/anims.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <integer name="config_activityShortDur">150</integer>
+    <integer name="config_activityDefaultDur">220</integer>
+    <integer name="animDefaultDur">@integer/config_activityDefaultDur</integer>
+
+</resources>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/values/styles.xml b/ring-android/app/src/main/res/values/styles.xml
index 9a869a9..df5cd95 100644
--- a/ring-android/app/src/main/res/values/styles.xml
+++ b/ring-android/app/src/main/res/values/styles.xml
@@ -1,20 +1,20 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <style name="AppThemeBase" parent="@style/Theme.AppCompat.Light.NoActionBar">
+    <style name="AppThemeBase" parent="@style/Theme.MaterialComponents.Light.NoActionBar">
         <item name="colorAccent">@color/color_primary_dark</item>
         <item name="colorPrimary">@color/color_primary_light</item>
         <item name="colorPrimaryDark">@color/color_primary_dark</item>
         <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
     </style>
 
-    <style name="AppThemeBase.Dark" parent="@style/Theme.AppCompat.NoActionBar">
+    <style name="AppThemeBase.Dark" parent="@style/Theme.MaterialComponents.NoActionBar">
         <item name="colorAccent">@color/color_primary_light</item>
         <item name="colorPrimary">@color/color_primary_dark</item>
         <item name="colorPrimaryDark">@color/color_primary_light</item>
         <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
     </style>
 
-    <style name="AppTheme.ActionBar.Transparent" parent="@style/Theme.AppCompat.Light">
+    <style name="AppTheme.ActionBar.Transparent" parent="@style/Theme.MaterialComponents.Light">
         <item name="android:windowContentOverlay">@null</item>
         <item name="android:windowActionBarOverlay">true</item>
         <item name="android:actionBarStyle">@style/ActionBar.Transparent</item>
@@ -30,7 +30,7 @@
     <style name="ToolbarTitle" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
     </style>
 
-    <style name="MenuHeader" parent="Theme.AppCompat.Light.NoActionBar">
+    <style name="MenuHeader" parent="Theme.MaterialComponents.Light.NoActionBar">
         <item name="android:textColorPrimary">@color/text_color_primary_dark</item>
         <item name="android:textColorSecondary">@color/text_color_secondary_dark</item>
     </style>
@@ -59,7 +59,7 @@
         <item name="android:textColor">@color/text_color_secondary</item>
     </style>
 
-    <style name="Wizard" parent="Theme.AppCompat">
+    <style name="Wizard" parent="Theme.MaterialComponents">
         <item name="colorAccent">@color/color_primary_light</item>
         <item name="colorPrimary">@color/color_primary_dark</item>
         <item name="colorPrimaryDark">@color/color_primary_light</item>
diff --git a/ring-android/app/src/main/res/xml/account_advanced_prefs.xml b/ring-android/app/src/main/res/xml/account_advanced_prefs.xml
index 202eabb..dafab93 100644
--- a/ring-android/app/src/main/res/xml/account_advanced_prefs.xml
+++ b/ring-android/app/src/main/res/xml/account_advanced_prefs.xml
@@ -17,9 +17,9 @@
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -->
-<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <android.support.v14.preference.SwitchPreference
+    <SwitchPreference
         android:defaultValue="false"
         android:key="DHT.PublicInCalls"
         android:persistent="false"
@@ -42,33 +42,33 @@
         android:persistent="false"
         android:title="@string/account_local_port_label" />
 
-    <android.support.v7.preference.PreferenceCategory android:title="@string/account_proxy_label">
-        <android.support.v14.preference.SwitchPreference
+    <PreferenceCategory android:title="@string/account_proxy_label">
+        <SwitchPreference
             android:key="Account.proxyEnabled"
             android:persistent="false"
             android:summaryOff="Disabled"
             android:summaryOn="Enabled"
             android:title="@string/account_proxy_enable_label" />
 
-        <android.support.v7.preference.EditTextPreference
+        <EditTextPreference
             android:defaultValue=""
             android:dependency="Account.proxyEnabled"
             android:key="Account.proxyServer"
             android:persistent="false"
             android:summary=""
             android:title="@string/account_proxy_server_label" />
-    </android.support.v7.preference.PreferenceCategory>
+    </PreferenceCategory>
 
-    <android.support.v7.preference.PreferenceCategory android:title="@string/account_published_address_label">
+    <PreferenceCategory android:title="@string/account_published_address_label">
 
-        <android.support.v14.preference.SwitchPreference
+        <SwitchPreference
             android:key="STUN.enable"
             android:persistent="false"
             android:summaryOff="Disabled"
             android:summaryOn="Enabled"
             android:title="@string/account_stun_enable_label" />
 
-        <android.support.v7.preference.EditTextPreference
+        <EditTextPreference
             android:defaultValue=""
             android:dependency="STUN.enable"
             android:key="STUN.server"
@@ -76,14 +76,14 @@
             android:summary=""
             android:title="@string/account_stun_server_label" />
 
-        <android.support.v14.preference.SwitchPreference
+        <SwitchPreference
             android:key="TURN.enable"
             android:persistent="false"
             android:summaryOff="Disabled"
             android:summaryOn="Enabled"
             android:title="@string/account_turn_enable_label" />
 
-        <android.support.v7.preference.EditTextPreference
+        <EditTextPreference
             android:defaultValue=""
             android:dependency="TURN.enable"
             android:key="TURN.server"
@@ -91,7 +91,7 @@
             android:summary=""
             android:title="@string/account_turn_server_label" />
 
-        <android.support.v7.preference.EditTextPreference
+        <EditTextPreference
             android:defaultValue=""
             android:dependency="TURN.enable"
             android:key="TURN.username"
@@ -107,7 +107,7 @@
             android:summary=""
             android:title="@string/account_turn_password_label" />
 
-        <android.support.v7.preference.CheckBoxPreference
+        <CheckBoxPreference
             android:disableDependentsState="true"
             android:key="Account.publishedSameAsLocal"
             android:persistent="false"
@@ -120,14 +120,14 @@
             android:persistent="false"
             android:title="@string/account_published_port_label" />
 
-        <android.support.v7.preference.EditTextPreference
+        <EditTextPreference
             android:dependency="Account.publishedSameAsLocal"
             android:key="Account.publishedAddress"
             android:persistent="false"
             android:title="@string/account_published_address_label" />
-    </android.support.v7.preference.PreferenceCategory>
+    </PreferenceCategory>
 
-    <android.support.v7.preference.PreferenceCategory android:title="@string/account_rtp_port_range">
+    <PreferenceCategory android:title="@string/account_rtp_port_range">
 
         <cx.ring.views.EditTextIntegerPreference
             android:defaultValue="0"
@@ -140,6 +140,6 @@
             android:key="Account.audioPortMax"
             android:persistent="false"
             android:title="@string/account_rtp_max_port" />
-    </android.support.v7.preference.PreferenceCategory>
+    </PreferenceCategory>
 
-</android.support.v7.preference.PreferenceScreen>
\ No newline at end of file
+</PreferenceScreen>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/xml/account_general_prefs.xml b/ring-android/app/src/main/res/xml/account_general_prefs.xml
index 712123d..b956feb 100644
--- a/ring-android/app/src/main/res/xml/account_general_prefs.xml
+++ b/ring-android/app/src/main/res/xml/account_general_prefs.xml
@@ -20,26 +20,26 @@
 along with this program; if not, write to the Free Software         
  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.          
 -->
-<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
 
-    <android.support.v7.preference.SwitchPreferenceCompat
+    <SwitchPreference
         android:id="@+id/account_status"
         android:key="Account.status"
         android:persistent="false" />
 
-    <android.support.v7.preference.PreferenceCategory android:title="@string/account_basic_category" >
-        <android.support.v7.preference.EditTextPreference
+    <PreferenceCategory android:title="@string/account_basic_category" >
+        <EditTextPreference
             android:id="@+id/account_alias"
             android:key="Account.alias"
             android:persistent="false"
             android:summary=""
             android:title="@string/account_alias_label" />
-        <android.support.v7.preference.EditTextPreference
+        <EditTextPreference
             android:key="Account.hostname"
             android:persistent="false"
             android:summary=""
             android:title="@string/account_hostname_label" />
-        <android.support.v7.preference.EditTextPreference
+        <EditTextPreference
             android:key="Account.username"
             android:persistent="false"
             android:summary=""
@@ -49,24 +49,24 @@
             android:persistent="false"
             android:summary=""
             android:title="@string/account_password_label" />
-    </android.support.v7.preference.PreferenceCategory>
-    <android.support.v7.preference.PreferenceCategory android:title="@string/account_optionnal_category" >
-        <android.support.v7.preference.EditTextPreference
+    </PreferenceCategory>
+    <PreferenceCategory android:title="@string/account_optionnal_category" >
+        <EditTextPreference
             android:defaultValue=""
             android:key="Account.routeset"
             android:persistent="false"
             android:title="@string/account_proxy_field" />
-        <android.support.v7.preference.EditTextPreference
+        <EditTextPreference
             android:defaultValue=""
             android:key="Account.useragent"
             android:persistent="false"
             android:title="@string/account_useragent_label" />
 
-        <android.support.v14.preference.SwitchPreference
+        <SwitchPreference
             android:defaultValue="false"
             android:key="Account.autoAnswer"
             android:persistent="false"
             android:title="@string/account_autoanswer_label" />
-    </android.support.v7.preference.PreferenceCategory>
+    </PreferenceCategory>
 
-</android.support.v7.preference.PreferenceScreen>
+</PreferenceScreen>
diff --git a/ring-android/app/src/main/res/xml/account_media_prefs.xml b/ring-android/app/src/main/res/xml/account_media_prefs.xml
index 8772bae..2feb575 100644
--- a/ring-android/app/src/main/res/xml/account_media_prefs.xml
+++ b/ring-android/app/src/main/res/xml/account_media_prefs.xml
@@ -18,34 +18,34 @@
 along with this program; if not, write to the Free Software
  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.          
 -->
-<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <android.support.v7.preference.PreferenceCategory android:title="@string/account_ringtone_label">
-        <android.support.v14.preference.SwitchPreference
+    <PreferenceCategory android:title="@string/account_ringtone_label">
+        <SwitchPreference
             android:key="Account.ringtoneEnabled"
             android:persistent="false"
             android:title="@string/account_ringtone_enabled_label" />
 
-        <android.support.v14.preference.SwitchPreference
+        <SwitchPreference
             android:key="Account.ringtoneCustom"
             android:persistent="true"
             android:title="@string/account_ringtone_custom_label" />
 
-        <android.support.v7.preference.Preference
+        <Preference
             android:key="Account.ringtonePath"
             android:persistent="false"
             android:title="@string/account_ringtone_path_label" />
-    </android.support.v7.preference.PreferenceCategory>
+    </PreferenceCategory>
 
-    <android.support.v7.preference.PreferenceCategory android:title="@string/account_audio_label">
+    <PreferenceCategory android:title="@string/account_audio_label">
         <cx.ring.fragments.CodecPreference
             android:key="Account.audioCodecs"
             android:layout="@layout/frag_audio_mgmt"
             android:persistent="false" />
-    </android.support.v7.preference.PreferenceCategory>
+    </PreferenceCategory>
 
-    <android.support.v7.preference.PreferenceCategory android:title="@string/account_video_label">
-        <android.support.v14.preference.SwitchPreference
+    <PreferenceCategory android:title="@string/account_video_label">
+        <SwitchPreference
             android:key="Account.videoEnabled"
             android:persistent="false"
             android:title="@string/account_video_enable" />
@@ -54,7 +54,7 @@
             android:layout="@layout/frag_audio_mgmt"
             android:persistent="false"
             android:dependency="Account.videoEnabled"/>
-    </android.support.v7.preference.PreferenceCategory>
+    </PreferenceCategory>
 
 
-</android.support.v7.preference.PreferenceScreen>
\ No newline at end of file
+</PreferenceScreen>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/xml/account_prefs_ring.xml b/ring-android/app/src/main/res/xml/account_prefs_ring.xml
index 5cccc2f..8454e0d 100644
--- a/ring-android/app/src/main/res/xml/account_prefs_ring.xml
+++ b/ring-android/app/src/main/res/xml/account_prefs_ring.xml
@@ -18,38 +18,38 @@
 along with this program; if not, write to the Free Software         
  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.          
 -->
-<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
+<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
 
-    <android.support.v7.preference.PreferenceCategory android:title="@string/account_basic_category" >
-        <android.support.v7.preference.EditTextPreference
+    <androidx.preference.PreferenceCategory android:title="@string/account_basic_category" >
+        <EditTextPreference
             android:id="@+id/account_alias"
             android:key="Account.alias"
             android:persistent="false"
             android:summary=""
             android:title="@string/account_alias_label" />
-        <android.support.v7.preference.EditTextPreference
+        <EditTextPreference
             android:key="Account.hostname"
             android:persistent="false"
             android:summary=""
             android:title="@string/account_bootstrap_label" />
-    </android.support.v7.preference.PreferenceCategory>
-    <android.support.v7.preference.PreferenceCategory android:title="@string/account_optionnal_category" >
-        <android.support.v7.preference.EditTextPreference
+    </androidx.preference.PreferenceCategory>
+    <androidx.preference.PreferenceCategory android:title="@string/account_optionnal_category" >
+        <EditTextPreference
             android:defaultValue=""
             android:key="Account.useragent"
             android:persistent="false"
             android:title="@string/account_useragent_label" />
 
-        <android.support.v14.preference.SwitchPreference
+        <SwitchPreference
             android:defaultValue="false"
             android:key="Account.autoAnswer"
             android:persistent="false"
             android:title="@string/account_autoanswer_label" />
 
-        <android.support.v14.preference.SwitchPreference
+        <SwitchPreference
             android:key="Account.upnpEnabled"
             android:persistent="false"
             android:title="@string/account_upnp_label" />
-    </android.support.v7.preference.PreferenceCategory>
+    </androidx.preference.PreferenceCategory>
 
-</android.support.v7.preference.PreferenceScreen>
+</androidx.preference.PreferenceScreen>
diff --git a/ring-android/app/src/main/res/xml/account_security_prefs.xml b/ring-android/app/src/main/res/xml/account_security_prefs.xml
index 90f3d3f..e5511de 100644
--- a/ring-android/app/src/main/res/xml/account_security_prefs.xml
+++ b/ring-android/app/src/main/res/xml/account_security_prefs.xml
@@ -17,22 +17,22 @@
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -->
-<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <android.support.v7.preference.PreferenceCategory
+    <androidx.preference.PreferenceCategory
         android:key="Account.credentials"
         android:title="@string/account_credentials_label">
         <cx.ring.views.CredentialsPreference
             android:icon="@drawable/ic_action_new_dark"
             android:key="Add.credentials"
             android:title="@string/account_credentials_add" />
-    </android.support.v7.preference.PreferenceCategory>
+    </androidx.preference.PreferenceCategory>
 
-    <android.support.v7.preference.PreferenceCategory
+    <androidx.preference.PreferenceCategory
         android:key="TLS.category"
         android:title="@string/account_preferences_security_tab">
 
-        <android.support.v14.preference.SwitchPreference
+        <SwitchPreference
             android:key="TLS.enable"
             android:persistent="false"
             android:title="@string/account_tls_transport_switch_label" />
@@ -43,44 +43,44 @@
             android:persistent="false"
             android:title="@string/account_tls_port_label" />
 
-        <android.support.v7.preference.Preference
+        <Preference
             android:dependency="TLS.enable"
             android:key="TLS.certificateListFile"
             android:persistent="false"
             android:title="@string/account_tls_certificate_list_label" />
 
-        <android.support.v7.preference.Preference
+        <Preference
             android:dependency="TLS.enable"
             android:key="TLS.certificateFile"
             android:persistent="false"
             android:title="@string/account_tls_certificate_file_label" />
 
-        <android.support.v7.preference.Preference
+        <Preference
             android:dependency="TLS.enable"
             android:key="TLS.privateKeyFile"
             android:persistent="false"
             android:title="@string/account_tls_private_key_file_label" />
 
-        <android.support.v7.preference.EditTextPreference
+        <EditTextPreference
             android:dependency="TLS.enable"
             android:key="TLS.password"
             android:persistent="false"
             android:singleLine="true"
             android:title="@string/account_tls_password_label" />
 
-        <android.support.v7.preference.ListPreference
+        <ListPreference
             android:dependency="TLS.enable"
             android:key="TLS.method"
             android:persistent="false"
             android:title="@string/account_tls_method_label" />
 
-        <android.support.v7.preference.EditTextPreference
+        <EditTextPreference
             android:dependency="TLS.enable"
             android:key="TLS.ciphers"
             android:persistent="false"
             android:title="@string/account_tls_ciphers_label" />
 
-        <android.support.v7.preference.EditTextPreference
+        <EditTextPreference
             android:dependency="TLS.enable"
             android:key="TLS.serverName"
             android:persistent="false"
@@ -93,23 +93,23 @@
             android:persistent="false"
             android:title="@string/account_tls_negotiation_timeout_sec" />
 
-        <android.support.v7.preference.CheckBoxPreference
+        <CheckBoxPreference
             android:dependency="TLS.enable"
             android:key="TLS.verifyServer"
             android:persistent="false"
             android:title="@string/account_tls_verify_server_label" />
 
-        <android.support.v7.preference.CheckBoxPreference
+        <CheckBoxPreference
             android:dependency="TLS.enable"
             android:key="TLS.verifyClient"
             android:persistent="false"
             android:title="@string/account_tls_verify_client_label" />
 
-        <android.support.v7.preference.CheckBoxPreference
+        <CheckBoxPreference
             android:dependency="TLS.enable"
             android:key="TLS.requireClientCertificate"
             android:persistent="false"
             android:title="TLS Require Client Certificate" />
-    </android.support.v7.preference.PreferenceCategory>
+    </androidx.preference.PreferenceCategory>
 
-</android.support.v7.preference.PreferenceScreen>
\ No newline at end of file
+</androidx.preference.PreferenceScreen>
\ No newline at end of file
diff --git a/ring-android/app/src/withFirebase/java/cx/ring/services/RingFirebaseMessagingService.java b/ring-android/app/src/withFirebase/java/cx/ring/services/RingFirebaseMessagingService.java
index 7771578..9197bcc 100644
--- a/ring-android/app/src/withFirebase/java/cx/ring/services/RingFirebaseMessagingService.java
+++ b/ring-android/app/src/withFirebase/java/cx/ring/services/RingFirebaseMessagingService.java
@@ -20,7 +20,7 @@
 
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.content.WakefulBroadcastReceiver;
+import androidx.legacy.content.WakefulBroadcastReceiver;
 import android.util.Log;
 
 import com.google.firebase.messaging.FirebaseMessagingService;