위치값으로 쿼리

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)
}
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<OpenWeatherGetter>(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<OpenWeatherGetter>(midTimePeriod, TimeUnit.MINUTES)
// .addTag(OpenWeatherGetter.TAG)
// .build())
// }, weatherDelay + 3, TimeUnit.SECONDS)
}
fun workmanager() : WorkManager? {
if (mWorkManager == null && lActivity != null) {
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.TelegramBotGetter
import rasel.lunar.launcher.workers.WorkersDb
import java.math.BigDecimal
import java.net.URLEncoder
import java.util.Calendar
import java.util.Date
@ -297,51 +298,19 @@ internal class LauncherHome : Fragment() {
return binding.root
}
@SuppressLint("NotifyDataSetChanged")
private fun queryWeather() {
val re = WorkersDb.getRealm().query<Hour>("lat == $0 AND lon == $1", OpenWeatherGetter.lat, OpenWeatherGetter.lon).find()
BLog.LOGE("testtestetset ${LocationGetter.latitude}")
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}")
}
}
}
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}")
suspend fun qByl(){
val re = WorkersDb.getRealm().query<Hour>().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<Hour>().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)
}
}
this.addAll(it.filter(li))
}
)
it.notifyDataSetChanged()
@ -349,9 +318,63 @@ internal class LauncherHome : Fragment() {
}
}
}
@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()
}
}
weatherJob.start()
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 {
// 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

View File

@ -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

View File

@ -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")