public final class

Destination

extends java.lang.Object

implements VersionedParcelable

 java.lang.Object

↳androidx.car.cluster.navigation.Destination

Gradle dependencies

compile group: 'androidx.car', name: 'car-cluster', version: '1.0.0-alpha5'

  • groupId: androidx.car
  • artifactId: car-cluster
  • version: 1.0.0-alpha5

Artifact androidx.car:car-cluster:1.0.0-alpha5 it located at Google repository (https://maven.google.com/)

Overview

Final or intermediate stop in a navigation route.

Summary

Methods
public booleanequals(java.lang.Object o)

public java.lang.StringgetAddress()

Returns the destination address (formatted for the current user's locale), or empty if there is no address associated with this destination.

public DistancegetDistance()

Returns the distance from the current position to this destination, or null if distance was not provided or is unknown.

public java.time.ZonedDateTimegetEta()

Returns the estimated time of arrival to this destination, or null if it was not provided or is unknown.

public LatLnggetLocation()

Returns the geo-location of this destination, or null if it was not provided or is unknown.

public java.lang.StringgetTitle()

Returns the name of the destination (formatted for the current user's locale), or empty if destination name is unknown.

public Destination.TrafficgetTraffic()

Returns the congestion level to this destination, compared to to ideal driving conditions.

public inthashCode()

public java.lang.StringtoString()

from java.lang.Objectclone, finalize, getClass, notify, notifyAll, wait, wait, wait

Methods

public java.lang.String getTitle()

Returns the name of the destination (formatted for the current user's locale), or empty if destination name is unknown.

public java.lang.String getAddress()

Returns the destination address (formatted for the current user's locale), or empty if there is no address associated with this destination.

public Distance getDistance()

Returns the distance from the current position to this destination, or null if distance was not provided or is unknown.

public java.time.ZonedDateTime getEta()

Returns the estimated time of arrival to this destination, or null if it was not provided or is unknown.

public Destination.Traffic getTraffic()

Returns the congestion level to this destination, compared to to ideal driving conditions.

public LatLng getLocation()

Returns the geo-location of this destination, or null if it was not provided or is unknown.

public boolean equals(java.lang.Object o)

public int hashCode()

public java.lang.String toString()

Source

/*
 * Copyright 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.car.cluster.navigation;

import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.core.util.Preconditions;
import androidx.versionedparcelable.ParcelField;
import androidx.versionedparcelable.VersionedParcelable;
import androidx.versionedparcelable.VersionedParcelize;

import java.time.ZonedDateTime;
import java.util.Objects;

/**
 * Final or intermediate stop in a navigation route.
 */
@VersionedParcelize
public final class Destination implements VersionedParcelable {
    @ParcelField(1)
    String mTitle;
    @ParcelField(2)
    String mAddress;
    @ParcelField(3)
    Distance mDistance;
    @ParcelField(4)
    Time mEta;
    @ParcelField(5)
    LatLng mLatLng;
    @ParcelField(6)
    EnumWrapper<Traffic> mTraffic;

    /**
     * Congestion level on the way to a destination, compared to ideal driving conditions.
     */
    public enum Traffic {
        /** Traffic information is not available */
        UNKNOWN,
        /** High amount of traffic */
        HIGH,
        /** Intermediate amount of traffic */
        MEDIUM,
        /** Traffic level close to free flow */
        LOW,
    }

    /**
     * Used by {@link VersionedParcelable}
     *
     * @hide
     */
    @RestrictTo(LIBRARY_GROUP_PREFIX)
    Destination() {
    }

    /**
     * @hide
     */
    @RestrictTo(LIBRARY_GROUP_PREFIX)
    Destination(@NonNull String title, @NonNull String address, @Nullable Distance distance,
            @Nullable Time eta, @Nullable LatLng latlng, @Nullable EnumWrapper<Traffic> traffic) {
        mTitle = title;
        mAddress = address;
        mDistance = distance;
        mEta = eta;
        mLatLng = latlng;
        mTraffic = traffic;
    }

    /**
     * Builder for creating a {@link Destination}
     */
    public static final class Builder {
        private String mTitle;
        private String mAddress;
        private Distance mDistance;
        private Time mEta;
        private LatLng mLatLng;
        private EnumWrapper<Traffic> mTraffic;

        /**
         * Sets the destination title (formatted for the current user's locale), or empty if there
         * is no title associated with this destination.
         *
         * @return this object for chaining
         */
        @NonNull
        public Builder setTitle(@NonNull String title) {
            mTitle = Preconditions.checkNotNull(title);
            return this;
        }

        /**
         * Sets the destination address (formatted for the current user's locale), or empty if there
         * is no address associated with this destination.
         *
         * @return this object for chaining
         */
        @NonNull
        public Builder setAddress(@NonNull String address) {
            mAddress = Preconditions.checkNotNull(address);
            return this;
        }

        /**
         * Sets the distance from the current position to this destination, or null if distance is
         * unknown.
         *
         * @return this object for chaining
         */
        @NonNull
        public Builder setDistance(@Nullable Distance distance) {
            mDistance = distance;
            return this;
        }

        /**
         * Sets the estimated time of arrival to this destination, or null if estimated time of
         * arrival is unknown.
         *
         * @return this object for chaining
         */
        @NonNull
        public Builder setEta(@Nullable ZonedDateTime eta) {
            mEta = eta != null ? new Time(eta) : null;
            return this;
        }

        /**
         * Sets the geo-location of this destination, or null if location is unknown.
         *
         * @return this object for chaining
         */
        @NonNull
        public Builder setLocation(@Nullable LatLng latlng) {
            mLatLng = latlng;
            return this;
        }

        /**
         * Sets the congestion level to this destination, compared to ideal driving conditions.
         *
         * @param traffic traffic level
         * @param fallbacks Variations of {@code traffic}, in case the consumer of this API doesn't
         *                  support the main one (used for backward compatibility).
         * @return this object for chaining
         */
        @NonNull
        public Builder setTraffic(@NonNull Traffic traffic, @NonNull Traffic... fallbacks) {
            mTraffic = EnumWrapper.of(traffic, fallbacks);
            return this;
        }

        /**
         * Returns a {@link Destination} built with the provided information.
         */
        @NonNull
        public Destination build() {
            return new Destination(mTitle, mAddress, mDistance, mEta, mLatLng, mTraffic);
        }
    }

    /**
     * Returns the name of the destination (formatted for the current user's locale), or empty if
     * destination name is unknown.
     */
    @NonNull
    public String getTitle() {
        return Common.nonNullOrEmpty(mTitle);
    }

    /**
     * Returns the destination address (formatted for the current user's locale), or empty if there
     * is no address associated with this destination.
     */
    @NonNull
    public String getAddress() {
        return Common.nonNullOrEmpty(mAddress);
    }

    /**
     * Returns the distance from the current position to this destination, or null if distance was
     * not provided or is unknown.
     */
    @Nullable
    public Distance getDistance() {
        return mDistance;
    }

    /**
     * Returns the estimated time of arrival to this destination, or null if it was not provided or
     * is unknown.
     */
    @Nullable
    public ZonedDateTime getEta() {
        return mEta != null ? mEta.getTime() : null;
    }

    /**
     * Returns the congestion level to this destination, compared to to ideal driving conditions.
     */
    @NonNull
    public Traffic getTraffic() {
        return EnumWrapper.getValue(mTraffic, Traffic.UNKNOWN);
    }

    /**
     * Returns the geo-location of this destination, or null if it was not provided or is unknown.
     */
    @Nullable
    public LatLng getLocation() {
        return mLatLng;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        Destination that = (Destination) o;
        return Objects.equals(getTitle(), that.getTitle())
                && Objects.equals(getAddress(), that.getAddress())
                && Objects.equals(getDistance(), that.getDistance())
                && Objects.equals(getLocation(), that.getLocation())
                && Objects.equals(getEta(), that.getEta())
                && Objects.equals(getTraffic(), that.getTraffic());
    }

    @Override
    public int hashCode() {
        return Objects.hash(getTitle(), getAddress(), getDistance(), getLocation(), getEta(),
            getTraffic());
    }

    @Override
    public String toString() {
        return String.format("{title: %s, address: %s, distance: %s, location: %s, eta: %s, "
                + "traffic: %s}", mTitle, mAddress, mDistance, mLatLng, mEta, mTraffic);
    }
}