All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.android.app.time.TimeCapabilities Maven / Gradle / Ivy

Go to download

A library jar that provides APIs for Applications written for the Google Android Platform.

There is a newer version: 15-robolectric-12650502
Show newest version
/*
 * Copyright (C) 2021 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 android.app.time;

import android.annotation.NonNull;
import android.app.time.Capabilities.CapabilityState;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.UserHandle;

import java.util.Objects;

/**
 * Time-relate capabilities for a user.
 *
 * 

For configuration settings capabilities, the associated settings value can be found via * {@link TimeManager#getTimeCapabilitiesAndConfig()} and may be changed using {@link * TimeManager#updateTimeConfiguration(TimeConfiguration)} (if the user's capabilities * allow). * * @hide */ public final class TimeCapabilities implements Parcelable { public static final @NonNull Creator CREATOR = new Creator() { public TimeCapabilities createFromParcel(Parcel in) { return TimeCapabilities.createFromParcel(in); } public TimeCapabilities[] newArray(int size) { return new TimeCapabilities[size]; } }; /** * The user the capabilities are for. This is used for object equality and debugging but there * is no accessor. */ @NonNull private final UserHandle mUserHandle; private final @CapabilityState int mConfigureAutoTimeDetectionEnabledCapability; private final @CapabilityState int mSuggestTimeManuallyCapability; private TimeCapabilities(@NonNull Builder builder) { this.mUserHandle = Objects.requireNonNull(builder.mUserHandle); this.mConfigureAutoTimeDetectionEnabledCapability = builder.mConfigureAutoDetectionEnabledCapability; this.mSuggestTimeManuallyCapability = builder.mSuggestTimeManuallyCapability; } @NonNull private static TimeCapabilities createFromParcel(Parcel in) { UserHandle userHandle = UserHandle.readFromParcel(in); return new TimeCapabilities.Builder(userHandle) .setConfigureAutoTimeDetectionEnabledCapability(in.readInt()) .setSuggestTimeManuallyCapability(in.readInt()) .build(); } @Override public void writeToParcel(@NonNull Parcel dest, int flags) { UserHandle.writeToParcel(mUserHandle, dest); dest.writeInt(mConfigureAutoTimeDetectionEnabledCapability); dest.writeInt(mSuggestTimeManuallyCapability); } /** * Returns the capability state associated with the user's ability to modify the automatic time * detection setting. */ @CapabilityState public int getConfigureAutoTimeDetectionEnabledCapability() { return mConfigureAutoTimeDetectionEnabledCapability; } /** * Returns the capability state associated with the user's ability to manually set time on a * device. */ @CapabilityState public int getSuggestTimeManuallyCapability() { return mSuggestTimeManuallyCapability; } @Override public int describeContents() { return 0; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; TimeCapabilities that = (TimeCapabilities) o; return mConfigureAutoTimeDetectionEnabledCapability == that.mConfigureAutoTimeDetectionEnabledCapability && mSuggestTimeManuallyCapability == that.mSuggestTimeManuallyCapability && mUserHandle.equals(that.mUserHandle); } @Override public int hashCode() { return Objects.hash(mUserHandle, mConfigureAutoTimeDetectionEnabledCapability, mSuggestTimeManuallyCapability); } @Override public String toString() { return "TimeCapabilities{" + "mUserHandle=" + mUserHandle + ", mConfigureAutoTimeDetectionEnabledCapability=" + mConfigureAutoTimeDetectionEnabledCapability + ", mSuggestTimeManuallyCapability=" + mSuggestTimeManuallyCapability + '}'; } /** * A builder of {@link TimeCapabilities} objects. * * @hide */ public static class Builder { @NonNull private final UserHandle mUserHandle; private @CapabilityState int mConfigureAutoDetectionEnabledCapability; private @CapabilityState int mSuggestTimeManuallyCapability; public Builder(@NonNull TimeCapabilities timeCapabilities) { Objects.requireNonNull(timeCapabilities); this.mUserHandle = timeCapabilities.mUserHandle; this.mConfigureAutoDetectionEnabledCapability = timeCapabilities.mConfigureAutoTimeDetectionEnabledCapability; this.mSuggestTimeManuallyCapability = timeCapabilities.mSuggestTimeManuallyCapability; } public Builder(@NonNull UserHandle userHandle) { this.mUserHandle = Objects.requireNonNull(userHandle); } /** Sets the state for automatic time detection config. */ public Builder setConfigureAutoTimeDetectionEnabledCapability( @CapabilityState int setConfigureAutoTimeDetectionEnabledCapability) { this.mConfigureAutoDetectionEnabledCapability = setConfigureAutoTimeDetectionEnabledCapability; return this; } /** Sets the state for manual time change. */ public Builder setSuggestTimeManuallyCapability( @CapabilityState int suggestTimeManuallyCapability) { this.mSuggestTimeManuallyCapability = suggestTimeManuallyCapability; return this; } /** Returns the {@link TimeCapabilities}. */ public TimeCapabilities build() { verifyCapabilitySet(mConfigureAutoDetectionEnabledCapability, "configureAutoDetectionEnabledCapability"); verifyCapabilitySet(mSuggestTimeManuallyCapability, "suggestTimeManuallyCapability"); return new TimeCapabilities(this); } private void verifyCapabilitySet(int value, String name) { if (value == 0) { throw new IllegalStateException(name + " was not set"); } } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy