From cccef6c998bd16564c91f9c56504fba248d3f228 Mon Sep 17 00:00:00 2001 From: FearlessTobi Date: Sun, 29 Mar 2020 18:50:44 +0200 Subject: [PATCH] Bumps compile API to 29 (Q) removes unecessary casts and deprecated calls This will help the Android client to evolve with the latest libraries (as the legacy support libs will not be shipped anymore with the com.android.support package). This PR also makes the app compliant with the new API requirements to start later this year: android-developers.googleblog.com/2019/02/expanding-target-api-level-requirements.html. Original commit by rafaeltoledo for Dolphin-emu. --- src/android/app/build.gradle | 16 ++++++---------- .../citra/citra_emu/adapters/GameAdapter.java | 6 ++++-- .../citra_emu/ui/DividerItemDecoration.java | 12 +++++++----- .../citra/citra_emu/ui/main/TvMainActivity.java | 7 +++++-- .../ui/platform/PlatformGamesFragment.java | 3 ++- .../citra_emu/ui/settings/SettingsFragment.java | 13 ------------- .../citra_emu/utils/DirectoryInitialization.java | 2 +- src/android/app/src/main/res/values/styles.xml | 10 +++++----- 8 files changed, 30 insertions(+), 39 deletions(-) diff --git a/src/android/app/build.gradle b/src/android/app/build.gradle index e75c89f88..b8456b76f 100644 --- a/src/android/app/build.gradle +++ b/src/android/app/build.gradle @@ -9,7 +9,7 @@ def autoVersion = (int) (((new Date().getTime() / 1000) - 1451606400) / 10) def buildType android { - compileSdkVersion 28 + compileSdkVersion 29 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -100,16 +100,12 @@ android { } } -ext { - androidSupportVersion = '28.0.0' -} - dependencies { - implementation 'androidx.legacy:legacy-support-v13:1.0.0' - implementation 'androidx.exifinterface:exifinterface:1.0.0' + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.exifinterface:exifinterface:1.1.0' implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.recyclerview:recyclerview:1.0.0' - implementation 'com.google.android.material:material:1.0.0' + implementation 'androidx.recyclerview:recyclerview:1.1.0' + implementation 'com.google.android.material:material:1.1.0' // Android TV UI libraries. implementation 'androidx.leanback:leanback:1.0.0' @@ -119,7 +115,7 @@ dependencies { // Allows FRP-style asynchronous operations in Android. implementation 'io.reactivex:rxandroid:1.2.1' - implementation 'com.nononsenseapps:filepicker:4.1.0' + implementation 'com.nononsenseapps:filepicker:4.2.1' implementation 'org.ini4j:ini4j:0.5.4' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/adapters/GameAdapter.java b/src/android/app/src/main/java/org/citra/citra_emu/adapters/GameAdapter.java index 412884bcd..dd062b8f2 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/adapters/GameAdapter.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/adapters/GameAdapter.java @@ -5,6 +5,8 @@ import android.database.DataSetObserver; import android.graphics.Rect; import android.os.Build; import android.os.SystemClock; + +import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import androidx.fragment.app.FragmentActivity; import androidx.recyclerview.widget.RecyclerView; @@ -203,8 +205,8 @@ public final class GameAdapter extends RecyclerView.Adapter impl } @Override - public void getItemOffsets(Rect outRect, View view, RecyclerView parent, - RecyclerView.State state) { + public void getItemOffsets(Rect outRect, @NonNull View view, @NonNull RecyclerView parent, + @NonNull RecyclerView.State state) { outRect.left = 0; outRect.right = 0; outRect.bottom = space; diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/DividerItemDecoration.java b/src/android/app/src/main/java/org/citra/citra_emu/ui/DividerItemDecoration.java index 6c8326241..f31535cae 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/ui/DividerItemDecoration.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/ui/DividerItemDecoration.java @@ -5,8 +5,11 @@ import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; + +import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; + import android.util.AttributeSet; import android.view.View; @@ -20,7 +23,6 @@ public final class DividerItemDecoration extends RecyclerView.ItemDecoration { private boolean mShowFirstDivider = false; private boolean mShowLastDivider = false; - public DividerItemDecoration(Context context, AttributeSet attrs) { final TypedArray a = context .obtainStyledAttributes(attrs, new int[]{android.R.attr.listDivider}); @@ -47,13 +49,13 @@ public final class DividerItemDecoration extends RecyclerView.ItemDecoration { } @Override - public void getItemOffsets(Rect outRect, View view, RecyclerView parent, - RecyclerView.State state) { + public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, + @NonNull RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); if (mDivider == null) { return; } - if (parent.getChildPosition(view) < 1) { + if (parent.getChildAdapterPosition(view) < 1) { return; } @@ -65,7 +67,7 @@ public final class DividerItemDecoration extends RecyclerView.ItemDecoration { } @Override - public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { + public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { if (mDivider == null) { super.onDrawOver(c, parent, state); return; diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/main/TvMainActivity.java b/src/android/app/src/main/java/org/citra/citra_emu/ui/main/TvMainActivity.java index c1bcf207d..1b4e9cd52 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/ui/main/TvMainActivity.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/ui/main/TvMainActivity.java @@ -4,6 +4,8 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; import android.os.Bundle; + +import androidx.annotation.NonNull; import androidx.leanback.app.BrowseFragment; import androidx.leanback.app.BrowseSupportFragment; import androidx.leanback.database.CursorMapper; @@ -15,6 +17,7 @@ import androidx.leanback.widget.ListRowPresenter; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.core.content.ContextCompat; + import android.widget.Toast; import org.citra.citra_emu.R; @@ -67,7 +70,7 @@ public final class TvMainActivity extends FragmentActivity implements MainView { .commit(); // Set display parameters for the BrowseFragment - mBrowseFragment.setHeadersState(BrowseFragment.HEADERS_ENABLED); + mBrowseFragment.setHeadersState(BrowseSupportFragment.HEADERS_ENABLED); mBrowseFragment.setBrandColor(ContextCompat.getColor(this, R.color.citra_orange_dark)); buildRowsAdapter(); @@ -142,7 +145,7 @@ public final class TvMainActivity extends FragmentActivity implements MainView { } @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case PermissionsHandler.REQUEST_CODE_WRITE_PERMISSION: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/platform/PlatformGamesFragment.java b/src/android/app/src/main/java/org/citra/citra_emu/ui/platform/PlatformGamesFragment.java index b4a59a893..2bd75e1d7 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/ui/platform/PlatformGamesFragment.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/ui/platform/PlatformGamesFragment.java @@ -2,11 +2,13 @@ package org.citra.citra_emu.ui.platform; import android.database.Cursor; import android.os.Bundle; + import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; + import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -27,7 +29,6 @@ public final class PlatformGamesFragment extends Fragment implements PlatformGam super.onCreate(savedInstanceState); } - @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_grid, container, false); diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/settings/SettingsFragment.java b/src/android/app/src/main/java/org/citra/citra_emu/ui/settings/SettingsFragment.java index 249af7b0b..077f23589 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/ui/settings/SettingsFragment.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/ui/settings/SettingsFragment.java @@ -49,19 +49,6 @@ public final class SettingsFragment extends Fragment implements SettingsFragment mPresenter.onAttach(); } - /** - * This version of onAttach is needed for versions below Marshmallow. - * - * @param activity - */ - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - - mActivity = (SettingsActivityView) activity; - mPresenter.onAttach(); - } - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/DirectoryInitialization.java b/src/android/app/src/main/java/org/citra/citra_emu/utils/DirectoryInitialization.java index 5a5846215..4a895fd34 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/utils/DirectoryInitialization.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/utils/DirectoryInitialization.java @@ -11,6 +11,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.os.Environment; import android.preference.PreferenceManager; + import androidx.localbroadcastmanager.content.LocalBroadcastManager; import org.citra.citra_emu.NativeLibrary; @@ -22,7 +23,6 @@ import java.io.InputStream; import java.io.OutputStream; import java.util.concurrent.atomic.AtomicBoolean; - /** * A service that spawns its own thread in order to copy several binary and shader files * from the Dolphin APK to the external file system. diff --git a/src/android/app/src/main/res/values/styles.xml b/src/android/app/src/main/res/values/styles.xml index ae7ff9ef7..f678c76a6 100644 --- a/src/android/app/src/main/res/values/styles.xml +++ b/src/android/app/src/main/res/values/styles.xml @@ -2,7 +2,7 @@ - - @@ -34,7 +34,7 @@ - - -