Skip to content

Commit

Permalink
Merge pull request #1352 from prathameshmm02/dev
Browse files Browse the repository at this point in the history
More bug fixes
  • Loading branch information
Daksh777 committed May 13, 2022
2 parents b6294db + 4b51be2 commit 29671a3
Show file tree
Hide file tree
Showing 31 changed files with 212 additions and 88 deletions.
2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ android {
vectorDrawables.useSupportLibrary = true

applicationId "code.name.monkey.retromusic"
versionCode 10577
versionCode 10579
versionName '5.8.4'

buildConfigField("String", "GOOGLE_PLAY_LICENSING_KEY", "\"${getProperty(getProperties('../public.properties'), 'GOOGLE_PLAY_LICENSE_KEY')}\"")
Expand Down
5 changes: 5 additions & 0 deletions app/src/debug/res/values/bools.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="md3_available">true</bool>
<bool name="allowBackup">false</bool>
</resources>
3 changes: 0 additions & 3 deletions app/src/debug/res/values/donottranslate.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name" translatable="false">Retro Music-Debug</string>

<bool name="md3_available">true</bool>
<bool name="allowBackup">false</bool>
</resources>
1 change: 1 addition & 0 deletions app/src/main/assets/retro-changelog.html
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ <h3>What's New</h3>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed Playback speed and pitch not working when CrossFade is enabled</li>
<li>Fixed crash when adding folders to blacklist</li>
<li>Fix bugs in MD3 theme</li>
</ul>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
package code.name.monkey.retromusic.activities

import android.Manifest
import android.Manifest.permission.BLUETOOTH_CONNECT
import android.content.Intent
import android.content.pm.PackageManager
import android.content.res.ColorStateList
Expand Down Expand Up @@ -49,14 +50,23 @@ class PermissionActivity : AbsMusicServiceActivity() {
if (VersionUtils.hasMarshmallow()) {
binding.audioPermission.show()
binding.audioPermission.setButtonClick {
if (hasAudioPermission()) {
if (!hasAudioPermission()) {
val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
intent.data = ("package:" + applicationContext.packageName).toUri()
startActivity(intent)
}
}
}

if (VersionUtils.hasS()) {
binding.bluetoothPermission.show()
binding.bluetoothPermission.setButtonClick {
ActivityCompat.requestPermissions(this,
arrayOf(BLUETOOTH_CONNECT),
PERMISSION_REQUEST)
}
}

binding.finish.accentBackgroundColor()
binding.finish.setOnClickListener {
if (hasPermissions()) {
Expand All @@ -83,6 +93,7 @@ class PermissionActivity : AbsMusicServiceActivity() {

override fun onResume() {
super.onResume()
binding.finish.isEnabled = hasStoragePermission()
if (hasStoragePermission()) {
binding.storagePermission.checkImage.isVisible = true
binding.storagePermission.checkImage.imageTintList =
Expand All @@ -95,13 +106,26 @@ class PermissionActivity : AbsMusicServiceActivity() {
ColorStateList.valueOf(accentColor())
}
}
if (VersionUtils.hasS()) {
if (hasBluetoothPermission()) {
binding.bluetoothPermission.checkImage.isVisible = true
binding.bluetoothPermission.checkImage.imageTintList =
ColorStateList.valueOf(accentColor())
}
}
}

private fun hasStoragePermission(): Boolean {
return ActivityCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
}

@RequiresApi(Build.VERSION_CODES.S)
private fun hasBluetoothPermission(): Boolean {
return ActivityCompat.checkSelfPermission(this,
BLUETOOTH_CONNECT) == PackageManager.PERMISSION_GRANTED
}

@RequiresApi(Build.VERSION_CODES.M)
private fun hasAudioPermission(): Boolean {
return Settings.System.canWrite(this)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
*/
package code.name.monkey.retromusic.activities

import android.Manifest.permission.BLUETOOTH_CONNECT
import android.content.Intent
import android.os.Bundle
import android.view.MenuItem
Expand All @@ -22,21 +23,22 @@ import androidx.navigation.NavDestination
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.base.AbsThemeActivity
import code.name.monkey.retromusic.activities.base.AbsBaseActivity
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager
import code.name.monkey.retromusic.databinding.ActivitySettingsBinding
import code.name.monkey.retromusic.extensions.*
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.color.ColorCallback

class SettingsActivity : AbsThemeActivity(), ColorCallback, OnThemeChangedListener {
class SettingsActivity : AbsBaseActivity(), ColorCallback, OnThemeChangedListener {
private lateinit var binding: ActivitySettingsBinding
override fun onCreate(savedInstanceState: Bundle?) {
val mSavedInstanceState = extra<Bundle>(TAG).value ?: savedInstanceState
super.onCreate(mSavedInstanceState)
binding = ActivitySettingsBinding.inflate(layoutInflater)
setContentView(binding.root)
setupToolbar()
setPermissionDeniedMessage(getString(R.string.permission_bluetooth_denied))
}

override fun onResume() {
Expand Down Expand Up @@ -81,6 +83,14 @@ class SettingsActivity : AbsThemeActivity(), ColorCallback, OnThemeChangedListen
return super.onOptionsItemSelected(item)
}

override fun getPermissionsToRequest(): Array<String> {
return if (VersionUtils.hasS()) {
arrayOf(BLUETOOTH_CONNECT)
} else {
arrayOf()
}
}

override fun invoke(dialog: MaterialDialog, color: Int) {
ThemeStore.editTheme(this).accentColor(color).commit()
if (VersionUtils.hasNougatMR())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,9 @@ abstract class AbsBaseActivity : AbsThemeActivity() {

protected fun hasPermissions(): Boolean {
for (permission in permissions) {
if (ActivityCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.checkSelfPermission(this,
permission) != PackageManager.PERMISSION_GRANTED
) {
return false
}
}
Expand All @@ -105,7 +107,7 @@ abstract class AbsBaseActivity : AbsThemeActivity() {
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
grantResults: IntArray,
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == PERMISSION_REQUEST) {
Expand All @@ -123,6 +125,22 @@ abstract class AbsBaseActivity : AbsThemeActivity() {
)
.setAction(R.string.action_grant) { requestPermissions() }
.setActionTextColor(accentColor()).show()
} else if (ActivityCompat.shouldShowRequestPermissionRationale(
this@AbsBaseActivity, Manifest.permission.BLUETOOTH_CONNECT
)
) {
// User has deny from permission dialog
Snackbar.make(
snackBarContainer,
R.string.permission_bluetooth_denied,
Snackbar.LENGTH_INDEFINITE
)
.setAction(R.string.action_grant) {
ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.BLUETOOTH_CONNECT),
PERMISSION_REQUEST)
}
.setActionTextColor(accentColor()).show()
} else {
// User has deny permission and checked never show permission dialog so you can redirect to Application settings page
Snackbar.make(
Expand Down Expand Up @@ -154,7 +172,7 @@ abstract class AbsBaseActivity : AbsThemeActivity() {
const val PERMISSION_REQUEST = 100
}

// this lets keyboard close when clicked in backgroud
// this lets keyboard close when clicked in background
override fun dispatchTouchEvent(event: MotionEvent): Boolean {
if (event.action == MotionEvent.ACTION_DOWN) {
val v = currentFocus
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,11 +189,7 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi
}

override fun getPermissionsToRequest(): Array<String> {
return mutableListOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
if (VersionUtils.hasS()) Manifest.permission.BLUETOOTH_CONNECT
else Manifest.permission.BLUETOOTH
).apply {
return mutableListOf(Manifest.permission.READ_EXTERNAL_STORAGE).apply {
if (!VersionUtils.hasQ()) {
add(Manifest.permission.WRITE_EXTERNAL_STORAGE)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
private fun setupBottomSheet() {
bottomSheetBehavior = from(binding.slidingPanel)
bottomSheetBehavior.addBottomSheetCallback(bottomSheetCallbackList)
if (PreferenceUtil.swipeDownToDismiss) bottomSheetBehavior.isHideable = true
bottomSheetBehavior.isHideable = PreferenceUtil.swipeDownToDismiss
setMiniPlayerAlphaProgress(0F)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener
import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.ViewUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetBehavior.*
Expand Down Expand Up @@ -264,11 +263,8 @@ class GradientPlayerFragment : AbsPlayerFragment(R.layout.fragment_gradient_play
binding.playbackControlsFragment.songInfo.setTextColor(lastDisabledPlaybackControlsColor)

volumeFragment?.setTintableColor(lastPlaybackControlsColor.ripAlpha())
ViewUtil.setProgressDrawable(
binding.playbackControlsFragment.progressSlider,
lastPlaybackControlsColor.ripAlpha(),
true
)

binding.playbackControlsFragment.progressSlider.applyColor(lastPlaybackControlsColor.ripAlpha())

updateRepeatState()
updateShuffleState()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,15 @@
*/
package code.name.monkey.retromusic.fragments.settings

import android.Manifest.permission.BLUETOOTH_CONNECT
import android.content.Intent
import android.content.pm.PackageManager.PERMISSION_GRANTED
import android.media.audiofx.AudioEffect
import android.os.Bundle
import androidx.core.app.ActivityCompat
import androidx.preference.Preference
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.BLUETOOTH_PLAYBACK
import code.name.monkey.retromusic.EQUALIZER
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.util.NavigationUtil
Expand All @@ -28,17 +33,31 @@ import code.name.monkey.retromusic.util.NavigationUtil

class AudioSettings : AbsSettingsFragment() {
override fun invalidateSettings() {
val findPreference: Preference? = findPreference(EQUALIZER)
val eqPreference: Preference? = findPreference(EQUALIZER)
if (!hasEqualizer()) {
findPreference?.isEnabled = false
findPreference?.summary = resources.getString(R.string.no_equalizer)
eqPreference?.isEnabled = false
eqPreference?.summary = resources.getString(R.string.no_equalizer)
} else {
findPreference?.isEnabled = true
eqPreference?.isEnabled = true
}
findPreference?.setOnPreferenceClickListener {
eqPreference?.setOnPreferenceClickListener {
NavigationUtil.openEqualizer(requireActivity())
true
}
val bluetoothPreference: Preference? = findPreference(BLUETOOTH_PLAYBACK)
if (VersionUtils.hasS()) {
bluetoothPreference?.setOnPreferenceChangeListener { _, newValue ->
if (newValue as Boolean) {
if (ActivityCompat.checkSelfPermission(requireContext(),
BLUETOOTH_CONNECT) != PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(requireActivity(), arrayOf(
BLUETOOTH_CONNECT), 100)
}
}
return@setOnPreferenceChangeListener true
}
}
}

private fun hasEqualizer(): Boolean {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ import android.content.Intent
import android.media.AudioAttributes
import android.media.AudioManager
import android.media.MediaPlayer
import android.media.PlaybackParams
import android.media.audiofx.AudioEffect
import android.os.PowerManager
import android.util.Log
import androidx.core.net.toUri
import code.name.monkey.appthemehelper.util.VersionUtils.hasMarshmallow
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.showToast
import code.name.monkey.retromusic.helper.MusicPlayerRemote
Expand All @@ -18,6 +20,8 @@ import code.name.monkey.retromusic.service.playback.Playback
import code.name.monkey.retromusic.service.playback.Playback.PlaybackCallbacks
import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.PreferenceUtil.playbackPitch
import code.name.monkey.retromusic.util.PreferenceUtil.playbackSpeed
import kotlinx.coroutines.*

/** @author Prathamesh M */
Expand Down Expand Up @@ -138,7 +142,7 @@ class CrossFadePlayer(val context: Context) : Playback, MediaPlayer.OnCompletion

/**
* @param player The {@link MediaPlayer} to use
* @param path The path of the file, or the http/rtsp URL of the stream you want to play
* @param path The path of the file, or the http/rtsp URL of the stream you want to play
* @return True if the <code>player</code> has been prepared and is ready to play, false otherwise
*/
private fun setDataSourceImpl(
Expand All @@ -157,6 +161,7 @@ class CrossFadePlayer(val context: Context) : Playback, MediaPlayer.OnCompletion
AudioAttributes.Builder().setLegacyStreamType(AudioManager.STREAM_MUSIC).build()
)
player.prepare()
player.setPlaybackSpeedPitch(playbackSpeed, playbackPitch)
} catch (e: Exception) {
e.printStackTrace()
return false
Expand Down Expand Up @@ -341,6 +346,20 @@ class CrossFadePlayer(val context: Context) : Playback, MediaPlayer.OnCompletion
crossFadeDuration = duration
}

override fun setPlaybackSpeedPitch(speed: Float, pitch: Float) {
getCurrentPlayer()?.setPlaybackSpeedPitch(speed, pitch)
}

private fun MediaPlayer.setPlaybackSpeedPitch(speed: Float, pitch: Float) {
if (hasMarshmallow()) {
val wasPlaying: Boolean = isPlaying
playbackParams = PlaybackParams().setSpeed(speed).setPitch(pitch)
if (!wasPlaying) {
if (isPlaying) pause()
}
}
}

companion object {
val TAG: String = CrossFadePlayer::class.java.simpleName
}
Expand Down

0 comments on commit 29671a3

Please sign in to comment.