This directory contains code, tools and data for the AOSP reference location
time zone provider. Location time zone providers are used for location-based
time zone detection on Android. See Android's
android.service.timezone.TimeZoneProviderService class for more details.

Directory structure
===================

`apex`
  - Files associated with a proposed mainline module APEX to hold the AOSP
    reference location time zone provider.

`common`
  - Utility code shared between several subdirectories.

`data_pipeline`
  - Code for a host sample / reference data generation pipeline. See
    `run-data-pipeline.sh` below.

`geotz_lookup`
  - A high-level API for performing time zone ID lookups for a location using
    the `tzs2.dat` file. Supports host and device usage.

`locationtzprovider`
  - A reference location time zone provider that uses AOSP APIs to obtain
    location and the `geotz_lookup` APIs to obtain the time zone IDs to pass to
    the platform.

`output_data`
  - Holds the `tzs2.dat` file generated by `run-data-pipeline.sh` along with
    the associated license files.

`s2storage`
  - File reading / writing code and tools to support `tzs2.dat` generation on
    host, and the file's use on host and device. See `s2storage/README.md` for
    format details.

`tzbb_data`
  - Data / licenses from the external
    [timezone-boundary-builder](https://github.com/evansiroky/timezone-boundary-builder)
    project. Used as input for the reference data generation pipeline.

`validation`
  - Tooling to help validate the `tzs2.dat` file against other data sources.


Data file update tools
======================

`download-tzbb-files.sh`
  - Used to refresh the data in `tzbb_data/` from the
    [timezone-boundary-builder](https://github.com/evansiroky/timezone-boundary-builder)
    project.

`run-data-pipeline.sh`
  - Runs the `data_pipeline` data generation pipeline. It takes data from
    `tzbb_data/`, processes it, and puts the resulting `tzs2.dat` file in
    `output_data/`.

