Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b172550 authored by sandeepbandaru's avatar sandeepbandaru Committed by Sandeep Bandaru
Browse files

Adding SystemAPIs to access ondevice intelligence remote implementation for...

Adding SystemAPIs to access ondevice intelligence remote implementation for performing on device inference in an isolated process.

Context: go/isolated-aicore

Bug: 316589195
Test: make
Change-Id: I8d03341d35acf958c06a4759db4d9243daa29f70
API-Coverage-Bug: 323147058
parent 9375261e
Loading
Loading
Loading
Loading
+133 −0
Original line number Diff line number Diff line
@@ -2193,6 +2193,138 @@ package android.app.job {
}
package android.app.ondeviceintelligence {
  @FlaggedApi("android.app.ondeviceintelligence.flags.enable_on_device_intelligence") public final class Content implements android.os.Parcelable {
    ctor public Content(@NonNull android.os.Bundle);
    method public int describeContents();
    method @NonNull public android.os.Bundle getData();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.ondeviceintelligence.Content> CREATOR;
  }
  @FlaggedApi("android.app.ondeviceintelligence.flags.enable_on_device_intelligence") public interface DownloadCallback {
    method public void onDownloadCompleted(@NonNull android.os.PersistableBundle);
    method public void onDownloadFailed(int, @Nullable String, @NonNull android.os.PersistableBundle);
    method public default void onDownloadProgress(long);
    method public default void onDownloadStarted(long);
    field public static final int DOWNLOAD_FAILURE_STATUS_DOWNLOADING = 3; // 0x3
    field public static final int DOWNLOAD_FAILURE_STATUS_NETWORK_FAILURE = 2; // 0x2
    field public static final int DOWNLOAD_FAILURE_STATUS_NOT_ENOUGH_DISK_SPACE = 1; // 0x1
    field public static final int DOWNLOAD_FAILURE_STATUS_UNAVAILABLE = 4; // 0x4
    field public static final int DOWNLOAD_FAILURE_STATUS_UNKNOWN = 0; // 0x0
  }
  @FlaggedApi("android.app.ondeviceintelligence.flags.enable_on_device_intelligence") public final class Feature implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.os.PersistableBundle getFeatureParams();
    method public int getId();
    method @Nullable public String getModelName();
    method @Nullable public String getName();
    method public int getType();
    method public int getVariant();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.ondeviceintelligence.Feature> CREATOR;
  }
  public static final class Feature.Builder {
    ctor public Feature.Builder(int, int, int, @NonNull android.os.PersistableBundle);
    method @NonNull public android.app.ondeviceintelligence.Feature build();
    method @NonNull public android.app.ondeviceintelligence.Feature.Builder setFeatureParams(@NonNull android.os.PersistableBundle);
    method @NonNull public android.app.ondeviceintelligence.Feature.Builder setId(int);
    method @NonNull public android.app.ondeviceintelligence.Feature.Builder setModelName(@NonNull String);
    method @NonNull public android.app.ondeviceintelligence.Feature.Builder setName(@NonNull String);
    method @NonNull public android.app.ondeviceintelligence.Feature.Builder setType(int);
    method @NonNull public android.app.ondeviceintelligence.Feature.Builder setVariant(int);
  }
  @FlaggedApi("android.app.ondeviceintelligence.flags.enable_on_device_intelligence") public final class FeatureDetails implements android.os.Parcelable {
    ctor public FeatureDetails(@android.app.ondeviceintelligence.FeatureDetails.Status int, @NonNull android.os.PersistableBundle);
    ctor public FeatureDetails(@android.app.ondeviceintelligence.FeatureDetails.Status int);
    method public int describeContents();
    method @NonNull public android.os.PersistableBundle getFeatureDetailParams();
    method @android.app.ondeviceintelligence.FeatureDetails.Status public int getStatus();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.ondeviceintelligence.FeatureDetails> CREATOR;
    field public static final int FEATURE_STATUS_AVAILABLE = 3; // 0x3
    field public static final int FEATURE_STATUS_DOWNLOADABLE = 1; // 0x1
    field public static final int FEATURE_STATUS_DOWNLOADING = 2; // 0x2
    field public static final int FEATURE_STATUS_SERVICE_UNAVAILABLE = 4; // 0x4
    field public static final int FEATURE_STATUS_UNAVAILABLE = 0; // 0x0
  }
  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE_USE, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.FIELD}) public static @interface FeatureDetails.Status {
  }
  @FlaggedApi("android.app.ondeviceintelligence.flags.enable_on_device_intelligence") public final class FilePart implements android.os.Parcelable {
    ctor public FilePart(@NonNull String, @NonNull android.os.PersistableBundle, @NonNull String) throws java.io.FileNotFoundException;
    ctor public FilePart(@NonNull String, @NonNull android.os.PersistableBundle, @NonNull java.io.FileInputStream) throws java.io.IOException;
    method public int describeContents();
    method @NonNull public java.io.FileInputStream getFileInputStream();
    method @NonNull public String getFilePartKey();
    method @NonNull public android.os.PersistableBundle getFilePartParams();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.ondeviceintelligence.FilePart> CREATOR;
  }
  @FlaggedApi("android.app.ondeviceintelligence.flags.enable_on_device_intelligence") public class OnDeviceIntelligenceManager {
    method @RequiresPermission(android.Manifest.permission.USE_ON_DEVICE_INTELLIGENCE) public void getFeature(int, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.app.ondeviceintelligence.Feature,android.app.ondeviceintelligence.OnDeviceIntelligenceManager.OnDeviceIntelligenceManagerException>);
    method @RequiresPermission(android.Manifest.permission.USE_ON_DEVICE_INTELLIGENCE) public void getFeatureDetails(@NonNull android.app.ondeviceintelligence.Feature, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.app.ondeviceintelligence.FeatureDetails,android.app.ondeviceintelligence.OnDeviceIntelligenceManager.OnDeviceIntelligenceManagerException>);
    method @RequiresPermission(android.Manifest.permission.USE_ON_DEVICE_INTELLIGENCE) public void getVersion(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.LongConsumer);
    method @RequiresPermission(android.Manifest.permission.USE_ON_DEVICE_INTELLIGENCE) public void listFeatures(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.util.List<android.app.ondeviceintelligence.Feature>,android.app.ondeviceintelligence.OnDeviceIntelligenceManager.OnDeviceIntelligenceManagerException>);
    method @RequiresPermission(android.Manifest.permission.USE_ON_DEVICE_INTELLIGENCE) public void processRequest(@NonNull android.app.ondeviceintelligence.Feature, @NonNull android.app.ondeviceintelligence.Content, int, @Nullable android.os.CancellationSignal, @Nullable android.app.ondeviceintelligence.ProcessingSignal, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.app.ondeviceintelligence.Content,android.app.ondeviceintelligence.OnDeviceIntelligenceManager.OnDeviceIntelligenceManagerProcessingException>);
    method @RequiresPermission(android.Manifest.permission.USE_ON_DEVICE_INTELLIGENCE) public void processRequestStreaming(@NonNull android.app.ondeviceintelligence.Feature, @NonNull android.app.ondeviceintelligence.Content, int, @Nullable android.os.CancellationSignal, @Nullable android.app.ondeviceintelligence.ProcessingSignal, @NonNull java.util.concurrent.Executor, @NonNull android.app.ondeviceintelligence.StreamingResponseReceiver<android.app.ondeviceintelligence.Content,android.app.ondeviceintelligence.Content,android.app.ondeviceintelligence.OnDeviceIntelligenceManager.OnDeviceIntelligenceManagerProcessingException>);
    method @RequiresPermission(android.Manifest.permission.USE_ON_DEVICE_INTELLIGENCE) public void requestFeatureDownload(@NonNull android.app.ondeviceintelligence.Feature, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.app.ondeviceintelligence.DownloadCallback);
    method @RequiresPermission(android.Manifest.permission.USE_ON_DEVICE_INTELLIGENCE) public void requestTokenCount(@NonNull android.app.ondeviceintelligence.Feature, @NonNull android.app.ondeviceintelligence.Content, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Long,android.app.ondeviceintelligence.OnDeviceIntelligenceManager.OnDeviceIntelligenceManagerException>);
    field public static final int REQUEST_TYPE_EMBEDDINGS = 2; // 0x2
    field public static final int REQUEST_TYPE_INFERENCE = 0; // 0x0
    field public static final int REQUEST_TYPE_PREPARE = 1; // 0x1
  }
  public static class OnDeviceIntelligenceManager.OnDeviceIntelligenceManagerException extends java.lang.Exception {
    ctor public OnDeviceIntelligenceManager.OnDeviceIntelligenceManagerException(int, @NonNull String, @NonNull android.os.PersistableBundle);
    ctor public OnDeviceIntelligenceManager.OnDeviceIntelligenceManagerException(int, @NonNull android.os.PersistableBundle);
    method public int getErrorCode();
    method @NonNull public android.os.PersistableBundle getErrorParams();
    field public static final int ON_DEVICE_INTELLIGENCE_SERVICE_UNAVAILABLE = 1000; // 0x3e8
  }
  public static class OnDeviceIntelligenceManager.OnDeviceIntelligenceManagerProcessingException extends android.app.ondeviceintelligence.OnDeviceIntelligenceManager.OnDeviceIntelligenceManagerException {
    ctor public OnDeviceIntelligenceManager.OnDeviceIntelligenceManagerProcessingException(int, @NonNull String, @NonNull android.os.PersistableBundle);
    ctor public OnDeviceIntelligenceManager.OnDeviceIntelligenceManagerProcessingException(int, @NonNull android.os.PersistableBundle);
    field public static final int PROCESSING_ERROR_BAD_DATA = 2; // 0x2
    field public static final int PROCESSING_ERROR_BAD_REQUEST = 3; // 0x3
    field public static final int PROCESSING_ERROR_BUSY = 9; // 0x9
    field public static final int PROCESSING_ERROR_CANCELLED = 7; // 0x7
    field public static final int PROCESSING_ERROR_COMPUTE_ERROR = 5; // 0x5
    field public static final int PROCESSING_ERROR_INTERNAL = 14; // 0xe
    field public static final int PROCESSING_ERROR_IPC_ERROR = 6; // 0x6
    field public static final int PROCESSING_ERROR_NOT_AVAILABLE = 8; // 0x8
    field public static final int PROCESSING_ERROR_REQUEST_NOT_SAFE = 4; // 0x4
    field public static final int PROCESSING_ERROR_REQUEST_TOO_LARGE = 12; // 0xc
    field public static final int PROCESSING_ERROR_RESPONSE_NOT_SAFE = 11; // 0xb
    field public static final int PROCESSING_ERROR_SAFETY_ERROR = 10; // 0xa
    field public static final int PROCESSING_ERROR_SERVICE_UNAVAILABLE = 15; // 0xf
    field public static final int PROCESSING_ERROR_SUSPENDED = 13; // 0xd
    field public static final int PROCESSING_ERROR_UNKNOWN = 1; // 0x1
  }
  @FlaggedApi("android.app.ondeviceintelligence.flags.enable_on_device_intelligence") public final class ProcessingSignal {
    ctor public ProcessingSignal();
    method public void sendSignal(@NonNull android.os.PersistableBundle);
    method public void setOnProcessingSignalCallback(@NonNull java.util.concurrent.Executor, @Nullable android.app.ondeviceintelligence.ProcessingSignal.OnProcessingSignalCallback);
  }
  public static interface ProcessingSignal.OnProcessingSignalCallback {
    method public void onSignalReceived(@NonNull android.os.PersistableBundle);
  }
  @FlaggedApi("android.app.ondeviceintelligence.flags.enable_on_device_intelligence") public interface StreamingResponseReceiver<R, T, E extends java.lang.Throwable> extends android.os.OutcomeReceiver<R,E> {
    method public void onNewContent(@NonNull T);
  }
}
package android.app.people {
  public final class PeopleManager {
@@ -3640,6 +3772,7 @@ package android.content {
    field public static final String NETD_SERVICE = "netd";
    field @Deprecated public static final String NETWORK_SCORE_SERVICE = "network_score";
    field public static final String OEM_LOCK_SERVICE = "oem_lock";
    field @FlaggedApi("android.app.ondeviceintelligence.flags.enable_on_device_intelligence") public static final String ON_DEVICE_INTELLIGENCE_SERVICE = "on_device_intelligence";
    field public static final String PERMISSION_CONTROLLER_SERVICE = "permission_controller";
    field public static final String PERMISSION_SERVICE = "permission";
    field public static final String PERSISTENT_DATA_BLOCK_SERVICE = "persistent_data_block";
+2 −0
Original line number Diff line number Diff line
@@ -1877,6 +1877,8 @@ Todo: android.Manifest.permission#READ_PEOPLE_DATA:
    Documentation mentions 'TODO'
Todo: android.app.NotificationManager#isNotificationAssistantAccessGranted(android.content.ComponentName):
    Documentation mentions 'TODO'
Todo: android.app.ondeviceintelligence.OnDeviceIntelligenceManager#requestFeatureDownload(android.app.ondeviceintelligence.Feature, android.app.ondeviceintelligence.CancellationSignal, java.util.concurrent.Executor, android.app.ondeviceintelligence.DownloadCallback):
    Documentation mentions 'TODO'
Todo: android.hardware.camera2.params.StreamConfigurationMap:
    Documentation mentions 'TODO'
Todo: android.hardware.location.ContextHubManager#getNanoAppInstanceInfo(int):
+2 −0
Original line number Diff line number Diff line
@@ -1931,6 +1931,8 @@ Todo: android.Manifest.permission#READ_PEOPLE_DATA:
    Documentation mentions 'TODO'
Todo: android.app.NotificationManager#isNotificationAssistantAccessGranted(android.content.ComponentName):
    Documentation mentions 'TODO'
Todo: android.app.ondeviceintelligence.OnDeviceIntelligenceManager#requestFeatureDownload(android.app.ondeviceintelligence.Feature, android.app.ondeviceintelligence.CancellationSignal, java.util.concurrent.Executor, android.app.ondeviceintelligence.DownloadCallback):
    Documentation mentions 'TODO'
Todo: android.hardware.camera2.params.StreamConfigurationMap:
    Documentation mentions 'TODO'
Todo: android.hardware.location.ContextHubManager#getNanoAppInstanceInfo(int):
+22 −0
Original line number Diff line number Diff line
/**
 * 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;

/**
  * @hide
  */
parcelable Content;
+90 −0
Original line number Diff line number Diff line
/*
 * 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.Bundle;
import android.os.Parcel;
import android.os.Parcelable;

import java.util.Objects;

/**
 * Represents content sent to and received from the on-device inference service.
 * Can contain a collection of text, image, and binary parts or any combination of these.
 *
 * @hide
 */
@SystemApi
@FlaggedApi(FLAG_ENABLE_ON_DEVICE_INTELLIGENCE)
public final class Content implements Parcelable {
    //TODO: Improve javadoc after adding validation logic.
    private static final String TAG = "Content";
    private final Bundle mData;

    /**
     * Create a content object using a Bundle of only known types that are read-only.
     */
    public Content(@NonNull Bundle data) {
        Objects.requireNonNull(data);
        validateBundleData(data);
        this.mData = data;
    }

    /**
     * Returns the Content's data represented as a Bundle.
     */
    @NonNull
    public Bundle getData() {
        return mData;
    }

    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeBundle(mData);
    }

    @Override
    public int describeContents() {
        int mask = 0;
        mask |= mData.describeContents();
        return mask;
    }

    @NonNull
    public static final Creator<Content> CREATOR = new Creator<>() {
        @Override
        @NonNull
        public Content createFromParcel(@NonNull Parcel in) {
            return new Content(in.readBundle(getClass().getClassLoader()));
        }

        @Override
        @NonNull
        public Content[] newArray(int size) {
            return new Content[size];
        }
    };

    private void validateBundleData(Bundle unused) {
        // TODO: Validate there are only known types.
    }
}
Loading