Consejo rápido Cómo usar la API de asistencia de Android

Los usuarios de Android de hoy ya no tienen que abrir un navegador y realizar una búsqueda para conocer las cosas con las que se encuentran al usar una aplicación. En su lugar pueden usar un asistente. Si posee un dispositivo que ejecuta Android 6.0 o superior, es posible que ya esté familiarizado con su asistente predeterminado, que inicialmente se llamaba Google Now on Tap. Últimamente, su nombre ha sido cambiado a búsqueda de pantalla..

Los asistentes, aunque son sensibles al contexto, generalmente no son muy precisos. Para mejorar la precisión, los desarrolladores de aplicaciones deben utilizar la API de asistencia. En este rápido consejo, presentaré los conceptos básicos de la API y te ayudaré a comenzar a crear tu propio asistente personalizado..

1. Habilitar el asistente por defecto

Si nunca ha usado el asistente en su dispositivo o emulador, probablemente aún no esté habilitado. Para habilitarlo, mantenga presionado el botón de inicio. En el cuadro de diálogo que aparece, pulse la tecla Si estoy en botón.

Ahora podrá acceder al asistente predeterminado desde cualquier aplicación simplemente presionando el botón de inicio. Vale la pena señalar que el asistente predeterminado es parte de la aplicación de Google y funciona mejor solo después de que haya iniciado sesión en su cuenta de Google.

2. Enviando información al asistente

El asistente por defecto es muy poderoso. Puede proporcionar automáticamente información sensible al contexto basada en el contenido actual de la pantalla. Lo hace analizando la jerarquía de vistas de la actividad activa..

Para verlo en acción, cree una nueva actividad en su proyecto de Android Studio y agregue lo siguiente Vista de texto Widget, que tiene el nombre de una novela popular, a su diseño:

Si ejecuta su aplicación ahora y mantiene presionado el botón de inicio, el asistente predeterminado mostrará tarjetas que están relacionadas de alguna manera con el contenido de la aplicación. Vista de texto widget.

Al enviar información adicional al asistente, puede mejorar su precisión. Para hacerlo, primero debe anular la onProvideAssistContent () método de tu Actividad clase.

@Override public void onProvideAssistContent (AssistContent outContent) super.onProvideAssistContent (outContent); 

Ahora puedes usar el AssistContent Objeto para enviar información al asistente. Por ejemplo, si desea que el asistente muestre una tarjeta que permita al usuario leer sobre la novela en Goodreads, puede usar la setWebUri () método.

outContent.setWebUri (Uri.parse ("http://www.goodreads.com/book/show/13023.Alice_in_Wonderland"));

Así es como se ve la nueva tarjeta:

La API de asistencia también le permite pasar datos estructurados al asistente utilizando el setStructuredData () Método, que espera una cadena JSON-LD. La forma más fácil de generar la cadena JSON-LD es usar el JSONObject clase y su poner() método.

El siguiente código de muestra le muestra cómo generar y enviar datos estructurados sobre la novela:

outContent.setStructuredData (new JSONObject () .put ("@ type", "Book") .put ("author", "Lewis Carroll") .put ("name", "Alice in Wonderland") .put ("description "," Esta es una novela de 1865 sobre una niña llamada Alicia, "+" que cae a través de un agujero de conejo y "+" entra en un mundo de fantasía. ") .ToString ());

Si elige codificar manualmente su cadena JSON-LD, le sugiero que se asegure de que sea válida utilizando la herramienta de prueba de datos estructurados de Google.

3. Creando un asistente personalizado

Si no está satisfecho con la forma en que el asistente de la aplicación de Google maneja sus datos, debe considerar crear su propio asistente. Hacerlo no requiere mucho esfuerzo..

Todos los asistentes personalizados deben tener lo siguiente:

  • una VoiceInteractionService objeto
  • una VozInteractionSession objeto
  • una VoiceInteractionSessionService objeto
  • Un archivo de metadatos XML que describe el asistente personalizado.

Primero, crea una nueva clase de Java llamada MyAssistantSession y convertirlo en una subclase de la VozInteractionSession clase. En este punto, Android Studio debería generar automáticamente un constructor para ello..

la clase pública MyAssistantSession extiende VoiceInteractionSession public MyAssistantSession (contexto contextual) super (contexto); 

Al anular el onHandleAssist () Método de la clase, puede definir el comportamiento de su asistente. Por ahora, hagamos que analice la cadena JSON-LD que generamos en el paso anterior y mostremos su contenido como un tostada mensaje. Como habrá adivinado, para recuperar la cadena JSON-LD, debe usar la getStructuredData () método de la AssistContent objeto.

El siguiente código le muestra cómo mostrar el valor de la cadena JSON-LD descripción clave como tostada mensaje.

@Override public void onHandleAssist (datos de paquete, estructura de AssistStructure, contenido de AssistContent) super.onHandleAssist (datos, estructura, contenido); intente // obtener datos estructurados JSONObject estructuradoDatos = nuevo JSONObjeto (content.getStructuredData ()); // Mostrar la descripción como Toast Toast.makeText (getContext (), estructuradoData.optString ("descripción"), Toast.LENGTH_LONG) .show ();  catch (JSONException e) e.printStackTrace (); 

UNA VozInteractionSession objeto debe ser instanciado dentro de una VoiceInteractionSessionService objeto. Por lo tanto, crea una nueva clase de Java llamada MyAssistantSessionService y convertirlo en una subclase de VoiceInteractionSessionService. Dentro de su onNewSession () método, llamar al constructor de MyAssistantSession.

clase pública MyAssistantSessionService extiende VoiceInteractionSessionService @Override public VoiceInteractionSession enNewSession (paquete) return new MyAssistantSession (this); 

Nuestro asistente también necesita un VoiceInteractionService objeto. Por lo tanto, crea uno llamado MyAssistantService. No tienes que escribir ningún código dentro de él..

clase pública MyAssistantService extiende VoiceInteractionService 

Para especificar los detalles de configuración del asistente, debe crear un archivo de metadatos XML y colocarlo en el res / xml Carpeta de tu proyecto. El elemento raíz del archivo debe ser un etiqueta que especifica los nombres completos de ambos VoiceInteractionService y el VoiceInteractionSessionService subclases.

Aquí hay un archivo de metadatos de muestra:

 

Por último, al tiempo que declara los servicios en su proyecto. AndroidManifest.xml archivo, asegúrese de que requieren la BIND_VOICE_INTERACTION permiso.

       

Su asistente personalizado ya está listo.

4. Usando el asistente personalizado

Para poder usar su asistente personalizado, debe configurarlo como el asistente predeterminado de su dispositivo Android. Por lo tanto, abra el Ajustes aplicación y navegar a Aplicaciones> Aplicaciones predeterminadas> Asistencia y entrada de voz. A continuación, haga clic en el Ayudar a la aplicación Opción para seleccionar tu asistente..

En este punto, si ejecuta su aplicación y mantiene presionado el botón de inicio, debería poder ver las instrucciones de su asistente personalizado. tostada mensaje.

Conclusión

En esta sugerencia rápida, aprendió a usar la API Assist para interactuar con los asistentes en la plataforma Android. También aprendiste a crear un asistente personalizado rudimentario. Pero una advertencia: dado que los asistentes pueden leer casi todo el texto que está presente en la pantalla de un usuario, debe asegurarse de que su asistente personalizado maneje los datos confidenciales de manera segura..

Para obtener más información sobre la API de asistencia, consulte la documentación oficial. Y para obtener más información sobre la codificación y las API de vanguardia para la plataforma Android, consulte algunos de nuestros otros cursos y tutoriales aquí en Envato Tuts+!