mirror of https://github.com/deniscerri/ytdlnis
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.9 KiB
Kotlin
82 lines
2.9 KiB
Kotlin
package com.deniscerri.ytdl
|
|
|
|
import android.app.Application
|
|
import android.os.Looper
|
|
import android.widget.Toast
|
|
import androidx.core.content.edit
|
|
import androidx.preference.PreferenceManager
|
|
import com.deniscerri.ytdl.util.NotificationUtil
|
|
import com.deniscerri.ytdl.util.ThemeUtil
|
|
import com.yausername.aria2c.Aria2c
|
|
import com.yausername.ffmpeg.FFmpeg
|
|
import com.yausername.youtubedl_android.YoutubeDL
|
|
import com.yausername.youtubedl_android.YoutubeDLException
|
|
import kotlinx.coroutines.CoroutineScope
|
|
import kotlinx.coroutines.Dispatchers
|
|
import kotlinx.coroutines.SupervisorJob
|
|
import kotlinx.coroutines.launch
|
|
|
|
|
|
class App : Application() {
|
|
|
|
override fun onCreate() {
|
|
super.onCreate()
|
|
instance = this
|
|
|
|
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this@App)
|
|
setDefaultValues()
|
|
applicationScope = CoroutineScope(SupervisorJob())
|
|
applicationScope.launch((Dispatchers.IO)) {
|
|
try {
|
|
createNotificationChannels()
|
|
initLibraries()
|
|
|
|
val appVer = sharedPreferences.getString("version", "")!!
|
|
if(appVer.isEmpty() || appVer != BuildConfig.VERSION_NAME){
|
|
sharedPreferences.edit(commit = true){
|
|
putString("version", BuildConfig.VERSION_NAME)
|
|
}
|
|
}
|
|
}catch (e: Exception){
|
|
Looper.prepare().runCatching {
|
|
Toast.makeText(this@App, e.message, Toast.LENGTH_SHORT).show()
|
|
}
|
|
e.printStackTrace()
|
|
}
|
|
}
|
|
ThemeUtil.init(this)
|
|
}
|
|
@Throws(YoutubeDLException::class)
|
|
private fun initLibraries() {
|
|
YoutubeDL.getInstance().init(this)
|
|
FFmpeg.getInstance().init(this)
|
|
Aria2c.getInstance().init(this)
|
|
}
|
|
|
|
private fun setDefaultValues(){
|
|
val SPL = 1
|
|
val sp = PreferenceManager.getDefaultSharedPreferences(this)
|
|
if (sp.getInt("spl", 0) != SPL) {
|
|
PreferenceManager.setDefaultValues(this, R.xml.root_preferences, true)
|
|
PreferenceManager.setDefaultValues(this, R.xml.downloading_preferences, true)
|
|
PreferenceManager.setDefaultValues(this, R.xml.general_preferences, true)
|
|
PreferenceManager.setDefaultValues(this, R.xml.processing_preferences, true)
|
|
PreferenceManager.setDefaultValues(this, R.xml.folders_preference, true)
|
|
PreferenceManager.setDefaultValues(this, R.xml.updating_preferences, true)
|
|
PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, true)
|
|
sp.edit().putInt("spl", SPL).apply()
|
|
}
|
|
|
|
}
|
|
|
|
private fun createNotificationChannels() {
|
|
val notificationUtil = NotificationUtil(this)
|
|
notificationUtil.createNotificationChannel()
|
|
}
|
|
|
|
companion object {
|
|
private const val TAG = "App"
|
|
private lateinit var applicationScope: CoroutineScope
|
|
lateinit var instance: App
|
|
}
|
|
} |