Langue

ContentCaptureManager Classe

Définition

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

[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
Héritage
ContentCaptureManager
Attributs

Remarques

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

La capture de contenu fournit une capture en temps réel et continue de l’activité des applications, de l’affichage et des événements dans un service d’intelligence fourni par le système Android. Le service d’intelligence utilise ensuite ces informations pour médiater et accélérer le parcours utilisateur via différentes applications. Par exemple, lorsque l’utilisateur reçoit une adresse de restaurant dans une application de conversation et passe à une application cartographique pour rechercher ce restaurant, le service d’intelligence peut proposer une boîte de dialogue de remplissage automatique pour permettre à l’utilisateur de sélectionner automatiquement son adresse.

La capture de contenu a été conçue avec deux préoccupations majeures à l’esprit : la confidentialité et les performances.

<ul><li><b>Privacy :</b> le service intelligence est un composant approuvé fourni par le fabricant de l’appareil et qui ne peut pas être modifié par l’utilisateur (bien que l’utilisateur puisse désactiver la capture de contenu à l’aide de l’application Paramètres Android). Ce service peut uniquement utiliser les données pour le Machine Learning in-device, qui est appliqué à la fois par l’isolation des processus et les exigences CDD. <li><b>Performance :</b> la capture de contenu est hautement optimisée pour réduire son impact dans les jankiness d’application et l’intégrité globale du système d’appareil. Par exemple, sa seule activation sur les applications (ou même les activités spécifiques d’une application) qui ont été explicitement autorisées par le service d’intelligence, et met en mémoire tampon les événements afin qu’ils soient envoyés dans un lot au service (voir #isContentCaptureEnabled() pour d’autres cas lorsque son désactivé). </ul>

En fait, avant d’utiliser ce gestionnaire, le développeur d’applications doit vérifier s’il est disponible. Exemple :

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

Les développeurs d’applications n’ont généralement pas besoin d’interagir explicitement avec la capture de contenu, sauf lorsque l’application :

<ul><li>Peut définir un contexte android.content.LocusId pour identifier un état unique (par exemple, une conversation entre 2 utilisateurs de conversation). <li>Peut avoir plusieurs hiérarchies d’affichage avec une signification contextuelle différente (par exemple, une application de navigateur avec plusieurs onglets, chacune représentant une URL différente). <li>Contient des vues personnalisées (qui étendent directement l’affichage et ne sont pas fournies par le Kit de développement logiciel (SDK) Android standard. <li>Contient des vues qui fournissent leur propre hiérarchie virtuelle (comme un navigateur web qui affiche les éléments HTML à l’aide d’un canevas). </ul>

Le point d’intégration principal avec la capture de contenu est le ContentCaptureSession. Une session « principale » est automatiquement créée par le système Android lorsque la capture de contenu est activée pour l’activité et son utilisation par les vues Android standard pour notifier le service de capture de contenu des événements tels que les vues ajoutées, les vues ont été supprimées et le texte modifié par l’entrée utilisateur. La session peut avoir un ContentCaptureContext pour fournir des informations plus contextuelles sur celle-ci, telles que le locus associé à la hiérarchie d’affichage (voir android.content.LocusId pour plus d’informations sur le locus). Par défaut, la session principale n’a pas de ContentCaptureContextsession principale, mais vous pouvez la modifier après sa création. Exemple :

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

Si votre activité contient des hiérarchies d’affichage avec une signification contextuelle différente, vous devez créer des sessions enfants pour chaque racine de hiérarchie d’affichage. Par exemple, si votre activité est un navigateur, vous pouvez utiliser la session principale pour l’URL principale affichée, puis les sessions enfants pour chacune d’elles 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>

Si votre activité a des vues personnalisées (c’est-à-dire des vues qui s’étendent View directement et fournissent une seule vue logique, et non une hiéarchisation d’arborescence virtuelle) et fournit du contenu pertinent pour la capture de contenu (à partir de android.os.Build.VERSION_CODES#Q Android Q, le seul contenu pertinent est du texte), votre implémentation de vue doit :

<ul><li>Définissez-le comme important pour la capture de contenu. <li>Fill ViewStructure utilisé pour la capture de contenu. <li>Notify the ContentCaptureSession when the text is change by user input. </ul>

Voici un exemple de méthodes pertinentes pour une EditTextvue semblable à celle-ci :

<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>

Si votre vue fournit sa propre hiérarchie virtuelle (par exemple, s’il s’agit d’un navigateur qui dessine le code HTML à l’aide Canvas ou les bibliothèques natives dans un autre processus de rendu), l’affichage est également chargé d’avertir la session lorsque les éléments virtuels apparaissent et disparaissent . Pour plus d’informations, voir View#onProvideContentCaptureStructure(ViewStructure, int) pour plus d’informations.

Java documentation pour android.view.contentcapture.ContentCaptureManager.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.

Champs

Nom Description
DataShareErrorConcurrentRequest
Obsolète.

La demande a été rejetée, car une session de partage de données simultanée est en cours.

DataShareErrorTimeoutInterrupted
Obsolète.

La demande a été interrompue en raison du délai d’expiration de session du partage de données.

DataShareErrorUnknown
Obsolète.

Une erreur s’est produite pendant la session de partage de données.

Propriétés

Nom Description
Class

Retourne la classe runtime de ce Object.

(Hérité de Object)
ContentCaptureConditions

Obtient la liste des conditions pour lesquelles la capture de contenu doit être autorisée.

ContentCaptureEnabled

Vérifie si la capture de contenu est activée pour cette activité. -ou- Appelé par les applications pour activer ou désactiver explicitement la capture de contenu.

Handle

Handle de l’instance Android sous-jacente.

(Hérité de Object)
JniIdentityHashCode

Obtient le code de hachage d’identité affecté à cet homologue Java par le runtime d’interopérabilité.

(Hérité de Object)
JniManagedPeerState

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

(Hérité de JavaObject)
JniPeerMembers

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

PeerReference

Obtient la référence d’objet JNI pour cet homologue Java.

(Hérité de Object)
ServiceComponentName

Retourne le nom du composant du service système qui consomme les événements capturés pour l’utilisateur actuel.

ThresholdClass

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

(Hérité de Object)
ThresholdType

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

(Hérité de Object)

Méthodes

Nom Description
Clone()

Crée et retourne une copie de cet objet.

(Hérité de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

(Hérité de JavaObject)
Dispose()

Libère les ressources détenues par cet homologue Java.

(Hérité de Object)
Dispose(Boolean)

Libère les ressources détenues par cet homologue Java.

(Hérité de Object)
DisposeUnlessReferenced()

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

(Hérité de JavaObject)
Equals(Object)

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

(Hérité de JavaObject)
Equals(Object)

Indique si un autre objet est « égal à » celui-ci.

(Hérité de Object)
GetHashCode()

Retourne une valeur de code de hachage pour l’objet.

(Hérité de Object)
JavaFinalize()

Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet.

(Hérité de Object)
Notify()

Réveille un thread unique qui attend le moniteur de cet objet.

(Hérité de Object)
NotifyAll()

Réveille tous les threads qui attendent le moniteur de cet objet.

(Hérité de Object)
RemoveData(DataRemovalRequest)

Appelé par l’application pour demander au service de capture de contenu de supprimer les données de capture de contenu associées à un contexte donné.

SetHandle(IntPtr, JniHandleOwnership)

Définit la propriété Handle.

(Hérité de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

(Hérité de JavaObject)
ShareData(DataShareRequest, IExecutor, IDataShareWriteAdapter)

Appelé par l’application pour demander le partage de données via l’écriture dans un fichier.

ToArray<T>()

Crée un tableau managé à partir de ce wrapper de tableau Java.

(Hérité de Object)
ToString()

Retourne une représentation sous forme de chaîne de l’objet.

(Hérité de Object)
UnregisterFromRuntime()

Annule l’inscription de cet homologue Java à partir du runtime d’interopérabilité.

(Hérité de Object)
Wait()

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<>

(Hérité de Object)
Wait(Int64, Int32)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)
Wait(Int64)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)

Implémentations d’interfaces explicites

Nom Description
IJavaPeerable.Disposed()

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

(Hérité de JavaObject)
IJavaPeerable.Finalized()

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

(Hérité de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

(Hérité de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

(Hérité de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

(Hérité de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

(Hérité de JavaObject)

Méthodes d’extension

Nom Description
GetJniTypeName(IJavaPeerable)

Obtient le nom JNI du type de l’instance self.

JavaAs<TResult>(IJavaPeerable)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

Fournit des moyens supplémentaires pour que les applications s’intègrent au sous-système de capture de contenu.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

S’applique à