Uma classe de desempenho é um padrão introduzido no Android 12. Uma classe de desempenho define um conjunto de funcionalidades do dispositivo que vão além dos requisitos do valor de referência do Android.
Cada versão do Android tem a própria classe de desempenho correspondente, que é definida no Documento de definição de compatibilidade (CDD) do Android da versão. O conjunto de teste de compatibilidade do Android (CTS) verifica os requisitos do CDD.
Cada dispositivo Android declara a classe de desempenho a que oferece suporte. Os desenvolvedores podem conferir a classe de desempenho do dispositivo durante a execução e fornecer experiências melhoradas que aproveitam ao máximo os recursos do aparelho.
Para descobrir o nível da classe de desempenho de um dispositivo, use a biblioteca Core Performance do Jetpack. Essa biblioteca informa o nível da classe de desempenho de mídia (MPC, na sigla em inglês) do dispositivo conforme declarado nas informações da versão do build ou com base nos dados do Google Play Services.
Comece adicionando uma dependência para os módulos relevantes no arquivo do Gradle:
Kotlin
// Implementation of Jetpack Core library. implementation("androidx.core:core-ktx:1.12.0") // Enable APIs to query for device-reported performance class. implementation("androidx.core:core-performance:1.0.0") // Enable APIs to query Google Play services for performance class. implementation("androidx.core:core-performance-play-services:1.0.0")
Groovy
// Implementation of Jetpack Core library. implementation 'androidx.core:core-ktx:1.12.0' // Enable APIs to query for device-reported performance class. implementation 'androidx.core:core-performance:1.0.0' // Enable APIs to query Google Play services for performance class. implementation 'androidx.core:core-performance-play-services:1.0.0'
Em seguida, crie uma instância de uma
implementação de
DevicePerformance
,
como PlayServicesDevicePerformance
,
no evento de ciclo de vida onCreate()
do Application
. Isso só precisa ser
feito uma vez no app.
Kotlin
import androidx.core.performance.play.services.PlayServicesDevicePerformance class MyApplication : Application() { lateinit var devicePerformance: DevicePerformance override fun onCreate() { // Use a class derived from the DevicePerformance interface devicePerformance = PlayServicesDevicePerformance(applicationContext) } }
Java
import androidx.core.performance.play.services.PlayServicesDevicePerformance; class MyApplication extends Application { DevicePerformance devicePerformance; @Override public void onCreate() { // Use a class derived from the DevicePerformance interface devicePerformance = new PlayServicesDevicePerformance(applicationContext); } }
Em seguida, você pode extrair a propriedade mediaPerformanceClass
para adaptar a experiência do app
com base nos recursos do dispositivo:
Kotlin
class MyActivity : Activity() { private lateinit var devicePerformance: DevicePerformance override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // Note: Good app architecture is to use a dependency framework. See // https://developer.android.com/training/dependency-injection for more // information. devicePerformance = (application as MyApplication).devicePerformance } override fun onResume() { super.onResume() when { devicePerformance.mediaPerformanceClass >= Build.VERSION_CODES.VANILLA_ICE_CREAM -> { // MPC level 35 and later. // Provide the most premium experience for the highest performing devices. } devicePerformance.mediaPerformanceClass == Build.VERSION_CODES.UPSIDE_DOWN_CAKE -> { // MPC level 34. // Provide a high quality experience. } else -> { // MPC level 33, 31, 30, or undefined. // Remove extras to keep experience functional. } } } }
Java
class MyActivity extends Activity { private DevicePerformance devicePerformance; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Note: Good app architecture is to use a dependency framework. See // https://developer.android.com/training/dependency-injection for more // information. devicePerformance = ((MyApplication) getApplication()).devicePerformance; } @Override public void onResume() { super.onResume(); if (devicePerformance.getMediaPerformanceClass() >= Build.VERSION_CODES.VANILLA_ICE_CREAM) { // MPC level 35 and later. // Provide the most premium experience for the highest performing devices. } else if (devicePerformance.getMediaPerformanceClass() == Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // MPC level 34. // Provide a high quality experience. } else { // MPC level 33, 31, 30, or undefined. // Remove extras to keep experience functional. } } }
Os níveis de classe de desempenho são compatíveis com versões futuras. Um dispositivo pode ser atualizado para uma versão mais recente da plataforma sem precisar atualizar a própria classe de desempenho. Por exemplo, um dispositivo que inicialmente oferece suporte à classe de desempenho 33 pode fazer upgrade para o Android 14 e continuar a oferecer suporte à classe 33 se não atender aos requisitos da classe 34. Isso permite agrupar dispositivos sem depender de uma versão específica do Android.
Classe de performance de mídia 35
O MPC 35 foi introduzido no Android 15 e se baseia nos requisitos introduzidos no MPC 34. Os requisitos específicos do MPC 35 são publicados no CDD do Android 15. Além do aumento dos requisitos para itens da MPC 34, o CDD especifica requisitos nas seguintes áreas:
Mídia
- Queda de frames de decodificação
- Edição HDR
- Aspectos de cores dinâmicas
- Proporção do modo retrato
Câmera
- JPEG_R
- Estabilização da visualização
Gráficos
- Extensões do EGL
- Estruturas do Vulkan
Classe de desempenho de mídia 34
O MPC 34 foi introduzido no Android 14 e se baseia nos requisitos introduzidos no MPC 33. Os requisitos específicos do MPC 34 são publicados no CDD do Android 14. Além do aumento dos requisitos para itens da MPC 33, o CDD especifica requisitos nas seguintes áreas:
Mídia
- Suporte a efeitos de granulação em decodificadores de hardware AV1
- Perfil de referência do AVIF
- Desempenho do codificador AV1
- Codecs de vídeo HDR
- Formato de cor RGBA_1010102
- Amostra de textura YUV
- Qualidade da codificação de vídeo
- Mixagem de áudio multicanal
Câmera
- Extensão do Modo noturno
- Câmera principal compatível com HDR
- Modo de cena da detecção facial
Geral
- Sobreposições de hardware
- Tela HDR
Classe de desempenho de mídia 33
O MPC 33 foi introduzido no Android 13 e se baseia nos requisitos introduzidos no MPC 31. Os requisitos específicos do MPC 33 são publicados no CDD do Android 13. Além do aumento dos requisitos para itens da MPC 31, o CDD especifica requisitos nas seguintes áreas:
Mídia
- Decodificador de hardware AV1
- Decodificadores de hardware seguros
- Latência de inicialização do decodificador
- Latência de áudio de ida e volta
- Fones de ouvido com fio e dispositivos de áudio USB
- Dispositivos MIDI
- Ambiente de execução confiável e protegido por hardware
Câmera
- Estabilização da visualização
- Gravação em câmera lenta
- Proporção de zoom mínima para câmera Ultra grande angular
- Câmera simultânea
- Lógica com várias câmeras
- Caso de uso de streaming
Classe de desempenho de mídia 31
O MPC 31 foi introduzido no Android 12. Os requisitos específicos do MPC 31 são publicados no CDD do Android 12. Ele especifica os requisitos destas áreas:
Mídia
- Sessões simultâneas de codec de vídeo
- Latência de inicialização do codificador
- Queda do frame do decodificador
- Qualidade da codificação
Câmera
- Resolução e frame rate
- Latências de inicialização e captura
FULL
ou um nível de hardware melhor- A origem do carimbo de data/hora está em tempo real
- Recurso RAW
Geral
- Memória
- Performance de leitura e gravação
- Resolução da tela
- Densidade da tela
Classe de performance de mídia 30
A MPC 30 inclui um subconjunto dos requisitos da MPC 31, permitindo que os desenvolvedores ofereçam uma experiência personalizada em dispositivos anteriores, mas ainda altamente funcionais. Os requisitos específicos da classe de desempenho são publicados no CDD do Android 11.
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Tempo de inicialização do app