Uso de la clase de rendimiento para optimizar su experiencia de usuario


Publicado por Don TurnerIngeniero de Relaciones con los Desarrolladores y Francois Goldfain, Director de Android Media Framework

Ilustración de mujer en un teléfono

Hoy lanzamos el Biblioteca Jetpack Core Performance en alfa. Esta biblioteca le permite comprender fácilmente de qué es capaz un dispositivo y personalizar su experiencia de usuario en consecuencia. Lo hace al permitirle obtener el dispositivo clase de rendimiento en dispositivos con Android 11 (API nivel 30) y superior.

Una clase de rendimiento es una clasificación que refleja tanto el nivel de rendimiento de un dispositivo como sus capacidades generales. Como tal, refleja en gran medida las especificaciones de hardware del dispositivo, pero también su desempeño en ciertos escenarios del mundo real, verificados por Android. Conjunto de pruebas de compatibilidad.

Los requisitos de la clase de rendimiento. actualmente se enfoca en casos de uso de medios. por ejemplo, un Rendimiento multimedia clase 12 el dispositivo está garantizado para:

  • tener 6+ GB de RAM
  • tener una cámara trasera de más de 12 megapíxeles que admita captura de video 4k @ 30fps,
  • ser capaz de inicializar un códec de video en <50ms incluso bajo carga
  • y muchos otros requisitos.

Un dispositivo que cumpla con estos requisitos puede manejar de manera óptima muchos casos de uso de medios populares, incluidas las canalizaciones de video típicas en aplicaciones de redes sociales para capturar, etiquetar y compartir.

Como desarrollador de aplicaciones, esto significa que puede agrupar de manera confiable los dispositivos con el mismo nivel de rendimiento y adaptar el comportamiento de su aplicación a esos diferentes grupos. Esto le permite ofrecer una experiencia óptima a los usuarios con dispositivos más y menos capaces. Los requisitos de la clase de rendimiento se ampliarán con cada versión principal de Android, lo que hará posible orientar fácilmente diferentes niveles de experiencia al rango de clases de rendimiento que considere apropiado. Por ejemplo, es posible que desee personalizar las experiencias “más premium” y “más funcionales” para determinadas clases de rendimiento.

Cómo utilizar la clase de rendimiento

Para agregar una clase de rendimiento a tu aplicación, incluye la siguiente dependencia en tu build.gradle:

implementation 'androidx.core:core-performance:1.0.0-alpha02'

Así que utilízalo para personalizar tu experiencia de usuario. Por ejemplo, para codificar video de mayor resolución según la clase de rendimiento multimedia:

class OptimalVideoSettings(context: Context){

   private val devicePerf: DevicePerformance = DevicePerformance.create(context)

   val encodeHeight by lazy {
       when (devicePerf.mediaPerformanceClass) {
           Build.VERSION_CODES.S -> 1080 // On performance class 12 use 1080p
           Build.VERSION_CODES.R -> 720 // On performance class 11 use 720p
           else -> 480
       }
   }

   val encodeFps by lazy {
       when(devicePerf.mediaPerformanceClass){
           Build.VERSION_CODES.S -> 60 // On performance class 12 use 60 fps
           Build.VERSION_CODES.R -> 30 // On performance class 11 use 30 fps
           else -> 30
       }
   }
}

Cuándo usar la clase de rendimiento

El ecosistema de dispositivos Android es muy diverso. El mismo código de aplicación puede generar comportamientos muy diferentes según las capacidades del dispositivo. Por ejemplo, la codificación de un video 4K puede demorar unos segundos en un dispositivo pero unos minutos en otro. Las expectativas de los usuarios también varían mucho según el dispositivo que compren. Para brindar una experiencia de usuario optimizada, es común agrupar dispositivos según algunos criterios, como el tamaño de RAM o el año de lanzamiento, y luego personalizar las funciones de la aplicación para cada grupo.

El problema de usar un valor arbitrario, como el tamaño de RAM para agrupar, es que no ofrece garantías sobre el rendimiento de un dispositivo. Siempre habrá también valores atípicos que se desempeñen mejor o peor de lo esperado dentro de ese grupo. La agrupación por clase de rendimiento resuelve este problema proporcionando estas garantíasrespaldado por pruebas del mundo real.

