From 0eaeb0cb303c72b1aa3cb5357d629e0a156e0c79 Mon Sep 17 00:00:00 2001 From: JUNGGWAN KIM Date: Mon, 7 Oct 2024 11:25:10 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9C=84=EC=B9=98=EA=B0=92=EC=9C=BC=EB=A1=9C?= =?UTF-8?q?=20=EC=BF=BC=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rasel/lunar/launcher/LauncherActivity.kt | 25 ++-- .../rasel/lunar/launcher/home/LauncherHome.kt | 117 +++++++++++------- .../lunar/launcher/model/WeatherForcast.kt | 4 +- .../lunar/launcher/workers/LocationGetter.kt | 2 + 4 files changed, 90 insertions(+), 58 deletions(-) diff --git a/app/src/main/kotlin/rasel/lunar/launcher/LauncherActivity.kt b/app/src/main/kotlin/rasel/lunar/launcher/LauncherActivity.kt index 0529595..f46d2ec 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/LauncherActivity.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/LauncherActivity.kt @@ -204,6 +204,11 @@ internal class LauncherActivity : AppCompatActivity() { }, 5, TimeUnit.SECONDS) } + fun doGetWheaterByLocationInfo() { + Executors.newSingleThreadScheduledExecutor().schedule({ + mWorkManager?.enqueue(OneTimeWorkRequest.from(OpenWeatherGetter::class.java)) + }, 5, TimeUnit.SECONDS) + } fun refreshFeeds() { var delay = 5L @@ -308,17 +313,19 @@ internal class LauncherActivity : AppCompatActivity() { .addTag(LocationGetter.TAG) .build()) }, weatherDelay, TimeUnit.SECONDS) - Executors.newSingleThreadScheduledExecutor().schedule({ - //de574a260b1f474d99955729241909 - mWorkManager?.cancelAllWorkByTag(OpenWeatherGetter.TAG) - mWorkManager?.enqueueUniquePeriodicWork( - OpenWeatherGetter.TAG, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE, - PeriodicWorkRequestBuilder(midTimePeriod, TimeUnit.MINUTES) - .addTag(OpenWeatherGetter.TAG) - .build()) - }, weatherDelay + 3, TimeUnit.SECONDS) + +// Executors.newSingleThreadScheduledExecutor().schedule({ +// //de574a260b1f474d99955729241909 +// mWorkManager?.cancelAllWorkByTag(OpenWeatherGetter.TAG) +// mWorkManager?.enqueueUniquePeriodicWork( +// OpenWeatherGetter.TAG, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE, +// PeriodicWorkRequestBuilder(midTimePeriod, TimeUnit.MINUTES) +// .addTag(OpenWeatherGetter.TAG) +// .build()) +// }, weatherDelay + 3, TimeUnit.SECONDS) } + fun workmanager() : WorkManager? { if (mWorkManager == null && lActivity != null) { mWorkManager = WorkManager.getInstance(lActivity!!) diff --git a/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt b/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt index 105505a..698f4d8 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt @@ -115,6 +115,7 @@ import rasel.lunar.launcher.workers.RecentCall import rasel.lunar.launcher.workers.RecentSms import rasel.lunar.launcher.workers.TelegramBotGetter import rasel.lunar.launcher.workers.WorkersDb +import java.math.BigDecimal import java.net.URLEncoder import java.util.Calendar import java.util.Date @@ -297,61 +298,83 @@ internal class LauncherHome : Fragment() { return binding.root } - +@SuppressLint("NotifyDataSetChanged") +suspend fun qByl(){ + val re = WorkersDb.getRealm().query().query("lat == $0 AND lon == $1", + LocationGetter.latitude?.let { BigDecimal.valueOf(it).toDouble() }, + LocationGetter.longitude?.let { BigDecimal.valueOf(it).toDouble() }) + BLog.LOGE("re >>> ${re.description()}") + re.find().asFlow().collect { it -> + val li = it.list + Handler(Looper.getMainLooper()).post { + mWeatherAdapter?.let{ + it.update( + mutableListOf().apply { + this.addAll(it.filter(li)) + } + ) + it.notifyDataSetChanged() + } + } + } +} @SuppressLint("NotifyDataSetChanged") private fun queryWeather() { - val re = WorkersDb.getRealm().query("lat == $0 AND lon == $1", OpenWeatherGetter.lat, OpenWeatherGetter.lon).find() - BLog.LOGE("testtestetset ${LocationGetter.latitude}") + val re = WorkersDb.getRealm().query() + BLog.LOGE("re >>> ${re.description()}") + re.find() val weatherJob2 = CoroutineScope(Dispatchers.Default).launch { re.asFlow().collect { changes -> - BLog.LOGE("testtestetset ${changes.list}") - Handler(Looper.getMainLooper()).post { -// BLog.LOGE("testtestetset ${changes.list.first().lat}") - } +// BLog.LOGE("testtestetset ${LocationGetter.latitude}") +// Handler(Looper.getMainLooper()).post { +// BLog.LOGE("testtestetset2 ${changes.list.size}") +// } + qByl() } } weatherJob2.start() - mWeatherResult = WorkersDb.getRealm().query().find() - val weatherJob = CoroutineScope(Dispatchers.Default).launch { - mWeatherResult?.asFlow()?.collect { changes -> - BLog.LOGE("saved weatherForcast >>> asFlow ${changes.list}") - if (changes.list.size > 0) { - changes.list.first().forecast?.forecastdayRealm?.let { li -> - BLog.LOGE("LauncherHome Saved Forecastdays >>> ${li.size}") - Handler(Looper.getMainLooper()).post { - mWeatherAdapter?.let{ - it.update( - mutableListOf().apply { - li.forEach { i -> - if (i == li.first()) { - this.addAll(it - .filter( - i.hourRealm.also { hli -> - BLog.LOGE("LauncherHome Saved hli size >>> ${hli.size}") - BLog.LOGE("LauncherHome Saved hli size >>> ${hli.first().lat}") - BLog.LOGE("LauncherHome Saved hli size >>> ${hli.first().lon}") - } - ).also { fli -> - BLog.LOGE("LauncherHome Saved fli size >>> ${fli.size}") - BLog.LOGE("LauncherHome Saved hli size >>> ${fli.first().lat}") - BLog.LOGE("LauncherHome Saved hli size >>> ${fli.first().lon}") - } - ) - } else { - this.addAll(i.hourRealm) - } - } - } - ) - it.notifyDataSetChanged() - } - } - } - } - } - } - weatherJob.start() +// mWeatherResult = WorkersDb.getRealm().query().find() +// val weatherJob = CoroutineScope(Dispatchers.Default).launch { +// mWeatherResult?.asFlow()?.collect { changes -> +// BLog.LOGE("saved weatherForcast >>> asFlow ${changes.list}") +// if (changes.list.size > 0) { +// changes.list.first().forecast?.forecastdayRealm?.let { li -> +// BLog.LOGE("LauncherHome Saved Forecastdays >>> ${li.size}") +// Handler(Looper.getMainLooper()).post { +// mWeatherAdapter?.let{ +// it.update( +// mutableListOf().apply { +// li.forEach { i -> +// if (i == li.first()) { +// this.addAll(it +// .filter( +// i.hourRealm.also { hli -> +// BLog.LOGE("testtestetset ${LocationGetter.latitude}") +// BLog.LOGE("LauncherHome Saved hli size >>> ${hli.size}") +// BLog.LOGE("LauncherHome Saved hli size >>> ${hli.first().lat}") +// BLog.LOGE("LauncherHome Saved hli size >>> ${hli.first().lon}") +// } +// ).also { fli -> +// BLog.LOGE("LauncherHome Saved fli size >>> ${fli.size}") +//// BLog.LOGE("LauncherHome Saved hli size >>> ${fli.first().lat}") +//// BLog.LOGE("LauncherHome Saved hli size >>> ${fli.first().lon}") +// } +// ) +// } else { +// this.addAll(i.hourRealm) +// } +// } +// } +// ) +// it.notifyDataSetChanged() +// } +// } +// } +// } +// } +// } +// weatherJob.start() } val hideListViewTime = 1000L * 60L * 15L diff --git a/app/src/main/kotlin/rasel/lunar/launcher/model/WeatherForcast.kt b/app/src/main/kotlin/rasel/lunar/launcher/model/WeatherForcast.kt index dcbbb1c..c1188d1 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/model/WeatherForcast.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/model/WeatherForcast.kt @@ -136,8 +136,8 @@ class Astro: RealmObject { } class Hour: RealmObject { - var lat = 0.0 - var lon = 0.0 + var lat : Double = 0.0 + var lon : Double = 0.0 @PrimaryKey var time_epoch = 0 diff --git a/app/src/main/kotlin/rasel/lunar/launcher/workers/LocationGetter.kt b/app/src/main/kotlin/rasel/lunar/launcher/workers/LocationGetter.kt index dfa133f..511828b 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/workers/LocationGetter.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/workers/LocationGetter.kt @@ -7,6 +7,7 @@ import androidx.work.WorkerParameters import com.google.android.gms.location.LocationServices import com.google.android.gms.location.Priority import com.google.android.gms.tasks.CancellationTokenSource +import rasel.lunar.launcher.LauncherActivity.Companion.doGetWheaterByLocationInfo import rasel.lunar.launcher.utils.BLog class LocationGetter(context: Context, workerParams: WorkerParameters) : BaseGetter(context, workerParams) { @@ -28,6 +29,7 @@ class LocationGetter(context: Context, workerParams: WorkerParameters) : BaseGet BLog.LOGE("Location >>> (latitude)${it.longitude}/(longitude)${it.latitude}") longitude = it.longitude latitude = it.latitude + doGetWheaterByLocationInfo() } }.addOnFailureListener{ BLog.LOGE("Location error >>> $it")