Android Q permettra aux applications d'enregistrer l'audio d'autres applications et de surveiller la température de l'appareil

Android Q ajoute une nouvelle API pour enregistrer la sortie audio interne d'une autre application et également pour surveiller la température de l'appareil.

Google donne et Google reprend. Chaque nouvelle version d'Android introduit de nombreuses nouvelles API qui améliorent les fonctionnalités des applications existantes ou ouvrent de nouvelles catégories d'applications. D'autre part, Google supprime également l'accès ou restreint les capacités des API existantes pour améliorer la sécurité de la plateforme Android. La version Android Q n'est pas différente et nous avons déjà beaucoup parlé de ses modifications apportées au stockage partagé, à l'accès au presse-papiers, aux notifications et à d'autres API. À cette année Lors de la conférence des développeurs Google I/O, Google a annoncé de nouvelles API dans Android Q particulièrement intéressantes pour les utilisateurs et les développeurs de jeux mobiles: AudioPlaybackCapture et API thermiques.

Enregistrement de l'audio à partir d'autres applications avec AudioPlaybackCapture dans Android Q

Le jeu mobile est une industrie énorme qui ne montre aucun signe de ralentissement de sitôt, en particulier sur des marchés comme les États-Unis, la Chine et l’Inde. Alors que de plus en plus de personnes passent du temps sur leur smartphone pour jouer et utiliser les réseaux sociaux, il n’est pas surprenant que les gens souhaitent partager leurs expériences de jeu en ligne.

Android prend en charge la prise de captures d'écran depuis le tout début, mais la capture de vidéos de l'écran n'est prise en charge que depuis Android 5.0 Lollipop avec l'introduction du API MediaProjection. Malheureusement, cette API ne permet pas aux applications tierces d'enregistrer la sortie audio interne d'autres applications, forcer les enregistreurs d'écran tiers à enregistrer la sortie audio externe du microphone de l'appareil (s). Les équipementiers comme Samsung et Huawei fournir des applications système pour enregistrer la sortie audio interne pendant un enregistrement d'écran, mais le seul moyen pour que les propriétaires d'autres appareils enregistrent correctement la sortie vidéo et audio de leurs appareils, il faut acheter un accessoire tiers. Heureusement, Google introduit enfin dans Android Q un moyen permettant aux applications tierces d'enregistrer l'audio d'autres applications.

L'API AudioPlaybackCapture est décrite par Google comme l'analogue de la capture d'écran, mais pour l'enregistrement audio. Bien que la seule application à utiliser l'API jusqu'à présent soit celle de Google Sous-titre en direct, un outil d'accessibilité qui ajoute des sous-titres à toute vidéo lue sur l'appareil, l'API la documentation indique que son objectif principal est de permettre aux applications de streaming de capturer l'audio en cours de diffusion. joué par des jeux. Pensez aux joueurs mobiles diffusant leurs sessions sur des services comme Twitch ou YouTube. L'API est conçue pour ne pas affecter la latence audio de l'application dont l'audio est capturé, ce qui la rend parfaite pour l'enregistrement du jeu afin que l'audio et la vidéo ne soient pas désynchronisés.

Contrairement aux débuts d’Android, l’approche de Google à l’égard des nouvelles API est plus prudente. AudioPlaybackCapture ne peut être utilisé que si l'application dont l'audio est capturé et l'application effectuant la capture répondent à des exigences spécifiques. Voici un résumé de ces exigences :

  • Pour que l'audio d'une application soit capturé par une application tierce, les conditions suivantes doivent être remplies :
    • L'application doit avoir allowAudioPlaybackCapture défini sur true ou non défini dans son manifeste. (La valeur par défaut est true pour les applications ciblant Android Q, mais peut être définie manuellement pour les applications ciblant Android Pie.)
    • L'application produisant de l'audio doit avoir son utilisation audio de type USAGE_MEDIA, USAGE_GAME ou USAGE_UNKNOWN.
    • La stratégie de capture audio (setAllowedCapturePolicy) doit être définie sur ALLOW_CAPTURE_BY_ALL. Cette stratégie peut être définie au moment de l'exécution, mais la lecture doit être redémarrée pour que la modification de stratégie prenne effet. Si ALLOW_CAPTURE_BY_SYSTEM est défini, seules les applications système peuvent enregistrer l'audio (mais sont limitées dans qu'ils ne peuvent pas enregistrer l'audio, le transmettre à une application tierce ou enregistrer à > 16 kHz en mono 16 bits qualité.)
  • Pour qu'une application puisse enregistrer de l'audio à partir d'une autre application, les conditions suivantes doivent être remplies :
    • L'application doit afficher l'invite MediaProjectionManager.createScreenCaptureIntent et l'utilisateur doit l'accepter.
      Boîte de dialogue de confirmation que les utilisateurs voient lorsqu'une application tente de capturer l'écran à l'aide de l'API MediaProjection.
    • L'application doit contenir le ENREGISTREMENT AUDIO autorisation.
    • L'application doit être dans le même profil utilisateur que l'application dont l'audio sera enregistré.