La prueba manual de dispositivos que pertenecen a diferentes clases de rendimiento es una opción para evaluar e identificar los cambios necesarios para equilibrar la funcionalidad y la facilidad de uso. Sin embargo, el enfoque recomendado para validar los cambios en la experiencia de la aplicación es ejecutar pruebas A/B y analizar su impacto en las métricas de la aplicación. Puedes hacerlo con el apoyo de una plataforma de experimentación como base de fuego. Proporcionar la clase de rendimiento del dispositivo a la plataforma de prueba proporciona una dimensión de rendimiento adicional a los resultados de la prueba. Esto le permite identificar las optimizaciones correctas para cada clase de dispositivo.

complemento inc.

Snap utilizó agrupación de dispositivos y pruebas A/B para optimizar su experiencia con Snapchatter. Al aprovechar la clase de rendimiento, Snapchat identifica con confianza la capacidad del dispositivo de forma escalable y ofrece una experiencia óptima. Por ejemplo, la calidad visual de los videos compartidos aumenta al usar una resolución y tasa de bits más altas en dispositivos Media Performance Class 12 que la configuración predeterminada. A medida que se actualicen más dispositivos para cumplir con la clase de rendimiento de medios, Snapchat realizará más pruebas A/B e implementará funciones que están mejor optimizadas para las capacidades del dispositivo.

Soporte de dispositivos

Los requisitos de clase de rendimiento se desarrollan en colaboración con los principales desarrolladores y fabricantes de dispositivos, que reconocen la necesidad de un sistema simple, confiable y basado en clases para permitir la optimización de aplicaciones a gran escala.

En particular, Oppo, OnePlus, realme, Vivo y Xiaomi fueron los primeros en optimizar sus dispositivos insignia para garantizar que cumplan con los requisitos de Media Performance Class 12. En consecuencia, Build.VERSION.MEDIA_PERFORMANCE_CLASS regresar Build.VERSION_CODES.S (el nivel de API de Android 12) en los siguientes dispositivos:

¿Por qué una biblioteca Jetpack?

La biblioteca Jetpack Core Performance se introdujo para extender la clase de rendimiento a los dispositivos que aún no ejecutan Android 12 o que no anuncian su clase de rendimiento elegible cuando pasaron el conjunto de pruebas de compatibilidad de Android.

La biblioteca, que admite dispositivos con Android 11 y versiones posteriores, tiene como objetivo resolver este problema. Informa la clase de rendimiento de muchos dispositivos en función de los resultados de las pruebas recopiladas durante la certificación del dispositivo o mediante pruebas adicionales realizadas por el equipo de Google. Regularmente agregamos nuevos dispositivos, así que asegúrese de usar la última versión de la biblioteca Core Performance para obtener la máxima cobertura de dispositivos.

Informes de clase de rendimiento a Firebase

Al usar Firebase como plataforma de experimentación para Pruebas A/Bes fácil enviar la clase de rendimiento del dispositivo a Firebase Analytics usando una propiedad de usuario. Filtrar los informes de prueba A/B por clase de rendimiento puede indicar qué valores experimentales llevaron a las mejores métricas para cada grupo de dispositivos.

Aquí hay un ejemplo de una prueba A / B que varía la altura de codificación de un video e informa la clase de rendimiento usando una propiedad de usuario.

class MyApplication : Application() {

    private lateinit var devicePerf: DevicePerformance 
    private lateinit var firebaseAnalytics: FirebaseAnalytics
         

    override fun onCreate() {
        devicePerf = DevicePerformance.create(this)
        firebaseAnalytics = Firebase.analytics        
        firebaseAnalytics.setUserProperty(
           "androidx.core.performance.DevicePerformance.mediaPerformanceClass",
           devicePerf.mediaPerformanceClass)
    }

    fun getVideoEncodeHeight() : Long = remoteConfig.getLong("encode_height")
}

Próximos pasos

Nos gustaría que probaras el Biblioteca de rendimiento principal en tu aplicación. Si tiene algún problema o solicitud de función, por favor archivarlos aquí.

Además, nos interesaría recibir sus comentarios sobre los requisitos de la clase de rendimiento. ¿Existen criterios de rendimiento específicos o requisitos de hardware que sean importantes para los casos de uso de su aplicación? Si es así, háganoslo saber utilizando el Localizador de problemas de Android.


Compruebe también

en vivo desde Droidcon, incluida la mayor actualización de Gemini en Android Studio y más lanzamientos del SDK de Android.

Acabamos de lanzar nuestro episodio de otoño de #TheAndroidShow en YouTube etcétera desarrollador.android.comy esta vez …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *