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)

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

継承されるメソッド

パブリック メソッド

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)

SurfaceControlViewHost.SurfacePackage を呼び出し元のアプリ内の SurfaceView に挿入するようリクエストします。サーフェス パッケージには、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 にすることはできません。