OnDevicePersonalizationManager

public class OnDevicePersonalizationManager
extends Object

java.lang.Object
   ↳ android.adservices.ondevicepersonalization.OnDevicePersonalizationManager


OnDevicePersonalizationManager は、アプリが分離されたプロセスで IsolatedService を読み込んで操作するための API を提供します。アプリは IsolatedService をリクエストして、アプリのビュー階層内の SurfaceView 内に表示するコンテンツを生成できます。また、永続的な結果をオンデバイス ストレージに書き込むこともできます。この結果は、クロスデバイス統計分析用のフェデレーション分析またはモデル トレーニング用のフェデレーション ラーニングで使用できます。表示されるコンテンツと永続出力の両方に、呼び出し元のアプリから直接アクセスすることはできません。

概要

パブリック メソッド

void execute(ComponentName handler, PersistableBundle params, Executor executor, OutcomeReceiver<List<SurfacePackageToken>, Exception> receiver)

OnDevicePersonalization サンドボックスで IsolatedService を実行します。

void requestSurfacePackage(SurfacePackageToken surfacePackageToken, IBinder surfaceViewHostToken, int displayId, int width, int height, Executor executor, OutcomeReceiver<SurfaceControlViewHost.SurfacePackageException> receiver)

呼び出し元のアプリ内の SurfaceViewSurfaceControlViewHost.SurfacePackage を挿入するようリクエストします。

継承されるメソッド

パブリック メソッド

execute

public void execute (ComponentName handler, 
                PersistableBundle params, 
                Executor executor, 
                OutcomeReceiver<List<SurfacePackageToken>, Exception> receiver)

OnDevicePersonalization サンドボックスで IsolatedService を実行します。プラットフォームは、分離されたプロセスで指定された IsolatedService にバインドし、呼び出し元が指定したパラメータを使用して IsolatedWorker#onExecute(ExecuteInput, java.util.function.Consumer) を呼び出します。IsolatedService の実行が完了すると、プラットフォームは、サービスからの結果を参照するトークンを呼び出し元に返します。これらのトークンは、呼び出し元のアプリ内の SurfaceView に結果を表示するために後で使用できます。

パラメータ
handler ComponentName: IsolatedServiceComponentName。この値が null になることはありません。

params PersistableBundle: 呼び出し元のアプリから IsolatedService に渡される PersistableBundle。このパラメータで想定される内容は、IsolatedService によって定義されます。プラットフォームはこのパラメータを解釈しません。この値が null になることはありません。

executor Executor: コールバックを呼び出す Executor。この値が null になることはありません。コールバック イベントとリスナー イベントはこの Executor を通じてディスパッチされるため、使用するスレッドを簡単に制御できます。アプリのメインスレッドを通じてイベントをディスパッチするには、Context.getMainExecutor() を使用します。それ以外の場合は、適切なスレッドにディスパッチする Executor を指定します。

receiver OutcomeReceiver: SurfacePackageToken オブジェクトのリストを返します。各オブジェクトは、IsolatedService によって返された RenderingConfig への不透明な参照か、失敗した場合は Exception です。返された SurfacePackageToken オブジェクトは、後続の requestSurfacePackage(android.adservices.ondevicepersonalization.SurfacePackageToken, android.os.IBinder, int, int, int, java.util.concurrent.Executor, android.os.OutcomeReceiver) 呼び出しで使用して、結果をビューに表示できます。呼び出し元のアプリと IsolatedService は、このリストの想定サイズについて合意している必要があります。返された SurfacePackageToken オブジェクトのリスト内のエントリが null の場合、サービスにその特定のサーフェスに対する出力がないことを意味します。エラーが発生した場合、レシーバーは次のいずれかの例外を返します。ハンドラ パッケージがインストールされていないか、有効な ODP マニフェストがない場合は、PackageManager.NameNotFoundException を返します。ハンドラクラスが見つからない場合は、ClassNotFoundException を返します。ハンドラの実行に失敗した場合は OnDevicePersonalizationException を返します。

requestSurfacePackage

public void requestSurfacePackage (SurfacePackageToken surfacePackageToken, 
                IBinder surfaceViewHostToken, 
                int displayId, 
                int width, 
                int height, 
                Executor executor, 
                OutcomeReceiver<SurfaceControlViewHost.SurfacePackageException> receiver)

呼び出し元アプリ内の SurfaceViewSurfaceControlViewHost.SurfacePackage を挿入するようリクエストします。サーフェス パッケージには、OnDevicePersonalization サンドボックスで実行されている #execute(ComponentName, PersistableBundle, Executor, OutcomeReceiver) への以前の呼び出しの結果が含まれる View が含まれます。

パラメータ
surfacePackageToken SurfacePackageToken: #execute(ComponentName, PersistableBundle, Executor, OutcomeReceiver) の以前の呼び出しから返された SurfacePackageToken への参照。この値が null になることはありません。

surfaceViewHostToken IBinder: SurfaceView の hostToken。SurfaceView がビュー階層に追加された後に SurfaceView.getHostToken() によって返されます。この値が null になることはありません。

displayId int: SurfaceControlViewHost.SurfacePackage を表示する論理ディスプレイの整数 ID(Context.getDisplay().getDisplayId() によって返されます)。

width int: SurfaceControlViewHost.SurfacePackage の幅(ピクセル単位)。

height int: SurfaceControlViewHost.SurfacePackage の高さ(ピクセル単位)。

executor Executor: コールバックを呼び出す Executor。この値を null にすることはできません。コールバック イベントとリスナー イベントはこの Executor を通じてディスパッチされるため、使用するスレッドを簡単に制御できます。アプリのメインスレッドを通じてイベントをディスパッチするには、Context.getMainExecutor() を使用します。それ以外の場合は、適切なスレッドにディスパッチする Executor を指定します。

receiver OutcomeReceiver: 成功した場合は SurfaceControlViewHost.SurfacePackage を返し、失敗した場合は Exception を返します。ハンドラの実行が失敗した場合、例外タイプは OnDevicePersonalizationException です。この値が null になることはありません。