commit
17237a4021
28 changed files with 82 additions and 102 deletions
|
@ -108,7 +108,7 @@ dependencies {
|
|||
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
|
||||
implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
|
||||
|
||||
def room_version = '2.4.1'
|
||||
def room_version = '2.4.2'
|
||||
implementation "androidx.room:room-runtime:$room_version"
|
||||
implementation "androidx.room:room-ktx:$room_version"
|
||||
kapt "androidx.room:room-compiler:$room_version"
|
||||
|
@ -126,7 +126,7 @@ dependencies {
|
|||
def retrofit_version = '2.9.0'
|
||||
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
|
||||
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
|
||||
implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.4'
|
||||
implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.5'
|
||||
|
||||
def material_dialog_version = "3.3.0"
|
||||
implementation "com.afollestad.material-dialogs:core:$material_dialog_version"
|
||||
|
@ -146,7 +146,7 @@ dependencies {
|
|||
implementation "io.insert-koin:koin-core:$koin_version"
|
||||
implementation "io.insert-koin:koin-android:$koin_version"
|
||||
|
||||
def glide_version = '4.13.0'
|
||||
def glide_version = '4.13.1'
|
||||
implementation "com.github.bumptech.glide:glide:$glide_version"
|
||||
kapt "com.github.bumptech.glide:compiler:$glide_version"
|
||||
implementation "com.github.bumptech.glide:okhttp3-integration:$glide_version"
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
|
||||
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
|
@ -37,7 +38,6 @@
|
|||
<activity
|
||||
android:name=".activities.MainActivity"
|
||||
android:exported="true"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/SplashTheme"
|
||||
android:launchMode="singleTop">
|
||||
<intent-filter>
|
||||
|
@ -171,7 +171,6 @@
|
|||
<activity
|
||||
android:name=".cast.ExpandedControlsActivity"
|
||||
android:exported="true"
|
||||
android:label="@string/app_name"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Theme.AppCompat.NoActionBar">
|
||||
|
|
|
@ -32,7 +32,6 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
|
|||
import code.name.monkey.retromusic.glide.BlurTransformation
|
||||
import code.name.monkey.retromusic.glide.GlideApp
|
||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback
|
||||
|
@ -42,7 +41,6 @@ import code.name.monkey.retromusic.model.Song
|
|||
import code.name.monkey.retromusic.repository.RealRepository
|
||||
import code.name.monkey.retromusic.service.MusicService
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
@ -247,14 +245,9 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback {
|
|||
binding.songText.text = song.artistName
|
||||
|
||||
GlideApp.with(this)
|
||||
.asBitmapPalette()
|
||||
.songCoverOptions(song)
|
||||
.load(RetroGlideExtension.getSongModel(song))
|
||||
.transform(BlurTransformation.Builder(this).build())
|
||||
.into(object : RetroMusicColoredTarget(binding.image) {
|
||||
override fun onColorReady(colors: MediaNotificationProcessor) {
|
||||
}
|
||||
})
|
||||
.songCoverOptions(song).transform(BlurTransformation.Builder(this).build())
|
||||
.into(binding.image)
|
||||
}
|
||||
|
||||
override fun onUpdateProgressViews(progress: Int, total: Int) {
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
package code.name.monkey.retromusic.activities
|
||||
|
||||
import android.app.KeyguardManager
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.WindowManager
|
||||
import androidx.core.content.getSystemService
|
||||
|
@ -84,7 +83,7 @@ class LockScreenActivity : AbsMusicServiceActivity() {
|
|||
|
||||
@Suppress("Deprecation")
|
||||
private fun lockScreenInit() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||
if (VersionUtils.hasOreoMR1()) {
|
||||
setShowWhenLocked(true)
|
||||
val keyguardManager = getSystemService<KeyguardManager>()
|
||||
keyguardManager?.requestDismissKeyguard(this, null)
|
||||
|
|
|
@ -49,14 +49,17 @@ class PermissionActivity : AbsMusicServiceActivity() {
|
|||
binding.storagePermission.setButtonClick {
|
||||
requestPermissions()
|
||||
}
|
||||
if (VersionUtils.hasMarshmallow()) binding.audioPermission.show()
|
||||
binding.audioPermission.setButtonClick {
|
||||
if (RingtoneManager.requiresDialog(this@PermissionActivity)) {
|
||||
val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
|
||||
intent.data = Uri.parse("package:" + applicationContext.packageName)
|
||||
startActivity(intent)
|
||||
if (VersionUtils.hasMarshmallow()) {
|
||||
binding.audioPermission.show()
|
||||
binding.audioPermission.setButtonClick {
|
||||
if (RingtoneManager.requiresDialog(this@PermissionActivity)) {
|
||||
val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
|
||||
intent.data = Uri.parse("package:" + applicationContext.packageName)
|
||||
startActivity(intent)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
binding.finish.accentBackgroundColor()
|
||||
binding.finish.setOnClickListener {
|
||||
if (hasPermissions()) {
|
||||
|
|
|
@ -20,7 +20,6 @@ import android.content.pm.PackageManager
|
|||
import android.graphics.Rect
|
||||
import android.media.AudioManager
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.provider.Settings
|
||||
import android.view.KeyEvent
|
||||
|
@ -31,6 +30,7 @@ import android.widget.EditText
|
|||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.content.getSystemService
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||
import code.name.monkey.retromusic.R
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
|
||||
|
@ -62,19 +62,12 @@ abstract class AbsBaseActivity : AbsThemeActivity() {
|
|||
permissionDeniedMessage = null
|
||||
}
|
||||
|
||||
override fun onPostCreate(savedInstanceState: Bundle?) {
|
||||
super.onPostCreate(savedInstanceState)
|
||||
if (!hasPermissions()) {
|
||||
// requestPermissions()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
val hasPermissions = hasPermissions()
|
||||
if (hasPermissions != hadPermissions) {
|
||||
hadPermissions = hasPermissions
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (VersionUtils.hasMarshmallow()) {
|
||||
onHasPermissionsChanged(hasPermissions)
|
||||
}
|
||||
}
|
||||
|
@ -97,13 +90,13 @@ abstract class AbsBaseActivity : AbsThemeActivity() {
|
|||
}
|
||||
|
||||
protected open fun requestPermissions() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (VersionUtils.hasMarshmallow()) {
|
||||
requestPermissions(permissions, PERMISSION_REQUEST)
|
||||
}
|
||||
}
|
||||
|
||||
protected fun hasPermissions(): Boolean {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (VersionUtils.hasMarshmallow()) {
|
||||
for (permission in permissions) {
|
||||
if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
|
||||
return false
|
||||
|
|
|
@ -21,7 +21,6 @@ import androidx.fragment.app.FragmentActivity
|
|||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.glide.GlideApp
|
||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote.isPlaying
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote.playNextSong
|
||||
|
@ -29,7 +28,6 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote.removeFromQueue
|
|||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
import code.name.monkey.retromusic.util.ViewUtil
|
||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.DraggableItemAdapter
|
||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.ItemDraggableRange
|
||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.annotation.DraggableItemStateFlags
|
||||
|
@ -79,13 +77,10 @@ class PlayingQueueAdapter(
|
|||
if (holder.image == null) {
|
||||
return
|
||||
}
|
||||
GlideApp.with(activity).asBitmapPalette().songCoverOptions(song)
|
||||
GlideApp.with(activity)
|
||||
.load(RetroGlideExtension.getSongModel(song))
|
||||
.into(object : RetroMusicColoredTarget(holder.image!!) {
|
||||
override fun onColorReady(colors: MediaNotificationProcessor) {
|
||||
//setColors(colors, holder)
|
||||
}
|
||||
})
|
||||
.songCoverOptions(song)
|
||||
.into(holder.image!!)
|
||||
}
|
||||
|
||||
fun swapDataSet(dataSet: List<Song>, position: Int) {
|
||||
|
|
|
@ -24,7 +24,6 @@ import android.content.res.Resources
|
|||
import android.graphics.*
|
||||
import android.graphics.drawable.BitmapDrawable
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.os.Build
|
||||
import android.text.TextUtils
|
||||
import android.widget.RemoteViews
|
||||
import androidx.core.content.ContextCompat
|
||||
|
@ -101,7 +100,7 @@ abstract class BaseAppWidget : AppWidgetProvider() {
|
|||
): PendingIntent {
|
||||
val intent = Intent(action)
|
||||
intent.component = serviceName
|
||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
return if (VersionUtils.hasOreo()) {
|
||||
PendingIntent.getForegroundService(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)
|
||||
} else {
|
||||
PendingIntent.getService(
|
||||
|
|
|
@ -3,11 +3,11 @@ package code.name.monkey.retromusic.dialogs
|
|||
import android.Manifest
|
||||
import android.app.Dialog
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.Environment
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.extensions.materialDialog
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
|
@ -49,7 +49,7 @@ class BlacklistFolderChooserDialog : DialogFragment() {
|
|||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
var mSavedInstanceState = savedInstanceState
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
|
||||
if (VersionUtils.hasMarshmallow()
|
||||
&& ActivityCompat.checkSelfPermission(
|
||||
requireActivity(), Manifest.permission.READ_EXTERNAL_STORAGE
|
||||
)
|
||||
|
|
|
@ -94,7 +94,7 @@ class SleepTimerDialog : DialogFragment() {
|
|||
val nextSleepTimerElapsedTime = SystemClock.elapsedRealtime() + minutes * 60 * 1000
|
||||
PreferenceUtil.nextSleepTimerElapsedRealTime = nextSleepTimerElapsedTime.toInt()
|
||||
val am = requireContext().getSystemService<AlarmManager>()
|
||||
am?.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, nextSleepTimerElapsedTime, pi)
|
||||
am?.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, nextSleepTimerElapsedTime, pi)
|
||||
|
||||
Toast.makeText(
|
||||
requireContext(),
|
||||
|
|
|
@ -45,7 +45,7 @@ fun AppCompatActivity.setImmersiveFullscreen() {
|
|||
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
|
||||
hide(WindowInsetsCompat.Type.systemBars())
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
if (VersionUtils.hasP()) {
|
||||
window.attributes.layoutInDisplayCutoutMode =
|
||||
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ fun FragmentActivity.setTaskDescriptionColor(color: Int) {
|
|||
// Task description requires fully opaque color
|
||||
colorFinal = ColorUtil.stripAlpha(colorFinal)
|
||||
// Sets color of entry in the system recents page
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
if (VersionUtils.hasP()) {
|
||||
setTaskDescription(
|
||||
ActivityManager.TaskDescription(
|
||||
title as String?,
|
||||
|
@ -196,7 +196,7 @@ fun AppCompatActivity.setStatusBarColorAuto() {
|
|||
}
|
||||
|
||||
fun AppCompatActivity.setNavigationBarColor(color: Int) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
if (VersionUtils.hasOreo()) {
|
||||
window.navigationBarColor = color
|
||||
} else {
|
||||
window.navigationBarColor = ColorUtil.darkenColor(color)
|
||||
|
|
|
@ -49,7 +49,6 @@ import code.name.monkey.retromusic.extensions.*
|
|||
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
|
||||
import code.name.monkey.retromusic.glide.GlideApp
|
||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
||||
import code.name.monkey.retromusic.glide.SingleColorTarget
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||
import code.name.monkey.retromusic.helper.SortOrder.AlbumSongSortOrder.Companion.SONG_A_Z
|
||||
|
@ -68,7 +67,6 @@ import code.name.monkey.retromusic.util.MusicUtil
|
|||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.RetroColorUtil
|
||||
import code.name.monkey.retromusic.util.RetroUtil
|
||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
||||
import com.afollestad.materialcab.attached.AttachedCab
|
||||
import com.afollestad.materialcab.attached.destroy
|
||||
import com.afollestad.materialcab.attached.isActive
|
||||
|
@ -307,7 +305,7 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det
|
|||
detailsViewModel.getMoreAlbums(artist).observe(viewLifecycleOwner) {
|
||||
moreAlbums(it)
|
||||
}
|
||||
GlideApp.with(requireContext()).asBitmapPalette().artistImageOptions(artist)
|
||||
GlideApp.with(requireContext())
|
||||
//.forceDownload(PreferenceUtil.isAllowedToDownloadMetadata())
|
||||
.load(
|
||||
RetroGlideExtension.getArtistModel(
|
||||
|
@ -315,12 +313,10 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det
|
|||
PreferenceUtil.isAllowedToDownloadMetadata()
|
||||
)
|
||||
)
|
||||
.artistImageOptions(artist)
|
||||
.dontAnimate()
|
||||
.dontTransform()
|
||||
.into(object : RetroMusicColoredTarget(binding.artistImage) {
|
||||
override fun onColorReady(colors: MediaNotificationProcessor) {
|
||||
}
|
||||
})
|
||||
.into(binding.artistImage)
|
||||
}
|
||||
|
||||
private fun loadAlbumCover(album: Album) {
|
||||
|
|
|
@ -22,7 +22,6 @@ import android.content.Intent
|
|||
import android.graphics.drawable.AnimatedVectorDrawable
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.media.MediaMetadataRetriever
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.provider.MediaStore
|
||||
import android.view.GestureDetector
|
||||
|
@ -297,7 +296,7 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMainActivityFragme
|
|||
playerAlbumCoverFragment = whichFragment(R.id.playerAlbumCoverFragment)
|
||||
playerAlbumCoverFragment?.setCallbacks(this)
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
|
||||
if (VersionUtils.hasMarshmallow())
|
||||
view.findViewById<RelativeLayout>(R.id.statusBarShadow)?.hide()
|
||||
}
|
||||
|
||||
|
|
|
@ -181,14 +181,13 @@ class HomeFragment :
|
|||
private fun loadProfile() {
|
||||
binding.bannerImage?.let {
|
||||
GlideApp.with(requireContext())
|
||||
.asBitmap()
|
||||
.profileBannerOptions(RetroGlideExtension.getBannerModel())
|
||||
.load(RetroGlideExtension.getBannerModel())
|
||||
.profileBannerOptions(RetroGlideExtension.getBannerModel())
|
||||
.into(it)
|
||||
}
|
||||
GlideApp.with(requireActivity()).asBitmap()
|
||||
.userProfileOptions(RetroGlideExtension.getUserModel())
|
||||
GlideApp.with(requireActivity())
|
||||
.load(RetroGlideExtension.getUserModel())
|
||||
.userProfileOptions(RetroGlideExtension.getUserModel())
|
||||
.into(binding.userImage)
|
||||
}
|
||||
|
||||
|
@ -273,9 +272,8 @@ class HomeFragment :
|
|||
}
|
||||
}
|
||||
GlideApp.with(this)
|
||||
.asBitmap()
|
||||
.songCoverOptions(songs[index])
|
||||
.load(RetroGlideExtension.getSongModel(songs[index]))
|
||||
.songCoverOptions(songs[index])
|
||||
.into(imageView)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -114,10 +114,9 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(R.layout.fragment_mini_p
|
|||
private fun updateSongCover() {
|
||||
val song = MusicPlayerRemote.currentSong
|
||||
GlideApp.with(requireContext())
|
||||
.asBitmap()
|
||||
.songCoverOptions(song)
|
||||
.transition(RetroGlideExtension.getDefaultTransition())
|
||||
.load(RetroGlideExtension.getSongModel(song))
|
||||
.transition(RetroGlideExtension.getDefaultTransition())
|
||||
.songCoverOptions(song)
|
||||
.into(binding.image)
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,6 @@ import code.name.monkey.retromusic.fragments.base.goToArtist
|
|||
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
|
||||
import code.name.monkey.retromusic.glide.GlideApp
|
||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
||||
|
@ -134,12 +133,10 @@ class FullPlayerFragment : AbsPlayerFragment(R.layout.fragment_full) {
|
|||
libraryViewModel.artist(MusicPlayerRemote.currentSong.artistId)
|
||||
.observe(viewLifecycleOwner) { artist ->
|
||||
if (artist.id != -1L) {
|
||||
GlideApp.with(requireActivity()).asBitmapPalette().artistImageOptions(artist)
|
||||
GlideApp.with(requireActivity())
|
||||
.load(RetroGlideExtension.getArtistModel(artist))
|
||||
.into(object : RetroMusicColoredTarget(binding.artistImage) {
|
||||
override fun onColorReady(colors: MediaNotificationProcessor) {
|
||||
}
|
||||
})
|
||||
.artistImageOptions(artist)
|
||||
.into(binding.artistImage)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -151,17 +148,15 @@ class FullPlayerFragment : AbsPlayerFragment(R.layout.fragment_full) {
|
|||
}
|
||||
|
||||
private fun updateLabel() {
|
||||
(MusicPlayerRemote.playingQueue.size - 1).apply {
|
||||
if (this == (MusicPlayerRemote.position)) {
|
||||
binding.nextSongLabel.setText(R.string.last_song)
|
||||
binding.nextSong.hide()
|
||||
} else {
|
||||
val title = MusicPlayerRemote.playingQueue[MusicPlayerRemote.position + 1].title
|
||||
binding.nextSongLabel.setText(R.string.next_song)
|
||||
binding.nextSong.apply {
|
||||
text = title
|
||||
show()
|
||||
}
|
||||
if ((MusicPlayerRemote.playingQueue.size - 1) == (MusicPlayerRemote.position)) {
|
||||
binding.nextSongLabel.setText(R.string.last_song)
|
||||
binding.nextSong.hide()
|
||||
} else {
|
||||
val title = MusicPlayerRemote.playingQueue[MusicPlayerRemote.position + 1].title
|
||||
binding.nextSongLabel.setText(R.string.next_song)
|
||||
binding.nextSong.apply {
|
||||
text = title
|
||||
show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ import android.view.animation.LinearInterpolator
|
|||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.core.content.getSystemService
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.databinding.FragmentTinyPlayerBinding
|
||||
import code.name.monkey.retromusic.extensions.drawAboveSystemBars
|
||||
|
@ -283,7 +284,7 @@ class TinyPlayerFragment : AbsPlayerFragment(R.layout.fragment_tiny_player),
|
|||
@Suppress("Deprecation")
|
||||
private fun vibrate() {
|
||||
val v = requireContext().getSystemService<Vibrator>()
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
if (VersionUtils.hasOreo()) {
|
||||
v?.vibrate(VibrationEffect.createOneShot(10, VibrationEffect.DEFAULT_AMPLITUDE))
|
||||
} else {
|
||||
v?.vibrate(10)
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
package code.name.monkey.retromusic.fragments.settings
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.TwoStatePreference
|
||||
|
@ -48,7 +47,7 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
|
|||
setSummary(it, newValue)
|
||||
ThemeStore.markChanged(requireContext())
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
|
||||
if (VersionUtils.hasNougatMR()) {
|
||||
requireActivity().setTheme(PreferenceUtil.themeResFromPrefValue(theme))
|
||||
DynamicShortcutManager(requireContext()).updateDynamicShortcuts()
|
||||
}
|
||||
|
@ -83,7 +82,7 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
|
|||
return@setOnPreferenceChangeListener false
|
||||
}
|
||||
ThemeStore.markChanged(requireContext())
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
|
||||
if (VersionUtils.hasNougatMR()) {
|
||||
requireActivity().setTheme(PreferenceUtil.themeResFromPrefValue("black"))
|
||||
DynamicShortcutManager(requireContext()).updateDynamicShortcuts()
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import android.os.Environment
|
|||
import android.provider.MediaStore
|
||||
import android.provider.MediaStore.Audio.AudioColumns
|
||||
import android.provider.MediaStore.Audio.Media
|
||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||
import code.name.monkey.retromusic.Constants.IS_MUSIC
|
||||
import code.name.monkey.retromusic.Constants.baseProjection
|
||||
import code.name.monkey.retromusic.extensions.getInt
|
||||
|
@ -188,7 +189,7 @@ class RealSongRepository(private val context: Context) : SongRepository {
|
|||
selectionFinal =
|
||||
selectionFinal + " AND " + Media.DURATION + ">= " + (PreferenceUtil.filterLength * 1000)
|
||||
}
|
||||
val uri = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
|
||||
val uri = if (VersionUtils.hasQ()) {
|
||||
Media.getContentUri(MediaStore.VOLUME_EXTERNAL)
|
||||
} else {
|
||||
Media.EXTERNAL_CONTENT_URI
|
||||
|
|
|
@ -1146,9 +1146,10 @@ class MusicService : MediaBrowserServiceCompat(),
|
|||
if (isAlbumArtOnLockScreen) {
|
||||
val screenSize = RetroUtil.getScreenSize(this@MusicService)
|
||||
val request: RequestBuilder<Bitmap> =
|
||||
GlideApp.with(this@MusicService).asBitmap().songCoverOptions(song).load(
|
||||
getSongModel(song)
|
||||
)
|
||||
GlideApp.with(this@MusicService)
|
||||
.asBitmap()
|
||||
.songCoverOptions(song)
|
||||
.load(getSongModel(song))
|
||||
if (isBlurredAlbumArt) {
|
||||
request.transform(BlurTransformation.Builder(this@MusicService).build())
|
||||
}
|
||||
|
|
|
@ -23,7 +23,6 @@ import android.content.Intent
|
|||
import android.graphics.Bitmap
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.os.Build
|
||||
import android.widget.RemoteViews
|
||||
import androidx.core.app.NotificationCompat
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil.resolveColor
|
||||
|
@ -324,7 +323,7 @@ class PlayingNotificationClassic(
|
|||
context: Context,
|
||||
notificationManager: NotificationManager
|
||||
): PlayingNotification {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
if (VersionUtils.hasOreo()) {
|
||||
createNotificationChannel(context, notificationManager)
|
||||
}
|
||||
return PlayingNotificationClassic(context)
|
||||
|
|
|
@ -232,7 +232,7 @@ class PlayingNotificationImpl24(
|
|||
notificationManager: NotificationManager,
|
||||
mediaSession: MediaSessionCompat
|
||||
): PlayingNotification {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
if (VersionUtils.hasOreo()) {
|
||||
createNotificationChannel(context, notificationManager)
|
||||
}
|
||||
return PlayingNotificationImpl24(context, mediaSession.sessionToken)
|
||||
|
|
|
@ -49,6 +49,7 @@ import java.util.Collections;
|
|||
import java.util.List;
|
||||
|
||||
import code.name.monkey.appthemehelper.util.TintHelper;
|
||||
import code.name.monkey.appthemehelper.util.VersionUtils;
|
||||
import code.name.monkey.retromusic.App;
|
||||
|
||||
public class RetroUtil {
|
||||
|
|
|
@ -22,6 +22,8 @@ import android.provider.BaseColumns
|
|||
import android.provider.MediaStore
|
||||
import android.provider.Settings
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.RequiresApi
|
||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.util.MusicUtil.getSongFileUri
|
||||
|
@ -55,7 +57,7 @@ class RingtoneManager(val context: Context) {
|
|||
companion object {
|
||||
|
||||
fun requiresDialog(context: Context): Boolean {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (VersionUtils.hasMarshmallow()) {
|
||||
if (!Settings.System.canWrite(context)) {
|
||||
return true
|
||||
}
|
||||
|
|
|
@ -8,10 +8,11 @@
|
|||
|
||||
<code.name.monkey.retromusic.views.TopAppBarLayout
|
||||
android:id="@+id/appBarLayout"
|
||||
style="?appBarLayoutStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="?appBarLayoutStyle"
|
||||
android:fitsSystemWindows="true" />
|
||||
android:fitsSystemWindows="true"
|
||||
android:theme="@style/CenteredCheckBoxTheme" />
|
||||
|
||||
<code.name.monkey.retromusic.views.insets.InsetsRecyclerView
|
||||
android:id="@+id/recycler_view"
|
||||
|
|
|
@ -28,8 +28,9 @@
|
|||
|
||||
<com.google.android.material.checkbox.MaterialCheckBox
|
||||
android:id="@+id/checkbox"
|
||||
style="@style/Widget.Material3.CompoundButton.CheckBox"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:focusable="false"
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
<item name="cornerSize">0dp</item>
|
||||
</style>
|
||||
|
||||
|
||||
<style name="SplashTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
|
||||
<item name="android:windowBackground">@drawable/splash</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
|
@ -134,6 +133,14 @@
|
|||
<style name="MaterialPopupMenuStyle" parent="Widget.Material3.PopupMenu">
|
||||
<item name="android:popupBackground">@drawable/popup_background</item>
|
||||
</style>
|
||||
|
||||
<style name="CenteredCheckBoxTheme">
|
||||
<item name="checkboxStyle">@style/CheckBoxStyle</item>
|
||||
</style>
|
||||
|
||||
<style name="CheckBoxStyle" parent="@style/Widget.AppCompat.CompoundButton.CheckBox">
|
||||
<item name="android:gravity">center_vertical|end</item>
|
||||
</style>
|
||||
|
||||
<style name="MaterialAlertDialogTheme" parent="ThemeOverlay.Material3.MaterialAlertDialog">
|
||||
<item name="materialAlertDialogBodyTextStyle">
|
||||
|
@ -180,7 +187,6 @@
|
|||
<item name="android:paddingBottom">@dimen/button_padding_vertical</item>
|
||||
</style>
|
||||
|
||||
|
||||
<style name="BottomSheetStyle" parent="Widget.Material3.BottomSheet">
|
||||
<item name="android:maxWidth">@empty</item>
|
||||
</style>
|
||||
|
|
|
@ -14,7 +14,7 @@ buildscript {
|
|||
google()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:7.1.1'
|
||||
classpath 'com.android.tools.build:gradle:7.1.2'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navigation_version"
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue