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

115 lines
3.8 KiB
Java
Raw 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.Nullable;
import android.annotation.SystemApi;
import android.os.PersistableBundle;
import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* Callback functions used for feature downloading via the
* {@link OnDeviceIntelligenceManager#requestFeatureDownload}.
*
* @hide
*/
@SystemApi
@FlaggedApi(FLAG_ENABLE_ON_DEVICE_INTELLIGENCE)
public interface DownloadCallback {
int DOWNLOAD_FAILURE_STATUS_UNKNOWN = 0;
/**
* Sent when feature download could not succeed due to there being no available disk space on
* the device.
*/
int DOWNLOAD_FAILURE_STATUS_NOT_ENOUGH_DISK_SPACE = 1;
/**
* Sent when feature download could not succeed due to a network error.
*/
int DOWNLOAD_FAILURE_STATUS_NETWORK_FAILURE = 2;
/**
* Sent when feature download has been initiated already, hence no need to request download
* again. Caller can query {@link OnDeviceIntelligenceManager#getFeatureStatus} to check if
* download has been completed.
*/
int DOWNLOAD_FAILURE_STATUS_DOWNLOADING = 3;
/**
* Sent when feature download did not start due to errors (e.g. remote exception of features not
* available). Caller can query {@link OnDeviceIntelligenceManager#getFeatureStatus} to check
* if feature-status is {@link FeatureDetails#FEATURE_STATUS_DOWNLOADABLE}.
*/
int DOWNLOAD_FAILURE_STATUS_UNAVAILABLE = 4;
/** @hide */
@IntDef(value = {
DOWNLOAD_FAILURE_STATUS_UNKNOWN,
DOWNLOAD_FAILURE_STATUS_NOT_ENOUGH_DISK_SPACE,
DOWNLOAD_FAILURE_STATUS_NETWORK_FAILURE,
DOWNLOAD_FAILURE_STATUS_DOWNLOADING,
DOWNLOAD_FAILURE_STATUS_UNAVAILABLE
}, open = true)
@Retention(RetentionPolicy.SOURCE)
@interface DownloadFailureStatus {
}
/**
* Called when model download started properly.
*
* @param bytesToDownload the total bytes to be downloaded for this {@link Feature}
*/
default void onDownloadStarted(long bytesToDownload) {
}
/**
* Called when model download failed.
*
* @param failureStatus the download failure status
* @param errorMessage the error message associated with the download failure
*/
void onDownloadFailed(
@DownloadFailureStatus int failureStatus,
@Nullable String errorMessage,
@NonNull PersistableBundle errorParams);
/**
* Called when model download is in progress.
*
* @param totalBytesDownloaded the already downloaded bytes for this {@link Feature}
*/
default void onDownloadProgress(long totalBytesDownloaded) {
}
/**
* Called when model download is completed. The remote implementation can populate any
* associated download params like file stats etc. in this callback to inform the client.
*
* @param downloadParams params containing info about the completed download.
*/
void onDownloadCompleted(@NonNull PersistableBundle downloadParams);
}