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 (CTS) do Android 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. Ela informa a classe de desempenho de mídia do dispositivo conforme declarada 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'
Then, create an instance of a
DevicePerformance
implementation, such as
PlayServicesDevicePerformance
,
in the onCreate()
lifecycle event of your Application
. This should only be
done once in your 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.TIRAMISU -> { // Performance class level 13 and later. // Provide the most premium experience for the highest performing devices. } devicePerformance.mediaPerformanceClass == Build.VERSION_CODES.S -> { // Performance class level 12. // Provide a high quality experience. } else -> { // Performance class level 11 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.TIRAMISU) { // Performance class level 13 and later. // Provide the most premium experience for the highest performing devices. } else if (devicePerformance.getMediaPerformanceClass() == Build.VERSION_CODES.S) { // Performance class level 12. // Provide a high quality experience. } else { // Performance class level 11 or undefined. // Remove extras to keep experience functional. } } }
As classes de desempenho vão ser 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 12 pode fazer upgrade para o Android 13 e continuar a oferecer suporte à classe 12 caso não atenda aos requisitos da classe 13. Isso significa que uma classe de desempenho oferece uma maneira de agrupar dispositivos sem depender de uma versão específica do Android.
Classe de desempenho 14
A classe de desempenho 14 se baseia nos requisitos introduzidos na classe de desempenho 13. Confira os requisitos específicos da classe de desempenho no CDD do Android. Além do aumento dos requisitos para itens da classe de desempenho 13, o CDD especifica requisitos nestas á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
Genérico
- Sobreposições de hardware
- Tela HDR
Classe de desempenho 13
A classe de desempenho 13 baseia-se nos requisitos introduzidos na classe de desempenho 12. Confira os requisitos específicos da classe de desempenho no CDD do Android. Além do aumento dos requisitos para itens da classe de desempenho 12, o CDD especifica requisitos nestas á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 12
A classe de desempenho 12 se concentra nos casos de uso de mídia. Confira os requisitos específicos da classe de desempenho no CDD do Android. 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
Genérico
- Memória
- Performance de leitura e gravação
- Resolução da tela
- Densidade da tela
Classe de desempenho 11
A classe de desempenho 11 inclui um subconjunto dos requisitos para a classe de desempenho 12, permitindo que os desenvolvedores ofereçam uma experiência personalizada em dispositivos anteriores, mas ainda altamente funcionais. Confira os requisitos específicos da classe de desempenho no CDD do Android.
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Tempo de inicialização do app