ContentCaptureManager Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido.
[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
- Herencia
- Atributos
Comentarios
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido.
La captura de contenido proporciona captura continua en tiempo real de la actividad de la aplicación, visualización y eventos a un servicio de inteligencia proporcionado por el sistema Android. A continuación, el servicio de inteligencia usa esa información para mediar y acelerar el recorrido del usuario a través de diferentes aplicaciones. Por ejemplo, cuando el usuario recibe una dirección de restaurante en una aplicación de chat y cambia a una aplicación de mapa para buscar ese restaurante, el servicio de inteligencia podría ofrecer un cuadro de diálogo de autorrellenar para permitir que el usuario seleccione automáticamente su dirección.
La captura de contenido se diseñó teniendo en cuenta dos preocupaciones principales: privacidad y rendimiento.
<ul><li><b>Privacy:</b> el servicio de inteligencia es un componente de confianza proporcionado por el fabricante del dispositivo y que el usuario no puede cambiar (aunque el usuario puede deshabilitar globalmente la captura de contenido mediante la aplicación Configuración de Android). Este servicio solo puede usar los datos para el aprendizaje automático en el dispositivo, que se aplica tanto mediante el aislamiento de procesos como los requisitos de CDD.
<li><b>Performance:</b> content capture is alta optimized to minimic its impact in the app jankiness and overall device system health. Por ejemplo, su único habilitado en aplicaciones (o incluso actividades específicas de una aplicación) que el servicio de inteligencia ha permitido explícitamente y almacena en búfer los eventos para que se envíen en un lote al servicio (consulte #isContentCaptureEnabled() otros casos cuando está deshabilitado).
</ul>
De hecho, antes de usar este administrador, el desarrollador de aplicaciones debe comprobar si está disponible. Ejemplo:
<code>
ContentCaptureManager mgr = context.getSystemService(ContentCaptureManager.class);
if (mgr != null && mgr.isContentCaptureEnabled()) {
// ...
}
</code>
Normalmente, los desarrolladores de aplicaciones no necesitan interactuar explícitamente con la captura de contenido, excepto cuando la aplicación:
<ul><li>Puede definir un contexto android.content.LocusId para identificar un estado único (por ejemplo, una conversación entre 2 usuarios de chat).
<li>Puede tener varias jerarquías de vistas con un significado contextual diferente (por ejemplo, una aplicación de explorador con varias pestañas, cada una que representa una dirección URL diferente).
<li>Contiene vistas personalizadas (que extienden la vista directamente y no las proporciona el SDK estándar de Android.
<li>Contiene vistas que proporcionan su propia jerarquía virtual (como un explorador web que representa los elementos HTML mediante un Canvas).
</ul>
El punto de integración principal con la captura de contenido es .ContentCaptureSession El sistema Android crea automáticamente una sesión "main" cuando la captura de contenido está habilitada para la actividad y su uso por las vistas estándar de Android para notificar al servicio de captura de contenido de eventos como vistas que se agregan, se quitan las vistas y la entrada del usuario cambia el texto. La sesión podría tener un ContentCaptureContext para proporcionar información más contextual sobre ella, como el locus asociado a la jerarquía de vistas (consulte android.content.LocusId para obtener más información sobre locus). De forma predeterminada, la sesión principal no tiene un ContentCaptureContext, pero puede cambiarla después de su creación. Ejemplo:
<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 la actividad contiene jerarquías de vistas con un significado contextual diferente, debe crear sesiones secundarias para cada raíz de jerarquía de vistas. Por ejemplo, si la actividad es un explorador, puede usar la sesión principal para la dirección URL principal que se representa, las sesiones secundarias para cada 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 la actividad tiene vistas personalizadas (es decir, vistas que se extienden View directamente y proporcionan solo una vista lógica, no un árbol virtual hiearchy) y proporciona contenido relevante para la captura de contenido (a partir de android.os.Build.VERSION_CODES#Q Android Q, el único contenido relevante es texto), la implementación de la vista debe:
<ul li>Establézcalo><como importante para la captura de contenido.
<li>Fill ViewStructure usado para la captura de contenido.
<li>Notificar cuando ContentCaptureSession la entrada del usuario cambia el texto.
</ul>
Este es un ejemplo de los métodos pertinentes para una EditTextvista similar:
<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 la vista proporciona su propia jerarquía virtual (por ejemplo, si es un explorador que dibuja el CÓDIGO HTML mediante Canvas o bibliotecas nativas en un proceso de representación diferente), la vista también es responsable de notificar a la sesión cuando aparezcan los elementos virtuales y desaparezcan; consulte View#onProvideContentCaptureStructure(ViewStructure, int) para obtener más información.
Java documentación para android.view.contentcapture.ContentCaptureManager.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Campos
| Nombre | Description |
|---|---|
| DataShareErrorConcurrentRequest |
Obsoletos.
Se ha rechazado la solicitud, ya que hay una sesión de recurso compartido de datos simultánea en curso. |
| DataShareErrorTimeoutInterrupted |
Obsoletos.
La solicitud se ha interrumpido debido al tiempo de espera de la sesión del recurso compartido de datos. |
| DataShareErrorUnknown |
Obsoletos.
Error durante la sesión de uso compartido de datos. |
Propiedades
| Nombre | Description |
|---|---|
| Class |
Devuelve la clase en tiempo de ejecución de este |
| ContentCaptureConditions |
Obtiene la lista de condiciones para cuando se debe permitir la captura de contenido. |
| ContentCaptureEnabled |
Comprueba si la captura de contenido está habilitada para esta actividad. -o bien- Llamadas por aplicaciones para habilitar o deshabilitar explícitamente la captura de contenido. |
| Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
| JniIdentityHashCode |
Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| JniManagedPeerState |
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido. (Heredado de JavaObject) |
| JniPeerMembers |
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido. |
| PeerReference |
Obtiene la referencia de objeto JNI para este Java del mismo nivel. (Heredado de Object) |
| ServiceComponentName |
Devuelve el nombre del componente del servicio del sistema que consume los eventos capturados para el usuario actual. |
| ThresholdClass |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. (Heredado de Object) |
| ThresholdType |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. (Heredado de Object) |
Métodos
| Nombre | Description |
|---|---|
| Clone() |
Crea y devuelve una copia de este objeto. (Heredado de Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido. (Heredado de JavaObject) |
| Dispose() |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| Dispose(Boolean) |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| DisposeUnlessReferenced() |
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido. (Heredado de JavaObject) |
| Equals(Object) |
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido. (Heredado de JavaObject) |
| Equals(Object) |
Indica si algún otro objeto es "igual a" este. (Heredado de Object) |
| GetHashCode() |
Devuelve un valor de código hash para el objeto . (Heredado de Object) |
| JavaFinalize() |
Obsoletos.
Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto . (Heredado de Object) |
| Notify() |
Activa un único subproceso que está esperando en el monitor de este objeto. (Heredado de Object) |
| NotifyAll() |
Activa todos los subprocesos que están esperando en el monitor de este objeto. (Heredado de Object) |
| RemoveData(DataRemovalRequest) |
Llamada por la aplicación para solicitar el servicio de captura de contenido para quitar los datos de captura de contenido asociados con algún contexto. |
| SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido. (Heredado de JavaObject) |
| ShareData(DataShareRequest, IExecutor, IDataShareWriteAdapter) |
Llamada por la aplicación para solicitar el uso compartido de datos mediante la escritura en un archivo. |
| ToArray<T>() |
Crea una matriz administrada a partir de este contenedor de matriz Java. (Heredado de Object) |
| ToString() |
Devuelve una representación de cadena del objeto . (Heredado de Object) |
| UnregisterFromRuntime() |
Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| Wait() |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><> (Heredado de Object) |
| Wait(Int64, Int32) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
| Wait(Int64) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| IJavaPeerable.Disposed() |
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido. (Heredado de JavaObject) |
| IJavaPeerable.Finalized() |
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido. (Heredado de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido. (Heredado de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido. (Heredado de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido. (Heredado de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido. (Heredado de JavaObject) |
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
| JavaCast<TResult>(IJavaObject) |
Proporciona maneras adicionales para que las aplicaciones se integren con el subsistema de captura de contenido. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |