Niveau d'API:12
Pour les développeurs, la plate-forme Android 3.1
(HONEYCOMB_MR1
) est disponible en tant que
composant téléchargeable pour le SDK Android. La plate-forme téléchargeable comprend
une bibliothèque Android et une image système, ainsi qu'un ensemble d'apparences d'émulateur et
plus encore. La plate-forme téléchargeable n'inclut aucune bibliothèque externe.
Pour les développeurs, la plate-forme Android 3.1 est disponible sous la forme composant téléchargeable pour le SDK Android. La plate-forme téléchargeable comprend une bibliothèque Android et une image système, ainsi qu'un ensemble d'apparences d'émulateur et plus encore. Pour commencer à développer ou à tester sur Android 3.1, utilisez Android SDK Manager pour télécharger la plate-forme dans votre SDK.
Présentation de l'API
Les sections ci-dessous offrent un aperçu technique des nouveautés pour les développeurs d'Android 3.1, y compris les nouvelles fonctionnalités et les modifications apportées à l'API du framework depuis la version précédente.
API USB
Android 3.1 introduit de nouvelles API performantes pour l’intégration de périphériques connectés aux applications exécutées sur la plateforme. Ces API reposent sur une pile USB (Universal Serial Bus) et sur des services intégrés à la plate-forme, y compris la prise en charge de l'hôte et du périphérique USB des interactions. À l'aide des API, les développeurs peuvent créer des applications capables de découvrir, communiquer et gérer divers types d'appareils connectés via USB.
La pile et les API distinguent deux types de matériel USB de base, basés sur si l'appareil Android fait office d'hôte ou de matériel externe est l'hôte:
- Un périphérique USB est un élément matériel connecté qui dépend du Appareil Android servant d'hôte. Par exemple, la plupart des périphériques d'entrée, des souris, et les joysticks sont des périphériques USB, tout comme de nombreux appareils photo, hubs, etc.
- Un accessoire USB est un élément matériel connecté doté d'un câble USB le contrôleur hôte, il fournit l'alimentation et est conçu pour communiquer avec Appareils Android via USB. Divers périphériques peuvent se connecter en tant que des contrôleurs robotiques, des équipements musicaux, des vélos d'appartement, et plus encore.
Pour les deux types (périphériques et accessoires USB), la les API USB de la plate-forme prennent en charge la détection par diffusion d'intent lorsqu'elle est connectée ou détachés, ainsi que les interfaces, points de terminaison et modes de transfert standards (contrôle, enregistrement groupé et interruptions).
Les API USB sont disponibles dans le package android.hardware.usb
. La
la classe centrale est UsbManager
, qui fournit
des méthodes d’assistance pour identifier
et communiquer avec
à la fois des périphériques USB
et des accessoires USB. Les applications peuvent acquérir une instance
UsbManager
, puis une requête permettant d'obtenir la liste des
appareils ou accessoires, puis communiquer
avec eux ou les gérer.
UsbManager
déclare également les actions d'intent que le
des annonces du système, pour annoncer lorsqu'un périphérique
ou un accessoire USB est connecté ou
détaché.
Les autres cours incluent:
UsbDevice
, une classe représentant des éléments externes ; du matériel connecté en tant que périphérique USB (le périphérique Android jouant le rôle de l'hôte).UsbAccessory
, représentant du matériel externe connecté en tant qu'hôte USB (l'appareil Android faisant office d'hôte USB) appareil).UsbInterface
etUsbEndpoint
, qui permettent d'accéder à une clé USB standard des interfaces et des points de terminaison d'un appareil.UsbDeviceConnection
etUsbRequest
, pour l'envoi et la réception de données et le contrôle des messages vers ou depuis un périphérique USB, de manière synchrone et asynchrone.UsbConstants
, qui fournit des constantes pour déclarer des types de points de terminaison, des classes d'appareils, etc.
Bien que la pile USB soit intégrée à la plate-forme, la prise en charge réelle pour les modes hôte USB et accessoire ouvert sur des appareils spécifiques est déterminé par leurs fabricants. En particulier, le mode hôte repose sur des connexions USB de la manette dans l'appareil Android.
De plus, les développeurs peuvent demander un filtrage sur Google Play, afin que leurs applications ne sont pas accessibles aux utilisateurs dont les appareils ne fournissent pas la prise en charge USB appropriée. Pour demander un filtrage, ajoutez l'un des éléments ou les deux ci-dessous au fichier manifeste de l'application, le cas échéant:
- Si l'application doit être visible uniquement sur les appareils compatibles USB
mode hôte (connexion de périphériques USB), déclarez cet élément:
<uses-feature android:name="android.hardware.usb.host" android:required="true">
- Si l'application doit être visible uniquement sur les appareils compatibles USB
accessoires (connexion d'hôtes USB), déclarez cet élément:
<uses-feature android:name="android.hardware.usb.accessory" android:required="true">
Pour des informations complètes sur le développement d'applications qui interagissent avec Pour les accessoires USB, consultez les documentation pour les développeurs.
Pour examiner des exemples d'applications qui utilisent l'API hôte USB, consultez les sections Test ADB et Missile. Lanceur d'applications
API MTP/PTP
Android 3.1 expose une nouvelle API MTP qui permet aux applications d'interagir directement avec les caméras connectées et autres appareils PTP. La nouvelle API permet à pour recevoir des notifications lorsque des appareils sont connectés et retirés, gérer les fichiers et le stockage sur ces appareils, et transférer les fichiers et les métadonnées vers et de leur part. L'API MTP implémente le sous-ensemble PTP (Picture Transfer Protocol) de la spécification MTP (Media Transfer Protocol).
L'API MTP est disponible dans le package android.mtp
et fournit
ces cours:
MtpDevice
encapsule un appareil MTP connectés via le bus hôte USB. Une application peut instancier un objet ce type, puis d'utiliser ses méthodes pour obtenir des informations sur l'appareil et objets stockés dessus, ainsi que d'ouvrir la connexion et de transférer des données. Voici quelques-unes des méthodes disponibles: <ph type="x-smartling-placeholder">- </ph>
getObjectHandles()
renvoie une liste de poignées pour tous les objets de l'appareil qui correspondent à un format et à un parent spécifiés. Pour obtenir des informations sur un objet, l'application peut transmettre un handle àgetObjectInfo()
.importFile()
permet à une application de copier les données d'un objet dans un fichier externe stockage. Cet appel peut être bloqué pendant une durée arbitraire en fonction de la taille des données et la vitesse des appareils, il doit donc être fait à partir d'un spearate thread.open()
permet à une application d'ouvrir un périphérique MTP/PTP connecté.- Retours pour
getThumbnail()
vignette de l'objet sous forme de tableau d'octets.
MtpStorageInfo
contient des informations sur un espace de stockage. sur un appareil MTP, correspondant à l'ensemble de données StorageInfo décrit dans la section 5.2.2 de la spécification MTP. Les méthodes de cette classe permettent à une application obtenir la chaîne de description d'une unité de stockage, l'espace disponible, la capacité de stockage maximale, un ID de stockage et un identifiant de volume.MtpDeviceInfo
contient des informations sur un appareil MTP correspondant à l'ensemble de données DeviceInfo décrit dans la section 5.1.1 du MTP spécifique. Les méthodes de cette classe permettent aux applications d'obtenir les informations le fabricant, le modèle, le numéro de série et la version.MtpObjectInfo
contient les informations sur un objet stocké sur un appareil MTP, correspondant à l'ensemble de données ObjectInfo décrit dans la section 5.3.1 de la spécification MTP. Les méthodes de cette classe permettent aux applications d'obtenir taille, format de données, type d'association, date de création et vignette de l'objet des informations.MtpConstants
fournit des constantes pour déclarer un fichier MTP les codes de format, le type d'association et l'état de protection.
Compatibilité avec de nouveaux périphériques d'entrée et événements de mouvement
Android 3.1 étend le sous-système d'entrée pour prendre en charge de nouveaux périphériques d'événements de mouvement, dans toutes les vues et toutes les fenêtres. Les développeurs peuvent s'appuyer ces fonctionnalités pour permettre aux utilisateurs d'interagir avec leurs applications à l'aide de souris, trackballs, joysticks, manettes de jeu et autres appareils, en plus des claviers et des écrans tactiles.
Pour gérer la saisie à la souris, à la molette et au trackball, la plate-forme prend en charge deux nouvelles actions d'événement de mouvement:
ACTION_SCROLL
, qui décrit le pointeur lieu où un mouvement de défilement non tactile, comme la molette de la souris, s'est déroulée. Dans MotionEvent, la valeur des axesAXIS_HSCROLL
etAXIS_VSCROLL
spécifie le défilement relatif. du mouvement.ACTION_HOVER_MOVE
, indique l'état actuel la position de la souris lorsque vous n'appuyez pas sur des boutons, ainsi que les points depuis le dernier événementHOVER_MOVE
. Pointer sur l'entrée et la sortie les notifications ne sont pas encore prises en charge.
Pour prendre en charge les joysticks et les manettes de jeu, la classe InputDevice
inclut ces nouvelles sources de périphériques d'entrée:
SOURCE_CLASS_JOYSTICK
: source l'appareil est doté d'axes de joystick.SOURCE_CLASS_BUTTON
: source l'appareil est doté de boutons ou de touches.SOURCE_GAMEPAD
: appareil source comporte des boutons de manette de jeu tels queKEYCODE_BUTTON_A
ouKEYCODE_BUTTON_B
. ImpliciteSOURCE_CLASS_BUTTON
SOURCE_JOYSTICK
: appareil source comporte des haches de joystick. Implique SOURCE_CLASS_JOYSTICK.
Décrire les événements de mouvement provenant de ces nouvelles sources, ainsi que ceux provenant de souris
et les trackballs, la plate-forme définit désormais les codes des axes sur MotionEvent
, de la même manière qu'elle définit les codes clés sur KeyEvent
. Nouveaux codes d'axe pour les joysticks
et les manettes de jeu comprennent
AXIS_HAT_X
, AXIS_HAT_Y
, AXIS_RTRIGGER
, AXIS_ORIENTATION
, AXIS_THROTTLE
et de nombreux autres.
Les axes MotionEvent
existants sont représentés par AXIS_X
, AXIS_Y
,
AXIS_PRESSURE
, AXIS_SIZE
, AXIS_TOUCH_MAJOR
, AXIS_TOUCH_MINOR
, AXIS_TOOL_MAJOR
, AXIS_TOOL_MINOR
et AXIS_ORIENTATION
.
De plus, MotionEvent
définit un certain nombre
codes d'axe utilisés lorsque le framework ne sait pas mapper
un axe particulier. Certains appareils peuvent utiliser les codes d'axe génériques pour transmettre des
les données de mouvement aux applications. Pour obtenir la liste complète des axes et de leurs
interprétations, consultez la documentation sur la classe MotionEvent
.
La plate-forme fournit des événements de mouvement aux applications par lots. Ainsi,
peut contenir une position actuelle et plusieurs mouvements historiques.
Les applications doivent utiliser getHistorySize()
pour obtenir
le nombre d'échantillons historiques, puis récupérer et traiter l'ensemble
exemples dans l'ordre à l'aide de getHistoricalAxisValue()
. Ensuite, les applications doivent traiter la version actuelle
exemple avec getAxisValue()
.
Certains axes peuvent être récupérés à l'aide de méthodes d'accesseur spéciales. Par exemple :
au lieu d'appeler getAxisValue()
, les applications peuvent appeler getX()
. Les axes dotés d'accesseurs intégrés incluent AXIS_X
, AXIS_Y
,
AXIS_PRESSURE
, AXIS_SIZE
, AXIS_TOUCH_MAJOR
, AXIS_TOUCH_MINOR
, AXIS_TOOL_MAJOR
, AXIS_TOOL_MINOR
et AXIS_ORIENTATION
.
Chaque périphérique d'entrée possède un identifiant unique attribué par le système et peut également fournir
plusieurs sources. Lorsqu'un appareil fournit plusieurs sources, plusieurs sources
peuvent fournir des données d'axe en utilisant le même axe. Par exemple, un événement tactile
de la source tactile utilise l'axe X pour les données de position de l'écran, tandis qu'un joystick
provenant de la source du joystick utilise l'axe X pour la position du joystick.
à la place. Pour cette raison, il est important que les applications interprètent les axes
en fonction de la source. Lors de la gestion d’un mouvement
, les applications doivent utiliser des méthodes sur l'InputDevice
pour déterminer les axes compatibles avec un appareil ou une source. Plus précisément,
les applications peuvent utiliser getMotionRanges()
pour interroger tous les axes d'un appareil ou tous les axes d'un appareil donné.
source de l'appareil. Dans les deux cas, les informations de portée des axes renvoyées dans
L'objet InputDevice.MotionRange
spécifie la source
chaque valeur d'axe.
Enfin, puisque les événements de mouvement provenant des joysticks,
des manettes de jeu, des souris et
les trackballs ne sont pas des événements tactiles, la plate-forme ajoute une nouvelle méthode de rappel pour
en les transmettant à un View
en tant que "génériques". événements de mouvement.
Plus précisément, elle signale les événements de mouvement non tactiles
View
via un appel à onGenericMotionEvent()
plutôt qu'à onTouchEvent()
.
La plate-forme envoie différemment les événements de mouvement génériques, en fonction de la
classe de source d'événement. SOURCE_CLASS_POINTER
événements
accédez à View
sous le pointeur, comme lorsque vous appuyez
le fonctionnement des événements. Tous les autres sont placés dans l'élément View
actuellement sélectionné.
Par exemple, cela signifie qu'un View
doit être sélectionné pour
recevoir des événements de type joystick. Si nécessaire, les applications peuvent gérer ces événements au niveau
niveau "Activity" ou "Dialog" en y implémentant onGenericMotionEvent()
à la place.
Pour examiner un exemple d'application qui utilise le mouvement du joystick , consultez la section GameControllerInput. et GameView.
API RTP
Android 3.1 expose une API à son protocole RTP (Real-time Transport Protocol) intégré que les applications peuvent utiliser pour gérer des données interactives ou à la demande le flux de données. En particulier, les applications qui proposent des services VoIP, Push-to-Talk, et le streaming audio peuvent utiliser l'API pour lancer des sessions, et transmettre ou recevoir flux de données sur n'importe quel réseau disponible.
L'API RTP est disponible dans le package android.net.rtp
. Classes
incluent:
RtpStream
, la classe de base des flux qui envoient et envoient recevoir des paquets réseau avec des charges utiles multimédias via le protocole RTP.AudioStream
, une sous-classe deRtpStream
qui transporte des charges utiles audio via RTP.AudioGroup
, un hub audio local permettant de gérer et en mélangeant le haut-parleur, le micro etAudioStream
de l'appareilAudioCodec
, qui contient un ensemble de codecs que vous définissez pour unAudioStream
.
Pour prendre en charge les conférences audio et les utilisations similaires, une application instancie deux classes comme points de terminaison pour le flux:
AudioStream
spécifie un point de terminaison distant et se compose du mappage de réseau et unAudioCodec
configuré.AudioGroup
représente le point de terminaison localAudioStream
ou plus. Mix desAudioGroup
tous lesAudioStream
et interagit éventuellement avec l'appareil le haut-parleur et le microphone en même temps.
L'utilisation la plus simple implique un seul point de terminaison distant et un point de terminaison local.
Pour les utilisations plus complexes, reportez-vous aux limites décrites pour
AudioGroup
Pour utiliser l'API RTP, les applications doivent demander l'autorisation à l'utilisateur en
déclaration de <uses-permission
android:name="android.permission.INTERNET">
dans leurs fichiers manifestes. L'autorisation <uses-permission
android:name="android.permission.RECORD_AUDIO">
est également requise pour obtenir le micro de l'appareil.
Widgets d'application redimensionnables
À partir d'Android 3.1, les développeurs peuvent créer des widgets sur leur écran d'accueil. redimensionnables : horizontalement, verticalement ou sur les deux axes. Les utilisateurs appuient de manière prolongée sur un pour afficher les poignées de redimensionnement, puis faites glisser les curseurs poignées pour modifier la taille sur la grille de mise en page.
Les développeurs peuvent redimensionner n'importe quel widget de l'écran d'accueil en définissant un
resizeMode
dans les métadonnées AppWidgetProviderInfo
du widget. Les valeurs de la paire valeur/clé
L'attribut resizeMode
inclut "horizontal", "vertical" et "none".
Pour déclarer un widget comme redimensionnable horizontalement et verticalement, indiquez la valeur
"horizontal|vertical".
Exemple :
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="294dp" android:minHeight="72dp" android:updatePeriodMillis="86400000" android:previewImage="@drawable/preview" android:initialLayout="@layout/example_appwidget" android:configure="com.example.android.ExampleAppWidgetConfigure" android:resizeMode="horizontal|vertical" > </appwidget-provider>
Pour en savoir plus sur les widgets de l'écran d'accueil, consultez la page Widgets d'application. dans la documentation Google Cloud.
Framework d'animation
- Nouvelle classe ViewPropertyAnimator
<ph type="x-smartling-placeholder">
- </ph>
- Une nouvelle classe
ViewPropertyAnimator
fournit pratique moyen pour les développeurs d'animer des propriétés de sélection sur des objetsView
. La classe automatise et optimise l'animation des propriétés, ce qui facilite gérer plusieurs animations simultanées sur un objetView
.L'utilisation de
ViewPropertyAnimator
est simple. Pour animer les propriétés de unView
, appelezanimate()
pour construire un objetViewPropertyAnimator
pour ceView
. Utilisez les sur l'ViewPropertyAnimator
pour spécifier la propriété à et comment l'animer. Par exemple, pour passer leView
en fondu transparent, procédez comme suit : appelezalpha(0);
. L'objetViewPropertyAnimator
gère les détails de la configuration de la classeAnimator
sous-jacente, de son démarrage, puis de l'affichage de la classe de l'animation.
- Une nouvelle classe
- Couleur d'arrière-plan de l'animation
<ph type="x-smartling-placeholder">
- </ph>
- Nouveaux
getBackgroundColor()
et Les méthodessetBackgroundColor(int)
permettent vous permet d'obtenir/définir la couleur d'arrière-plan des animations, pour les animations de fenêtre. uniquement. Actuellement, l'arrière-plan doit être noir, avec le niveau alpha souhaité.
- Nouveaux
- Obtenir la fraction animée de
ViewAnimator
<ph type="x-smartling-placeholder">- </ph>
- Un nouveau
getAnimatedFraction()
méthode vous permet d'obtenir la fraction actuelle de l'animation, c'est-à-dire le temps écoulé/interpolé fraction utilisée dans la dernière mise à jour de frames (à partir d'unValueAnimator
).
- Un nouveau
Framework d'UI
- Rendu forcé d'un calque
<ph type="x-smartling-placeholder">
- </ph>
- Une nouvelle méthode
buildLayer()
permet à une application forcer la création du calque d'une vue et l'affichage immédiat de la vue dans celui-ci. Par exemple, une application peut utiliser cette méthode pour afficher une vue dans son avant de lancer une animation. Si la vue est complexe, le rendu le calque avant de lancer l'animation permet d'éviter de sauter des images.
- Une nouvelle méthode
- Distance de la caméra
<ph type="x-smartling-placeholder">
- </ph>
- Les applications peuvent utiliser une nouvelle méthode
setCameraDistance(float)
pour définir la distance par rapport à appareil photo à une vue. Les applications peuvent ainsi mieux contrôler les transformations 3D des la vue, comme les rotations.
- Les applications peuvent utiliser une nouvelle méthode
- Obtention d'une vue du calendrier à l'aide du sélecteur de date
<ph type="x-smartling-placeholder">
- </ph>
- Une nouvelle méthode
getCalendarView()
permet d'obtenir unCalendarView
à partir d'unDatePicker
. Compute Engine.
- Une nouvelle méthode
- Obtenir des rappels lorsque des vues sont dissociées
<ph type="x-smartling-placeholder">
- </ph>
- Avec la nouvelle version de
View.OnAttachStateChangeListener
, vous pouvez recevoir des rappels lorsqu'une vue est associée ou dissociée de sa fenêtre. UtiliseraddOnAttachStateChangeListener()
pour ajouter un écouteur etaddOnAttachStateChangeListener()
pour le supprimer.
- Avec la nouvelle version de
- Écouteur du fil d'Ariane des fragments, nouvelle signature onInflate()
<ph type="x-smartling-placeholder">
- </ph>
- Une nouvelle méthode,
setOnBreadCrumbClickListener()
, fournit une accroche pour permettre interceptent les clics sur le fil d'Ariane des fragments et prennent les mesures nécessaires avant d'accéder à l'entrée ou au fragment de la pile "Retour" sur lequel l'utilisateur a cliqué. - Dans la classe
Fragment
,onInflate(attrs, savedInstanceState)
est obsolète. Veuillez plutôt utiliseronInflate(activity, attrs, savedInstanceState)
.
- Une nouvelle méthode,
- Afficher les résultats de recherche dans un nouvel onglet
<ph type="x-smartling-placeholder">
- </ph>
- Une clé de données
EXTRA_NEW_SEARCH
pour les intentsACTION_WEB_SEARCH
vous permet d'ouvrir une recherche dans un dans un nouvel onglet du navigateur plutôt que dans un onglet existant.
- Une clé de données
- Curseur de texte drawable
<ph type="x-smartling-placeholder">
- </ph>
- Vous pouvez désormais spécifier un drawable à utiliser comme curseur de texte à l'aide de la nouvelle
l'attribut de ressource
textCursorDrawable
.
- Vous pouvez désormais spécifier un drawable à utiliser comme curseur de texte à l'aide de la nouvelle
l'attribut de ressource
- Paramètre enfant affiché dans les vues à distance
<ph type="x-smartling-placeholder">
- </ph>
- Une nouvelle méthode pratique,
setDisplayedChild(viewId, childIndex)
, est disponible dans les sous-classesRemoteViews
, pour vous permettent de définir l'élément enfant affiché dansViewAnimator
et Sous-classesAdapterViewAnimator
telles queAdapterViewFlipper
,StackView
,ViewFlipper
etViewSwitcher
.
- Une nouvelle méthode pratique,
- Touches génériques pour manettes de jeu et autres périphériques d'entrée
<ph type="x-smartling-placeholder">
- </ph>
KeyEvent
ajoute une plage de codes de clavier génériques à pour accueillir les boutons des manettes de jeu. La classe ajoute égalementisGamepadButton(int)
et plusieurs autres méthodes d'assistance pour travailler avec des codes de clavier.
Graphiques
- Outils d'aide pour la gestion des bitmaps
<ph type="x-smartling-placeholder">
- </ph>
setHasAlpha(boolean)
permet à une application d'indiquer que tous les pixels d'un bitmap sont connus pour être opaques (faux) ou que certains des peuvent contenir des valeurs alpha non opaques (vrai). Notez que pour certaines configurations (telles que RGB_565, par exemple), cet appel est ignoré, car il n'est pas compatible avec la valeur alpha par pixel. valeurs. Il s'agit d'une indication de dessin, comme dans certains cas, un bitmap connu peut prendre un cas de dessin plus rapide qu'un cas de dessin non opaque. les valeurs alpha par pixel.getByteCount()
obtient la taille d'un bitmap dans octets.getGenerationId()
permet à une application pour savoir si un bitmap a été modifié, par exemple pour la mise en cache.sameAs(android.graphics.Bitmap)
détermine si un bitmap donné diffère du bitmap actuel, en dimension de configuration ou de données de pixels.
- Définir l'emplacement et la rotation de la caméra
<ph type="x-smartling-placeholder">
- </ph>
Camera
ajoute deux nouvelles méthodes,rotate()
etsetLocation()
, pour le contrôle le lieu de prise de vue pour les transformations 3D.
Réseau
- Verrouillage Wi-Fi hautes performances
<ph type="x-smartling-placeholder">
- </ph>
- Un nouveau système de verrouillage Wi-Fi hautes performances permet aux applications
des connexions Wi-Fi hautes performances, même lorsque l'écran de l'appareil est éteint.
Les applications qui diffusent de la musique, des vidéos ou des voix pendant de longues périodes peuvent obtenir le
Verrouillage Wi-Fi hautes performances pour garantir des performances de streaming même lorsque l'écran
est désactivé. Étant donné qu'elle consomme plus d'énergie, les applications doivent acquérir le
un réseau Wi-Fi performant lorsqu'un réseau Wi-Fi actif de longue durée est nécessaire
.
Pour créer un verrouillage hautes performances, transmettez
WIFI_MODE_FULL_HIGH_PERF
comme mode verrouillé dans un àcreateWifiLock()
.
- Un nouveau système de verrouillage Wi-Fi hautes performances permet aux applications
des connexions Wi-Fi hautes performances, même lorsque l'écran de l'appareil est éteint.
Les applications qui diffusent de la musique, des vidéos ou des voix pendant de longues périodes peuvent obtenir le
Verrouillage Wi-Fi hautes performances pour garantir des performances de streaming même lorsque l'écran
est désactivé. Étant donné qu'elle consomme plus d'énergie, les applications doivent acquérir le
un réseau Wi-Fi performant lorsqu'un réseau Wi-Fi actif de longue durée est nécessaire
.
- Plus de statistiques sur le trafic
<ph type="x-smartling-placeholder">
- </ph>
- Les applications peuvent désormais accéder à des statistiques sur d'autres types d'utilisation du réseau
à l'aide de nouvelles méthodes dans
TrafficStats
. Les applications peuvent utiliser méthodes pour obtenir des statistiques UDP, le nombre de paquets, les octets de charge utile de transmission/réception TCP et pour un UID donné.
- Les applications peuvent désormais accéder à des statistiques sur d'autres types d'utilisation du réseau
à l'aide de nouvelles méthodes dans
- Nom d'utilisateur pour l'authentification SIP
<ph type="x-smartling-placeholder">
- </ph>
- Les applications peuvent désormais obtenir et définir le nom d'utilisateur d'authentification SIP pour un profil
avec
les nouvelles méthodes
getAuthUserName()
etsetAuthUserName()
.
- Les applications peuvent désormais obtenir et définir le nom d'utilisateur d'authentification SIP pour un profil
avec
les nouvelles méthodes
Gestionnaire de téléchargement
- Gérer les téléchargements terminés
<ph type="x-smartling-placeholder">
- </ph>
- Les applications peuvent désormais lancer des téléchargements et notifier les utilisateurs uniquement
l'achèvement. Pour lancer ce type de téléchargement, les applications transmettront
VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION
dans la méthodesetNotificationVisibility()
l'objet de la requête. - Une nouvelle méthode,
addCompletedDownload()
, permet à une application d'ajouter un fichier au de la base de données des téléchargements, de sorte qu'elle puisse être gérée par l'application Téléchargements.
- Les applications peuvent désormais lancer des téléchargements et notifier les utilisateurs uniquement
l'achèvement. Pour lancer ce type de téléchargement, les applications transmettront
- Afficher les téléchargements triés par taille
<ph type="x-smartling-placeholder">
- </ph>
- Les applications peuvent lancer l'application Téléchargements en mode de tri par taille en
en ajoutant le nouveau
INTENT_EXTRAS_SORT_BY_SIZE
supplémentaire à un intentACTION_VIEW_DOWNLOADS
.
- Les applications peuvent lancer l'application Téléchargements en mode de tri par taille en
en ajoutant le nouveau
Framework IME
- Obtenir la clé de valeur supplémentaire d'un mode de saisie
<ph type="x-smartling-placeholder">
- </ph>
- Le
InputMethodSubtype
ajoute la méthodecontainsExtraValueKey()
pour vérifier si une chaîne ExtraValue est stockée pour le sous-type La méthodegetExtraValueOf()
pour extraire une valeur de clé spécifique de la table de hachage ExtraValue.
- Le
Contenus multimédias
- Nouveaux formats de streaming audio
<ph type="x-smartling-placeholder">
- </ph>
- Le framework multimédia prend en charge le contenu AAC brut d'ADTS AAC, par exemple Streaming audio amélioré, compatibilité avec les fichiers audio FLAC, pour une qualité optimale (sans perte) de contenu audio compressé. Consultez la liste des formats multimédias acceptés. pour en savoir plus.
Commandes de lancement sur arrêtées applications
À partir d'Android 3.1, le gestionnaire de packages du système assure le suivi des applications arrêtées et qui permettent de contrôler leur lancement à partir de processus en arrière-plan et d'autres applications.
Notez que l'état d'arrêt d'une application n'est pas le même que celui d'une activité à l'état "Arrêté". Le système gère ces deux états d'arrêt séparément.
La plate-forme définit deux nouveaux indicateurs d'intent qui permettent à un expéditeur si l'intent doit être autorisé à activer les composants dans les environnements application.
FLAG_INCLUDE_STOPPED_PACKAGES
: Inclure les filtres d'intent des applications arrêtées dans la liste des cibles potentielles à résoudre.FLAG_EXCLUDE_STOPPED_PACKAGES
: Exclure les filtres d'intent des applications arrêtées de la liste des cibles.
Si aucun de ces indicateurs ou les deux n'est défini dans un intent, consiste à inclure les filtres des applications arrêtées dans la liste des des cibles potentielles.
Notez que le système ajoute FLAG_EXCLUDE_STOPPED_PACKAGES
à toutes les diffusions.
intents. Cela permet d'empêcher les diffusions des services d'arrière-plan
qui lancent par inadvertance ou inutilement des composants d'applications arrêtées.
Un service ou une application d'arrière-plan peut ignorer ce comportement en ajoutant le
Indicateur FLAG_INCLUDE_STOPPED_PACKAGES
à diffuser
des intents qui doivent être autorisés
à activer des applications arrêtées.
Les applications sont arrêtées lors de leur première installation, mais elles ne sont pas lancées et quand elles sont arrêtées manuellement par l'utilisateur (dans la section Applications).
Notification du premier lancement et de la mise à niveau de l'application
La plate-forme améliore les notifications lors du premier lancement de l'application et grâce à deux nouvelles actions d'intent:
ACTION_PACKAGE_FIRST_LAUNCH
— Envoyé à le package d'installation d'une application lorsque celle-ci est lancée pour la première fois ; (c'est-à-dire la première fois qu'il est arrêté). Les données contient le nom du package.ACTION_MY_PACKAGE_REPLACED
– Notifie une application sur laquelle elle a été mise à jour, avec une nouvelle version installée une version existante. Il n'est envoyé qu'à l'application qui a été remplacée. Il ne contient aucune donnée supplémentaire. Pour le recevoir, déclarez un filtre d'intent pour cette action. Vous pouvez utiliser l'intent pour déclencher du code qui vous aide à obtenir l'application fonctionne de nouveau correctement après une mise à niveau.Cet intent est envoyé directement à l'application, mais uniquement si l'application a été mis à niveau alors qu'il était en cours de démarrage (et non à l'état "arrêté").
Utilitaires de base
- Cache LRU
<ph type="x-smartling-placeholder">
- </ph>
- Une nouvelle classe
LruCache
permet à vos applications de bénéficier grâce à une mise en cache efficace. Les applications peuvent utiliser la classe pour réduire le temps passé de calcul ou de téléchargement de données à partir du réseau, tout en conservant pour les données mises en cache.LruCache
est un cache contenant des références fortes à un nombre limité de valeurs. Chaque fois qu'une valeur est si un utilisateur y accède, il est placé en tête de file d'attente. Lorsqu'une valeur est ajoutée à un cache, la valeur à la fin de cette file d'attente est supprimée et peut devenir éligible la récupération de mémoire.
- Une nouvelle classe
- Descripteur de fichier en tant que
int
<ph type="x-smartling-placeholder">- </ph>
- Vous pouvez maintenant obtenir le descripteur de fichier natif pour un
ParcelFileDescriptor
à l'aide de l'une des nouvelles méthodesgetFd()
oudetachFd()
.
- Vous pouvez maintenant obtenir le descripteur de fichier natif pour un
WebKit
- Cookies de schéma de fichier
<ph type="x-smartling-placeholder">
- </ph>
- Le
CookieManager
prend désormais en charge les cookies qui utilisent la Schéma d'URIfile:
. Vous pouvez utilisersetAcceptFileSchemeCookies()
pour activer/désactiver la prise en charge des cookies de schéma de fichiers avant de créer une instance. deWebView
ouCookieManager
. Dans unCookieManager
, vous pouvez vérifier si les cookies du schéma de fichiers est activé en appelantallowFileSchemeCookies()
.
- Le
- Notification de demande de connexion
<ph type="x-smartling-placeholder">
- </ph>
- Pour prendre en charge les fonctionnalités de connexion automatique du navigateur introduites dans Android 3.0, le
nouveau
Méthode
onReceivedLoginRequest()
avertit l'hôte application qu'une demande de connexion automatique a été traitée pour l'utilisateur.
- Pour prendre en charge les fonctionnalités de connexion automatique du navigateur introduites dans Android 3.0, le
nouveau
Méthode
- Classes et interfaces supprimées
<ph type="x-smartling-placeholder">
- </ph>
- Plusieurs classes et interfaces ont été supprimées de l'API publique, après auparavant à l'état "obsolète". Voir l'API rapport sur les différences.
Navigateur
L'application Navigateur ajoute les fonctionnalités suivantes pour assurer la compatibilité applications:
- Compatibilité avec la lecture intégrée des vidéos intégrées au format HTML5
Balise
<video>
. Dans la mesure du possible, la lecture est accélérée par le matériel. - Prise en charge des couches pour les éléments de position fixe pour tous les sites (mobile et ordinateur).
Nouvelles constantes de caractéristiques
La plate-forme ajoute de nouvelles constantes de fonctionnalités matérielles que les développeurs peuvent déclarer
dans leurs fichiers manifestes d'application, afin d'informer les entités externes telles que Google
Jeu des exigences de l'application concernant la prise en charge de nouvelles capacités matérielles
dans cette version de la plate-forme. Les développeurs déclarent ces fonctionnalités et d'autres
constantes dans les éléments du fichier manifeste <uses-feature>
.
android.hardware.usb.accessory
: l'application utilise la clé USB API pour communiquer avec les périphériques matériels externes connectés via USB et fonctionnent comme des hôtes.android.hardware.usb.host
: l'application utilise l'API USB. de communiquer avec les périphériques matériels externes connectés via USB et fonctionner comme appareils.
Google Play filtre les applications en fonction des fonctionnalités déclarées dans les éléments du fichier manifeste <uses-feature>
. Pour en savoir plus sur
déclarant des fonctionnalités dans le fichier manifeste d'une application, consultez la page Google Play
Filtres.
Rapport sur les différences de l'API
Pour obtenir une vue détaillée de toutes les modifications apportées aux API dans Android 3.1 (API, Niveau 12), consultez la page API rapport sur les différences.
Niveau d'API
La plate-forme Android 3.1 propose une version mise à jour de l'API du framework. L'API Android 3.1 se voit attribuer un identifiant sous forme de nombre entier, 12, soit stockées dans le système lui-même. Cet identifiant, appelé "niveau d'API", permet pour déterminer correctement si une application est compatible avec le système avant d'installer l'application.
Pour utiliser les API introduites dans Android 3.1 dans votre application,
vous devez compiler l'application avec la bibliothèque Android fournie dans
la plate-forme SDK Android 3.1. Selon vos besoins, vous
pourrait
devez également ajouter un android:minSdkVersion="12"
à l'élément <uses-sdk>
dans le fichier
fichier manifeste.
Pour plus d'informations, consultez la page Qu'est-ce que l'API ? Niveau ?