위치값으로 쿼리

This commit is contained in:
JUNGGWAN KIM 2024-10-07 11:25:10 +09:00
parent fe210b1f7d
commit 0eaeb0cb30
4 changed files with 90 additions and 58 deletions

View File

@ -204,6 +204,11 @@ internal class LauncherActivity : AppCompatActivity() {
}, 5, TimeUnit.SECONDS) }, 5, TimeUnit.SECONDS)
} }
fun doGetWheaterByLocationInfo() {
Executors.newSingleThreadScheduledExecutor().schedule({
mWorkManager?.enqueue(OneTimeWorkRequest.from(OpenWeatherGetter::class.java))
}, 5, TimeUnit.SECONDS)
}
fun refreshFeeds() { fun refreshFeeds() {
var delay = 5L var delay = 5L
@ -308,17 +313,19 @@ internal class LauncherActivity : AppCompatActivity() {
.addTag(LocationGetter.TAG) .addTag(LocationGetter.TAG)
.build()) .build())
}, weatherDelay, TimeUnit.SECONDS) }, weatherDelay, TimeUnit.SECONDS)
Executors.newSingleThreadScheduledExecutor().schedule({
//de574a260b1f474d99955729241909 // Executors.newSingleThreadScheduledExecutor().schedule({
mWorkManager?.cancelAllWorkByTag(OpenWeatherGetter.TAG) // //de574a260b1f474d99955729241909
mWorkManager?.enqueueUniquePeriodicWork( // mWorkManager?.cancelAllWorkByTag(OpenWeatherGetter.TAG)
OpenWeatherGetter.TAG, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE, // mWorkManager?.enqueueUniquePeriodicWork(
PeriodicWorkRequestBuilder<OpenWeatherGetter>(midTimePeriod, TimeUnit.MINUTES) // OpenWeatherGetter.TAG, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE,
.addTag(OpenWeatherGetter.TAG) // PeriodicWorkRequestBuilder<OpenWeatherGetter>(midTimePeriod, TimeUnit.MINUTES)
.build()) // .addTag(OpenWeatherGetter.TAG)
}, weatherDelay + 3, TimeUnit.SECONDS) // .build())
// }, weatherDelay + 3, TimeUnit.SECONDS)
} }
fun workmanager() : WorkManager? { fun workmanager() : WorkManager? {
if (mWorkManager == null && lActivity != null) { if (mWorkManager == null && lActivity != null) {
mWorkManager = WorkManager.getInstance(lActivity!!) mWorkManager = WorkManager.getInstance(lActivity!!)

View File

@ -115,6 +115,7 @@ import rasel.lunar.launcher.workers.RecentCall
import rasel.lunar.launcher.workers.RecentSms import rasel.lunar.launcher.workers.RecentSms
import rasel.lunar.launcher.workers.TelegramBotGetter import rasel.lunar.launcher.workers.TelegramBotGetter
import rasel.lunar.launcher.workers.WorkersDb import rasel.lunar.launcher.workers.WorkersDb
import java.math.BigDecimal
import java.net.URLEncoder import java.net.URLEncoder
import java.util.Calendar import java.util.Calendar
import java.util.Date import java.util.Date
@ -297,61 +298,83 @@ internal class LauncherHome : Fragment() {
return binding.root return binding.root
} }
@SuppressLint("NotifyDataSetChanged")
@SuppressLint("NotifyDataSetChanged") suspend fun qByl(){
private fun queryWeather() { val re = WorkersDb.getRealm().query<Hour>().query("lat == $0 AND lon == $1",
val re = WorkersDb.getRealm().query<Hour>("lat == $0 AND lon == $1", OpenWeatherGetter.lat, OpenWeatherGetter.lon).find() LocationGetter.latitude?.let { BigDecimal.valueOf(it).toDouble() },
BLog.LOGE("testtestetset ${LocationGetter.latitude}") LocationGetter.longitude?.let { BigDecimal.valueOf(it).toDouble() })
val weatherJob2 = CoroutineScope(Dispatchers.Default).launch { BLog.LOGE("re >>> ${re.description()}")
re.asFlow().collect { changes -> re.find().asFlow().collect { it ->
BLog.LOGE("testtestetset ${changes.list}") val li = it.list
Handler(Looper.getMainLooper()).post {
// BLog.LOGE("testtestetset ${changes.list.first().lat}")
}
}
}
weatherJob2.start()
mWeatherResult = WorkersDb.getRealm().query<WeatherForcast>().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 { Handler(Looper.getMainLooper()).post {
mWeatherAdapter?.let{ mWeatherAdapter?.let{
it.update( it.update(
mutableListOf<Hour>().apply { mutableListOf<Hour>().apply {
li.forEach { i -> this.addAll(it.filter(li))
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() it.notifyDataSetChanged()
} }
} }
} }
}
@SuppressLint("NotifyDataSetChanged")
private fun queryWeather() {
val re = WorkersDb.getRealm().query<Hour>()
BLog.LOGE("re >>> ${re.description()}")
re.find()
val weatherJob2 = CoroutineScope(Dispatchers.Default).launch {
re.asFlow().collect { changes ->
// BLog.LOGE("testtestetset ${LocationGetter.latitude}")
// Handler(Looper.getMainLooper()).post {
// BLog.LOGE("testtestetset2 ${changes.list.size}")
// }
qByl()
} }
} }
} weatherJob2.start()
weatherJob.start()
// mWeatherResult = WorkersDb.getRealm().query<WeatherForcast>().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<Hour>().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 val hideListViewTime = 1000L * 60L * 15L

View File

@ -136,8 +136,8 @@ class Astro: RealmObject {
} }
class Hour: RealmObject { class Hour: RealmObject {
var lat = 0.0 var lat : Double = 0.0
var lon = 0.0 var lon : Double = 0.0
@PrimaryKey @PrimaryKey
var time_epoch = 0 var time_epoch = 0

View File

@ -7,6 +7,7 @@ import androidx.work.WorkerParameters
import com.google.android.gms.location.LocationServices import com.google.android.gms.location.LocationServices
import com.google.android.gms.location.Priority import com.google.android.gms.location.Priority
import com.google.android.gms.tasks.CancellationTokenSource import com.google.android.gms.tasks.CancellationTokenSource
import rasel.lunar.launcher.LauncherActivity.Companion.doGetWheaterByLocationInfo
import rasel.lunar.launcher.utils.BLog import rasel.lunar.launcher.utils.BLog
class LocationGetter(context: Context, workerParams: WorkerParameters) : BaseGetter(context, workerParams) { 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}") BLog.LOGE("Location >>> (latitude)${it.longitude}/(longitude)${it.latitude}")
longitude = it.longitude longitude = it.longitude
latitude = it.latitude latitude = it.latitude
doGetWheaterByLocationInfo()
} }
}.addOnFailureListener{ }.addOnFailureListener{
BLog.LOGE("Location error >>> $it") BLog.LOGE("Location error >>> $it")