From 5b86fc7e2bd30ded8975610e7eca08278385e18a Mon Sep 17 00:00:00 2001 From: lunaticbum Date: Mon, 20 Apr 2026 17:48:09 +0900 Subject: [PATCH] ... --- app/src/main/AndroidManifest.xml | 3 +++ .../extensions/my_extension/messaging.js | 2 +- .../launcher/home/CompletedFilesFragment.kt | 21 ++++++++++++------- .../bums/lunatic/launcher/home/GeckoWeb.kt | 2 +- .../lunatic/launcher/player/PlayerActivity.kt | 21 ++++++++++++++++--- 5 files changed, 37 insertions(+), 12 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1b8e1bc6..3dc637e8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -122,6 +122,7 @@ android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize" android:screenOrientation="sensor" android:hardwareAccelerated="true" + android:excludeFromRecents="true" android:exported="false"> @@ -131,6 +132,7 @@ android:launchMode="singleInstance" android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize" android:screenOrientation="portrait" + android:excludeFromRecents="true" android:hardwareAccelerated="true" android:exported="false"> @@ -141,6 +143,7 @@ android:launchMode="singleInstance" android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize" android:screenOrientation="sensor" + android:excludeFromRecents="true" android:hardwareAccelerated="true" android:exported="false"> diff --git a/app/src/main/assets/extensions/my_extension/messaging.js b/app/src/main/assets/extensions/my_extension/messaging.js index dbb22ca8..0e4a3ecb 100644 --- a/app/src/main/assets/extensions/my_extension/messaging.js +++ b/app/src/main/assets/extensions/my_extension/messaging.js @@ -754,7 +754,7 @@ function extractSubtitleList() { if (subList.length > 0) { sendMessage({ type: "SUBTITLE_LIST_RESULT", - list: subList + subTitles: subList }); } } diff --git a/app/src/main/kotlin/bums/lunatic/launcher/home/CompletedFilesFragment.kt b/app/src/main/kotlin/bums/lunatic/launcher/home/CompletedFilesFragment.kt index bff2af27..fde809bd 100644 --- a/app/src/main/kotlin/bums/lunatic/launcher/home/CompletedFilesFragment.kt +++ b/app/src/main/kotlin/bums/lunatic/launcher/home/CompletedFilesFragment.kt @@ -26,7 +26,6 @@ import android.widget.Spinner import android.widget.TextView import android.widget.Toast import androidx.activity.OnBackPressedCallback -import androidx.appcompat.app.AlertDialog import androidx.core.content.FileProvider import androidx.fragment.app.Fragment import androidx.recyclerview.widget.GridLayoutManager @@ -181,25 +180,33 @@ class CompletedFilesFragment : Fragment() { currentDir = file loadFiles() } else { + val intentFlags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK + if (extVideos.contains(file.extension.lowercase())) { - trackFileAccess(file.name) - loadFiles() + trackFileAccess(file.name) + loadFiles() val intent = Intent(requireContext(), PlayerActivity::class.java).apply { putExtra("VIDEO_PATH", file.absolutePath) + // ๐Ÿ’ก ๊ธฐ์กด ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ์œผ๋ฉด ์ œ๊ฑฐํ•˜๊ณ  ์ƒˆ๋กœ ์‹œ์ž‘ + flags = intentFlags } startActivity(intent) - } else if(extImages.contains(file.extension.lowercase())) { + } else if (extImages.contains(file.extension.lowercase())) { val intent = Intent(requireContext(), ImageViewerActivity::class.java).apply { putExtra("IMAGE_PATH", file.absolutePath) + // ๐Ÿ’ก ์ด๋ฏธ์ง€ ๋ทฐ์–ด๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ + flags = intentFlags } startActivity(intent) - } else if(extDocs.contains(file.extension.lowercase())) { + } else if (extDocs.contains(file.extension.lowercase())) { val intent = Intent(requireContext(), DocumentViewerActivity::class.java).apply { putExtra("FILE_PATH", file.absolutePath) + // ๐Ÿ’ก ๋ฌธ์„œ ๋ทฐ์–ด๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ + flags = intentFlags } startActivity(intent) } else { - openPrivateFile(requireContext(), file) // ์ด๋ฏธ์ง€๋‚˜ ๋ฌธ์„œ๋Š” ๊ธฐ์กด์ฒ˜๋Ÿผ + openPrivateFile(requireContext(), file) } } } @@ -897,7 +904,7 @@ class CompletedFilesFragment : Fragment() { val videoNameOnly = videoFile.nameWithoutExtension potentialSubtitles.forEach { subFile -> // if (subFile.nameWithoutExtension.startsWith(videoNameOnly)) { - if (subFile.renameTo(File(videoTargetDir, subFile.name))) movedCount++ + if (subFile.renameTo(File(videoTargetDir, subFile.name))) movedCount++ // } } } diff --git a/app/src/main/kotlin/bums/lunatic/launcher/home/GeckoWeb.kt b/app/src/main/kotlin/bums/lunatic/launcher/home/GeckoWeb.kt index 4899cc3e..a0b6c056 100644 --- a/app/src/main/kotlin/bums/lunatic/launcher/home/GeckoWeb.kt +++ b/app/src/main/kotlin/bums/lunatic/launcher/home/GeckoWeb.kt @@ -654,7 +654,7 @@ open class GeckoWeb @JvmOverloads constructor( when (msg.type) { "SUBTITLE_LIST_RESULT" -> { (context as? PlayerActivity)?.let { player -> - // PlayerActivity์— ๋ฆฌ์ŠคํŠธ ์ „๋‹ฌ + Blog.LOGE("msg.subTitles ${msg.subTitles}") player.runOnUiThread { player.showDownSubtitleSelectionDialog(msg.subTitles) } diff --git a/app/src/main/kotlin/bums/lunatic/launcher/player/PlayerActivity.kt b/app/src/main/kotlin/bums/lunatic/launcher/player/PlayerActivity.kt index b4cc5a83..2f0f103d 100644 --- a/app/src/main/kotlin/bums/lunatic/launcher/player/PlayerActivity.kt +++ b/app/src/main/kotlin/bums/lunatic/launcher/player/PlayerActivity.kt @@ -1,6 +1,7 @@ package bums.lunatic.launcher.player import android.app.AlertDialog +import android.content.Intent import android.content.pm.ActivityInfo import android.graphics.Color import android.graphics.SurfaceTexture @@ -501,14 +502,26 @@ class PlayerActivity : AppCompatActivity(), TextureView.SurfaceTextureListener { } + override fun onNewIntent(intent: Intent?) { + super.onNewIntent(intent) + setIntent(intent) // ์ƒˆ๋กœ์šด ์ธํ…ํŠธ๋กœ ๊ต์ฒด + // ๐Ÿ’ก ์ƒˆ๋กœ์šด ๋น„๋””์˜ค ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์žฌ์ƒ ์—”์ง„ ์žฌ์„ค์ • + videoPath = intent?.getStringExtra("VIDEO_PATH") ?: "" + if (videoPath.isNotEmpty()) { + nativePlayer?.stop() + prepareEngine() + } + } fun showDownSubtitleSelectionDialog(subList: List>) { - val items = subList.map { "[${it["lang"]}] ${it["title"]}" }.toTypedArray() - + val items = subList.map { item -> + " [${item["lang"]}] ${item["title"]} (${item["size"]})" + }.toTypedArray() + Blog.LOGE("items >> ${items.size}") AlertDialog.Builder(this) - .setTitle("์ž๋ง‰ ์„ ํƒ") + .setTitle("์ž๋ง‰ ์„ ํƒ (์›๋ณธ ํŒŒ์ผ๋ช…: ${subList[0]["originalFileName"]})") .setItems(items) { _, which -> val selected = subList[which] val detailUrl = selected["downloadUrl"] @@ -518,6 +531,7 @@ class PlayerActivity : AppCompatActivity(), TextureView.SurfaceTextureListener { geckoWeb.sendJsonMsg("GO_TO_SUBTITLE_DETAIL", "url" to detailUrl) } } + .setNegativeButton("์ทจ์†Œ", null) .show() } /** @@ -548,6 +562,7 @@ class PlayerActivity : AppCompatActivity(), TextureView.SurfaceTextureListener { } withContext(Dispatchers.Main) { + geckoWeb.visibility = View.GONE Toast.makeText(this@PlayerActivity, "์ž๋ง‰ ์ €์žฅ ์™„๋ฃŒ: ${newSubFile.name}", Toast.LENGTH_SHORT).show() // 1. ํ”Œ๋ ˆ์ด์–ด์˜ ์ž๋ง‰ ๊ฒฝ๋กœ ์—…๋ฐ์ดํŠธ