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..
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.
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.
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:
VoiceInteractionService
objetoVozInteractionSession
objetoVoiceInteractionSessionService
objetoPrimero, 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.
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.
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+!