Language

ContentCaptureManager クラス

定義

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

[Android.Runtime.Register("android/view/contentcapture/ContentCaptureManager", ApiSince=29, DoNotGenerateAcw=true)]
public sealed class ContentCaptureManager : Java.Lang.Object
[<Android.Runtime.Register("android/view/contentcapture/ContentCaptureManager", ApiSince=29, DoNotGenerateAcw=true)>]
type ContentCaptureManager = class
    inherit Object
継承
ContentCaptureManager
属性

注釈

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

コンテンツ キャプチャは、Android システムによって提供されるインテリジェンス サービスに対して、アプリケーション アクティビティ、表示、およびイベントをリアルタイムで継続的にキャプチャします。 その後、インテリジェンス サービスはその情報を使用して、さまざまなアプリを介してユーザー体験を仲介し、速度を上げます。 たとえば、ユーザーがチャット アプリでレストランのアドレスを受け取り、そのレストランを検索するためにマップ アプリに切り替えた場合、インテリジェンス サービスは自動入力ダイアログを提供して、ユーザーがそのアドレスを自動的に選択できるようにします。

コンテンツ キャプチャは、プライバシーとパフォーマンスという 2 つの主要な懸念事項を念頭に置いて設計されました。

<ul><li><b>Privacy:</b> インテリジェンス サービスは、デバイスの製造元によって提供され、ユーザーが変更できない信頼できるコンポーネントです (ただし、ユーザーは Android 設定アプリを使用してコンテンツ キャプチャをグローバルに無効にすることができます)。 このサービスでは、プロセスの分離と CDD の両方の要件によって適用される、デバイス内機械学習のデータのみを使用できます。 <li><b>Performance:</b> コンテンツ キャプチャは、アプリの操作性と全体的なデバイス システムの正常性への影響を最小限に抑えるために高度に最適化されています。 たとえば、インテリジェンス サービスによって明示的に許可リストに登録されたアプリ (またはアプリからの特定のアクティビティ) でのみ有効になり、イベントがバッチでサービスに送信されるようにバッファーされます (無効になっている場合の他のケースについては、 #isContentCaptureEnabled() を参照してください)。 </ul>

実際、このマネージャーを使用する前に、アプリ開発者は利用可能かどうかを確認する必要があります。 Example:

<code>
             ContentCaptureManager mgr = context.getSystemService(ContentCaptureManager.class);
             if (mgr != null && mgr.isContentCaptureEnabled()) {
               // ...
             }
</code>

通常、アプリ開発者は、アプリが次の場合を除き、コンテンツ キャプチャと明示的に対話する必要はありません。

<ul><li>コンテキスト android.content.LocusId を定義して、一意の状態 (2 人のチャット ユーザー間の会話など) を識別できます。 <li>異なるコンテキストの意味を持つ複数のビュー階層を持つことができます (たとえば、複数のタブを持つブラウザー アプリで、それぞれ異なる URL を表します)。 <li>カスタム ビューを含みます (ビューを直接拡張し、標準の Android SDK では提供されません。 <li>独自の仮想階層を提供するビューを格納します (キャンバスを使用して HTML 要素をレンダリングする Web ブラウザーなど)。 </ul>

コンテンツ キャプチャとの主な統合ポイントは、 ContentCaptureSessionです。 "メイン" セッションは、アクティビティに対してコンテンツ キャプチャが有効になっているときに Android システムによって自動的に作成され、標準の Android ビューで使用され、追加されるビュー、ビューが削除された、ユーザー入力によって変更されたテキストなどのイベントをコンテンツ キャプチャ サービスに通知します。 セッションには、ビュー階層に関連付けられた軌跡など、コンテキストに関する情報を提供する ContentCaptureContext が含まれる場合があります (遺伝子座の詳細については、 android.content.LocusId を参照してください)。 既定では、メイン セッションには ContentCaptureContextはありませんが、作成後に変更できます。 Example:

<code>
            protected void onCreate(Bundle savedInstanceState) {
              // Initialize view structure
              ContentCaptureSession session = rootView.getContentCaptureSession();
              if (session != null) {
                session.setContentCaptureContext(ContentCaptureContext.forLocusId("chat_UserA_UserB"));
              }
            }
</code>

アクティビティに異なるコンテキストの意味を持つビュー階層が含まれている場合は、ビュー階層ルートごとに子セッションを作成する必要があります。 たとえば、アクティビティがブラウザーの場合は、レンダリングされるメイン URL にメイン セッションを使用し、次に各 IFRAMEの子セッションを使用できます。

<code>
            ContentCaptureSession mMainSession;

            protected void onCreate(Bundle savedInstanceState) {
               // Initialize view structure...
               mMainSession = rootView.getContentCaptureSession();
               if (mMainSession != null) {
                 mMainSession.setContentCaptureContext(
                     ContentCaptureContext.forLocusId("https://example.com"));
               }
            }

            private void loadIFrame(View iframeRootView, String url) {
              if (mMainSession != null) {
                 ContentCaptureSession iFrameSession = mMainSession.newChild(
                     ContentCaptureContext.forLocusId(url));
                 }
                 iframeRootView.setContentCaptureSession(iFrameSession);
              }
              // Load iframe...
            }
</code>

アクティビティにカスタム ビューがある場合 (つまり、 View を直接拡張し、仮想ツリー階層ではなく論理ビューを 1 つだけ提供するビュー)、コンテンツ キャプチャに関連するコンテンツを提供する場合 ( android.os.Build.VERSION_CODES#Q Android Qの時点で、関連するコンテンツはテキストのみ)、ビューの実装は次のようにする必要があります。

<ul><li>コンテンツ キャプチャの場合と同じように設定します。 <li>コンテンツ キャプチャに使用される ViewStructure を入力します。 <li>テキストがユーザー入力によって変更されたときの ContentCaptureSession を表します。 </ul>

EditTextのようなビューに関連するメソッドの例を次に示します。

<code>
            public class MyEditText extends View {

            public MyEditText(...) {
              if (getImportantForContentCapture() == IMPORTANT_FOR_CONTENT_CAPTURE_AUTO) {
                setImportantForContentCapture(IMPORTANT_FOR_CONTENT_CAPTURE_YES);
              }
            }

            public void onProvideContentCaptureStructure(@NonNull ViewStructure structure, int flags) {
              super.onProvideContentCaptureStructure(structure, flags);

              structure.setText(getText(), getSelectionStart(), getSelectionEnd());
              structure.setHint(getHint());
              structure.setInputType(getInputType());
              // set other properties like setTextIdEntry(), setTextLines(), setTextStyle(),
              // setMinTextEms(), setMaxTextEms(), setMaxTextLength()
            }

            private void onTextChanged() {
              if (isLaidOut() && isImportantForContentCapture() && isTextEditable()) {
                ContentCaptureManager mgr = mContext.getSystemService(ContentCaptureManager.class);
                if (cm != null && cm.isContentCaptureEnabled()) {
                   ContentCaptureSession session = getContentCaptureSession();
                   if (session != null) {
                     session.notifyViewTextChanged(getAutofillId(), getText());
                   }
              }
            }
</code>

ビューが独自の仮想階層を提供する場合 (たとえば、別のレンダリング プロセスで Canvas またはネイティブ ライブラリを使用して HTML を描画するブラウザーの場合)、ビューは、仮想要素が表示されて消えたときにセッションに通知する役割も担います。詳細については、「 View#onProvideContentCaptureStructure(ViewStructure, int) 」を参照してください。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

フィールド

名前 説明
DataShareErrorConcurrentRequest
古い.

同時データ共有セッションが進行中のため、要求は拒否されました。

DataShareErrorTimeoutInterrupted
古い.

データ共有セッションのタイムアウトのため、要求が中断されました。

DataShareErrorUnknown
古い.

データ共有セッション中にエラーが発生しました。

プロパティ

名前 説明
Class

この Objectのランタイム クラスを返します。

(継承元 Object)
ContentCaptureConditions

コンテンツ キャプチャを許可する必要がある条件の一覧を取得します。

ContentCaptureEnabled

このアクティビティに対してコンテンツ キャプチャが有効になっているかどうかを確認します。 または、コンテンツ キャプチャを明示的に有効または無効にするためにアプリによって呼び出されます。

Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniManagedPeerState

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

(継承元 JavaObject)
JniPeerMembers

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
ServiceComponentName

現在のユーザーのキャプチャされたイベントを使用しているシステム サービスのコンポーネント名を返します。

ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)
ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)

メソッド

名前 説明
Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

(継承元 JavaObject)
Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
DisposeUnlessReferenced()

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

(継承元 JavaObject)
Equals(Object)

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

(継承元 JavaObject)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
JavaFinalize()
古い.

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
RemoveData(DataRemovalRequest)

何らかのコンテキストに関連付けられているコンテンツ キャプチャ データを削除するようにコンテンツ キャプチャ サービスを要求するためにアプリによって呼び出されます。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

(継承元 JavaObject)
ShareData(DataShareRequest, IExecutor, IDataShareWriteAdapter)

ファイルへの書き込みを介してデータ共有を要求するためにアプリによって呼び出されます。

ToArray<T>()

このJava配列ラッパーからマネージド配列を作成します。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

名前 説明
IJavaPeerable.Disposed()

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

(継承元 JavaObject)
IJavaPeerable.Finalized()

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

(継承元 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

(継承元 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

(継承元 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

(継承元 JavaObject)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

アプリをコンテンツ キャプチャ サブシステムと統合するための追加の方法を提供します。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象