J'imagine que la plupart des jeux permettront à leur audio d'être capturé par des applications utilisant cette nouvelle API, mais la mise à jour des jeux pour la prendre en charge peut prendre un certain temps. D’un autre côté, ne vous attendez pas à ce qu’aucune application de streaming musical ou vidéo prenne en charge cette API pour des tiers en raison de problèmes de licence. Cependant, les limitations imposées par Google si une application définit sa politique de capture audio sur ALLOW_CAPTURE_BY_SYSTEM signifient que les développeurs d’applications de streaming musical et vidéo devraient accepter d’activer la capture audio par le système pour améliorer l’accessibilité.

Pour en savoir plus sur l'API AudioPlaybackCapture dans Android Q, consultez cette page.

Surveillance de la limitation avec l'API thermique dans Android Q

La limitation thermique est presque entièrement gérée par le système sans aucune entrée, ni même notification, des applications les plus affectées par la limitation. Si les ressources de l’appareil sont trop sollicitées, la plupart des appareils limiteront les vitesses du CPU et du GPU au détriment des performances de votre jeu. En tant que développeur de jeux, vous ne pouvez rien faire à ce sujet, à part avertir l'utilisateur avant de modifier des paramètres de l'impact potentiel que leurs modifications peuvent avoir sur les performances.

Cependant, avec la nouvelle API Thermal d'Android Q, les applications peuvent recevoir des rappels pour différentes étapes de limitation des performances, ce qui donne les développeurs ont la possibilité de contribuer à réduire la pression exercée sur l'appareil en réduisant les activités qui nécessitent un processeur, un GPU ou un modem important. usage. Par exemple, un jeu pourrait réduire dynamiquement la résolution jusqu'à ce que l'appareil ne soit plus limité par le GPU, ou une application Maps pourrait désactiver des fonctionnalités améliorées telles que navigation en réalité augmentée pour réduire la charge sur le processeur.

Pour utiliser cette nouvelle API, les applications enregistrent un écouteur dans PowerManager (addThermalStatusListener) et le système envoie à l'application l'un des codes d'état thermique suivants :

  • THERMAL_STATUS_NONE: "Pas sous limitation."
  • THERMAL_STATUS_LIGHT: "Limitation légère où l'UX n'est pas affecté."
  • THERMAL_STATUS_MODERATE: "Limitation modérée où l'UX n'est pas largement impacté."
  • THERMAL_STATUS_SEVERE: "Limitation sévère où l'UX est largement impactée."
  • THERMAL_STATUS_CRITICAL: "La plateforme a tout fait pour réduire la consommation."
  • THERMAL_STATUS_EMERGENCY: "Les composants clés de la plate-forme s'arrêtent en raison de conditions thermiques. Les fonctionnalités de l'appareil seront limitées.
  • THERMAL_STATUS_SHUTDOWN: « Besoin d'un arrêt immédiat.

La prise en charge de l'API Thermal nécessite évidemment Android Q, mais une autre exigence est l'ajout d'un nouveau HAL. Google indique que les appareils Pixel sur Android Q (c'est-à-dire Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Pixel 3a, et Pixel 3a XL) prennent en charge l'API Thermal, mais Google travaille à ajouter la prise en charge d'autres appareils.

En savoir plus sur le API thermique ici.