Skip to content

BroadcastReceiver for timezone changes #2

@danwallach

Description

@danwallach

See example code: https://developer.android.com/training/wearables/watch-faces/drawing

private const val MSG_UPDATE_TIME = 0

class Service : CanvasWatchFaceService() {
    ...
    inner class Engine : CanvasWatchFaceService.Engine() {

        private lateinit var calendar: Calendar

        ...

        // receiver to update the time zone
        private val timeZoneReceiver: BroadcastReceiver = object : BroadcastReceiver() {
            override fun onReceive(context: Context, intent: Intent) {
                calendar.timeZone = TimeZone.getDefault()
                invalidate()
            }
        }

        // service methods (see other sections)
        ...
    }
    ...
}

private fun registerReceiver() {
    if (registeredTimeZoneReceiver) return
    registeredTimeZoneReceiver = true
    IntentFilter(Intent.ACTION_TIMEZONE_CHANGED).also { filter ->
        this@AnalogWatchFaceService.registerReceiver(timeZoneReceiver, filter)
    }
}

private fun unregisterReceiver() {
    if (!registeredTimeZoneReceiver) return
    registeredTimeZoneReceiver = false
    this@AnalogWatchFaceService.unregisterReceiver(timeZoneReceiver)
}

Possibly handy links:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions