diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cfa62b2..c68d50b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -144,7 +144,7 @@
android:enabled="true"
android:exported="true" >
+ android:priority="2147483647">
diff --git a/app/src/main/kotlin/bums/lunatic/launcher/LauncherActivity.kt b/app/src/main/kotlin/bums/lunatic/launcher/LauncherActivity.kt
index 6e9ff24..1f43f17 100644
--- a/app/src/main/kotlin/bums/lunatic/launcher/LauncherActivity.kt
+++ b/app/src/main/kotlin/bums/lunatic/launcher/LauncherActivity.kt
@@ -40,7 +40,16 @@ import android.os.Environment.isExternalStorageManager
import android.os.Handler
import android.os.Looper
import android.provider.Settings
+import android.support.v4.media.MediaBrowserCompat
import android.telephony.TelephonyManager
+import android.view.KeyEvent
+import android.view.KeyEvent.ACTION_UP
+import android.view.KeyEvent.KEYCODE_BUTTON_SELECT
+import android.view.KeyEvent.KEYCODE_BUTTON_START
+import android.view.KeyEvent.KEYCODE_DPAD_DOWN
+import android.view.KeyEvent.KEYCODE_DPAD_LEFT
+import android.view.KeyEvent.KEYCODE_DPAD_RIGHT
+import android.view.KeyEvent.KEYCODE_DPAD_UP
import android.view.MotionEvent
import android.view.View
import android.view.WindowInsets
@@ -311,7 +320,63 @@ internal class LauncherActivity : CommonActivity() {
var actionButtonPressY = 0f
var onExit = false
var lastAction = MotionEvent.ACTION_HOVER_EXIT
+ override fun dispatchKeyEvent(ev: KeyEvent): Boolean {
+ Blog.LOGE("dispatch ev?.device?.name >>> ${ev?.device?.name}")
+ if (ev?.device?.name?.contains("SM-031N Mouse") == true) {
+ Blog.LOGE("dispatch dispatchKeyEvent>>> ${ev}")
+ when(ev.action) {
+ ACTION_UP -> {
+ when(ev.keyCode) {
+ KEYCODE_DPAD_LEFT->{
+
+ }
+ KEYCODE_DPAD_RIGHT->{
+
+ }
+ KEYCODE_DPAD_DOWN->{
+
+ }
+ KEYCODE_DPAD_UP->{
+
+ }
+ KEYCODE_BUTTON_START->{
+ WorkersDb.getRealm().apply {
+ writeBlocking {
+ var ddd = copyFromRealm(WorkersDb.getRssQuery(null, null,false).limit(100).find()).map { it.originPage() }
+ var origin = ddd.first()
+ RssViewBuilder(lActivity!!)
+ .setRssList(arrayListOf().apply { this.addAll(ddd) })
+ .setRssId(origin)
+ .showIconClose(true).showIconBack(false).showProgressBar(true).backPressToClose(false).webViewMixedContentMode(1)
+ .show(origin)
+ }
+ }
+ }
+ KEYCODE_BUTTON_SELECT->{
+ WorkersDb.getRealm().apply {
+ writeBlocking {
+ var ddd = copyFromRealm(WorkersDb.getVotedRss().limit(100).find()).map { it.originPage() }
+ var origin = ddd.first()
+ RssViewBuilder(lActivity!!)
+ .setRssList(arrayListOf().apply { this.addAll(ddd) })
+ .setRssId(origin)
+ .showIconClose(true).showIconBack(false).showProgressBar(true).backPressToClose(false).webViewMixedContentMode(1)
+ .show(origin)
+ }
+ }
+ }
+ else -> {}
+ }
+ }
+ else->{}
+ }
+ return true
+ }
+ return super.dispatchKeyEvent(ev)
+ }
override fun dispatchGenericMotionEvent(ev: MotionEvent?): Boolean {
+// Blog.LOGE("dispatchKeyEvent ev?.device?.name >>> ${ev?.device?.name}")
+ /// || ev?.device?.name?.contains("SM-031N Mouse") == true
if (ev?.device?.name?.contains("BLE-M3") == true) {
Blog.LOGE("keyEvent >>>>> dispatchGenericMotionEvent ${ev}")
ev?.action?.let { action ->
@@ -480,7 +545,7 @@ internal class LauncherActivity : CommonActivity() {
appWidgetHost = WidgetHost(applicationContext, widgetHostId)
appWidgetHost?.startListening()
HeadsetActionButtonReceiver.register(this)
-
+// MediaBrowserCompat.ConnectionCallback
/* if this is the first launch,
then remember the event and show the welcome dialog */
diff --git a/app/src/main/kotlin/bums/lunatic/launcher/helpers/HeadsetActionButtonReceiver.kt b/app/src/main/kotlin/bums/lunatic/launcher/helpers/HeadsetActionButtonReceiver.kt
index d85bc8c..461f241 100644
--- a/app/src/main/kotlin/bums/lunatic/launcher/helpers/HeadsetActionButtonReceiver.kt
+++ b/app/src/main/kotlin/bums/lunatic/launcher/helpers/HeadsetActionButtonReceiver.kt
@@ -19,26 +19,34 @@ class HeadsetActionButtonReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
Blog.LOGE("HeadsetActionButtonReceiver keyEvent >>>>> ${intent}")
- if (intent == null || delegate == null || Intent.ACTION_MEDIA_BUTTON != intent.action) return
+ intent?.extras?.keySet()?.forEach {
+ try {
+ Blog.LOGE("${it} ${intent?.extras?.get(it)}")
+ } catch (e :Exception) {
- val keyEvent = intent.extras!![Intent.EXTRA_KEY_EVENT] as KeyEvent?
- if (keyEvent == null || keyEvent.action != KeyEvent.ACTION_DOWN) return
- Blog.LOGE("HeadsetActionButtonReceiver keyEvent >>>>> ${keyEvent}")
- counter++
- if (doublePressTimer != null) {
- doublePressTimer!!.cancel()
- }
- doublePressTimer = Timer()
- doublePressTimer!!.schedule(object : TimerTask() {
- override fun run() {
- if (counter == 1) {
- delegate!!.onMediaButtonSingleClick()
- } else {
- delegate!!.onMediaButtonDoubleClick()
- }
- counter = 0
}
- }, doublePressSpeed.toLong())
+ }
+ if (intent == null || Intent.ACTION_MEDIA_BUTTON != intent.action) return
+
+ val keyEvent = intent.extras?.get(Intent.EXTRA_KEY_EVENT) as KeyEvent?
+ if (keyEvent == null || keyEvent.action != KeyEvent.ACTION_DOWN) return
+ Blog.LOGE("HeadsetActionButtonReceiver keyEvent >>>>> ${keyEvent}")
+// counter++
+// if (doublePressTimer != null) {
+// doublePressTimer!!.cancel()
+// }
+// doublePressTimer = Timer()
+// doublePressTimer!!.schedule(object : TimerTask() {
+// override fun run() {
+// if (counter == 1) {
+// delegate!!.onMediaButtonSingleClick()
+// } else {
+// delegate!!.onMediaButtonDoubleClick()
+// }
+// counter = 0
+// }
+// }, doublePressSpeed.toLong())
+ abortBroadcast()
}
companion object {
diff --git a/app/src/main/kotlin/bums/lunatic/launcher/home/LauncherHome.kt b/app/src/main/kotlin/bums/lunatic/launcher/home/LauncherHome.kt
index be9f742..8796142 100644
--- a/app/src/main/kotlin/bums/lunatic/launcher/home/LauncherHome.kt
+++ b/app/src/main/kotlin/bums/lunatic/launcher/home/LauncherHome.kt
@@ -276,15 +276,16 @@ internal class LauncherHome : Fragment() {
}
}
}
- musicJob?.cancel()
- musicJob = CoroutineScope(Dispatchers.Default).launch {
- WorkersDb.getRealm().apply {
- query().find().asFlow()
- .collect { changes: ResultsChange ->
- binding.currentMusic.postDelayed({
- if (changes.list.size > 0) {
- PrefBoolean.showNowPlaying.get(false).letTrue {
+ if(PrefBoolean.showNowPlaying.get(false)) {
+ musicJob?.cancel()
+ musicJob = CoroutineScope(Dispatchers.Default).launch {
+ WorkersDb.getRealm().apply {
+ query().find().asFlow()
+ .collect { changes: ResultsChange ->
+ binding.currentMusic.postDelayed({
+ Blog.LOGE("changes.list >>> ${changes.list}")
+ if (changes.list.size > 0) {
changes.list.first()?.let {
binding.currentMusic.visibility = View.VISIBLE
binding.nextPlay.visibility = View.GONE
@@ -300,43 +301,46 @@ internal class LauncherHome : Fragment() {
// log error
}
}
+ } else {
+ binding.currentMusic.visibility = View.GONE
+ binding.nextPlay.visibility = View.VISIBLE
}
- } else {
- binding.currentMusic.visibility = View.GONE
- binding.nextPlay.visibility = View.VISIBLE
- }
- }, 150L)
- }
+ }, 150L)
+ }
+ }
}
- }
- musicJob?.start()
- binding.nextBtn.setOnClickListener {
- val mAudioManager =
- requireContext().getSystemService(AUDIO_SERVICE) as AudioManager
+ musicJob?.start()
+ binding.nextBtn.setOnClickListener {
+ val mAudioManager =
+ requireContext().getSystemService(AUDIO_SERVICE) as AudioManager
- val eventtime: Long = SystemClock.uptimeMillis()
+ val eventtime: Long = SystemClock.uptimeMillis()
- val downEvent =
- KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_NEXT, 0)
- mAudioManager.dispatchMediaKeyEvent(downEvent)
+ val downEvent =
+ KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_NEXT, 0)
+ mAudioManager.dispatchMediaKeyEvent(downEvent)
- val upEvent =
- KeyEvent(eventtime, eventtime, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_NEXT, 0)
- mAudioManager.dispatchMediaKeyEvent(upEvent)
- }
- binding.nextPlay.setOnClickListener {
- val mAudioManager =
- requireContext().getSystemService(AUDIO_SERVICE) as AudioManager
+ val upEvent =
+ KeyEvent(eventtime, eventtime, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_NEXT, 0)
+ mAudioManager.dispatchMediaKeyEvent(upEvent)
+ }
+ binding.nextPlay.setOnClickListener {
+ val mAudioManager =
+ requireContext().getSystemService(AUDIO_SERVICE) as AudioManager
- val eventtime: Long = SystemClock.uptimeMillis()
+ val eventtime: Long = SystemClock.uptimeMillis()
- val downEvent =
- KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY, 0)
- mAudioManager.dispatchMediaKeyEvent(downEvent)
+ val downEvent =
+ KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY, 0)
+ mAudioManager.dispatchMediaKeyEvent(downEvent)
- val upEvent =
- KeyEvent(eventtime, eventtime, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PLAY, 0)
- mAudioManager.dispatchMediaKeyEvent(upEvent)
+ val upEvent =
+ KeyEvent(eventtime, eventtime, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PLAY, 0)
+ mAudioManager.dispatchMediaKeyEvent(upEvent)
+ }
+ } else {
+ binding.currentMusic.visibility = View.GONE
+ binding.nextPlay.visibility = View.VISIBLE
}
}
@SuppressLint("NotifyDataSetChanged")
@@ -360,7 +364,7 @@ internal class LauncherHome : Fragment() {
lonR.first(), lonR.last(),
(System.currentTimeMillis() / 1000L).toLong()
).also {
- Blog.LOGE("re >>> ${it.description()}")
+// Blog.LOGE("re >>> ${it.description()}")
}.find().let { hours ->
Handler(Looper.getMainLooper()).post {
weatherDressAdapter?.let {
@@ -383,7 +387,7 @@ internal class LauncherHome : Fragment() {
)
}
)
- Blog.LOGE("hour ${hours}")
+// Blog.LOGE("hour ${hours}")
it.notifyDataSetChanged()
}
mWeatherAdapter?.let {
@@ -401,7 +405,7 @@ internal class LauncherHome : Fragment() {
// @SuppressLint("NotifyDataSetChanged")
private fun queryWeather() {
result = WorkersDb.getRealm().query().also {
- Blog.LOGE("re >>> ${it.description()}") // 쿼리 로그
+// Blog.LOGE("re >>> ${it.description()}") // 쿼리 로그
}.find()
weatherJob?.cancel()
weatherJob = CoroutineScope(Dispatchers.Default).launch {
diff --git a/app/src/main/kotlin/bums/lunatic/launcher/home/RssViewerActivity.kt b/app/src/main/kotlin/bums/lunatic/launcher/home/RssViewerActivity.kt
index 761f0b6..2e1fdef 100644
--- a/app/src/main/kotlin/bums/lunatic/launcher/home/RssViewerActivity.kt
+++ b/app/src/main/kotlin/bums/lunatic/launcher/home/RssViewerActivity.kt
@@ -3,7 +3,21 @@ package bums.lunatic.launcher.home
import android.app.Activity
import android.content.Context
import android.content.Intent
+import android.view.KeyEvent
+import android.view.KeyEvent.ACTION_UP
+import android.view.KeyEvent.KEYCODE_BUTTON_A
+import android.view.KeyEvent.KEYCODE_BUTTON_B
+import android.view.KeyEvent.KEYCODE_BUTTON_SELECT
+import android.view.KeyEvent.KEYCODE_BUTTON_START
+import android.view.KeyEvent.KEYCODE_BUTTON_X
+import android.view.KeyEvent.KEYCODE_BUTTON_Y
+import android.view.KeyEvent.KEYCODE_DPAD_DOWN
+import android.view.KeyEvent.KEYCODE_DPAD_LEFT
+import android.view.KeyEvent.KEYCODE_DPAD_RIGHT
+import android.view.KeyEvent.KEYCODE_DPAD_UP
import android.view.MotionEvent
+import android.view.MotionEvent.ACTION_MOVE
+import android.view.View
import android.widget.Toast
import androidx.core.net.toUri
import bums.lunatic.launcher.LauncherActivity.Companion.lActivity
@@ -48,13 +62,187 @@ class RssViewBuilder(context: Context) : AwesomeWebView.Builder(context) {
ContextUtil.startActivity(intent)
}
}
-class RssViewerActivity : AwesomeWebViewActivity() {
+class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListener {
var actionButtonPressX = 0f
var actionButtonPressY = 0f
var rssId : String = ""
var currentIdx = 0
var double = false
var rssList: MutableList = ArrayList()
+
+ override fun onResume() {
+ super.onResume()
+ webView?.setOnGenericMotionListener(this)
+ }
+
+ var lasteventTime = 0L
+ override fun onGenericMotion(p0: View?, ev: MotionEvent?): Boolean {
+ if (ev?.device?.name?.contains("SM-031N Mouse") == true) {
+ if(ev.action == ACTION_MOVE && ev.x != ev.y) {
+ val correctTime = (ev.eventTime - lasteventTime) > 2
+ if (correctTime) {
+ Blog.LOGE("onGenericMotionEvent webviews ${p0} ev?.device?.name >>> ${ev?.device?.name} >> ${ev}")
+ if (ev.x <= -1.0f) {
+ leftClick()
+ } else if (ev.x >= 1.0f) {
+ rightClick()
+ } else if (ev.y <= -1.0f) {
+ scrollUp()
+ } else if (ev.y >= 1.0f) {
+ scrollDown()
+ }
+ lasteventTime = ev.eventTime
+ }
+ } else {
+
+ }
+ return true
+ }
+ return false
+ }
+
+ override fun onGenericMotionEvent(ev: MotionEvent?): Boolean {
+
+ if (ev?.device?.name?.contains("SM-031N Mouse") == true) {
+ Blog.LOGE("onGenericMotionEvent ev?.device?.name >>> ${ev?.device?.name} >> ${ev}")
+ return true
+ }
+ return super.onGenericMotionEvent(ev)
+ }
+ override fun dispatchKeyEvent(ev: KeyEvent): Boolean {
+ Blog.LOGE("dispatch ev?.device?.name >>> ${ev?.device?.name}")
+ if (ev?.device?.name?.contains("SM-031N Mouse") == true) {
+ Blog.LOGE("onGenericMotionEvent ev?.device?.name >>> ${ev?.device?.name} >> ${ev}")
+ when(ev.action) {
+ ACTION_UP -> {
+ when(ev.keyCode) {
+ KEYCODE_BUTTON_X -> {
+ finish()
+ return true
+ }
+ KEYCODE_DPAD_LEFT ->{
+ leftClick()
+ return true
+ }
+ KEYCODE_BUTTON_B,KEYCODE_DPAD_RIGHT ->{
+ rightClick()
+ return true
+ }
+ KEYCODE_BUTTON_A, KEYCODE_DPAD_DOWN ->{
+ scrollDown()
+ return true
+ }
+ KEYCODE_BUTTON_Y,KEYCODE_DPAD_UP ->{
+ scrollUp()
+ return true
+ }
+ KEYCODE_BUTTON_START->{
+ hideRss()
+ return true
+ }
+ KEYCODE_BUTTON_SELECT ->{
+ vote()
+ return true
+ }
+ else -> {}
+ }
+ }
+ else->{}
+ }
+ return true
+ }
+ return super.dispatchKeyEvent(ev)
+ }
+
+ fun vote(){
+ Blog.LOGE("Arrow Center Click")
+ WorkersDb.getRealm().apply {
+ writeBlocking {
+ val result = query().query("originPage == $0", rssId).find()
+ if(result.size == 1) {
+ result.first().vote = true
+ }
+ }
+ }
+ rssList.remove(rssId)
+ if (currentIdx < rssList.size - 1) {
+ currentIdx += 1
+ rssId = rssList.get(currentIdx)
+ Blog.LOGE("Arrow Right Click ${currentIdx} ${rssId}")
+ load(rssId)
+ } else if (currentIdx > 0) {
+ currentIdx -= 1
+ rssId = rssList.get(currentIdx)
+ Blog.LOGE("Arrow Left Click ${currentIdx} ${rssId}")
+ load(rssId)
+ }
+ registCancelSearch()
+ }
+ fun hideRss() {
+ Blog.LOGE("make no show")
+ WorkersDb.getRealm().apply {
+ writeBlocking {
+ val result =
+ query().query("originPage == $0", rssId)
+ .find()
+ if (result.size == 1) {
+ result.first().read += 5
+ }
+ }
+ }
+ rssList.remove(rssId)
+ if (currentIdx < rssList.size - 1) {
+ currentIdx += 1
+ rssId = rssList.get(currentIdx)
+ Blog.LOGE("Arrow Right Click ${currentIdx} ${rssId}")
+ load(rssId)
+ registCancelSearch()
+ } else if (currentIdx > 0) {
+ currentIdx -= 1
+ rssId = rssList.get(currentIdx)
+ Blog.LOGE("Arrow Left Click ${currentIdx} ${rssId}")
+ load(rssId)
+ registCancelSearch()
+ } else {
+ finish()
+ }
+ }
+
+ fun rightClick() {
+ if (currentIdx < rssList.size - 1) {
+ currentIdx += 1
+ rssId = rssList.get(currentIdx)
+ Blog.LOGE("Arrow Right Click ${currentIdx} ${rssId}")
+ load(rssId)
+ registCancelSearch()
+ } else {
+ Toast.makeText(this, "없어 끄자", Toast.LENGTH_LONG).show()
+ fast()
+ }
+ }
+
+ fun leftClick() {
+ if (currentIdx > 0) {
+ currentIdx -= 1
+ rssId = rssList.get(currentIdx)
+ Blog.LOGE("Arrow Left Click ${currentIdx} ${rssId}")
+ load(rssId)
+ registCancelSearch()
+ } else {
+ Toast.makeText(this, "없어 끄자", Toast.LENGTH_LONG).show()
+ fast()
+ }
+ Blog.LOGE("Arrow Left Click")
+ }
+
+ fun getUnit() = ((webView?.height ?: 0) * 0.4).toInt()
+ fun scrollDown() {
+ Blog.LOGE("Arrow Down Click")
+ registCancelSearch()
+ webView?.scrollTo(webView?.scrollX ?: 0, (webView?.scrollY ?: 0) + getUnit())
+ }
+
+
override fun dispatchGenericMotionEvent(ev: MotionEvent?): Boolean {
if (ev?.device?.name?.contains("BLE-M3") == true) {
Blog.LOGE("keyEvent >>>>> dispatchGenericMotionEvent ${ev}")
@@ -78,97 +266,33 @@ class RssViewerActivity : AwesomeWebViewActivity() {
if (actionButtonPressX == ev.x && actionButtonPressY == ev.y) {
Blog.LOGE("Arrow Center Click")
if(actionButtonPressX.toInt() == 480 && actionButtonPressY < 2000) {
- Blog.LOGE("Arrow Center Click")
- WorkersDb.getRealm().apply {
- writeBlocking {
- val result = query().query("originPage == $0", rssId).find()
- if(result.size == 1) {
- result.first().vote = true
- }
- }
- }
+ vote()
} else if(ev.y > 2000) {
- WorkersDb.getRealm().apply {
- writeBlocking {
- val result = query().query("originPage == $0", rssId).find()
- if(result.size == 1) {
- result.first().read = 5
- }
- }
- }
+ hideRss()
}
registCancelSearch()
double = false
} else if (actionButtonPressY == ev.y) {
if (actionButtonPressX.minus(ev.x ?: 0f) > 0f) {
- Blog.LOGE("Arrow Right Click")
-
- if (currentIdx < rssList.size - 1) {
- currentIdx += 1
- rssId = rssList.get(currentIdx)
- Blog.LOGE("Arrow Right Click ${currentIdx} ${rssId}")
- load(rssId)
- registCancelSearch()
- } else {
- Toast.makeText(this, "없어 끄자", Toast.LENGTH_LONG).show()
- fast()
- }
+ rightClick()
} else {
- if (currentIdx > 0) {
- currentIdx -= 1
- rssId = rssList.get(currentIdx)
- Blog.LOGE("Arrow Left Click ${currentIdx} ${rssId}")
- load(rssId)
- registCancelSearch()
- } else {
- Toast.makeText(this, "없어 끄자", Toast.LENGTH_LONG).show()
- fast()
- }
- Blog.LOGE("Arrow Left Click")
+ leftClick()
}
double = false
} else {
if (webView?.scrollY ?: 0 < 10 && actionButtonPressY.minus(ev.y ?: 0f) > 0f == false) {
if(double){
- Blog.LOGE("make no show")
- WorkersDb.getRealm().apply {
- writeBlocking {
- val result =
- query().query("originPage == $0", rssId)
- .find()
- if (result.size == 1) {
- result.first().read = 5
- }
- }
- }
- if (currentIdx < rssList.size - 1) {
- currentIdx += 1
- rssId = rssList.get(currentIdx)
- Blog.LOGE("Arrow Right Click ${currentIdx} ${rssId}")
- load(rssId)
- registCancelSearch()
- } else if (currentIdx > 0) {
- currentIdx -= 1
- rssId = rssList.get(currentIdx)
- Blog.LOGE("Arrow Left Click ${currentIdx} ${rssId}")
- load(rssId)
- registCancelSearch()
- } else {
- finish()
- }
+ hideRss()
+ } else {
+ double = true
}
- double = true
} else {
double = false
- val unit = ((webView?.height ?: 0) * 0.4).toInt()
if (actionButtonPressY.minus(ev.y ?: 0f) > 0f) {
- Blog.LOGE("Arrow Down Click")
- registCancelSearch()
- webView?.scrollTo(webView?.scrollX?: 0,(webView?.scrollY?: 0) + unit)
+
+ scrollDown()
} else {
- webView?.scrollTo(webView?.scrollX?: 0,(webView?.scrollY?: 0) - unit)
- Blog.LOGE("Arrow Up Click")
- registCancelSearch()
+ scrollUp()
}
}
}
@@ -185,13 +309,18 @@ class RssViewerActivity : AwesomeWebViewActivity() {
}
return super.dispatchGenericMotionEvent(ev)
}
+ fun scrollUp() {
+ webView?.scrollTo(webView?.scrollX?: 0,(webView?.scrollY?: 0) - getUnit())
+ Blog.LOGE("Arrow Up Click")
+ registCancelSearch()
+ }
protected fun load(newUrl: String) {
if (extraHeaders == null) {
webView!!.loadUrl(newUrl!!)
} else {
webView!!.loadUrl(newUrl!!, extraHeaders!!)
}
- double = false
+ registCancelSearch()
}
override fun initializeOptions() {
@@ -209,4 +338,18 @@ class RssViewerActivity : AwesomeWebViewActivity() {
return@forEachIndexed}
}
}
+ override fun webviewOnPageFinished() {
+ double = false
+ WorkersDb.getRealm().apply {
+ writeBlocking {
+ val result =
+ query().query("originPage == $0", rssId)
+ .find()
+ if (result.size == 1) {
+ result.first().read += 1
+ }
+ }
+ }
+ registCancelSearch()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/bums/lunatic/launcher/home/adapters/RssFeedsParser.kt b/app/src/main/kotlin/bums/lunatic/launcher/home/adapters/RssFeedsParser.kt
index 96feaeb..d58cad6 100644
--- a/app/src/main/kotlin/bums/lunatic/launcher/home/adapters/RssFeedsParser.kt
+++ b/app/src/main/kotlin/bums/lunatic/launcher/home/adapters/RssFeedsParser.kt
@@ -4,6 +4,7 @@ import android.util.Xml
import bums.lunatic.launcher.model.NewsData
import bums.lunatic.launcher.model.RssDataInterface
import bums.lunatic.launcher.model.others.Reddit
+import bums.lunatic.launcher.utils.Blog
import bums.lunatic.launcher.utils.beforeDay
import com.google.gson.Gson
import org.xmlpull.v1.XmlPullParser
@@ -85,6 +86,7 @@ object RssFeedsParser {
var date = 0L
var desc : String? = null
var source : String? = null
+
val items: MutableList = ArrayList()
while (parser.next() != XmlPullParser.END_DOCUMENT) {
@@ -95,7 +97,15 @@ object RssFeedsParser {
val name = parser.name
if (name == "title") {
title = readTitle(parser)
- } else if (name == "link") {
+ }else if (name == "ht:news_item_title") {
+ title = readByTag(parser,"ht:news_item_title")
+ }else if (name == "ht:news_item_url") {
+ link = readByTag(parser,"ht:news_item_url")
+ }else if (name == "ht:news_item_picture") {
+ source = readByTag(parser,"ht:news_item_picture")
+ }else if (name == "ht:picture") {
+ source = readByTag(parser,"ht:picture")
+ } else if (name == "link") {
link = readLink(parser)
} else if (name == "pubDate") {
val dateStr = readDate(parser)
@@ -107,7 +117,9 @@ object RssFeedsParser {
source = readThumbnail(parser)
}
+
if (date > limitDateTime && title != null && link != null) {
+ Blog.LOGE("date ${date} title ${title} link ${link}")
val item = NewsData(title, link)
item.pubDate = date
item.source = source
@@ -117,7 +129,7 @@ object RssFeedsParser {
link = null
source = null
desc = null
- date = 0
+// date = 0
}
}
return items
@@ -139,6 +151,15 @@ object RssFeedsParser {
return title
}
+ @Throws(XmlPullParserException::class, IOException::class)
+ private fun readByTag(parser: XmlPullParser, tag : String): String {
+ parser.require(XmlPullParser.START_TAG, null, tag)
+ val title = readText(parser)
+// Blog.LOGE("readByTag >>>> ${tag} >> ${title}")
+ parser.require(XmlPullParser.END_TAG, null, tag)
+ return title
+ }
+
@Throws(XmlPullParserException::class, IOException::class)
private fun readDate(parser: XmlPullParser): String {
var date = ""
diff --git a/app/src/main/kotlin/bums/lunatic/launcher/home/adapters/RssItemAdapter.kt b/app/src/main/kotlin/bums/lunatic/launcher/home/adapters/RssItemAdapter.kt
index 7f09fcb..57191e3 100644
--- a/app/src/main/kotlin/bums/lunatic/launcher/home/adapters/RssItemAdapter.kt
+++ b/app/src/main/kotlin/bums/lunatic/launcher/home/adapters/RssItemAdapter.kt
@@ -39,8 +39,10 @@ import bums.lunatic.launcher.openClient
import bums.lunatic.launcher.openDotax
import bums.lunatic.launcher.openReddit
import bums.lunatic.launcher.openYouTube
+import bums.lunatic.launcher.utils.Blog
import bums.lunatic.launcher.workers.WorkersDb
import com.google.android.material.imageview.ShapeableImageView
+import com.google.gson.Gson
import com.squareup.picasso.Picasso
import kr.lunaticbum.awesomewebview.AwesomeWebView
import io.realm.kotlin.UpdatePolicy
@@ -161,9 +163,11 @@ internal class RssItemAdapter (
} else {
holder.view.date.text = emptyDate
}
-// if(RssDataType.FMKORAE.equals(rssData.category())) {
-// BLog.LOGE("rssData >>>> ${Gson().toJson(rssData)}")
+
+// if(RssDataType.NEWSFEED.equals(rssData.category())) {
+// Blog.LOGE("rssData >>>> ${rssData.thumbnailUrl()}")
// }
+
holder.view.title.text = "".plus(if(rssData.vote) " * " else "").plus(rssData.title().plus("[R:${rssData.read}]"))
holder.view.desc.text = rssData.description()
diff --git a/app/src/main/kotlin/bums/lunatic/launcher/receiver/NLService.kt b/app/src/main/kotlin/bums/lunatic/launcher/receiver/NLService.kt
index 9b3ba9d..c41b512 100644
--- a/app/src/main/kotlin/bums/lunatic/launcher/receiver/NLService.kt
+++ b/app/src/main/kotlin/bums/lunatic/launcher/receiver/NLService.kt
@@ -7,6 +7,7 @@ import android.content.Intent
import android.content.IntentFilter
import android.media.MediaMetadata
import android.media.session.MediaSessionManager
+import android.media.session.PlaybackState.STATE_PLAYING
import android.os.Build
import android.service.notification.NotificationListenerService
import android.service.notification.StatusBarNotification
@@ -75,51 +76,37 @@ class NLService : NotificationListenerService() {
val m = getSystemService()!!
val component = ComponentName(this, NLService::class.java)
val sessions = m.getActiveSessions(component)
-// BLog.LOGE("Sessions", "count: ${sessions.size}")
sessions.forEach { session ->
WorkersDb.getRealm().writeBlocking {
- if (session.playbackState?.isActive == true) {
- val result = query().find()
- var current : CurrentPlayItem? = null
- if (result.size > 0) {
- current = result.first()
+ Blog.LOGE("session.playbackState >>> ${session.playbackState}")
+ if (session.playbackState != null) {
+ if (session.playbackState?.isActive == true && session.playbackState?.state?.equals(
+ STATE_PLAYING
+ ) == true
+ ) {
+ session.playbackState?.state
+ val result = query().find()
+ var current: CurrentPlayItem? = null
+ if (result.size > 0) {
+ current = result.first()
+ } else {
+ current = CurrentPlayItem()
+ copyToRealm(current, UpdatePolicy.ALL)
+ }
+ if (session?.metadata?.containsKey(MediaMetadata.METADATA_KEY_ALBUM_ART) == true) {
+ current.albumArt = BitmapConverter.BitmapToString(
+ session.metadata?.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART)
+ )
+ } else {
+ current.albumArt = ""
+ }
+ current.title =
+ session?.metadata?.getString(MediaMetadata.METADATA_KEY_TITLE)
+ current.artists =
+ session?.metadata?.getString(MediaMetadata.METADATA_KEY_ARTIST)
} else {
- current = CurrentPlayItem()
- copyToRealm(current, UpdatePolicy.ALL)
+ delete(query().find())
}
-// BLog.LOGE(
-// "Sessions",
-// "$session -- " + (session.playbackState?.state)
-// )
-// BLog.LOGE(
-// "Sessions",
-// "$session -- " + (session?.metadata?.keySet()?.joinToString())
-// )
-// BLog.LOGE(
-// "Sessions",
-// "$session -- " + (session?.metadata?.getString(MediaMetadata.METADATA_KEY_ARTIST))
-// )
- if (session?.metadata?.containsKey(MediaMetadata.METADATA_KEY_ALBUM_ART) == true) {
-// BLog.LOGE(
-// "Sessions",
-// "$session -- " + (session?.metadata?.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART))
-// )
- current.albumArt = BitmapConverter.BitmapToString(
- session.metadata?.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART)
- )
- } else {
- current.albumArt = ""
- }
- Blog.LOGE(
- "Sessions",
- "$session -- " + (session?.metadata?.getString(MediaMetadata.METADATA_KEY_TITLE))
- )
- current.title = session?.metadata?.getString(MediaMetadata.METADATA_KEY_TITLE)
- current.artists = session?.metadata?.getString(MediaMetadata.METADATA_KEY_ARTIST)
-
-
- } else {
- delete(query().find())
}
}
diff --git a/app/src/main/kotlin/bums/lunatic/launcher/settings/childs/HomeSettings.kt b/app/src/main/kotlin/bums/lunatic/launcher/settings/childs/HomeSettings.kt
index a8d5334..63a5c01 100644
--- a/app/src/main/kotlin/bums/lunatic/launcher/settings/childs/HomeSettings.kt
+++ b/app/src/main/kotlin/bums/lunatic/launcher/settings/childs/HomeSettings.kt
@@ -62,8 +62,10 @@ internal class HomeSettings : BottomSheetDialogFragment() {
binding.notificationInfos.setOnCheckedChangeListener { buttonView, isChecked -> PrefBoolean.showNotificationHistory.set(isChecked)
settingsChanged = true}
binding.nowPlaying.isChecked = PrefBoolean.showNowPlaying.get(false)
- binding.nowPlaying.setOnCheckedChangeListener { buttonView, isChecked -> PrefBoolean.showNowPlaying.set(isChecked)
- settingsChanged = true}
+ binding.nowPlaying.setOnCheckedChangeListener { buttonView, isChecked ->
+ PrefBoolean.showNowPlaying.set(isChecked)
+ settingsChanged = true
+ }
diff --git a/app/src/main/kotlin/bums/lunatic/launcher/utils/RssList.kt b/app/src/main/kotlin/bums/lunatic/launcher/utils/RssList.kt
index aec1e3b..c3ffb61 100644
--- a/app/src/main/kotlin/bums/lunatic/launcher/utils/RssList.kt
+++ b/app/src/main/kotlin/bums/lunatic/launcher/utils/RssList.kt
@@ -16,6 +16,8 @@ object RssList {
val newsFeeds = arrayListOf(
"https://news.google.com/rss?hl=ko&gl=KR&ceid=KR:ko",
"https://rss.nocutnews.co.kr/news/top.xml",
+ "https://trends.google.co.kr/trending/rss?geo=KR",
+ "https://trends.google.co.kr/trends/trendingsearches/daily/rss?geo=KR"
)
val feedJsons = arrayListOf(
diff --git a/app/src/main/kotlin/bums/lunatic/launcher/workers/DCGetter.kt b/app/src/main/kotlin/bums/lunatic/launcher/workers/DCGetter.kt
index 2cc4261..fc16ba9 100644
--- a/app/src/main/kotlin/bums/lunatic/launcher/workers/DCGetter.kt
+++ b/app/src/main/kotlin/bums/lunatic/launcher/workers/DCGetter.kt
@@ -94,7 +94,11 @@ class DCGetter : BaseGetter {
}
}
return Result.success().apply {
- WorkersDb.insertBulkData(temp)
+ try {
+ WorkersDb.insertBulkData(temp)
+ } catch (e : Exception) {
+
+ }
}
}
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/bums/lunatic/launcher/workers/LocationGetter.kt b/app/src/main/kotlin/bums/lunatic/launcher/workers/LocationGetter.kt
index 90cd2e2..12b8003 100644
--- a/app/src/main/kotlin/bums/lunatic/launcher/workers/LocationGetter.kt
+++ b/app/src/main/kotlin/bums/lunatic/launcher/workers/LocationGetter.kt
@@ -23,14 +23,14 @@ class LocationGetter(context: Context, workerParams: WorkerParameters) : BaseGet
@SuppressLint("MissingPermission")
override fun realWork(): Result {
- Blog.LOGE("${OpenWeatherGetter.TAG} realWork()")
+// Blog.LOGE("${OpenWeatherGetter.TAG} realWork()")
LocationServices.getFusedLocationProviderClient(this.applicationContext)
.getCurrentLocation(Priority.PRIORITY_HIGH_ACCURACY, CancellationTokenSource().token)
.addOnSuccessListener{ success: Location? ->
success?.let {
- Blog.LOGE("Location >>> $it")
- Blog.LOGE("Location >>> (latitude)${it.longitude}/(longitude)${it.latitude}")
+// Blog.LOGE("Location >>> $it")
+// Blog.LOGE("Location >>> (latitude)${it.longitude}/(longitude)${it.latitude}")
longitude = it.longitude
latitude = it.latitude
runWeatherGetter()
@@ -39,7 +39,7 @@ class LocationGetter(context: Context, workerParams: WorkerParameters) : BaseGet
}
}
}.addOnFailureListener{
- Blog.LOGE("Location error >>> $it")
+// Blog.LOGE("Location error >>> $it")
}
return Result.success()
diff --git a/app/src/main/kotlin/bums/lunatic/launcher/workers/WorkersDb.kt b/app/src/main/kotlin/bums/lunatic/launcher/workers/WorkersDb.kt
index 36f12f8..2acf52c 100644
--- a/app/src/main/kotlin/bums/lunatic/launcher/workers/WorkersDb.kt
+++ b/app/src/main/kotlin/bums/lunatic/launcher/workers/WorkersDb.kt
@@ -92,7 +92,7 @@ object WorkersDb {
try {
getRealm().writeBlocking {
try {
- val catfillters = arrayListOf(RssDataType.NEWSFEED,RssDataType.THEQOO,RssDataType.RULIWEB,RssDataType.ARCA,RssDataType.CLIEN,RssDataType.FMKORAE,RssDataType.DOTAX,RssDataType.DCINSIDE)
+ val catfillters = arrayListOf(RssDataType.THEQOO,RssDataType.RULIWEB,RssDataType.ARCA,RssDataType.CLIEN,RssDataType.FMKORAE,RssDataType.DOTAX,RssDataType.DCINSIDE)
if(catfillters.contains(it.category()) && query("chosung == $0",it.chosung).find().size == 0) {
this.copyToRealm(it, UpdatePolicy.ERROR)
} else {
@@ -198,7 +198,7 @@ object WorkersDb {
fun getVotedRss() = getRealm().query().query("vote == $0", true)
fun getRssQuery(keyword: String?,
- category: ArrayList = arrayListOf(),
+ category: ArrayList? = arrayListOf(),
noLimit: Boolean = false) : RealmQuery{
var rQ = getRealm().query()
if (!noLimit) rQ.query("pubDate > $0", beforeDay(Date(), 3))
@@ -216,8 +216,8 @@ object WorkersDb {
}
}
var queryString = ""
- category.isNotEmpty().letTrue {
- category.forEachIndexed { idx, it ->
+ category?.isNotEmpty()?.letTrue {
+ category?.forEachIndexed { idx, it ->
if (idx == 0) {
queryString = queryString.plus("category == '${it}'")
} else {
@@ -227,7 +227,7 @@ object WorkersDb {
rQ = rQ.query(queryString)
}
- if (keyword?.length ?: 0 == 0 && category.size == 0) {
+ if (keyword?.length ?: 0 == 0 && category?.size ?: 0 == 0) {
rQ = rQ.query("read < $0", 3).query("vote != $0", true)
}
return rQ
diff --git a/library/src/main/java/kr/lunaticbum/awesomewebview/AwesomeWebViewActivity.kt b/library/src/main/java/kr/lunaticbum/awesomewebview/AwesomeWebViewActivity.kt
index 04b3760..20fe8fa 100644
--- a/library/src/main/java/kr/lunaticbum/awesomewebview/AwesomeWebViewActivity.kt
+++ b/library/src/main/java/kr/lunaticbum/awesomewebview/AwesomeWebViewActivity.kt
@@ -574,7 +574,7 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
fun registCancelSearch() {
chechHandler.removeCallbacks(cancelSearch)
- chechHandler.postDelayed(cancelSearch, 60000L)
+ chechHandler.postDelayed(cancelSearch, 90000L)
}
protected fun layoutViews() {
@@ -1833,7 +1833,7 @@ LogUtil.e("onBackPressed ${webChromeClient} && ${binding.menus.menuLayout.visibi
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
return File.createTempFile(new_name, if (isVideo) ".mp4" else ".jpg", sd_directory)
}
-
+ open fun webviewOnPageFinished(){}
inner class MyWebViewClient : WebViewClient() {
override fun shouldInterceptRequest(
view: WebView,
@@ -1893,6 +1893,7 @@ LogUtil.e("onBackPressed ${webChromeClient} && ${binding.menus.menuLayout.visibi
webView!!.loadUrl(injectJavaScript!!)
}
}
+ webviewOnPageFinished()
registCancelSearch()
}