...
This commit is contained in:
parent
57039939fd
commit
86f387b2fa
@ -53,6 +53,8 @@ import com.yausername.youtubedl_android.YoutubeDL
|
||||
import com.yausername.youtubedl_android.YoutubeDLRequest
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.cancelAndJoin
|
||||
import kotlinx.coroutines.launch
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
@ -252,7 +254,8 @@ open class GeckoWeb @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun checkIfDownloadable(firstUrl: String, forMusic: Boolean = false) {
|
||||
var checkIfDownloadableJob : Job? = null
|
||||
suspend fun checkIfDownloadable(firstUrl: String, forMusic: Boolean = false) {
|
||||
if (firstUrl.startsWith("about")) {
|
||||
return
|
||||
}
|
||||
@ -262,8 +265,8 @@ open class GeckoWeb @JvmOverloads constructor(
|
||||
it.setOnClickListener {}
|
||||
it.visibility = GONE
|
||||
}
|
||||
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
checkIfDownloadableJob?.cancelAndJoin()
|
||||
checkIfDownloadableJob = CoroutineScope(Dispatchers.IO).launch {
|
||||
try {
|
||||
val request = YoutubeDLRequest(cleanUrl).apply {
|
||||
// 1. yt-dlp 업데이트 강제 (가장 중요!)
|
||||
@ -618,8 +621,10 @@ open class GeckoWeb @JvmOverloads constructor(
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
saveYoutubeCookiesToFile()
|
||||
}
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
checkIfDownloadable(currentCookieUrlString)
|
||||
}
|
||||
}
|
||||
"SCROLL_STATE" -> {
|
||||
// Blog.LOGE("${msg.type} : ${msg.value}")
|
||||
scrollState = msg.value?.toInt() ?: 0
|
||||
|
||||
@ -127,9 +127,8 @@ open class NeoRssActivity : CommonActivity() {
|
||||
}
|
||||
|
||||
override fun dispatchKeyEvent(ev: KeyEvent): Boolean {
|
||||
Blog.LOGE("keyEvent >>>>> ${ev?.device?.name}:dispatchKeyEvent >>> ${ev} ")
|
||||
|
||||
if (ev?.device?.name?.contains("JX-05") == true) {
|
||||
// (ev.action?.equals(KeyEvent.ACTION_DOWN) == true || ev.action?.equals(KeyEvent.ACTION_UP) == true)
|
||||
if (ev.action?.equals(KeyEvent.ACTION_UP) == true) {
|
||||
when(ev.keyCode) {
|
||||
KEYCODE_MEDIA_PLAY_PAUSE->{
|
||||
@ -150,7 +149,6 @@ open class NeoRssActivity : CommonActivity() {
|
||||
if (ev?.device?.name?.contains("SM-031N Mouse") == true) {
|
||||
when(ev.action) {
|
||||
ACTION_UP -> {
|
||||
Blog.LOGE("dispatch dispatchKeyEvent>>> ${ev}")
|
||||
when(ev.keyCode) {
|
||||
KEYCODE_BUTTON_Y->{
|
||||
|
||||
@ -265,7 +263,7 @@ open class NeoRssActivity : CommonActivity() {
|
||||
|
||||
private fun onRemoteKeyDetected(keyType: String, isDouble : Boolean = false) {
|
||||
Blog.LOGE("Remote Mapping Success: $keyType")
|
||||
val currentFragment = supportFragmentManager.fragments.find { it.isVisible }
|
||||
val currentFragment = targetFragment ?: supportFragmentManager.fragments.find { it.isVisible }
|
||||
if (currentFragment is RemoteGestureFragment && currentFragment.isRemoteEnabled) {
|
||||
when(keyType) {
|
||||
"UP_ARROW"->{currentFragment.onRemoteUp(isDouble)}
|
||||
@ -288,7 +286,7 @@ open class NeoRssActivity : CommonActivity() {
|
||||
}
|
||||
|
||||
override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
|
||||
Blog.LOGE("keyEvent >>>>> dispatchTouchEvent ${ev}")
|
||||
// Blog.LOGE("keyEvent >>>>> dispatchTouchEvent ${ev}")
|
||||
if (ev?.device?.name?.contains("JX-05") == true) {
|
||||
// 리모컨 이벤트인 경우 제스처 디텍터에 위임
|
||||
if (remoteGestureDetector.onTouchEvent(ev)) {
|
||||
@ -507,22 +505,22 @@ open class NeoRssActivity : CommonActivity() {
|
||||
private var lastTouchX = 0f
|
||||
private var lastTouchY = 0f
|
||||
|
||||
|
||||
var targetFragment : Fragment? = null
|
||||
// private val fragmentMap = mutableMapOf<Int, Fragment>()
|
||||
|
||||
fun showContents(id : Int) {
|
||||
if (id == View.NO_ID) {
|
||||
Blog.LOGE("무효한 ID(-1) 호출로 인해 showContents를 취소합니다.")
|
||||
// Blog.LOGE("무효한 ID(-1) 호출로 인해 showContents를 취소합니다.")
|
||||
return
|
||||
}
|
||||
|
||||
Blog.LOGE("targetFragment id ${id}")
|
||||
// Blog.LOGE("targetFragment id ${id}")
|
||||
// 1. 모든 관련 레이어 가시성 확보
|
||||
binding.fragmentContainer.isVisible = true
|
||||
|
||||
val transaction = supportFragmentManager.beginTransaction()
|
||||
val tagKey = "TAG_$id"
|
||||
Blog.LOGE("targetFragment id ${id} tagKey ${tagKey}")
|
||||
// Blog.LOGE("targetFragment id ${id} tagKey ${tagKey}")
|
||||
// 2. 매니저에 등록된 모든 프래그먼트를 찾아서 숨김 (중복 방지)
|
||||
val allFragments = supportFragmentManager.fragments
|
||||
for (f in allFragments) {
|
||||
@ -532,7 +530,7 @@ open class NeoRssActivity : CommonActivity() {
|
||||
}
|
||||
|
||||
// 3. 대상 프래그먼트 찾기 (findFragmentByTag 우선)
|
||||
var targetFragment = supportFragmentManager.findFragmentByTag(tagKey)
|
||||
targetFragment = supportFragmentManager.findFragmentByTag(tagKey)
|
||||
|
||||
if (targetFragment == null) {
|
||||
// 처음 호출되는 메뉴라면 인스턴스 생성 및 추가
|
||||
@ -562,13 +560,16 @@ open class NeoRssActivity : CommonActivity() {
|
||||
}
|
||||
|
||||
targetFragment?.let {
|
||||
Blog.LOGE("targetFragment id ${id} key : ${tagKey}, instance ${targetFragment}")
|
||||
// Blog.LOGE("targetFragment id ${id} key : ${tagKey}, instance ${targetFragment}")
|
||||
transaction.add(R.id.fragment_container, it, tagKey)
|
||||
}
|
||||
} else {
|
||||
Blog.LOGE("targetFragment id ${id} key : ${tagKey}, instance ${targetFragment}")
|
||||
// Blog.LOGE("targetFragment id ${id} key : ${tagKey}, instance ${targetFragment}")
|
||||
// 이미 생성된 프래그먼트가 있다면 다시 보여줌
|
||||
transaction.show(targetFragment)
|
||||
targetFragment?.let {
|
||||
transaction.show(it)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
transaction.commit()
|
||||
@ -625,7 +626,7 @@ open class NeoRssActivity : CommonActivity() {
|
||||
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
Blog.LOGE("handleBackPress")
|
||||
val currentFragment = supportFragmentManager.findFragmentById(R.id.fragment_container)
|
||||
val currentFragment = targetFragment ?: supportFragmentManager.findFragmentById(R.id.fragment_container)
|
||||
if (currentFragment == null) showContents(R.id.close)
|
||||
when(currentFragment) {
|
||||
is RssHome ->{
|
||||
|
||||
@ -88,11 +88,11 @@ class NLService : NotificationListenerService() {
|
||||
// 이름이 왔을 때 -> 주소록에서 번호 조회
|
||||
val foundNumber = getPhoneNumberByName(applicationContext, cleanTitle)
|
||||
if (foundNumber != null) {
|
||||
Blog.LOGE("이름($title)으로 번호($foundNumber) 조회 성공")
|
||||
// Blog.LOGE("이름($title)으로 번호($foundNumber) 조회 성공")
|
||||
WorkersDb.logContactInteraction(foundNumber, UsageUpdateType.SMS)
|
||||
} else {
|
||||
// 주소록에도 없는 이름일 경우 (이름 자체로 로그를 남기려면 WorkersDb 수정 필요)
|
||||
Blog.LOGE("주소록에서 찾을 수 없는 이름: $title")
|
||||
// Blog.LOGE("주소록에서 찾을 수 없는 이름: $title")
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -159,7 +159,7 @@ class NLService : NotificationListenerService() {
|
||||
val regex = Regex("[^가-힣ㄱ-ㅎ0-9a-zA-Z]")
|
||||
val cleaned = input.replace(regex, "").trim()
|
||||
|
||||
Blog.LOGE("정제 전: [$input] -> 정제 후: [$cleaned]")
|
||||
// Blog.LOGE("정제 전: [$input] -> 정제 후: [$cleaned]")
|
||||
return cleaned
|
||||
}
|
||||
|
||||
@ -233,11 +233,10 @@ class NLService : NotificationListenerService() {
|
||||
}
|
||||
|
||||
override fun onNotificationRemoved(sbn: StatusBarNotification) {
|
||||
Blog.LOGE("onNotificationPosted ${sbn}")
|
||||
// Blog.LOGE("onNotificationRemoved ${sbn}")
|
||||
if (sbn.packageName == "bums.lunatic.launcher" && sbn.id == 830721) {
|
||||
// 포그라운드 알림이 사라짐 감지
|
||||
Blog.LOGE("NotificationListener", "포그라운드 알림 제거 감지")
|
||||
|
||||
// Blog.LOGE("NotificationListener", "포그라운드 알림 제거 감지")
|
||||
// 서비스 재시작 시도
|
||||
val intent = Intent(this, ForeGroundService::class.java)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user