위치값으로 쿼리

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")
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 {
this.addAll(it.filter(li))
}
)
it.notifyDataSetChanged()
}
}
}
}
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
private fun queryWeather() { private fun queryWeather() {
val re = WorkersDb.getRealm().query<Hour>("lat == $0 AND lon == $1", OpenWeatherGetter.lat, OpenWeatherGetter.lon).find() val re = WorkersDb.getRealm().query<Hour>()
BLog.LOGE("testtestetset ${LocationGetter.latitude}") BLog.LOGE("re >>> ${re.description()}")
re.find()
val weatherJob2 = CoroutineScope(Dispatchers.Default).launch { val weatherJob2 = CoroutineScope(Dispatchers.Default).launch {
re.asFlow().collect { changes -> re.asFlow().collect { changes ->
BLog.LOGE("testtestetset ${changes.list}") // BLog.LOGE("testtestetset ${LocationGetter.latitude}")
Handler(Looper.getMainLooper()).post { // Handler(Looper.getMainLooper()).post {
// BLog.LOGE("testtestetset ${changes.list.first().lat}") // BLog.LOGE("testtestetset2 ${changes.list.size}")
} // }
qByl()
} }
} }
weatherJob2.start() weatherJob2.start()
mWeatherResult = WorkersDb.getRealm().query<WeatherForcast>().find() // mWeatherResult = WorkersDb.getRealm().query<WeatherForcast>().find()
val weatherJob = CoroutineScope(Dispatchers.Default).launch { // val weatherJob = CoroutineScope(Dispatchers.Default).launch {
mWeatherResult?.asFlow()?.collect { changes -> // mWeatherResult?.asFlow()?.collect { changes ->
BLog.LOGE("saved weatherForcast >>> asFlow ${changes.list}") // BLog.LOGE("saved weatherForcast >>> asFlow ${changes.list}")
if (changes.list.size > 0) { // if (changes.list.size > 0) {
changes.list.first().forecast?.forecastdayRealm?.let { li -> // changes.list.first().forecast?.forecastdayRealm?.let { li ->
BLog.LOGE("LauncherHome Saved Forecastdays >>> ${li.size}") // 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 -> // li.forEach { i ->
if (i == li.first()) { // if (i == li.first()) {
this.addAll(it // this.addAll(it
.filter( // .filter(
i.hourRealm.also { hli -> // i.hourRealm.also { hli ->
BLog.LOGE("LauncherHome Saved hli size >>> ${hli.size}") // BLog.LOGE("testtestetset ${LocationGetter.latitude}")
BLog.LOGE("LauncherHome Saved hli size >>> ${hli.first().lat}") // BLog.LOGE("LauncherHome Saved hli size >>> ${hli.size}")
BLog.LOGE("LauncherHome Saved hli size >>> ${hli.first().lon}") // 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}") // ).also { fli ->
BLog.LOGE("LauncherHome Saved hli size >>> ${fli.first().lat}") // BLog.LOGE("LauncherHome Saved fli size >>> ${fli.size}")
BLog.LOGE("LauncherHome Saved hli size >>> ${fli.first().lon}") //// BLog.LOGE("LauncherHome Saved hli size >>> ${fli.first().lat}")
} //// BLog.LOGE("LauncherHome Saved hli size >>> ${fli.first().lon}")
) // }
} else { // )
this.addAll(i.hourRealm) // } else {
} // this.addAll(i.hourRealm)
} // }
} // }
) // }
it.notifyDataSetChanged() // )
} // it.notifyDataSetChanged()
} // }
} // }
} // }
} // }
} // }
weatherJob.start() // }
// 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")