script-astra/Android/Sdk/sources/android-35/android/app/ondeviceintelligence/FeatureDetails.java

180 lines
5.8 KiB
Java
Raw Permalink Normal View History

2025-01-20 15:15:20 +00:00
/*
* Copyright (C) 2024 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.ondeviceintelligence;
import static android.app.ondeviceintelligence.flags.Flags.FLAG_ENABLE_ON_DEVICE_INTELLIGENCE;
import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.os.Parcelable;
import android.os.PersistableBundle;
import androidx.annotation.IntDef;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.text.MessageFormat;
/**
* Represents a status of a requested {@link Feature}.
*
* @hide
*/
@SystemApi
@FlaggedApi(FLAG_ENABLE_ON_DEVICE_INTELLIGENCE)
public final class FeatureDetails implements Parcelable {
@Status
private final int mFeatureStatus;
@NonNull
private final PersistableBundle mFeatureDetailParams;
/** Invalid or unavailable {@code AiFeature}. */
public static final int FEATURE_STATUS_UNAVAILABLE = 0;
/** Feature can be downloaded on request. */
public static final int FEATURE_STATUS_DOWNLOADABLE = 1;
/** Feature is being downloaded. */
public static final int FEATURE_STATUS_DOWNLOADING = 2;
/** Feature is fully downloaded and ready to use. */
public static final int FEATURE_STATUS_AVAILABLE = 3;
/** Underlying service is unavailable and feature status cannot be fetched. */
public static final int FEATURE_STATUS_SERVICE_UNAVAILABLE = 4;
/**
* @hide
*/
@IntDef(value = {
FEATURE_STATUS_UNAVAILABLE,
FEATURE_STATUS_DOWNLOADABLE,
FEATURE_STATUS_DOWNLOADING,
FEATURE_STATUS_AVAILABLE,
FEATURE_STATUS_SERVICE_UNAVAILABLE
}, open = true)
@Target({ElementType.TYPE_USE, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.SOURCE)
public @interface Status {
}
public FeatureDetails(
@Status int featureStatus,
@NonNull PersistableBundle featureDetailParams) {
this.mFeatureStatus = featureStatus;
com.android.internal.util.AnnotationValidations.validate(
Status.class, null, mFeatureStatus);
this.mFeatureDetailParams = featureDetailParams;
com.android.internal.util.AnnotationValidations.validate(
NonNull.class, null, mFeatureDetailParams);
}
public FeatureDetails(
@Status int featureStatus) {
this.mFeatureStatus = featureStatus;
com.android.internal.util.AnnotationValidations.validate(
Status.class, null, mFeatureStatus);
this.mFeatureDetailParams = new PersistableBundle();
}
/**
* Returns an integer value associated with the feature status.
*/
public @Status int getFeatureStatus() {
return mFeatureStatus;
}
/**
* Returns a persistable bundle contain any additional status related params.
*/
public @NonNull PersistableBundle getFeatureDetailParams() {
return mFeatureDetailParams;
}
@Override
public String toString() {
return MessageFormat.format("FeatureDetails '{' status = {0}, "
+ "persistableBundle = {1} '}'",
mFeatureStatus,
mFeatureDetailParams);
}
@Override
public boolean equals(@android.annotation.Nullable Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
@SuppressWarnings("unchecked")
FeatureDetails that = (FeatureDetails) o;
return mFeatureStatus == that.mFeatureStatus
&& java.util.Objects.equals(mFeatureDetailParams, that.mFeatureDetailParams);
}
@Override
public int hashCode() {
int _hash = 1;
_hash = 31 * _hash + mFeatureStatus;
_hash = 31 * _hash + java.util.Objects.hashCode(mFeatureDetailParams);
return _hash;
}
@Override
public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
dest.writeInt(mFeatureStatus);
dest.writeTypedObject(mFeatureDetailParams, flags);
}
@Override
public int describeContents() {
return 0;
}
/** @hide */
@SuppressWarnings({"unchecked", "RedundantCast"})
FeatureDetails(@NonNull android.os.Parcel in) {
int status = in.readInt();
PersistableBundle persistableBundle = (PersistableBundle) in.readTypedObject(
PersistableBundle.CREATOR);
this.mFeatureStatus = status;
com.android.internal.util.AnnotationValidations.validate(
Status.class, null, mFeatureStatus);
this.mFeatureDetailParams = persistableBundle;
com.android.internal.util.AnnotationValidations.validate(
NonNull.class, null, mFeatureDetailParams);
}
public static final @NonNull Parcelable.Creator<FeatureDetails> CREATOR =
new Parcelable.Creator<>() {
@Override
public FeatureDetails[] newArray(int size) {
return new FeatureDetails[size];
}
@Override
public FeatureDetails createFromParcel(@NonNull android.os.Parcel in) {
return new FeatureDetails(in);
}
};
}