更改包名应用名logo
This commit is contained in:
parent
e501607528
commit
e97a408286
@ -9,19 +9,19 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "relax.offline.music"
|
namespace = "melody.offline.music"
|
||||||
compileSdk = 34
|
compileSdk = 34
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "relax.offline.mp3.music"
|
applicationId = "com.hi.melody.music.noise"
|
||||||
minSdk = 24
|
minSdk = 24
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 4
|
versionCode = 1
|
||||||
versionName = "1.0.4"
|
versionName = "1.0.1"
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|
||||||
setProperty("archivesBaseName", "Musiclax_${defaultConfig.versionName}(${defaultConfig.versionCode})")
|
setProperty("archivesBaseName", "HiMelody_${defaultConfig.versionName}(${defaultConfig.versionCode})")
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
|||||||
@ -1,21 +1,21 @@
|
|||||||
{
|
{
|
||||||
"project_info": {
|
"project_info": {
|
||||||
"project_number": "320083292372",
|
"project_number": "550960818622",
|
||||||
"project_id": "musiclax-and",
|
"project_id": "himelody-and",
|
||||||
"storage_bucket": "musiclax-and.appspot.com"
|
"storage_bucket": "himelody-and.appspot.com"
|
||||||
},
|
},
|
||||||
"client": [
|
"client": [
|
||||||
{
|
{
|
||||||
"client_info": {
|
"client_info": {
|
||||||
"mobilesdk_app_id": "1:320083292372:android:047dd51c4c373acf9a8b41",
|
"mobilesdk_app_id": "1:550960818622:android:96fd4141e43410fb24f1ef",
|
||||||
"android_client_info": {
|
"android_client_info": {
|
||||||
"package_name": "relax.offline.mp3.music"
|
"package_name": "com.hi.melody.music.noise"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"oauth_client": [],
|
"oauth_client": [],
|
||||||
"api_key": [
|
"api_key": [
|
||||||
{
|
{
|
||||||
"current_key": "AIzaSyCs8V_b7UYuUfcs_mAWIAbr06VZKBM-680"
|
"current_key": "AIzaSyCp3XR60onMqiGj9pD8ADmrDEOOn__sQDk"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"services": {
|
"services": {
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music
|
package melody.offline.music
|
||||||
|
|
||||||
import androidx.test.platform.app.InstrumentationRegistry
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name="relax.offline.music.App"
|
android:name="melody.offline.music.App"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:dataExtractionRules="@xml/data_extraction_rules"
|
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||||
android:fullBackupContent="@xml/backup_rules"
|
android:fullBackupContent="@xml/backup_rules"
|
||||||
@ -27,7 +27,7 @@
|
|||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:roundIcon="@mipmap/app_logo"
|
android:roundIcon="@mipmap/app_logo"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/Theme.Musiclax"
|
android:theme="@style/Theme.HiMelody"
|
||||||
tools:targetApi="31">
|
tools:targetApi="31">
|
||||||
<activity
|
<activity
|
||||||
android:name=".activity.LaunchActivity"
|
android:name=".activity.LaunchActivity"
|
||||||
|
|||||||
@ -1,30 +1,30 @@
|
|||||||
package relax.offline.music
|
package melody.offline.music
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.annotation.OptIn
|
import androidx.annotation.OptIn
|
||||||
import androidx.media3.common.util.UnstableApi
|
import androidx.media3.common.util.UnstableApi
|
||||||
import relax.offline.music.bean.Audio
|
import melody.offline.music.bean.Audio
|
||||||
import relax.offline.music.bean.CurrentPlayingAudio
|
import melody.offline.music.bean.CurrentPlayingAudio
|
||||||
import relax.offline.music.bean.ResourcesList
|
import melody.offline.music.bean.ResourcesList
|
||||||
import relax.offline.music.database.AppOfflineDBManager
|
import melody.offline.music.database.AppOfflineDBManager
|
||||||
import relax.offline.music.database.CurrentAudioManager
|
import melody.offline.music.database.CurrentAudioManager
|
||||||
import relax.offline.music.database.DatabaseManager
|
import melody.offline.music.database.DatabaseManager
|
||||||
import relax.offline.music.media.LocalMediaControllerManager
|
import melody.offline.music.media.LocalMediaControllerManager
|
||||||
import relax.offline.music.media.MediaControllerManager
|
import melody.offline.music.media.MediaControllerManager
|
||||||
import relax.offline.music.util.CacheManager
|
import melody.offline.music.util.CacheManager
|
||||||
import relax.offline.music.util.DownloadUtil
|
import melody.offline.music.util.DownloadUtil
|
||||||
import relax.offline.music.util.parseResources
|
import melody.offline.music.util.parseResources
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import relax.offline.music.database.AppFavoriteDBManager
|
import melody.offline.music.database.AppFavoriteDBManager
|
||||||
import relax.offline.music.firebase.RemoteConfig
|
import melody.offline.music.firebase.RemoteConfig
|
||||||
import relax.offline.music.http.CommonIpInfoUtil
|
import melody.offline.music.http.CommonIpInfoUtil
|
||||||
import relax.offline.music.http.UploadEventName
|
import melody.offline.music.http.UploadEventName
|
||||||
import relax.offline.music.util.AnalysisUtil
|
import melody.offline.music.util.AnalysisUtil
|
||||||
import relax.offline.music.util.AppLifecycleHandler
|
import melody.offline.music.util.AppLifecycleHandler
|
||||||
import java.io.BufferedReader
|
import java.io.BufferedReader
|
||||||
import java.io.InputStreamReader
|
import java.io.InputStreamReader
|
||||||
import java.util.concurrent.atomic.AtomicBoolean
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
@ -1,9 +1,9 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.databinding.ActivityAboutBinding
|
import melody.offline.music.databinding.ActivityAboutBinding
|
||||||
import relax.offline.music.util.getAppVersion
|
import melody.offline.music.util.getAppVersion
|
||||||
|
|
||||||
class AboutActivity : BaseActivity() {
|
class AboutActivity : BaseActivity() {
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
@ -1,15 +1,14 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
|
||||||
import android.os.CountDownTimer
|
import android.os.CountDownTimer
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.databinding.ActivityLaunchBinding
|
import melody.offline.music.databinding.ActivityLaunchBinding
|
||||||
import relax.offline.music.util.AnalysisUtil
|
import melody.offline.music.util.AnalysisUtil
|
||||||
|
|
||||||
class LaunchActivity : MoBaseActivity() {
|
class LaunchActivity : MoBaseActivity() {
|
||||||
private lateinit var binding: ActivityLaunchBinding
|
private lateinit var binding: ActivityLaunchBinding
|
||||||
private val totalTime = 5000L // 5秒
|
private val totalTime = 8000L // 5秒
|
||||||
private val interval = 50L // 更新间隔,毫秒
|
private val interval = 50L // 更新间隔,毫秒
|
||||||
private val steps = totalTime / interval
|
private val steps = totalTime / interval
|
||||||
private val progressPerStep = 100f / steps.toFloat()
|
private val progressPerStep = 100f / steps.toFloat()
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
@ -12,14 +12,13 @@ import androidx.fragment.app.FragmentTransaction
|
|||||||
import androidx.media3.common.Player
|
import androidx.media3.common.Player
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.bean.Audio
|
import melody.offline.music.bean.Audio
|
||||||
import relax.offline.music.databinding.ActivityMainBinding
|
import melody.offline.music.databinding.ActivityMainBinding
|
||||||
import relax.offline.music.fragment.HomeFragment
|
import melody.offline.music.fragment.HomeFragment
|
||||||
import relax.offline.music.fragment.ImportFragment
|
import melody.offline.music.fragment.ImportFragment
|
||||||
import relax.offline.music.media.LocalMediaControllerManager
|
import melody.offline.music.media.LocalMediaControllerManager
|
||||||
import relax.offline.music.util.AnalysisUtil
|
import melody.offline.music.util.getAudioDurationFromAssets
|
||||||
import relax.offline.music.util.getAudioDurationFromAssets
|
|
||||||
|
|
||||||
|
|
||||||
class MainActivity : BaseActivity() {
|
class MainActivity : BaseActivity() {
|
||||||
@ -52,11 +51,11 @@ class MainActivity : BaseActivity() {
|
|||||||
super.onResume()
|
super.onResume()
|
||||||
val currentPlayer = LocalMediaControllerManager.getController()
|
val currentPlayer = LocalMediaControllerManager.getController()
|
||||||
|
|
||||||
if (relax.offline.music.App.currentPlayingAudio == null) {
|
if (melody.offline.music.App.currentPlayingAudio == null) {
|
||||||
binding.playingStatusLayout.visibility = View.GONE
|
binding.playingStatusLayout.visibility = View.GONE
|
||||||
} else {
|
} else {
|
||||||
binding.playingStatusLayout.visibility = View.VISIBLE
|
binding.playingStatusLayout.visibility = View.VISIBLE
|
||||||
val currentAudio = relax.offline.music.App.currentPlayingAudio
|
val currentAudio = melody.offline.music.App.currentPlayingAudio
|
||||||
|
|
||||||
val maxProgress = try {
|
val maxProgress = try {
|
||||||
getAudioDurationFromAssets(this, currentAudio?.file!!)
|
getAudioDurationFromAssets(this, currentAudio?.file!!)
|
||||||
@ -97,7 +96,7 @@ class MainActivity : BaseActivity() {
|
|||||||
updateBtnState(1)
|
updateBtnState(1)
|
||||||
}
|
}
|
||||||
binding.playingStatusLayout.setOnClickListener {
|
binding.playingStatusLayout.setOnClickListener {
|
||||||
val currentAudio = relax.offline.music.App.currentPlayingAudio
|
val currentAudio = melody.offline.music.App.currentPlayingAudio
|
||||||
val duration = try {
|
val duration = try {
|
||||||
getAudioDurationFromAssets(
|
getAudioDurationFromAssets(
|
||||||
this, currentAudio?.file!!
|
this, currentAudio?.file!!
|
||||||
@ -131,7 +130,7 @@ class MainActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
updateProgressState()
|
updateProgressState()
|
||||||
} else {
|
} else {
|
||||||
LocalMediaControllerManager.setupMedia(this@MainActivity, relax.offline.music.App.currentPlayingAudio!!,
|
LocalMediaControllerManager.setupMedia(this@MainActivity, melody.offline.music.App.currentPlayingAudio!!,
|
||||||
object : Player.Listener {
|
object : Player.Listener {
|
||||||
override fun onPlayWhenReadyChanged(
|
override fun onPlayWhenReadyChanged(
|
||||||
playWhenReady: Boolean,
|
playWhenReady: Boolean,
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
@ -28,16 +28,16 @@ import kotlinx.coroutines.channels.Channel
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import relax.offline.music.App
|
import melody.offline.music.App
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.bean.FavoriteBean
|
import melody.offline.music.bean.FavoriteBean
|
||||||
import relax.offline.music.bean.OfflineBean
|
import melody.offline.music.bean.OfflineBean
|
||||||
import relax.offline.music.http.getAppVersionCode
|
import melody.offline.music.http.getAppVersionCode
|
||||||
import relax.offline.music.media.MediaControllerManager
|
import melody.offline.music.media.MediaControllerManager
|
||||||
import relax.offline.music.sp.AppStore
|
import melody.offline.music.sp.AppStore
|
||||||
import relax.offline.music.util.LogTag
|
import melody.offline.music.util.LogTag
|
||||||
import relax.offline.music.http.getCountryCode
|
import melody.offline.music.http.getCountryCode
|
||||||
import relax.offline.music.view.MusicPlayerView
|
import melody.offline.music.view.MusicPlayerView
|
||||||
|
|
||||||
@OptIn(UnstableApi::class)
|
@OptIn(UnstableApi::class)
|
||||||
abstract class MoBaseActivity : AppCompatActivity(), CoroutineScope by MainScope(),
|
abstract class MoBaseActivity : AppCompatActivity(), CoroutineScope by MainScope(),
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.view.View
|
import android.view.View
|
||||||
@ -7,10 +7,10 @@ import com.gyf.immersionbar.ktx.immersionBar
|
|||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.selects.select
|
import kotlinx.coroutines.selects.select
|
||||||
import relax.offline.music.App
|
import melody.offline.music.App
|
||||||
import relax.offline.music.adapter.LikedSongsAdapter
|
import melody.offline.music.adapter.LikedSongsAdapter
|
||||||
import relax.offline.music.bean.FavoriteBean
|
import melody.offline.music.bean.FavoriteBean
|
||||||
import relax.offline.music.databinding.ActivityLikedSongsBinding
|
import melody.offline.music.databinding.ActivityLikedSongsBinding
|
||||||
|
|
||||||
class MoLikedSongsActivity : MoBaseActivity(), LikedSongsAdapter.OnItemFavoritesClickListener {
|
class MoLikedSongsActivity : MoBaseActivity(), LikedSongsAdapter.OnItemFavoritesClickListener {
|
||||||
|
|
||||||
@ -1,15 +1,15 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.adapter.DetailsListAdapter
|
import melody.offline.music.adapter.DetailsListAdapter
|
||||||
import relax.offline.music.databinding.ActivityDetailsBinding
|
import melody.offline.music.databinding.ActivityDetailsBinding
|
||||||
import relax.offline.music.innertube.Innertube
|
import melody.offline.music.innertube.Innertube
|
||||||
import relax.offline.music.innertube.requests.moPlaylistPage
|
import melody.offline.music.innertube.requests.moPlaylistPage
|
||||||
import relax.offline.music.util.LogTag.LogD
|
import melody.offline.music.util.LogTag.LogD
|
||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.selects.select
|
import kotlinx.coroutines.selects.select
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.view.View
|
import android.view.View
|
||||||
@ -7,11 +7,10 @@ import com.gyf.immersionbar.ktx.immersionBar
|
|||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.selects.select
|
import kotlinx.coroutines.selects.select
|
||||||
import relax.offline.music.App
|
import melody.offline.music.App
|
||||||
import relax.offline.music.adapter.OfflineSongsAdapter
|
import melody.offline.music.adapter.OfflineSongsAdapter
|
||||||
import relax.offline.music.bean.OfflineBean
|
import melody.offline.music.bean.OfflineBean
|
||||||
import relax.offline.music.databinding.ActivityOfflineSongsBinding
|
import melody.offline.music.databinding.ActivityOfflineSongsBinding
|
||||||
import relax.offline.music.util.LogTag.LogD
|
|
||||||
|
|
||||||
class MoOfflineSongsActivity : MoBaseActivity() {
|
class MoOfflineSongsActivity : MoBaseActivity() {
|
||||||
private val requests: Channel<Request> = Channel(Channel.UNLIMITED)
|
private val requests: Channel<Request> = Channel(Channel.UNLIMITED)
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
@ -15,7 +15,6 @@ import androidx.media3.common.PlaybackException
|
|||||||
import androidx.media3.common.Player
|
import androidx.media3.common.Player
|
||||||
import androidx.media3.common.util.UnstableApi
|
import androidx.media3.common.util.UnstableApi
|
||||||
import androidx.media3.exoplayer.offline.Download
|
import androidx.media3.exoplayer.offline.Download
|
||||||
import androidx.media3.exoplayer.offline.DownloadManager
|
|
||||||
import androidx.media3.exoplayer.offline.DownloadRequest
|
import androidx.media3.exoplayer.offline.DownloadRequest
|
||||||
import androidx.media3.exoplayer.offline.DownloadService
|
import androidx.media3.exoplayer.offline.DownloadService
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
@ -23,30 +22,28 @@ import com.bumptech.glide.Glide
|
|||||||
import com.bumptech.glide.request.target.CustomTarget
|
import com.bumptech.glide.request.target.CustomTarget
|
||||||
import com.bumptech.glide.request.transition.Transition
|
import com.bumptech.glide.request.transition.Transition
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.adapter.PlayListAdapter
|
import melody.offline.music.adapter.PlayListAdapter
|
||||||
import relax.offline.music.databinding.ActivityMoPlayDetailsBinding
|
import melody.offline.music.databinding.ActivityMoPlayDetailsBinding
|
||||||
import relax.offline.music.innertube.Innertube
|
import melody.offline.music.innertube.Innertube
|
||||||
import relax.offline.music.media.MediaControllerManager
|
import melody.offline.music.media.MediaControllerManager
|
||||||
import relax.offline.music.media.SongRadio
|
import melody.offline.music.media.SongRadio
|
||||||
import relax.offline.music.service.MyDownloadService
|
import melody.offline.music.service.MyDownloadService
|
||||||
import relax.offline.music.service.ViewModelMain
|
import melody.offline.music.service.ViewModelMain
|
||||||
import relax.offline.music.sp.AppStore
|
import melody.offline.music.sp.AppStore
|
||||||
import relax.offline.music.util.DownloadUtil
|
import melody.offline.music.util.DownloadUtil
|
||||||
import relax.offline.music.util.LogTag.LogD
|
import melody.offline.music.util.LogTag.LogD
|
||||||
import relax.offline.music.util.PlayMode
|
import melody.offline.music.util.PlayMode
|
||||||
import relax.offline.music.util.asMediaItem
|
import melody.offline.music.util.asMediaItem
|
||||||
import relax.offline.music.util.convertMillisToMinutesAndSecondsString
|
import melody.offline.music.util.convertMillisToMinutesAndSecondsString
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.selects.select
|
import kotlinx.coroutines.selects.select
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import relax.offline.music.App
|
import melody.offline.music.App
|
||||||
import relax.offline.music.bean.FavoriteBean
|
import melody.offline.music.util.AnalysisUtil
|
||||||
import relax.offline.music.util.AnalysisUtil
|
|
||||||
import relax.offline.music.util.LogTag
|
|
||||||
|
|
||||||
@OptIn(UnstableApi::class)
|
@OptIn(UnstableApi::class)
|
||||||
class MoPlayDetailsActivity : MoBaseActivity(), Player.Listener {
|
class MoPlayDetailsActivity : MoBaseActivity(), Player.Listener {
|
||||||
@ -1,15 +1,15 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.adapter.SearchResultOtherAdapter
|
import melody.offline.music.adapter.SearchResultOtherAdapter
|
||||||
import relax.offline.music.databinding.ActivitySearchMoreBinding
|
import melody.offline.music.databinding.ActivitySearchMoreBinding
|
||||||
import relax.offline.music.innertube.Innertube
|
import melody.offline.music.innertube.Innertube
|
||||||
import relax.offline.music.innertube.models.bodies.ContinuationBody
|
import melody.offline.music.innertube.models.bodies.ContinuationBody
|
||||||
import relax.offline.music.innertube.models.bodies.SearchBody
|
import melody.offline.music.innertube.models.bodies.SearchBody
|
||||||
import relax.offline.music.innertube.requests.moSearchPage
|
import melody.offline.music.innertube.requests.moSearchPage
|
||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.selects.select
|
import kotlinx.coroutines.selects.select
|
||||||
@ -1,14 +1,14 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.databinding.ActivitySingerDetailsBinding
|
import melody.offline.music.databinding.ActivitySingerDetailsBinding
|
||||||
import relax.offline.music.innertube.Innertube
|
import melody.offline.music.innertube.Innertube
|
||||||
import relax.offline.music.innertube.requests.moSingerListPage
|
import melody.offline.music.innertube.requests.moSingerListPage
|
||||||
import relax.offline.music.util.LogTag.LogD
|
import melody.offline.music.util.LogTag.LogD
|
||||||
import relax.offline.music.view.SingerDetailsOtherView
|
import melody.offline.music.view.SingerDetailsOtherView
|
||||||
import relax.offline.music.view.SingerDetailsSongView
|
import melody.offline.music.view.SingerDetailsSongView
|
||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.selects.select
|
import kotlinx.coroutines.selects.select
|
||||||
@ -1,17 +1,17 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.adapter.SingerMoreSongAdapter
|
import melody.offline.music.adapter.SingerMoreSongAdapter
|
||||||
import relax.offline.music.databinding.ActivitySearchMoreBinding
|
import melody.offline.music.databinding.ActivitySearchMoreBinding
|
||||||
import relax.offline.music.innertube.Innertube
|
import melody.offline.music.innertube.Innertube
|
||||||
import relax.offline.music.innertube.models.bodies.BrowseBody
|
import melody.offline.music.innertube.models.bodies.BrowseBody
|
||||||
import relax.offline.music.innertube.models.bodies.ContinuationBody
|
import melody.offline.music.innertube.models.bodies.ContinuationBody
|
||||||
import relax.offline.music.innertube.requests.moSingerDetailsMoreLoadMorePage
|
import melody.offline.music.innertube.requests.moSingerDetailsMoreLoadMorePage
|
||||||
import relax.offline.music.innertube.requests.moSingerDetailsMorePage
|
import melody.offline.music.innertube.requests.moSingerDetailsMorePage
|
||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.selects.select
|
import kotlinx.coroutines.selects.select
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.animation.ValueAnimator
|
import android.animation.ValueAnimator
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
@ -21,14 +21,14 @@ import androidx.media3.common.util.UnstableApi
|
|||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.google.android.material.slider.Slider.OnChangeListener
|
import com.google.android.material.slider.Slider.OnChangeListener
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.bean.Audio
|
import melody.offline.music.bean.Audio
|
||||||
import relax.offline.music.databinding.ActivityPlayDetailsBinding
|
import melody.offline.music.databinding.ActivityPlayDetailsBinding
|
||||||
import relax.offline.music.media.LocalMediaControllerManager
|
import melody.offline.music.media.LocalMediaControllerManager
|
||||||
import relax.offline.music.util.LogTag
|
import melody.offline.music.util.LogTag
|
||||||
import relax.offline.music.util.containsContent
|
import melody.offline.music.util.containsContent
|
||||||
import relax.offline.music.util.convertMillisToMinutesAndSecondsString
|
import melody.offline.music.util.convertMillisToMinutesAndSecondsString
|
||||||
import relax.offline.music.util.getAudioDurationFromAssets
|
import melody.offline.music.util.getAudioDurationFromAssets
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
|
|
||||||
@ -1,17 +1,16 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentTransaction
|
import androidx.fragment.app.FragmentTransaction
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.databinding.ActivityPrimaryBinding
|
import melody.offline.music.databinding.ActivityPrimaryBinding
|
||||||
import relax.offline.music.fragment.MoHomeFragment
|
import melody.offline.music.fragment.MoHomeFragment
|
||||||
import relax.offline.music.fragment.MoMeFragment
|
import melody.offline.music.fragment.MoMeFragment
|
||||||
import relax.offline.music.fragment.SearchFragment
|
import melody.offline.music.fragment.SearchFragment
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.selects.select
|
import kotlinx.coroutines.selects.select
|
||||||
import relax.offline.music.util.AnalysisUtil
|
|
||||||
|
|
||||||
class PrimaryActivity : MoBaseActivity(), SearchFragment.SearchFragmentCancelClickListener {
|
class PrimaryActivity : MoBaseActivity(), SearchFragment.SearchFragmentCancelClickListener {
|
||||||
/**
|
/**
|
||||||
@ -1,18 +1,18 @@
|
|||||||
package relax.offline.music.activity
|
package melody.offline.music.activity
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.databinding.ActivitySettingsBinding
|
import melody.offline.music.databinding.ActivitySettingsBinding
|
||||||
import relax.offline.music.fragment.MoMeFragment
|
import melody.offline.music.fragment.MoMeFragment
|
||||||
import relax.offline.music.util.PRIVACY_POLICY_URL
|
import melody.offline.music.util.PRIVACY_POLICY_URL
|
||||||
import relax.offline.music.util.TERMS_OF_SERVICE_URL
|
import melody.offline.music.util.TERMS_OF_SERVICE_URL
|
||||||
import relax.offline.music.util.openPrivacyPolicy
|
import melody.offline.music.util.openPrivacyPolicy
|
||||||
import relax.offline.music.util.openTermsOfService
|
import melody.offline.music.util.openTermsOfService
|
||||||
import relax.offline.music.util.sendFeedback
|
import melody.offline.music.util.sendFeedback
|
||||||
import relax.offline.music.util.shareApp
|
import melody.offline.music.util.shareApp
|
||||||
|
|
||||||
class SettingsActivity : AppCompatActivity() {
|
class SettingsActivity : AppCompatActivity() {
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
@ -8,11 +8,11 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.activity.MoPlayDetailsActivity
|
import melody.offline.music.activity.MoPlayDetailsActivity
|
||||||
import relax.offline.music.databinding.DetailsListItemBinding
|
import melody.offline.music.databinding.DetailsListItemBinding
|
||||||
import relax.offline.music.innertube.Innertube
|
import melody.offline.music.innertube.Innertube
|
||||||
import relax.offline.music.media.MediaControllerManager
|
import melody.offline.music.media.MediaControllerManager
|
||||||
|
|
||||||
class DetailsListAdapter(
|
class DetailsListAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
@ -8,12 +8,12 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.activity.MoLikedSongsActivity
|
import melody.offline.music.activity.MoLikedSongsActivity
|
||||||
import relax.offline.music.activity.MoPlayDetailsActivity
|
import melody.offline.music.activity.MoPlayDetailsActivity
|
||||||
import relax.offline.music.bean.FavoriteBean
|
import melody.offline.music.bean.FavoriteBean
|
||||||
import relax.offline.music.databinding.LikedListItemBinding
|
import melody.offline.music.databinding.LikedListItemBinding
|
||||||
import relax.offline.music.media.MediaControllerManager
|
import melody.offline.music.media.MediaControllerManager
|
||||||
|
|
||||||
class LikedSongsAdapter(
|
class LikedSongsAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
@ -8,12 +8,12 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.activity.MoOfflineSongsActivity
|
import melody.offline.music.activity.MoOfflineSongsActivity
|
||||||
import relax.offline.music.activity.MoPlayDetailsActivity
|
import melody.offline.music.activity.MoPlayDetailsActivity
|
||||||
import relax.offline.music.bean.OfflineBean
|
import melody.offline.music.bean.OfflineBean
|
||||||
import relax.offline.music.databinding.OfflineListItemBinding
|
import melody.offline.music.databinding.OfflineListItemBinding
|
||||||
import relax.offline.music.media.MediaControllerManager
|
import melody.offline.music.media.MediaControllerManager
|
||||||
|
|
||||||
class OfflineSongsAdapter(
|
class OfflineSongsAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@ -6,13 +6,13 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.activity.PlayDetailsActivity
|
import melody.offline.music.activity.PlayDetailsActivity
|
||||||
import relax.offline.music.bean.Audio
|
import melody.offline.music.bean.Audio
|
||||||
import relax.offline.music.databinding.ParentsVoiceLayoutBinding
|
import melody.offline.music.databinding.ParentsVoiceLayoutBinding
|
||||||
import relax.offline.music.util.containsContent
|
import melody.offline.music.util.containsContent
|
||||||
import relax.offline.music.util.convertMillisToMinutesAndSecondsString
|
import melody.offline.music.util.convertMillisToMinutesAndSecondsString
|
||||||
import relax.offline.music.util.getAudioDurationFromAssets
|
import melody.offline.music.util.getAudioDurationFromAssets
|
||||||
|
|
||||||
class ParentsVoiceAdapter(
|
class ParentsVoiceAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -52,8 +52,8 @@ class ParentsVoiceAdapter(
|
|||||||
desc.text = convertMillisToMinutesAndSecondsString(s)
|
desc.text = convertMillisToMinutesAndSecondsString(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (relax.offline.music.App.currentPlayingAudio != null) {
|
if (melody.offline.music.App.currentPlayingAudio != null) {
|
||||||
if (relax.offline.music.App.currentPlayingAudio?.file == audio.file) {
|
if (melody.offline.music.App.currentPlayingAudio?.file == audio.file) {
|
||||||
playingLayout.visibility = View.VISIBLE
|
playingLayout.visibility = View.VISIBLE
|
||||||
name.setTextColor(context.getColor(R.color.green))
|
name.setTextColor(context.getColor(R.color.green))
|
||||||
desc.setTextColor(context.getColor(R.color.green))
|
desc.setTextColor(context.getColor(R.color.green))
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
@ -9,9 +9,9 @@ import androidx.media3.common.C
|
|||||||
import androidx.media3.common.MediaItem
|
import androidx.media3.common.MediaItem
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.databinding.PlayListItemBinding
|
import melody.offline.music.databinding.PlayListItemBinding
|
||||||
import relax.offline.music.media.MediaControllerManager
|
import melody.offline.music.media.MediaControllerManager
|
||||||
|
|
||||||
class PlayListAdapter(
|
class PlayListAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@ -6,13 +6,13 @@ import android.view.LayoutInflater
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.activity.PlayDetailsActivity
|
import melody.offline.music.activity.PlayDetailsActivity
|
||||||
import relax.offline.music.bean.Audio
|
import melody.offline.music.bean.Audio
|
||||||
import relax.offline.music.databinding.RealHumanVoiceLayoutBinding
|
import melody.offline.music.databinding.RealHumanVoiceLayoutBinding
|
||||||
import relax.offline.music.util.AnalysisUtil
|
import melody.offline.music.util.AnalysisUtil
|
||||||
import relax.offline.music.util.convertMillisToMinutesAndSecondsString
|
import melody.offline.music.util.convertMillisToMinutesAndSecondsString
|
||||||
import relax.offline.music.util.getAudioDurationFromAssets
|
import melody.offline.music.util.getAudioDurationFromAssets
|
||||||
|
|
||||||
class RealHumanVoiceAdapter(
|
class RealHumanVoiceAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -52,8 +52,8 @@ class RealHumanVoiceAdapter(
|
|||||||
val s = getAudioDurationFromAssets(context, audio.file)
|
val s = getAudioDurationFromAssets(context, audio.file)
|
||||||
desc.text = convertMillisToMinutesAndSecondsString(s)
|
desc.text = convertMillisToMinutesAndSecondsString(s)
|
||||||
|
|
||||||
if (relax.offline.music.App.currentPlayingAudio != null) {
|
if (melody.offline.music.App.currentPlayingAudio != null) {
|
||||||
if (relax.offline.music.App.currentPlayingAudio?.file == audio.file) {
|
if (melody.offline.music.App.currentPlayingAudio?.file == audio.file) {
|
||||||
name.setTextColor(context.getColor(R.color.green))
|
name.setTextColor(context.getColor(R.color.green))
|
||||||
desc.setTextColor(context.getColor(R.color.green))
|
desc.setTextColor(context.getColor(R.color.green))
|
||||||
} else {
|
} else {
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@ -7,12 +7,12 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.activity.MoPlayDetailsActivity
|
import melody.offline.music.activity.MoPlayDetailsActivity
|
||||||
import relax.offline.music.databinding.MusicResponsiveItemBinding
|
import melody.offline.music.databinding.MusicResponsiveItemBinding
|
||||||
import relax.offline.music.innertube.models.MusicCarouselShelfRenderer
|
import melody.offline.music.innertube.models.MusicCarouselShelfRenderer
|
||||||
import relax.offline.music.media.MediaControllerManager
|
import melody.offline.music.media.MediaControllerManager
|
||||||
import relax.offline.music.util.AnalysisUtil
|
import melody.offline.music.util.AnalysisUtil
|
||||||
|
|
||||||
class ResponsiveListAdapter(
|
class ResponsiveListAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -1,10 +1,10 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import relax.offline.music.databinding.SearchHistoryAdapterItemBinding
|
import melody.offline.music.databinding.SearchHistoryAdapterItemBinding
|
||||||
|
|
||||||
class SearchHistoryAdapter(
|
class SearchHistoryAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
@ -7,12 +7,12 @@ import android.view.LayoutInflater
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import relax.offline.music.activity.MoListDetailsActivity
|
import melody.offline.music.activity.MoListDetailsActivity
|
||||||
import relax.offline.music.activity.MoPlayDetailsActivity
|
import melody.offline.music.activity.MoPlayDetailsActivity
|
||||||
import relax.offline.music.activity.MoSingerDetailsActivity
|
import melody.offline.music.activity.MoSingerDetailsActivity
|
||||||
import relax.offline.music.databinding.SearchResultOtherItemBinding
|
import melody.offline.music.databinding.SearchResultOtherItemBinding
|
||||||
import relax.offline.music.innertube.Innertube
|
import melody.offline.music.innertube.Innertube
|
||||||
import relax.offline.music.util.LogTag
|
import melody.offline.music.util.LogTag
|
||||||
|
|
||||||
class SearchResultOtherAdapter(
|
class SearchResultOtherAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -1,10 +1,10 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import relax.offline.music.databinding.SearchSuggestionsAdapterItemBinding
|
import melody.offline.music.databinding.SearchSuggestionsAdapterItemBinding
|
||||||
|
|
||||||
class SearchSuggestionsAdapter(
|
class SearchSuggestionsAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
@ -8,9 +8,9 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import relax.offline.music.activity.MoPlayDetailsActivity
|
import melody.offline.music.activity.MoPlayDetailsActivity
|
||||||
import relax.offline.music.databinding.DetailsListItemBinding
|
import melody.offline.music.databinding.DetailsListItemBinding
|
||||||
import relax.offline.music.innertube.models.MusicShelfRenderer
|
import melody.offline.music.innertube.models.MusicShelfRenderer
|
||||||
|
|
||||||
class SingerDetailsSongListAdapter(
|
class SingerDetailsSongListAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
@ -7,11 +7,11 @@ import android.view.LayoutInflater
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import relax.offline.music.activity.MoListDetailsActivity
|
import melody.offline.music.activity.MoListDetailsActivity
|
||||||
import relax.offline.music.activity.MoPlayDetailsActivity
|
import melody.offline.music.activity.MoPlayDetailsActivity
|
||||||
import relax.offline.music.databinding.MusicTowRowItemBinding
|
import melody.offline.music.databinding.MusicTowRowItemBinding
|
||||||
import relax.offline.music.databinding.SearchResultOtherItemBinding
|
import melody.offline.music.databinding.SearchResultOtherItemBinding
|
||||||
import relax.offline.music.innertube.Innertube
|
import melody.offline.music.innertube.Innertube
|
||||||
|
|
||||||
class SingerMoreSongAdapter(
|
class SingerMoreSongAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@ -7,13 +7,13 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.activity.PlayDetailsActivity
|
import melody.offline.music.activity.PlayDetailsActivity
|
||||||
import relax.offline.music.bean.Audio
|
import melody.offline.music.bean.Audio
|
||||||
import relax.offline.music.databinding.SoundsOfAppliancesLayoutBinding
|
import melody.offline.music.databinding.SoundsOfAppliancesLayoutBinding
|
||||||
import relax.offline.music.util.AnalysisUtil
|
import melody.offline.music.util.AnalysisUtil
|
||||||
import relax.offline.music.util.convertMillisToMinutesAndSecondsString
|
import melody.offline.music.util.convertMillisToMinutesAndSecondsString
|
||||||
import relax.offline.music.util.getAudioDurationFromAssets
|
import melody.offline.music.util.getAudioDurationFromAssets
|
||||||
|
|
||||||
class SoundsOfAppliancesAdapter(
|
class SoundsOfAppliancesAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -54,8 +54,8 @@ class SoundsOfAppliancesAdapter(
|
|||||||
val s = getAudioDurationFromAssets(context, audio.file)
|
val s = getAudioDurationFromAssets(context, audio.file)
|
||||||
desc.text = convertMillisToMinutesAndSecondsString(s)
|
desc.text = convertMillisToMinutesAndSecondsString(s)
|
||||||
|
|
||||||
if (relax.offline.music.App.currentPlayingAudio != null) {
|
if (melody.offline.music.App.currentPlayingAudio != null) {
|
||||||
if (relax.offline.music.App.currentPlayingAudio?.file == audio.file) {
|
if (melody.offline.music.App.currentPlayingAudio?.file == audio.file) {
|
||||||
playingLayout.visibility = View.VISIBLE
|
playingLayout.visibility = View.VISIBLE
|
||||||
name.setTextColor(context.getColor(R.color.green))
|
name.setTextColor(context.getColor(R.color.green))
|
||||||
desc.setTextColor(context.getColor(R.color.green))
|
desc.setTextColor(context.getColor(R.color.green))
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@ -7,13 +7,13 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.activity.PlayDetailsActivity
|
import melody.offline.music.activity.PlayDetailsActivity
|
||||||
import relax.offline.music.bean.Audio
|
import melody.offline.music.bean.Audio
|
||||||
import relax.offline.music.databinding.SoundsOfNatureLayoutBinding
|
import melody.offline.music.databinding.SoundsOfNatureLayoutBinding
|
||||||
import relax.offline.music.util.AnalysisUtil
|
import melody.offline.music.util.AnalysisUtil
|
||||||
import relax.offline.music.util.convertMillisToMinutesAndSecondsString
|
import melody.offline.music.util.convertMillisToMinutesAndSecondsString
|
||||||
import relax.offline.music.util.getAudioDurationFromAssets
|
import melody.offline.music.util.getAudioDurationFromAssets
|
||||||
|
|
||||||
class SoundsOfNatureAdapter(
|
class SoundsOfNatureAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -54,8 +54,8 @@ class SoundsOfNatureAdapter(
|
|||||||
val s = getAudioDurationFromAssets(context, audio.file)
|
val s = getAudioDurationFromAssets(context, audio.file)
|
||||||
desc.text = convertMillisToMinutesAndSecondsString(s)
|
desc.text = convertMillisToMinutesAndSecondsString(s)
|
||||||
|
|
||||||
if (relax.offline.music.App.currentPlayingAudio != null) {
|
if (melody.offline.music.App.currentPlayingAudio != null) {
|
||||||
if (relax.offline.music.App.currentPlayingAudio?.file == audio.file) {
|
if (melody.offline.music.App.currentPlayingAudio?.file == audio.file) {
|
||||||
playingLayout.visibility = View.VISIBLE
|
playingLayout.visibility = View.VISIBLE
|
||||||
name.setTextColor(context.getColor(R.color.green))
|
name.setTextColor(context.getColor(R.color.green))
|
||||||
desc.setTextColor(context.getColor(R.color.green))
|
desc.setTextColor(context.getColor(R.color.green))
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.adapter
|
package melody.offline.music.adapter
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@ -6,12 +6,12 @@ import android.view.LayoutInflater
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import relax.offline.music.activity.MoListDetailsActivity
|
import melody.offline.music.activity.MoListDetailsActivity
|
||||||
import relax.offline.music.activity.MoPlayDetailsActivity
|
import melody.offline.music.activity.MoPlayDetailsActivity
|
||||||
import relax.offline.music.activity.MoSingerDetailsActivity
|
import melody.offline.music.activity.MoSingerDetailsActivity
|
||||||
import relax.offline.music.databinding.MusicTowRowItemBinding
|
import melody.offline.music.databinding.MusicTowRowItemBinding
|
||||||
import relax.offline.music.innertube.models.MusicCarouselShelfRenderer
|
import melody.offline.music.innertube.models.MusicCarouselShelfRenderer
|
||||||
import relax.offline.music.util.AnalysisUtil
|
import melody.offline.music.util.AnalysisUtil
|
||||||
|
|
||||||
class TowRowListAdapter(
|
class TowRowListAdapter(
|
||||||
private val context: Activity,
|
private val context: Activity,
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.bean
|
package melody.offline.music.bean
|
||||||
|
|
||||||
import androidx.annotation.Keep
|
import androidx.annotation.Keep
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.bean
|
package melody.offline.music.bean
|
||||||
|
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.bean
|
package melody.offline.music.bean
|
||||||
|
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.bean
|
package melody.offline.music.bean
|
||||||
|
|
||||||
import androidx.annotation.Keep
|
import androidx.annotation.Keep
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.bean
|
package melody.offline.music.bean
|
||||||
|
|
||||||
import androidx.annotation.Keep
|
import androidx.annotation.Keep
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.bean
|
package melody.offline.music.bean
|
||||||
|
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
package relax.offline.music.database
|
package melody.offline.music.database
|
||||||
|
|
||||||
import androidx.room.Database
|
import androidx.room.Database
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
import relax.offline.music.bean.Audio
|
import melody.offline.music.bean.Audio
|
||||||
|
|
||||||
@Database(entities = [Audio::class], version = 1, exportSchema = false)
|
@Database(entities = [Audio::class], version = 1, exportSchema = false)
|
||||||
abstract class AppDatabase : RoomDatabase() {
|
abstract class AppDatabase : RoomDatabase() {
|
||||||
@ -1,11 +1,10 @@
|
|||||||
package relax.offline.music.database
|
package melody.offline.music.database
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.room.Room
|
import androidx.room.Room
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import relax.offline.music.bean.FavoriteBean
|
import melody.offline.music.bean.FavoriteBean
|
||||||
import relax.offline.music.util.LogTag
|
|
||||||
|
|
||||||
class AppFavoriteDBManager private constructor(context: Context) {
|
class AppFavoriteDBManager private constructor(context: Context) {
|
||||||
|
|
||||||
@ -1,8 +1,8 @@
|
|||||||
package relax.offline.music.database
|
package melody.offline.music.database
|
||||||
|
|
||||||
import androidx.room.Database
|
import androidx.room.Database
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
import relax.offline.music.bean.FavoriteBean
|
import melody.offline.music.bean.FavoriteBean
|
||||||
|
|
||||||
@Database(entities = [FavoriteBean::class], version = 1, exportSchema = false)
|
@Database(entities = [FavoriteBean::class], version = 1, exportSchema = false)
|
||||||
abstract class AppFavoriteDatabase : RoomDatabase() {
|
abstract class AppFavoriteDatabase : RoomDatabase() {
|
||||||
@ -1,9 +1,8 @@
|
|||||||
package relax.offline.music.database
|
package melody.offline.music.database
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.room.Room
|
import androidx.room.Room
|
||||||
import relax.offline.music.bean.OfflineBean
|
import melody.offline.music.bean.OfflineBean
|
||||||
import relax.offline.music.util.LogTag
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
|
||||||
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
package relax.offline.music.database
|
package melody.offline.music.database
|
||||||
|
|
||||||
import androidx.room.Database
|
import androidx.room.Database
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
import relax.offline.music.bean.OfflineBean
|
import melody.offline.music.bean.OfflineBean
|
||||||
|
|
||||||
@Database(entities = [OfflineBean::class], version = 1, exportSchema = false)
|
@Database(entities = [OfflineBean::class], version = 1, exportSchema = false)
|
||||||
abstract class AppOfflineDatabase : RoomDatabase() {
|
abstract class AppOfflineDatabase : RoomDatabase() {
|
||||||
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
package relax.offline.music.database
|
package melody.offline.music.database
|
||||||
|
|
||||||
import androidx.room.Database
|
import androidx.room.Database
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
import relax.offline.music.bean.CurrentPlayingAudio
|
import melody.offline.music.bean.CurrentPlayingAudio
|
||||||
|
|
||||||
@Database(entities = [CurrentPlayingAudio::class], version = 1, exportSchema = false)
|
@Database(entities = [CurrentPlayingAudio::class], version = 1, exportSchema = false)
|
||||||
abstract class CurrentAudioDatabase : RoomDatabase() {
|
abstract class CurrentAudioDatabase : RoomDatabase() {
|
||||||
@ -1,8 +1,8 @@
|
|||||||
package relax.offline.music.database
|
package melody.offline.music.database
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.room.Room
|
import androidx.room.Room
|
||||||
import relax.offline.music.bean.CurrentPlayingAudio
|
import melody.offline.music.bean.CurrentPlayingAudio
|
||||||
|
|
||||||
class CurrentAudioManager private constructor(context: Context) {
|
class CurrentAudioManager private constructor(context: Context) {
|
||||||
private val database: CurrentAudioDatabase = Room.databaseBuilder(
|
private val database: CurrentAudioDatabase = Room.databaseBuilder(
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.database
|
package melody.offline.music.database
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Delete
|
import androidx.room.Delete
|
||||||
@ -6,7 +6,7 @@ import androidx.room.Insert
|
|||||||
import androidx.room.OnConflictStrategy
|
import androidx.room.OnConflictStrategy
|
||||||
import androidx.room.Query
|
import androidx.room.Query
|
||||||
import androidx.room.Update
|
import androidx.room.Update
|
||||||
import relax.offline.music.bean.CurrentPlayingAudio
|
import melody.offline.music.bean.CurrentPlayingAudio
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface CurrentPlayingAudioDao {
|
interface CurrentPlayingAudioDao {
|
||||||
@ -1,8 +1,8 @@
|
|||||||
package relax.offline.music.database
|
package melody.offline.music.database
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.room.Room
|
import androidx.room.Room
|
||||||
import relax.offline.music.bean.Audio
|
import melody.offline.music.bean.Audio
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
package relax.offline.music.database
|
package melody.offline.music.database
|
||||||
|
|
||||||
import androidx.room.*
|
import androidx.room.*
|
||||||
import relax.offline.music.bean.FavoriteBean
|
import melody.offline.music.bean.FavoriteBean
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface FavoriteDao {
|
interface FavoriteDao {
|
||||||
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
|
|
||||||
package relax.offline.music.database
|
package melody.offline.music.database
|
||||||
|
|
||||||
import androidx.room.*
|
import androidx.room.*
|
||||||
import relax.offline.music.bean.Audio
|
import melody.offline.music.bean.Audio
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface LocalAudioDao {
|
interface LocalAudioDao {
|
||||||
@ -1,7 +1,7 @@
|
|||||||
package relax.offline.music.database
|
package melody.offline.music.database
|
||||||
|
|
||||||
import androidx.room.*
|
import androidx.room.*
|
||||||
import relax.offline.music.bean.OfflineBean
|
import melody.offline.music.bean.OfflineBean
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface OfflineDao {
|
interface OfflineDao {
|
||||||
@ -1,11 +1,11 @@
|
|||||||
package relax.offline.music.firebase
|
package melody.offline.music.firebase
|
||||||
|
|
||||||
object Constants {
|
object Constants {
|
||||||
|
|
||||||
const val KEY_SHOULD_ENTER_MUSIC_JSON = "key_should_enter_music_json"
|
const val KEY_SHOULD_ENTER_MUSIC_JSON = "key_should_enter_music_json"
|
||||||
const val DEFAULT_SHOULD_ENTER_MUSIC_JSON = """
|
const val DEFAULT_SHOULD_ENTER_MUSIC_JSON = """
|
||||||
{
|
{
|
||||||
"versionCode": 4,
|
"versionCode": 1,
|
||||||
"enter": false
|
"enter": false
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.firebase
|
package melody.offline.music.firebase
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
@ -12,10 +12,10 @@ import com.google.firebase.remoteconfig.FirebaseRemoteConfig
|
|||||||
import com.google.firebase.remoteconfig.FirebaseRemoteConfigException
|
import com.google.firebase.remoteconfig.FirebaseRemoteConfigException
|
||||||
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings
|
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings
|
||||||
import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue
|
import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue
|
||||||
import relax.offline.music.App
|
import melody.offline.music.App
|
||||||
import relax.offline.music.BuildConfig
|
import melody.offline.music.BuildConfig
|
||||||
import relax.offline.music.sp.AppStore
|
import melody.offline.music.sp.AppStore
|
||||||
import relax.offline.music.util.LogTag
|
import melody.offline.music.util.LogTag
|
||||||
import java.lang.ref.WeakReference
|
import java.lang.ref.WeakReference
|
||||||
|
|
||||||
class RemoteConfig {
|
class RemoteConfig {
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.fragment
|
package melody.offline.music.fragment
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
@ -9,12 +9,12 @@ import androidx.fragment.app.Fragment
|
|||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.adapter.RealHumanVoiceAdapter
|
import melody.offline.music.adapter.RealHumanVoiceAdapter
|
||||||
import relax.offline.music.adapter.SoundsOfAppliancesAdapter
|
import melody.offline.music.adapter.SoundsOfAppliancesAdapter
|
||||||
import relax.offline.music.adapter.SoundsOfNatureAdapter
|
import melody.offline.music.adapter.SoundsOfNatureAdapter
|
||||||
import relax.offline.music.databinding.FragmentHomeBinding
|
import melody.offline.music.databinding.FragmentHomeBinding
|
||||||
import relax.offline.music.util.AnalysisUtil
|
import melody.offline.music.util.AnalysisUtil
|
||||||
import relax.offline.music.util.GridSpacingItemDecoration
|
import melody.offline.music.util.GridSpacingItemDecoration
|
||||||
|
|
||||||
class HomeFragment : Fragment() {
|
class HomeFragment : Fragment() {
|
||||||
private lateinit var binding: FragmentHomeBinding
|
private lateinit var binding: FragmentHomeBinding
|
||||||
@ -43,28 +43,28 @@ class HomeFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun initView() {
|
private fun initView() {
|
||||||
if (relax.offline.music.App.resourcesList.categories.isNotEmpty()) {
|
if (melody.offline.music.App.resourcesList.categories.isNotEmpty()) {
|
||||||
binding.soundsName.text = relax.offline.music.App.resourcesList.categories[1].name
|
binding.soundsName.text = melody.offline.music.App.resourcesList.categories[1].name
|
||||||
binding.natureName.text = relax.offline.music.App.resourcesList.categories[2].name
|
binding.natureName.text = melody.offline.music.App.resourcesList.categories[2].name
|
||||||
}
|
}
|
||||||
if (relax.offline.music.App.realHumanVoiceList.isNotEmpty()) {
|
if (melody.offline.music.App.realHumanVoiceList.isNotEmpty()) {
|
||||||
realHumanVoiceAdapter = RealHumanVoiceAdapter(requireActivity(), relax.offline.music.App.realHumanVoiceList)
|
realHumanVoiceAdapter = RealHumanVoiceAdapter(requireActivity(), melody.offline.music.App.realHumanVoiceList)
|
||||||
binding.realRv.layoutManager =
|
binding.realRv.layoutManager =
|
||||||
GridLayoutManager(requireActivity(), 2, GridLayoutManager.VERTICAL, false)
|
GridLayoutManager(requireActivity(), 2, GridLayoutManager.VERTICAL, false)
|
||||||
binding.realRv.addItemDecoration(GridSpacingItemDecoration(requireActivity(), 20, 2))
|
binding.realRv.addItemDecoration(GridSpacingItemDecoration(requireActivity(), 20, 2))
|
||||||
binding.realRv.adapter = realHumanVoiceAdapter
|
binding.realRv.adapter = realHumanVoiceAdapter
|
||||||
}
|
}
|
||||||
if (relax.offline.music.App.soundsOfAppliancesList.isNotEmpty()) {
|
if (melody.offline.music.App.soundsOfAppliancesList.isNotEmpty()) {
|
||||||
soundsOfAppliancesAdapter =
|
soundsOfAppliancesAdapter =
|
||||||
SoundsOfAppliancesAdapter(requireActivity(), relax.offline.music.App.soundsOfAppliancesList)
|
SoundsOfAppliancesAdapter(requireActivity(), melody.offline.music.App.soundsOfAppliancesList)
|
||||||
binding.soundsRv.layoutManager =
|
binding.soundsRv.layoutManager =
|
||||||
GridLayoutManager(requireActivity(), 2, GridLayoutManager.VERTICAL, false)
|
GridLayoutManager(requireActivity(), 2, GridLayoutManager.VERTICAL, false)
|
||||||
binding.soundsRv.addItemDecoration(GridSpacingItemDecoration(requireActivity(), 20, 2))
|
binding.soundsRv.addItemDecoration(GridSpacingItemDecoration(requireActivity(), 20, 2))
|
||||||
binding.soundsRv.adapter = soundsOfAppliancesAdapter
|
binding.soundsRv.adapter = soundsOfAppliancesAdapter
|
||||||
}
|
}
|
||||||
if (relax.offline.music.App.soundsOfNatureList.isNotEmpty()) {
|
if (melody.offline.music.App.soundsOfNatureList.isNotEmpty()) {
|
||||||
soundsOfNatureAdapter =
|
soundsOfNatureAdapter =
|
||||||
SoundsOfNatureAdapter(requireActivity(), relax.offline.music.App.soundsOfNatureList)
|
SoundsOfNatureAdapter(requireActivity(), melody.offline.music.App.soundsOfNatureList)
|
||||||
binding.natureRv.layoutManager =
|
binding.natureRv.layoutManager =
|
||||||
LinearLayoutManager(requireActivity(), LinearLayoutManager.VERTICAL, false)
|
LinearLayoutManager(requireActivity(), LinearLayoutManager.VERTICAL, false)
|
||||||
binding.natureRv.adapter = soundsOfNatureAdapter
|
binding.natureRv.adapter = soundsOfNatureAdapter
|
||||||
@ -74,26 +74,26 @@ class HomeFragment : Fragment() {
|
|||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
if (relax.offline.music.App.currentPlayingAudio != null) {
|
if (melody.offline.music.App.currentPlayingAudio != null) {
|
||||||
if (relax.offline.music.App.realHumanVoiceList.isNotEmpty()) {
|
if (melody.offline.music.App.realHumanVoiceList.isNotEmpty()) {
|
||||||
for ((index, audio) in relax.offline.music.App.realHumanVoiceList.withIndex()) {
|
for ((index, audio) in melody.offline.music.App.realHumanVoiceList.withIndex()) {
|
||||||
if (audio.file == relax.offline.music.App.currentPlayingAudio?.file) {
|
if (audio.file == melody.offline.music.App.currentPlayingAudio?.file) {
|
||||||
notifyDataSetChanged()
|
notifyDataSetChanged()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (relax.offline.music.App.soundsOfAppliancesList.isNotEmpty()) {
|
if (melody.offline.music.App.soundsOfAppliancesList.isNotEmpty()) {
|
||||||
for ((index, audio) in relax.offline.music.App.soundsOfAppliancesList.withIndex()) {
|
for ((index, audio) in melody.offline.music.App.soundsOfAppliancesList.withIndex()) {
|
||||||
if (audio.file == relax.offline.music.App.currentPlayingAudio?.file) {
|
if (audio.file == melody.offline.music.App.currentPlayingAudio?.file) {
|
||||||
notifyDataSetChanged()
|
notifyDataSetChanged()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (relax.offline.music.App.soundsOfNatureList.isNotEmpty()) {
|
if (melody.offline.music.App.soundsOfNatureList.isNotEmpty()) {
|
||||||
for ((index, audio) in relax.offline.music.App.soundsOfNatureList.withIndex()) {
|
for ((index, audio) in melody.offline.music.App.soundsOfNatureList.withIndex()) {
|
||||||
if (audio.file == relax.offline.music.App.currentPlayingAudio?.file) {
|
if (audio.file == melody.offline.music.App.currentPlayingAudio?.file) {
|
||||||
notifyDataSetChanged()
|
notifyDataSetChanged()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.fragment
|
package melody.offline.music.fragment
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
@ -21,11 +21,11 @@ import androidx.core.content.ContextCompat
|
|||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.activity.SettingsActivity
|
import melody.offline.music.activity.SettingsActivity
|
||||||
import relax.offline.music.adapter.ParentsVoiceAdapter
|
import melody.offline.music.adapter.ParentsVoiceAdapter
|
||||||
import relax.offline.music.bean.Audio
|
import melody.offline.music.bean.Audio
|
||||||
import relax.offline.music.databinding.FragmentImportBinding
|
import melody.offline.music.databinding.FragmentImportBinding
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@ -59,7 +59,7 @@ class ImportFragment : Fragment() {
|
|||||||
checkAndRequestPermissions()
|
checkAndRequestPermissions()
|
||||||
}
|
}
|
||||||
importAdapterList.clear()
|
importAdapterList.clear()
|
||||||
importAdapterList.addAll(relax.offline.music.App.importList)
|
importAdapterList.addAll(melody.offline.music.App.importList)
|
||||||
parentsVoiceAdapter = ParentsVoiceAdapter(requireActivity(), importAdapterList)
|
parentsVoiceAdapter = ParentsVoiceAdapter(requireActivity(), importAdapterList)
|
||||||
binding.importRv.layoutManager =
|
binding.importRv.layoutManager =
|
||||||
LinearLayoutManager(requireActivity(), LinearLayoutManager.VERTICAL, false)
|
LinearLayoutManager(requireActivity(), LinearLayoutManager.VERTICAL, false)
|
||||||
@ -105,12 +105,12 @@ class ImportFragment : Fragment() {
|
|||||||
binding.noContentLayout.visibility = View.VISIBLE
|
binding.noContentLayout.visibility = View.VISIBLE
|
||||||
}
|
}
|
||||||
|
|
||||||
if (relax.offline.music.App.currentPlayingAudio != null) {
|
if (melody.offline.music.App.currentPlayingAudio != null) {
|
||||||
if (relax.offline.music.App.importList.isNotEmpty()) {
|
if (melody.offline.music.App.importList.isNotEmpty()) {
|
||||||
importAdapterList.clear()
|
importAdapterList.clear()
|
||||||
importAdapterList.addAll(relax.offline.music.App.importList)
|
importAdapterList.addAll(melody.offline.music.App.importList)
|
||||||
for ((index, audio) in importAdapterList.withIndex()) {
|
for ((index, audio) in importAdapterList.withIndex()) {
|
||||||
if (audio.file == relax.offline.music.App.currentPlayingAudio?.file) {
|
if (audio.file == melody.offline.music.App.currentPlayingAudio?.file) {
|
||||||
parentsVoiceAdapter?.notifyDataSetChanged()
|
parentsVoiceAdapter?.notifyDataSetChanged()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -192,12 +192,12 @@ class ImportFragment : Fragment() {
|
|||||||
|
|
||||||
CoroutineScope(Dispatchers.IO).launch {
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
if (audio.duration > 0) {
|
if (audio.duration > 0) {
|
||||||
relax.offline.music.App.databaseManager.insertAudioFile(audio)
|
melody.offline.music.App.databaseManager.insertAudioFile(audio)
|
||||||
}
|
}
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
relax.offline.music.App.initImportAudio {
|
melody.offline.music.App.initImportAudio {
|
||||||
importAdapterList.clear()
|
importAdapterList.clear()
|
||||||
importAdapterList.addAll(relax.offline.music.App.importList)
|
importAdapterList.addAll(melody.offline.music.App.importList)
|
||||||
parentsVoiceAdapter?.notifyDataSetChanged()
|
parentsVoiceAdapter?.notifyDataSetChanged()
|
||||||
if (importAdapterList.isNotEmpty()) {
|
if (importAdapterList.isNotEmpty()) {
|
||||||
binding.noContentLayout.visibility = View.GONE
|
binding.noContentLayout.visibility = View.GONE
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.fragment
|
package melody.offline.music.fragment
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
@ -8,8 +8,8 @@ import androidx.annotation.OptIn
|
|||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.media3.common.util.UnstableApi
|
import androidx.media3.common.util.UnstableApi
|
||||||
import androidx.viewbinding.ViewBinding
|
import androidx.viewbinding.ViewBinding
|
||||||
import relax.offline.music.sp.AppStore
|
import melody.offline.music.sp.AppStore
|
||||||
import relax.offline.music.util.LogTag
|
import melody.offline.music.util.LogTag
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.MainScope
|
import kotlinx.coroutines.MainScope
|
||||||
import kotlinx.coroutines.cancel
|
import kotlinx.coroutines.cancel
|
||||||
@ -1,21 +1,21 @@
|
|||||||
package relax.offline.music.fragment
|
package melody.offline.music.fragment
|
||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.databinding.FragmentMoHomeBinding
|
import melody.offline.music.databinding.FragmentMoHomeBinding
|
||||||
import relax.offline.music.innertube.Innertube
|
import melody.offline.music.innertube.Innertube
|
||||||
import relax.offline.music.innertube.models.MusicCarouselShelfRenderer
|
import melody.offline.music.innertube.models.MusicCarouselShelfRenderer
|
||||||
import relax.offline.music.innertube.requests.homePage
|
import melody.offline.music.innertube.requests.homePage
|
||||||
import relax.offline.music.innertube.requests.homePageMore
|
import melody.offline.music.innertube.requests.homePageMore
|
||||||
import relax.offline.music.util.LogTag.LogD
|
import melody.offline.music.util.LogTag.LogD
|
||||||
import relax.offline.music.view.MusicResponsiveListView
|
import melody.offline.music.view.MusicResponsiveListView
|
||||||
import relax.offline.music.view.MusicTowRowListView
|
import melody.offline.music.view.MusicTowRowListView
|
||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.selects.select
|
import kotlinx.coroutines.selects.select
|
||||||
import relax.offline.music.util.AnalysisUtil
|
import melody.offline.music.util.AnalysisUtil
|
||||||
|
|
||||||
class MoHomeFragment : MoBaseFragment<FragmentMoHomeBinding>() {
|
class MoHomeFragment : MoBaseFragment<FragmentMoHomeBinding>() {
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.fragment
|
package melody.offline.music.fragment
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
@ -8,13 +8,13 @@ import com.gyf.immersionbar.ktx.immersionBar
|
|||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.selects.select
|
import kotlinx.coroutines.selects.select
|
||||||
import relax.offline.music.App
|
import melody.offline.music.App
|
||||||
import relax.offline.music.R
|
import melody.offline.music.R
|
||||||
import relax.offline.music.activity.MoLikedSongsActivity
|
import melody.offline.music.activity.MoLikedSongsActivity
|
||||||
import relax.offline.music.activity.MoOfflineSongsActivity
|
import melody.offline.music.activity.MoOfflineSongsActivity
|
||||||
import relax.offline.music.activity.SettingsActivity
|
import melody.offline.music.activity.SettingsActivity
|
||||||
import relax.offline.music.databinding.FragmentMoMeBinding
|
import melody.offline.music.databinding.FragmentMoMeBinding
|
||||||
import relax.offline.music.util.AnalysisUtil
|
import melody.offline.music.util.AnalysisUtil
|
||||||
|
|
||||||
class MoMeFragment : MoBaseFragment<FragmentMoMeBinding>() {
|
class MoMeFragment : MoBaseFragment<FragmentMoMeBinding>() {
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.fragment
|
package melody.offline.music.fragment
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
@ -20,22 +20,22 @@ import com.google.android.flexbox.FlexWrap
|
|||||||
import com.google.android.flexbox.FlexboxLayoutManager
|
import com.google.android.flexbox.FlexboxLayoutManager
|
||||||
import com.google.android.flexbox.JustifyContent
|
import com.google.android.flexbox.JustifyContent
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import relax.offline.music.adapter.SearchHistoryAdapter
|
import melody.offline.music.adapter.SearchHistoryAdapter
|
||||||
import relax.offline.music.adapter.SearchSuggestionsAdapter
|
import melody.offline.music.adapter.SearchSuggestionsAdapter
|
||||||
import relax.offline.music.databinding.FragmentSearchBinding
|
import melody.offline.music.databinding.FragmentSearchBinding
|
||||||
import relax.offline.music.innertube.Innertube
|
import melody.offline.music.innertube.Innertube
|
||||||
import relax.offline.music.innertube.models.bodies.SearchBody
|
import melody.offline.music.innertube.models.bodies.SearchBody
|
||||||
import relax.offline.music.innertube.models.bodies.SearchSuggestionsBody
|
import melody.offline.music.innertube.models.bodies.SearchSuggestionsBody
|
||||||
import relax.offline.music.innertube.requests.moSearchPage
|
import melody.offline.music.innertube.requests.moSearchPage
|
||||||
import relax.offline.music.innertube.requests.searchSuggestions
|
import melody.offline.music.innertube.requests.searchSuggestions
|
||||||
import relax.offline.music.util.LogTag
|
import melody.offline.music.util.LogTag
|
||||||
import relax.offline.music.view.SearchResultOptimalView
|
import melody.offline.music.view.SearchResultOptimalView
|
||||||
import relax.offline.music.view.SearchResultOtherView
|
import melody.offline.music.view.SearchResultOtherView
|
||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.selects.select
|
import kotlinx.coroutines.selects.select
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import relax.offline.music.util.AnalysisUtil
|
import melody.offline.music.util.AnalysisUtil
|
||||||
|
|
||||||
class SearchFragment : MoBaseFragment<FragmentSearchBinding>(), TextWatcher,
|
class SearchFragment : MoBaseFragment<FragmentSearchBinding>(), TextWatcher,
|
||||||
View.OnFocusChangeListener, SearchSuggestionsAdapter.OnItemClickListener,
|
View.OnFocusChangeListener, SearchSuggestionsAdapter.OnItemClickListener,
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.http
|
package melody.offline.music.http
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.PackageInfo
|
import android.content.pm.PackageInfo
|
||||||
@ -7,8 +7,8 @@ import android.media.MediaDrm
|
|||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.telephony.TelephonyManager
|
import android.telephony.TelephonyManager
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import relax.offline.music.App
|
import melody.offline.music.App
|
||||||
import relax.offline.music.sp.AppStore
|
import melody.offline.music.sp.AppStore
|
||||||
import java.security.MessageDigest
|
import java.security.MessageDigest
|
||||||
import java.security.NoSuchAlgorithmException
|
import java.security.NoSuchAlgorithmException
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
@ -1,11 +1,11 @@
|
|||||||
package relax.offline.music.http
|
package melody.offline.music.http
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import org.json.JSONException
|
import org.json.JSONException
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import relax.offline.music.App
|
import melody.offline.music.App
|
||||||
import relax.offline.music.util.AesEncryptUtil
|
import melody.offline.music.util.AesEncryptUtil
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
@ -1,13 +1,13 @@
|
|||||||
package relax.offline.music.http
|
package melody.offline.music.http
|
||||||
|
|
||||||
import okhttp3.Call
|
import okhttp3.Call
|
||||||
import okhttp3.Callback
|
import okhttp3.Callback
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import relax.offline.music.App
|
import melody.offline.music.App
|
||||||
import relax.offline.music.sp.AppStore
|
import melody.offline.music.sp.AppStore
|
||||||
import relax.offline.music.util.AesEncryptUtil
|
import melody.offline.music.util.AesEncryptUtil
|
||||||
import relax.offline.music.util.LogTag
|
import melody.offline.music.util.LogTag
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
class CommonIpInfoUtil {
|
class CommonIpInfoUtil {
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.http
|
package melody.offline.music.http
|
||||||
|
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.http
|
package melody.offline.music.http
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.net.ConnectivityManager
|
import android.net.ConnectivityManager
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.http
|
package melody.offline.music.http
|
||||||
|
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.http
|
package melody.offline.music.http
|
||||||
|
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
@ -1,11 +1,11 @@
|
|||||||
package relax.offline.music.http
|
package melody.offline.music.http
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import okhttp3.Call
|
import okhttp3.Call
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import relax.offline.music.sp.AppStore
|
import melody.offline.music.sp.AppStore
|
||||||
import relax.offline.music.util.LogTag
|
import melody.offline.music.util.LogTag
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
class UploadEventName {
|
class UploadEventName {
|
||||||
@ -1,12 +1,12 @@
|
|||||||
package relax.offline.music.innertube
|
package melody.offline.music.innertube
|
||||||
|
|
||||||
import relax.offline.music.innertube.models.MusicCarouselShelfRenderer
|
import melody.offline.music.innertube.models.MusicCarouselShelfRenderer
|
||||||
import relax.offline.music.innertube.models.MusicShelfRenderer
|
import melody.offline.music.innertube.models.MusicShelfRenderer
|
||||||
import relax.offline.music.innertube.models.NavigationEndpoint
|
import melody.offline.music.innertube.models.NavigationEndpoint
|
||||||
import relax.offline.music.innertube.models.Runs
|
import melody.offline.music.innertube.models.Runs
|
||||||
import relax.offline.music.innertube.models.Thumbnail
|
import melody.offline.music.innertube.models.Thumbnail
|
||||||
import relax.offline.music.innertube.utils.brotli
|
import melody.offline.music.innertube.utils.brotli
|
||||||
import relax.offline.music.util.LogTag
|
import melody.offline.music.util.LogTag
|
||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
import io.ktor.client.engine.okhttp.OkHttp
|
import io.ktor.client.engine.okhttp.OkHttp
|
||||||
import io.ktor.client.plugins.BrowserUserAgent
|
import io.ktor.client.plugins.BrowserUserAgent
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.ExperimentalSerializationApi
|
import kotlinx.serialization.ExperimentalSerializationApi
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.ExperimentalSerializationApi
|
import kotlinx.serialization.ExperimentalSerializationApi
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.ExperimentalSerializationApi
|
import kotlinx.serialization.ExperimentalSerializationApi
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ data class MusicCardShelfRenderer(
|
|||||||
) {
|
) {
|
||||||
@Serializable
|
@Serializable
|
||||||
data class Thumbnail(
|
data class Thumbnail(
|
||||||
val thumbnails: List<relax.offline.music.innertube.models.Thumbnail>?
|
val thumbnails: List<melody.offline.music.innertube.models.Thumbnail>?
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.ExperimentalSerializationApi
|
import kotlinx.serialization.ExperimentalSerializationApi
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.ExperimentalSerializationApi
|
import kotlinx.serialization.ExperimentalSerializationApi
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.ExperimentalSerializationApi
|
import kotlinx.serialization.ExperimentalSerializationApi
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.ExperimentalSerializationApi
|
import kotlinx.serialization.ExperimentalSerializationApi
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package relax.offline.music.innertube.models
|
package melody.offline.music.innertube.models
|
||||||
|
|
||||||
import kotlinx.serialization.ExperimentalSerializationApi
|
import kotlinx.serialization.ExperimentalSerializationApi
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@ -16,7 +16,7 @@ data class ThumbnailRenderer(
|
|||||||
) {
|
) {
|
||||||
@Serializable
|
@Serializable
|
||||||
data class Thumbnail(
|
data class Thumbnail(
|
||||||
val thumbnails: List<relax.offline.music.innertube.models.Thumbnail>?
|
val thumbnails: List<melody.offline.music.innertube.models.Thumbnail>?
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package relax.offline.music.innertube.models.bodies
|
package melody.offline.music.innertube.models.bodies
|
||||||
|
|
||||||
import relax.offline.music.innertube.models.Context
|
import melody.offline.music.innertube.models.Context
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package relax.offline.music.innertube.models.bodies
|
package melody.offline.music.innertube.models.bodies
|
||||||
|
|
||||||
import relax.offline.music.innertube.models.Context
|
import melody.offline.music.innertube.models.Context
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package relax.offline.music.innertube.models.bodies
|
package melody.offline.music.innertube.models.bodies
|
||||||
|
|
||||||
import relax.offline.music.innertube.models.Context
|
import melody.offline.music.innertube.models.Context
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package relax.offline.music.innertube.models.bodies
|
package melody.offline.music.innertube.models.bodies
|
||||||
|
|
||||||
import relax.offline.music.innertube.models.Context
|
import melody.offline.music.innertube.models.Context
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package relax.offline.music.innertube.models.bodies
|
package melody.offline.music.innertube.models.bodies
|
||||||
|
|
||||||
import relax.offline.music.innertube.models.Context
|
import melody.offline.music.innertube.models.Context
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package relax.offline.music.innertube.models.bodies
|
package melody.offline.music.innertube.models.bodies
|
||||||
|
|
||||||
import relax.offline.music.innertube.models.Context
|
import melody.offline.music.innertube.models.Context
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user