Niveau d'API: 21
Android 5.0 (LOLLIPOP) propose de nouvelles fonctionnalités pour les utilisateurs et les développeurs d'applications. Ce document fournit une les nouvelles API les plus notables.
Si vous avez une application publiée, veillez à vérifier la section Android 5.0 Behavior (Comportement) Modifications dont vous devez tenir compte dans votre application. Ces changements de comportement peut affecter votre application sur les appareils Android 5.0, même si vous n'utilisez pas de nouvelles API ou ciblant de nouvelles fonctionnalités.
Pour en savoir plus sur les nouvelles fonctionnalités de la plate-forme, consultez les Android Lollipop temps forts.
Premiers pas en tant que développeur
Pour commencer à créer des applications pour Android 5.0, vous devez d'abord télécharger le SDK Android. Utilisez ensuite SDK Manager pour télécharger la plate-forme du SDK Android 5.0 et les images système.
Mettre à jour votre niveau d'API cible
Afin d'optimiser votre application pour les appareils équipés d'Android 5.0,
définir votre targetSdkVersion
sur
"21"
, installez votre application sur un appareil Android
l'image système 5.0, la tester, puis publier l'application mise à jour avec
ce changement.
Vous pouvez utiliser les API Android 5.0 tout en étant compatible avec les versions antérieures
en ajoutant à votre code des conditions qui vérifient le niveau d'API du système
avant d'exécuter des API non compatibles avec votre minSdkVersion
.
Pour en savoir plus sur la maintenance de la rétrocompatibilité, consultez la section Compatibilité
Différentes versions de la plate-forme
Pour plus d'informations sur le fonctionnement des niveaux d'API, consultez la page Qu'est-ce que l'API ? Niveau ?
Changements de comportement importants
Si vous avez déjà publié une application pour Android, sachez qu'elle peut être concernée par des modifications apportées à Android 5.0.
Pour en savoir plus, consultez Modifications apportées à Android 5.0.
Interface utilisateur
Compatibilité avec Material Design
Android 5.0 est désormais compatible avec le nouveau Material Design d'Android. du style. Vous pouvez créer des applications avec un design qui sont visuellement dynamiques et dynamiques. comportent des transitions d'éléments d'interface utilisateur qui semblent naturelles pour les utilisateurs. Cette assistance inclut les fonctionnalités suivantes:
- Le thème Material
- Afficher les ombres
- Widget
RecyclerView
- Animation drawable et effets de style
- Animation Material Design et effets de transition d'activité
- Animateurs pour les propriétés de vue en fonction de l'état de la vue
- Widgets d'interface utilisateur et barres d'application personnalisables avec des palettes de couleurs que vous contrôlez
- Drawables animés et non animés basés sur des graphiques vectoriels XML.
Pour en savoir plus sur l'ajout de la fonctionnalité Material Design à votre application, consultez Material Design :
Documents et activités simultanés dans l'écran "Recents" (Éléments récents)
Dans les versions précédentes,
écran récent
ne pouvait afficher qu'une seule tâche pour chaque application avec laquelle l'utilisateur a interagi
le plus récemment. Votre application peut désormais ouvrir d'autres tâches si nécessaire
les activités simultanées pour les documents. Cette fonctionnalité facilite le multitâche en
permettant aux utilisateurs de passer rapidement d'une activité à un autre
l'écran "Récents", avec une expérience de changement cohérente dans toutes les applis.
Il peut s'agir, par exemple, d'onglets ouverts dans un navigateur Web
une application de navigateur, des documents dans une application de productivité, des correspondances simultanées dans
un jeu ou des chats
dans une application de messagerie. Votre application peut gérer ses tâches
via la classe ActivityManager.AppTask
.
Pour insérer une coupure logique afin que le système traite votre activité comme une nouvelle
tâche, utilisez FLAG_ACTIVITY_NEW_DOCUMENT
quand
en lançant l'activité avec startActivity()
. Vous pouvez également obtenir ce comportement en définissant
<activité>
l'attribut documentLaunchMode
de l'élément à "intoExisting"
ou
"always"
dans votre fichier manifeste.
Pour éviter d'encombrer l'écran des éléments récents, vous pouvez définir le nombre maximal
des tâches de votre application
qui peuvent apparaître sur cet écran. Pour ce faire, définissez le paramètre
<application>
android:maxRecents
. L'actuel
vous pouvez spécifier jusqu'à 50 tâches par utilisateur (25 pour les appareils à faible RAM).
Les tâches de l'écran "Recents" (Éléments récents) peuvent être configurées pour persister lors des redémarrages. Pour contrôler
le comportement de persistance, utilisez
android:persistableMode
. Vous pouvez aussi modifier
les propriétés visuelles d'une activité sur l'écran "Recents" (Actions récentes), telles que
la couleur, le libellé et l'icône de l'activité, en appelant la méthode
setTaskDescription()
.
Mises à jour de WebView
Android 5.0 met à jour WebView
mise en œuvre dans Chromium M37, apportant des améliorations en termes de sécurité et de stabilité,
ainsi que des corrections de bugs. La chaîne user-agent par défaut d'un paramètre
WebView
fonctionnant sous Android 5.0 a
a été mis à jour pour intégrer 37.0.0.0 comme numéro de version.
Cette version présente la classe PermissionRequest
,
qui permet à votre appli d'accorder l'autorisation WebView
pour accéder à des ressources protégées comme la caméra et le micro, via des API Web
comme getUserMedia(). Votre application doit disposer
les autorisations Android pour ces ressources afin d'accorder les autorisations
WebView
Avec la nouvelle méthode onShowFileChooser()
,
vous pouvez maintenant utiliser un champ de formulaire de saisie dans WebView
,
et lancer un sélecteur de fichier pour
sélectionner des images et des fichiers à partir de l'appareil Android.
De plus, cette version est compatible avec WebAudio WebGL Normes ouvertes WebRTC Pour en savoir plus sur les nouvelles fonctionnalités incluses dans cette version, consultez WebView pour Android
Capture et partage d'écran
Android 5.0 vous permet d'ajouter des fonctionnalités de capture et de partage d'écran à
votre application avec les nouvelles API android.media.projection
. Cette fonctionnalité
est utile, par exemple, si vous souhaitez activer le partage d'écran dans une vidéo
de conférence.
La nouvelle méthode createVirtualDisplay()
permet à votre application de capturer le contenu de l'écran principal (l'option par défaut
afficher) dans un objet Surface
, que votre application peut ensuite
envoyer sur le réseau. L'API n'autorise que la capture d'écran non sécurisé
et non l'audio du système. Pour lancer la capture d'écran, votre application doit d'abord
demander l'autorisation de l'utilisateur en ouvrant une boîte de dialogue de capture d'écran à l'aide d'un
Intent
obtenu via la
createScreenCaptureIntent()
.
Pour obtenir un exemple d'utilisation des nouvelles API, consultez le MediaProjectionDemo
dans l'exemple de projet.
Notifications
Notifications sur l'écran de verrouillage
Sur Android 5.0, les écrans de verrouillage permettent de présenter les notifications. Les utilisateurs peuvent choisir d'autoriser ou non les utilisateurs dans les paramètres contenu de notification sensible à afficher sur un écran de verrouillage sécurisé.
Votre application peut contrôler le niveau de détail visible lorsque ses notifications sont
affiché sur l'écran
de verrouillage sécurisé. Pour contrôler le niveau de visibilité, appelez
setVisibility()
et
spécifiez l'une des valeurs suivantes:
VISIBILITY_PRIVATE
: Affiche des informations de base, telles que l'icône de la notification, mais masque le l'intégralité du contenu de la notification.VISIBILITY_PUBLIC
: Affiche tout le contenu de la notification.VISIBILITY_SECRET
: n'affiche rien, à l'exception de l'icône de notification.
Lorsque le niveau de visibilité est VISIBILITY_PRIVATE
,
vous pouvez également fournir une version masquée de la notification
tout contenu qui masque les informations personnelles. Par exemple, une application de SMS peut afficher
notification indiquant "Vous avez trois nouveaux SMS" mais le message est masqué
le contenu et les expéditeurs. Pour fournir cette autre notification, vous devez d'abord créer la
notification de remplacement avec Notification.Builder
. Quand ?
vous créez l'objet de notification privée, joignez la notification de remplacement
via la
setPublicVersion()
.
Métadonnées des notifications
Android 5.0 utilise les métadonnées associées aux notifications de votre application
pour trier les notifications de manière plus intelligente. Pour définir les métadonnées, appelez la méthode
les méthodes suivantes dans Notification.Builder
lorsque vous
créez la notification:
setCategory()
: indique au système comment gérer les notifications de votre application lorsque le l'appareil est en mode priorité (par exemple, si une notification représente appel entrant, message instantané ou alarme).setPriority()
: Marque la notification comme plus ou moins importante que les notifications normales. Notifications avec le champ de priorité défini surPRIORITY_MAX
ou LesPRIORITY_HIGH
apparaissent dans un petite fenêtre flottante si la notification émet également un son ou une vibration.addPerson()
: vous permet d'ajouter une ou plusieurs personnes pertinentes pour une notification. Votre application peut l'utiliser pour signaler au système qu'elle doit se regrouper notifications provenant des personnes spécifiées, ou classer les notifications de ces personnes plus important.
Graphiques
Compatibilité avec OpenGL ES 3.1
Android 5.0 ajoute des interfaces Java et une compatibilité native avec OpenGL ES 3.1. Principales nouvelles fonctionnalités fournies dans OpenGL ES 3.1:
- Calculer les nuanceurs
- Séparer les objets du nuanceur
- Commandes de dessin indirect
- Textures de plusieurs échantillons et pochoirs
- Améliorations apportées au langage d'ombrage
- Extensions pour les modes de fusion avancés et le débogage
- Rétrocompatibilité avec OpenGL ES 2.0 et 3.0
L'interface Java pour OpenGL ES 3.1 sur Android est fournie avec
GLES31
Lorsque vous utilisez OpenGL ES 3.1, veillez à
déclarez-le dans votre fichier manifeste avec
Balise <uses-feature>
et l'attribut android:glEsVersion
. Exemple :
<manifest> <uses-feature android:glEsVersion="0x00030001" /> ... </manifest>
Pour en savoir plus sur l'utilisation d'OpenGL ES, y compris sur la façon de vérifier la version d'OpenGL ES compatible de l'appareil au moment de l'exécution, consultez la Guide de l'API OpenGL ES
Pack d'extensions Android
En plus d'OpenGL ES 3.1, cette version fournit un pack d'extensions avec
Interfaces Java et compatibilité native avec les fonctionnalités graphiques avancées. Ces
les extensions sont traitées comme
un seul package par Android. (Si le
ANDROID_extension_pack_es31a
extension est présente, votre application peut
suppose que toutes les extensions du package sont présentes et activent le langage d'ombrage
avec une seule instruction #extension
.)
Le pack d'extensions est compatible avec:
- Compatibilité garantie du nuanceur de fragments avec les tampons de stockage, les images et atomique (la compatibilité avec le nuanceur de fragments est facultative dans OpenGL ES 3.1)
- Nuanceurs de tessellation et de géométrie
- Format de compression de texture ASTC (LDR)
- Interpolation et ombrage par échantillon
- Différents modes de fusion pour chaque pièce jointe de couleur dans un tampon de cadre
L'interface Java du pack d'extensions est fournie avec
GLES31Ext
Dans le fichier manifeste de votre application, vous pouvez déclarer que
votre application ne doit être installée que sur les appareils compatibles avec le pack d'extensions.
Exemple :
<manifest> <uses-feature android:name=“android.hardware.opengles.aep” android:required="true" /> ... </manifest>
Contenus multimédias
API Camera pour des fonctionnalités avancées de caméra et de caméra
Android 5.0 présente le nouveau
android.hardware.camera2
pour faciliter la capture photo et le traitement des images avec précision. Vous pouvez maintenant
accéder de manière programmatique aux appareils photo disponibles pour le système avec
getCameraIdList()
et se connecter à un
appareil spécifique avec
openCamera()
Pour commencer à capturer des images, créez un CameraCaptureSession
et spécifiez les objets Surface
pour envoyer les images capturées.
Le CameraCaptureSession
peut être configuré pour
prendre des photos individuelles ou
plusieurs photos en rafale.
Pour être averti lorsque de nouvelles images sont capturées, implémentez la
CameraCaptureSession.CaptureCallback
écouteur
et le définir dans votre demande de capture. Lorsque le système termine l'image
demande de capture, votre CameraCaptureSession.CaptureCallback
d'audit reçoit un appel
onCaptureCompleted()
,
et vous fournit les métadonnées de capture d'image
CaptureResult
La classe CameraCharacteristics
permet
détecter les fonctionnalités de l'appareil photo disponibles sur un appareil. L'objet
La propriété INFO_SUPPORTED_HARDWARE_LEVEL
représente le niveau de fonctionnalité de la caméra.
- Tous les appareils sont compatibles avec au moins la
Niveau de matériel
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
, qui dispose de fonctionnalités à peu près équivalente à celle deCamera
, qui est obsolète API. - Les appareils compatibles avec le niveau matériel
INFO_SUPPORTED_HARDWARE_LEVEL_FULL
peuvent effectuer des opérations manuelles Contrôle de la capture et du post-traitement, et capture d'images haute résolution à des fréquences d'images élevées.
Pour savoir comment utiliser les mises à jour
Appareil photo
API, reportez-vous à l'implémentation de Camera2Basic
et Camera2Video
dans cette version.
Lecture audio
Cette version inclut les modifications suivantes apportées aux
AudioTrack
:
- Votre application peut désormais fournir des données audio au format à virgule flottante
(
ENCODING_PCM_FLOAT
). Ce permet une plus grande plage dynamique, une plus grande précision constante et une plus grande marge de progression. L'arithmétique à virgule flottante est particulièrement utile pour les calculs intermédiaires. Les points de terminaison de lecture utilisent un format entier pour les données audio, avec une profondeur de bits inférieure. (Dans Android 5.0, certaines parties du pipeline interne ne sont pas encore à virgule flottante). - Votre application peut désormais fournir des données audio en tant que
ByteBuffer
, dans au même format que celui fourni parMediaCodec
. WRITE_NON_BLOCKING
peut simplifier la mise en mémoire tampon et le multithreading pour certaines applications.
Commande de lecture multimédia
Utilisez les nouvelles API de notification et de contenu multimédia pour
l'UI du système de lecture connaît votre lecture multimédia
et peut extraire et afficher les pochettes d'album.
Grâce à la nouvelle interface, il est désormais plus facile de contrôler la lecture de contenus multimédias via une interface utilisateur et un service
MediaSession
et
MediaController
de classes.
La nouvelle classe MediaSession
remplace
la classe obsolète RemoteControlClient
et fournit
ensemble unique de méthodes de rappel pour gérer les commandes de transport et les boutons multimédias
Si votre application propose la lecture de contenus multimédias et s'exécute sur un
TV ou
plate-forme Wear, utilisez la
MediaSession
pour gérer votre transport
à l'aide des mêmes méthodes de rappel.
Vous pouvez désormais créer votre propre application de contrôleur multimédia avec le nouveau
MediaController
. Cette classe fournit
une solution thread-safe pour surveiller et contrôler la lecture des contenus multimédias à partir du processus d'UI de votre application.
Lorsque vous créez un contrôleur, spécifiez un MediaSession.Token
afin que votre application puisse interagir avec le MediaSession
donné.
En utilisant les méthodes MediaController.TransportControls
,
vous pouvez envoyer des commandes telles que play()
,
stop()
,
skipToNext()
,
et setRating()
pour contrôler la lecture
des contenus multimédias de cette session. Avec la manette, vous pouvez aussi
enregistrez un objet MediaController.Callback
pour
écouter les changements de métadonnées
et d'état de la session.
Vous pouvez aussi créer des notifications enrichies qui permettent de contrôler la lecture
associée à une session multimédia avec le nouveau Notification.MediaStyle
.
Navigation multimédia
Android 5.0 permet aux applications de parcourir le contenu multimédia.
d'une autre application, via le nouveau
android.media.browse
API. Pour afficher le contenu multimédia dans votre application, étendez la
MediaBrowserService
. Votre implémentation de
MediaBrowserService
doit fournir l'accès à un
MediaSession.Token
pour que les applis puissent lire des contenus multimédias
fournies par votre service.
Pour interagir avec un service de navigateur multimédia, utilisez la classe
MediaBrowser
. Spécifier le composant
nom d'un MediaSession
lorsque vous créez une
MediaBrowser
instance. À l'aide de cette instance de navigateur,
votre application peut alors se connecter au service associé et obtenir une
MediaSession.Token
objet pour lire le contenu exposé
via ce service.
Stockage
Sélection du répertoire
Android 5.0 étend Framework d'accès au stockage pour permettre aux utilisateurs de sélectionner l'intégralité d'une sous-arborescence de répertoires, ce qui donne aux applications un accès en lecture/écriture à tous les documents qu'il contient sans exiger de confirmation de l'utilisateur pour chaque élément.
Pour sélectionner une sous-arborescence de répertoires, créez et envoyez une
OPEN_DOCUMENT_TREE
l'intention. Le système affiche toutes
DocumentsProvider
instance compatible avec la sélection de sous-arborescence
permettant à l'utilisateur de
parcourir et de sélectionner un répertoire. L'URI renvoyé représente
l'accès à la sous-arborescence sélectionnée. Vous pouvez ensuite utiliser buildChildDocumentsUriUsingTree()
et buildDocumentUriUsingTree()
ainsi que
query()
pour explorer la sous-arborescence.
La nouvelle méthode createDocument()
vous permet de créer des documents ou des répertoires n'importe où
sous la sous-arborescence. Pour gérer des documents existants, utilisez
renameDocument()
et
deleteDocument()
Vérifier COLUMN_FLAGS
pour vérifier la prise en charge du fournisseur
pour ces appels avant de les émettre.
Si vous implémentez une DocumentsProvider
et souhaitez
Pour prendre en charge la sélection de sous-arborescence, implémentez isChildDocument()
et incluez FLAG_SUPPORTS_IS_CHILD
.
dans votre COLUMN_FLAGS
.
Android 5.0 introduit également de nouveaux répertoires spécifiques aux packages sur
espace de stockage partagé dans lequel votre application peut placer des fichiers multimédias à inclure
MediaStore
Les nouvelles
getExternalMediaDirs()
renvoie les chemins d'accès à ces
sur tous les périphériques
de stockage partagé. Comme pour
getExternalFilesDir()
,
votre application n'a besoin d'aucune autorisation supplémentaire pour accéder aux chemins renvoyés. La
plate-forme recherche régulièrement les nouveaux médias dans ces répertoires, mais vous pouvez aussi
utilisez MediaScannerConnection
pour rechercher explicitement
contenus.
Sans fil et Connectivité
Plusieurs connexions réseau
Android 5.0 fournit de nouvelles API multiréseau qui permettent à votre application rechercher de manière dynamique les réseaux disponibles avec des fonctionnalités spécifiques ; établir une connexion avec eux. Cette fonctionnalité est utile lorsque votre application a besoin d'un réseau spécialisé, tel qu'un réseau SUPL, MMS ou un réseau de facturation par l'opérateur, ou si vous souhaitez envoyer des données en utilisant un type particulier de protocole de transport.
Pour sélectionner un réseau et vous y connecter de manière dynamique depuis votre application, procédez comme suit : étapes:
- Créez un élément
ConnectivityManager
. - Utilisez la classe
NetworkRequest.Builder
pour créer uneNetworkRequest
et spécifier les fonctionnalités réseau et le type de transport qui intéresse votre application. - Pour rechercher les réseaux adaptés, appelez
requestNetwork()
ouregisterNetworkCallback()
, et transmettez la valeurNetworkRequest
et une implémentation deConnectivityManager.NetworkCallback
Utilisez lesrequestNetwork()
si vous souhaitez basculer activement sur un réseau approprié une fois celui-ci détecté. pour recevoir les notifications des réseaux scannés sans changement d'appareil actif, utilisez laregisterNetworkCallback()
.
Lorsque le système détecte un réseau approprié, il se connecte au réseau et
appelle
onAvailable()
. Vous pouvez utiliser l'objet Network
du rappel pour
pour obtenir des informations supplémentaires sur le réseau, ou pour diriger le trafic vers le
le réseau sélectionné.
Bluetooth à basse consommation
Android 4.3 est compatible avec la plate-forme Bluetooth à basse consommation (Bluetooth LE) au cœur du projet. Sous Android 5.0, les appareils Android peuvent désormais sert de périphérique Bluetooth LE. Les applications peuvent utiliser cette fonctionnalité pour signaler sa présence aux appareils à proximité. Par exemple, vous pouvez créer des applications qui permettent à un appareil de faire office de podomètre ou de suivi de l'état de santé, et de communiquer avec un autre appareil Bluetooth LE.
Les nouvelles API android.bluetooth.le
permettent à vos applications de diffuser
des publicités, rechercher des réponses et établir des connexions avec le Bluetooth à proximité
appareils LE. Pour utiliser les nouvelles fonctionnalités de publicité et de numérisation, ajoutez le
BLUETOOTH_ADMIN
dans votre fichier manifeste. Lorsque les utilisateurs mettent à jour ou téléchargent votre application depuis le Play Store,
il est invité à accorder l'autorisation suivante à votre application:
"Informations sur la connexion Bluetooth: permet à l'application de contrôler le Bluetooth,
notamment pour diffuser des annonces ou obtenir des informations sur les appareils Bluetooth à proximité. »
Pour lancer la publicité Bluetooth LE afin que d'autres appareils
votre application, appeler
startAdvertising()
et transmettre une implémentation
AdvertiseCallback
. L'objet de rappel
reçoit un rapport du succès ou de l'échec de l'opération publicitaire.
Android 5.0 introduit la classe ScanFilter
pour que vous puissiez
que votre application ne puisse
analyser que les
les types d'appareils
qui l'intéressent. Lancer la recherche Bluetooth
Appareils LE, appeler le startScan()
et transmettre une liste de filtres. Dans l'appel de méthode, vous devez également fournir une
implémentation de ScanCallback
pour signaler
Annonce Bluetooth LE détectée.
Améliorations NFC
Android 5.0 ajoute ces améliorations pour offrir des fonctionnalités Flexibilité de l'utilisation de la technologie NFC:
- Android Beam est désormais disponible dans le menu Partager.
- Votre application peut appeler Android Beam sur l'appareil de l'utilisateur pour partager des données en
Appel de
invokeBeam()
en cours. Cela évite à l'utilisateur de devoir tapoter manuellement l'appareil contre un autre un appareil compatible NFC pour terminer le transfert de données ; - Vous pouvez utiliser la nouvelle méthode
createTextRecord()
pour créer un enregistrement NDEF contenant des données textuelles au format UTF-8. - Si vous développez une application de paiement, vous pouvez désormais
d'enregistrer dynamiquement un identifiant d'application NFC (AID) en appelant
registerAidsForService()
Vous pouvez également utilisersetPreferredService()
pour définir le service d'émulation de carte préféré qui doit être utilisée lorsqu'une activité spécifique est exécutée au premier plan.
Projet Volta
En plus des nouvelles fonctionnalités, Android 5.0 met l'accent sur l'amélioration de la batterie vie. Utilisez les nouveaux outils et API pour comprendre et optimiser la puissance de votre application leur consommation.
Planifier des jobs
Android 5.0 propose une nouvelle JobScheduler
API qui vous permet d'optimiser l'autonomie de la batterie en définissant des tâches que le système doit exécuter
de manière asynchrone par la suite ou dans des conditions spécifiques (par exemple, lorsque le
l'appareil est en charge). La planification des tâches est utile dans les situations suivantes:
- L'application comporte des tâches non visibles par l'utilisateur que vous pouvez reporter.
- L'application propose une tâche que vous préférez effectuer lorsque l'appareil est branché.
- L'application a une tâche qui nécessite un accès au réseau ou une connexion Wi-Fi .
- L'application comporte un certain nombre de tâches que vous souhaitez exécuter par lot à intervalles réguliers programmation.
Une unité de travail est encapsulée par un objet JobInfo
.
Cet objet spécifie les critères de planification.
Utilisez la classe JobInfo.Builder
pour configurer la manière dont
planifiée doit s'exécuter. Vous pouvez planifier l'exécution de la tâche
telles que:
- Démarrer lorsque l'appareil est en charge
- Démarrer lorsque l'appareil est connecté à un réseau illimité
- Démarrer lorsque l'appareil est inactif
- Terminer avant une certaine date limite ou avec un délai minimal
Par exemple, vous pouvez ajouter du code comme celui-ci pour exécuter votre tâche sur un réseau illimité:
Kotlin
val uploadTask: JobInfo = JobInfo.Builder( jobId, serviceComponent /* JobService component */ ).run { setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED) build() } val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler jobScheduler.schedule(uploadTask)
Java
JobInfo uploadTask = new JobInfo.Builder(jobId, serviceComponent /* JobService component */) .setRequiredNetworkCapabilities(JobInfo.NETWORK_TYPE_UNMETERED) .build(); JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(uploadTask);
Si l'alimentation de l'appareil est stable (c'est-à-dire qu'il est branché depuis longtemps plus de 2 minutes et que la batterie est à un niveau sain), le système exécute toutes les tâches planifiées prêtes à être exécutées, même si le job date limite n'a pas expiré.
Pour voir un exemple d'utilisation de l'API JobScheduler
, procédez comme suit :
consultez l'exemple d'implémentation de JobSchedulerSample
présenté dans cette version.
Outils de développement pour l'utilisation de la batterie
La nouvelle commande dumpsys batterystats
génère
des données statistiques sur l'utilisation de la batterie sur un appareil, organisées par ID utilisateur unique
(UID). Les statistiques comprennent les éléments suivants:
- Historique des événements liés à la batterie
- Statistiques globales de l'appareil
- Consommation énergétique approximative par UID et composant système
- Nombre de ms pour mobile par application par paquet
- Statistiques agrégées de l'UID du système
- Statistiques agrégées de l'UID de l'application
Utilisez l'option --help
afin d'en savoir plus sur les différentes options disponibles pour
en adaptant le résultat. Par exemple, pour imprimer l'utilisation de la batterie
statistiques d'un package d'application donné depuis la dernière charge de l'appareil, exécutez cette
:
$ adb shell dumpsys batterystats --charged <package-name>
Vous pouvez utiliser
Batterie Historian
sur la sortie de la commande dumpsys
pour
générer une visualisation HTML des événements liés à l'alimentation à partir des journaux. Ce
vous permet de comprendre et de diagnostiquer plus facilement les problèmes
de problèmes associés.
Android en milieu professionnel et éducatif
Configuration gérée
Android 5.0 offre de nouvelles fonctionnalités pour exécuter des applications dans dans un environnement d'entreprise. A administrateur de l'appareil peut lancer un processus de provisionnement géré pour ajouter une coprésentation, mais séparer profil géré sur un appareil, si l'utilisateur possède déjà un compte personnel. Les applications associées à des profils gérés apparaissent à côté les applications non gérées dans le Lanceur d'applications, l'écran "Récents" et les notifications de l'utilisateur.
Pour lancer le processus de provisionnement géré, envoyez
ACTION_PROVISION_MANAGED_PROFILE
dans un Intent
. Si le
réussi, le système déclenche l'événement
Rappel onProfileProvisioningComplete()
.
Vous pouvez ensuite appeler setProfileEnabled()
pour
activer ce profil géré.
Par défaut, seul un petit sous-ensemble d'applications est activé dans le profil géré.
Vous pouvez installer des applications supplémentaires dans le profil géré en appelant
enableSystemApp()
Si vous développez une application de lancement, vous pouvez utiliser la nouvelle classe LauncherApps
pour obtenir une liste des activités pouvant être lancées.
pour l'utilisateur actuel et tous les profils gérés associés. Votre Lanceur d'applications peut
Les applications gérées sont bien visibles grâce à l'ajout d'un badge professionnel à l'icône.
drawable. Pour récupérer l'icône avec badge, appelez
getUserBadgedIcon()
Pour savoir comment utiliser cette nouvelle fonctionnalité, consultez les
Exemple d'implémentation de BasicManagedProfile
dans cette version.
Propriétaire de l'appareil
Android 5.0 permet de déployer une application propriétaire d'appareil. Un appareil
propriétaire est un type spécialisé
administrateur de l'appareil
qui a la possibilité de créer et de supprimer des utilisateurs secondaires
configurer les paramètres généraux sur l'appareil. L'application du propriétaire de l'appareil peut utiliser
de la classe DevicePolicyManager
pour prendre
pour contrôler précisément la configuration, la sécurité et les applications sur les appareils gérés.
Un appareil ne peut avoir qu'un seul propriétaire actif à la fois.
Pour déployer et activer le compte d'un propriétaire d'appareil, vous devez effectuer un transfert de données NFC depuis une application de programmation vers l'appareil alors que celui-ci est dans de l'état. Ce transfert de données envoie les mêmes informations que dans l'intent de provisionnement comme décrit dans la section Provisionnement géré.
Épinglage d'écran
Android 5.0 introduit une nouvelle API d'épinglage d'écran qui vous permet empêcher les utilisateurs de quitter votre tâche ou d’être interrompus par des notifications. Cela peut être utilisé, par exemple, si vous développez une application éducative pour pour répondre à des exigences d'évaluation à enjeux élevés sur Android, ou à un objectif ou une application kiosque. Une fois que l'épinglage d'écran est activé dans votre application, les utilisateurs ne peuvent plus voir les notifications, accéder à d'autres applications ou revenir à l'écran d'accueil, jusqu'à ce que votre application quitte le mode.
Il existe deux façons d'activer l'épinglage d'écran:
- Manuellement:les utilisateurs peuvent activer l'épinglage d'écran dans Paramètres > Sécurité > Épinglage d'écran, puis sélectionnez les tâches qu'ils souhaitent en appuyant sur l'icône représentant une punaise verte dans l'écran "Récents".
- Par programmation:pour activer l'épinglage d'écran
programmatiquement, appeler
startLockTask()
depuis votre application. Si l'application à l'origine de la demande n'est pas propriétaire de l'appareil, l'utilisateur est invité pour confirmer. Une application de propriétaire de l'appareil peut appeler lasetLockTaskPackages()
pour permettre l'épinglage des applications sans l'étape de confirmation de l'utilisateur.
Lorsque le verrouillage des tâches est activé, le comportement suivant se produit:
- La barre d'état est vide, et les notifications utilisateur et les informations d'état sont masquées.
- Les boutons "Accueil" et "Applications récentes" sont masqués.
- Les autres applications ne peuvent pas lancer de nouvelles activités.
- L'application actuelle peut démarrer de nouvelles activités, à condition que cela ne soit pas le cas créer des tâches.
- Lorsque l'épinglage d'écran est appelé par le propriétaire d'un appareil, l'utilisateur reste verrouillé
à votre application jusqu'à ce qu'elle appelle
stopLockTask()
- Si l'épinglage d'écran est activé par une application qui n'est pas propriétaire de l'appareil ou directement par l'utilisateur, il peut la quitter en maintenant enfoncés les boutons Retour et Récents.
Cadre d'impression
Afficher le PDF au format bitmap
Vous pouvez désormais afficher les pages d'un document PDF en images bitmap pour les imprimer
à l'aide de la nouvelle classe PdfRenderer
. Vous devez spécifier un
ParcelFileDescriptor
pouvant faire l'objet d'une recherche (c'est-à-dire le contenu
est accessible de manière aléatoire) sur lequel le système écrit le contenu imprimable.
Votre application peut obtenir une page à afficher avec
openPage()
, puis appelez
render()
pour transformer le PdfRenderer.Page
ouvert en bitmap. Toi
Vous pouvez également définir des paramètres supplémentaires si vous ne souhaitez convertir qu'une partie
dans une image bitmap (par exemple, pour implémenter
affichage en mosaïque
pour effectuer un zoom avant sur le document).
Pour obtenir un exemple d'utilisation des nouvelles API, consultez le PdfRendererBasic
échantillon.
Système
Statistiques utilisation de l'appli
Vous pouvez désormais accéder à l'historique d'utilisation des applications sur un appareil Android doté du
Nouvelle API android.app.usage
. Cette API fournit des explications plus détaillées sur l'utilisation
d'informations que les
getRecentTasks()
.
Pour utiliser cette API, vous devez d'abord déclarer le
Autorisation "android.permission.PACKAGE_USAGE_STATS"
dans votre fichier manifeste.
L'utilisateur doit également autoriser l'accès à cette application dans Paramètres > Sécurité > Applis
avec accès aux données d'utilisation.
Le système collecte les données d'utilisation pour chaque application, en agrégeant les des données à intervalles quotidiens, hebdomadaires, mensuels et annuels. La durée maximale que le système conserve ces données:
- Données quotidiennes: 7 jours
- Données hebdomadaires: 4 semaines
- Données mensuelles: 6 mois
- Données annuelles: 2 ans
Pour chaque application, le système enregistre les données suivantes:
- La dernière fois que l'application a été utilisée
- Durée totale pendant laquelle l'application était exécutée au premier plan pendant cet intervalle de temps (par jour, semaine, mois ou année)
- Capture du code temporel lorsqu'un composant (identifié par un nom de package et d'activité) déplacé au premier plan ou à l'arrière-plan pendant une journée
- Capture du code temporel lorsqu'une configuration d'appareil a été modifiée (par exemple, lorsque le l'orientation de l'appareil a changé en raison de la rotation)
Tests et Fonctionnalités
Améliorations liées aux tests et à l'accessibilité
Android 5.0 prend en charge les fonctionnalités de test et accessibilité:
- Nouvelle version de
getWindowAnimationFrameStats()
etgetWindowContentFrameStats()
capturent les statistiques de frames pour les animations de fenêtre et le contenu. Ces méthodes vous permettent d'écrire des tests d'instrumentation pour évaluer si une application s'affiche ; des cadres à une fréquence d'actualisation suffisante pour offrir une expérience utilisateur fluide. - Les nouvelles
executeShellCommand()
vous permet d'exécuter des commandes shell à partir de votre test d'instrumentation. La L'exécution de la commande est semblable à l'exécution deadb shell
depuis un hôte connecté à l'appareil, ce qui vous permet d'utiliser des outils basés sur le shell, commedumpsys
,am
,content
etpm
. - Services d'accessibilité et outils de test qui utilisent les API d'accessibilité
(par exemple,
UiAutomator
) vous pouvez maintenant récupérer des informations détaillées sur les propriétés des fenêtres un écran avec lequel les voyants peuvent interagir. Pour récupérer une listeAccessibilityWindowInfo
, appelez la nouvellegetWindows()
. - Nouvelle version de
AccessibilityNodeInfo.AccessibilityAction
vous permet de définir des actions standards ou personnalisées à effectuerAccessibilityNodeInfo
Nouvelle version deAccessibilityNodeInfo.AccessibilityAction
remplace les API liées aux actions précédemment trouvées dansAccessibilityNodeInfo
- Android 5.0 offre un contrôle plus précis sur la synthèse vocale dans
votre application. La nouvelle classe
Voice
permet à votre application Utilisez des profils vocaux associés à des paramètres régionaux, une qualité et une latence spécifiques d'évaluation et le moteur de synthèse vocale.
IME
Passer plus facilement d'une langue de saisie à une autre
À partir de la version 5.0 d'Android, les utilisateurs peuvent passer plus facilement de l'une à l'autre.
toutes les entrées
éditeurs de méthodes (IME) pris en charge par la plate-forme. en exécutant les tâches
action de changement d'appareil (toucher en général une icône en forme de globe sur le clavier virtuel) par cycle
par tous ces IME. Ce changement de comportement est mis en œuvre par
shouldOfferSwitchingToNextInputMethod()
.
De plus, le framework vérifie à présent si l'IME suivant inclut un
mécanisme de commutation du tout (et, par conséquent, si cet IME prend en charge le passage à
l'IME après cela). Une
Un IME avec un mécanisme de commutation ne passera pas à un IME sans celui-ci. Ce
un changement de comportement est mis en œuvre
switchToNextInputMethod()
.
Pour voir un exemple d'utilisation des API de commutation IME mises à jour, consultez exemple d'implémentation pour le clavier virtuel mis à jour dans cette version. Pour en savoir plus sur comment implémenter le basculement entre les IME, consultez Créer un mode de saisie
Déclarations dans le fichier manifeste
Fonctionnalités obligatoires pouvant être déclarées
Les valeurs suivantes sont désormais prises en charge dans le
<uses-feature>
pour vous assurer que votre application n'est installée que sur les appareils
de fournir les fonctionnalités
dont votre application a besoin.
FEATURE_AUDIO_OUTPUT
FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING
FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR
FEATURE_CAMERA_CAPABILITY_RAW
FEATURE_CAMERA_LEVEL_FULL
FEATURE_GAMEPAD
FEATURE_LIVE_TV
FEATURE_MANAGED_USERS
FEATURE_LEANBACK
FEATURE_OPENGLES_EXTENSION_PACK
FEATURE_SECURELY_REMOVES_USERS
FEATURE_SENSOR_AMBIENT_TEMPERATURE
FEATURE_SENSOR_HEART_RATE_ECG
FEATURE_SENSOR_RELATIVE_HUMIDITY
FEATURE_VERIFIED_BOOT
FEATURE_WEBVIEW
Autorisations utilisateur
L'autorisation suivante est désormais prise en charge dans le
<uses-permission>
pour déclarer les autorisations dont votre application a besoin pour accéder à certaines API.
BIND_DREAM_SERVICE
: lorsque vous ciblez l'API niveau 21 ou supérieur, cette autorisation est requise le service Daydream, pour s'assurer que seul le système peut s'y associer.