diff --git a/app/build.gradle b/app/build.gradle index 4e03124d..44d5b417 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,8 +34,9 @@ android { } buildTypes { release { + debuggable true minifyEnabled true - shrinkResources true + //shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 0608eae5..c48afcd1 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -45,8 +45,10 @@ -keep interface com.squareup.okhttp3.** { *; } -dontwarn com.squareup.okhttp3.** --dontwarn --ignorewarnings +#-dontwarn +#-ignorewarnings +-dontshrink +-dontobfuscate -dontwarn org.jaudiotagger.** -keep class org.jaudiotagger.** { *; } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 742fd571..c8b117ed 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ package="code.name.monkey.retromusic"> + @@ -119,11 +120,7 @@ - - + = Build.VERSION_CODES.O_MR1) { setShowWhenLocked(true) - setTurnScreenOn(true) + val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager + keyguardManager.requestDismissKeyguard(this, null) } else { this.window.addFlags( WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or - WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or - WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON + WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED ) } setContentView(R.layout.activity_lock_screen) @@ -67,8 +68,7 @@ class LockScreenActivity : AbsMusicServiceActivity() { Slidr.attach(this, config) - fragment = - supportFragmentManager.findFragmentById(R.id.playback_controls_fragment) as LockScreenPlayerControlsFragment? + fragment = whichFragment(R.id.playback_controls_fragment) findViewById(R.id.slide).apply { translationY = 100f diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt index fd58e7b7..1f80bbc6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt @@ -330,7 +330,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { ViewCompat.setElevation(slidingPanel, 0f) ViewCompat.setElevation(bottomNavigationView, 10f) bottomSheetBehavior.isHideable = true - bottomSheetBehavior.setPeekHeight(0, true) + bottomSheetBehavior.setPeekHeight(0, false) bottomSheetBehavior.state = STATE_COLLAPSED } COLLAPSED_WITH -> { @@ -341,7 +341,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { bottomSheetBehavior.isHideable = false bottomSheetBehavior.setPeekHeight( if (isQueueEmpty) 0 else (heightOfBar * 2) - 24, - true + false ) bottomNavigationView.isVisible = true } @@ -353,7 +353,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { bottomSheetBehavior.isHideable = false bottomSheetBehavior.setPeekHeight( if (isQueueEmpty) 0 else heightOfBar - 24, - true + false ) bottomNavigationView.isGone = true } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/DetailListFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/DetailListFragment.kt index 6c4c0510..cd24eac7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/DetailListFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/DetailListFragment.kt @@ -10,11 +10,13 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView.AdapterDataObserver import code.name.monkey.retromusic.* import code.name.monkey.retromusic.adapter.album.AlbumAdapter import code.name.monkey.retromusic.adapter.artist.ArtistAdapter import code.name.monkey.retromusic.adapter.song.SongAdapter import code.name.monkey.retromusic.db.toSong +import code.name.monkey.retromusic.extensions.dipToPix import code.name.monkey.retromusic.fragments.albums.AlbumClickListener import code.name.monkey.retromusic.fragments.artists.ArtistClickListener import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment @@ -52,6 +54,15 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de LAST_ADDED_PLAYLIST -> lastAddedSongs() TOP_PLAYED_PLAYLIST -> topPlayed() } + + + recyclerView.adapter?.registerAdapterDataObserver(object : AdapterDataObserver() { + override fun onChanged() { + super.onChanged() + val height = dipToPix(52f) + recyclerView.setPadding(0, 0, 0, height.toInt()) + } + }) } private fun lastAddedSongs() { @@ -84,7 +95,6 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de libraryViewModel.playCountSongs().observe(viewLifecycleOwner, Observer { songs -> songAdapter.swapDataSet(songs) }) - } private fun loadHistory() { @@ -116,8 +126,8 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de adapter = songAdapter layoutManager = linearLayoutManager() } - libraryViewModel.favorites().observe(viewLifecycleOwner, { - val songs = it.map { songEntity -> songEntity.toSong() } + libraryViewModel.favorites().observe(viewLifecycleOwner, { songEntities -> + val songs = songEntities.map { songEntity -> songEntity.toSong() } songAdapter.swapDataSet(songs) }) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenPlayerControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenControlsFragment.kt similarity index 99% rename from app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenPlayerControlsFragment.kt rename to app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenControlsFragment.kt index 51556b8a..b4d395ea 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenPlayerControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenControlsFragment.kt @@ -43,7 +43,7 @@ import kotlinx.android.synthetic.main.fragment_lock_screen_playback_controls.* /** * @author Hemanth S (h4h13). */ -class LockScreenPlayerControlsFragment : +class LockScreenControlsFragment : AbsPlayerControlsFragment(R.layout.fragment_lock_screen_playback_controls) { private var progressViewUpdateHelper: MusicProgressViewUpdateHelper? = null diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt b/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt index 872ac1d2..da52da28 100644 --- a/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt +++ b/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt @@ -154,13 +154,17 @@ class RealSongRepository(private val context: Context) : SongRepository { } else { Media.EXTERNAL_CONTENT_URI } - return context.contentResolver.query( - uri, - baseProjection, - selectionFinal, - selectionValuesFinal, - sortOrder - ) + return try { + context.contentResolver.query( + uri, + baseProjection, + selectionFinal, + selectionValuesFinal, + sortOrder + ) + } catch (ex: SecurityException) { + return null + } } private fun generateBlacklistSelection( diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java index 917e4c30..ebc0a9ad 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java +++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java @@ -63,6 +63,7 @@ import java.util.Objects; import java.util.Random; import code.name.monkey.retromusic.R; +import code.name.monkey.retromusic.activities.LockScreenActivity; import code.name.monkey.retromusic.appwidgets.AppWidgetBig; import code.name.monkey.retromusic.appwidgets.AppWidgetCard; import code.name.monkey.retromusic.appwidgets.AppWidgetClassic; @@ -245,7 +246,16 @@ public class MusicService extends Service implements updateNotification(); } }; - + private final BroadcastReceiver lockScreenReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (PreferenceUtil.INSTANCE.isLockScreen() && isPlaying()) { + Intent lockIntent = new Intent(context, LockScreenActivity.class); + lockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(lockIntent); + } + } + }; private QueueSaveHandler queueSaveHandler; private HandlerThread queueSaveHandlerThread; private boolean queuesRestored; @@ -362,6 +372,7 @@ public class MusicService extends Service implements registerReceiver(widgetIntentReceiver, new IntentFilter(APP_WIDGET_UPDATE)); registerReceiver(updateFavoriteReceiver, new IntentFilter(FAVORITE_STATE_CHANGED)); + registerReceiver(lockScreenReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF)); initNotification(); @@ -403,6 +414,7 @@ public class MusicService extends Service implements public void onDestroy() { unregisterReceiver(widgetIntentReceiver); unregisterReceiver(updateFavoriteReceiver); + unregisterReceiver(lockScreenReceiver); if (becomingNoisyReceiverRegistered) { unregisterReceiver(becomingNoisyReceiver); becomingNoisyReceiverRegistered = false; diff --git a/app/src/main/res/layout/activity_lock_screen.xml b/app/src/main/res/layout/activity_lock_screen.xml index f4f0872a..0e707bd5 100644 --- a/app/src/main/res/layout/activity_lock_screen.xml +++ b/app/src/main/res/layout/activity_lock_screen.xml @@ -24,7 +24,7 @@ diff --git a/app/src/main/res/layout/item_suggestions.xml b/app/src/main/res/layout/item_suggestions.xml index 70f5a24c..046d4dfb 100644 --- a/app/src/main/res/layout/item_suggestions.xml +++ b/app/src/main/res/layout/item_suggestions.xml @@ -145,8 +145,9 @@ android:text="New music mix" android:textAppearance="@style/TextViewNormal" android:textStyle="bold" + android:textSize="32sp" app:autoSizeMaxTextSize="32sp" - app:autoSizeMinTextSize="18sp" + app:autoSizeMinTextSize="24sp" app:autoSizeStepGranularity="1sp" />