Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LocalBroadcastManager will broadcast the location change #436

Merged
merged 2 commits into from
Nov 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions plugins/radar-android-phone/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ description = 'Basic phone sensor plugin for RADAR passive remote monitoring app

dependencies {
api project(':radar-commons-android')
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
implementation project(path: ':radar-android-google-places')
}

apply from: "$rootDir/gradle/publishing.gradle"
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import android.location.LocationListener
import android.location.LocationManager
import android.os.Bundle
import android.os.Process
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import org.radarbase.android.data.DataCache
import org.radarbase.android.source.AbstractSourceManager
import org.radarbase.android.source.BaseSourceState
Expand All @@ -32,6 +33,8 @@ import org.radarbase.android.util.BatteryStageReceiver
import org.radarbase.android.util.ChangeRunner
import org.radarbase.android.util.SafeHandler
import org.radarbase.android.util.StageLevels
import org.radarbase.android.util.send
import org.radarbase.passive.google.places.GooglePlacesManager.Companion.DEVICE_LOCATION_CHANGED
import org.radarbase.passive.phone.PhoneLocationService.Companion.LOCATION_GPS_INTERVAL_DEFAULT
import org.radarbase.passive.phone.PhoneLocationService.Companion.LOCATION_GPS_INTERVAL_REDUCED_DEFAULT
import org.radarbase.passive.phone.PhoneLocationService.Companion.LOCATION_NETWORK_INTERVAL_DEFAULT
Expand All @@ -55,6 +58,7 @@ class PhoneLocationManager(context: PhoneLocationService) : AbstractSourceManage
private val intervals = ChangeRunner(LocationPollingIntervals())
private var isStarted: Boolean = false
private var referenceId: Int = 0
private lateinit var broadcaster: LocalBroadcastManager
@Volatile
var isAbsoluteLocation: Boolean = false

Expand Down Expand Up @@ -101,6 +105,7 @@ class PhoneLocationManager(context: PhoneLocationService) : AbstractSourceManage
handler.start()

status = SourceStatusListener.Status.READY
broadcaster = LocalBroadcastManager.getInstance(service)

handler.execute {
isStarted = true
Expand Down Expand Up @@ -136,6 +141,7 @@ class PhoneLocationManager(context: PhoneLocationService) : AbstractSourceManage
altitude?.normalize(), accuracy?.normalize(), speed?.normalize(), bearing?.normalize())
send(locationTopic, value)

broadcaster.send(DEVICE_LOCATION_CHANGED)
logger.info("Location: {} {} {} {} {} {} {} {} {}", provider, eventTimestamp, latitude,
longitude, accuracy, altitude, speed, bearing, timestamp)
}
Expand Down