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`
  - Generic 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 details.

`tzs2storage`
  - TZ-specific file reading / writing code and tools to support `tzs2.dat`
    generation on host, and the file's use on host and device. See
    `tzs2storage/README.md` for 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/`.

