API-Level:12
Für Entwickler: die Android 3.1-Plattform
(HONEYCOMB_MR1
) ist verfügbar als
Komponente für das Android SDK herunterladen Die herunterladbare Plattform umfasst
eine Android-Bibliothek und ein System-Image
sowie eine Reihe von Emulator-Skins
mehr. Die herunterladbare Plattform enthält keine externen Bibliotheken.
Für Entwickler ist die Android 3.1-Plattform als Komponente für das Android SDK herunterladen Die herunterladbare Plattform umfasst eine Android-Bibliothek und ein System-Image sowie eine Reihe von Emulator-Skins mehr. Um mit der Entwicklung oder Tests für Android 3.1 zu beginnen, Verwenden Sie den Android SDK Manager, um die Plattform in Ihr SDK herunterzuladen.
API-Übersicht
In den folgenden Abschnitten erhalten Sie einen technischen Überblick über die Neuerungen für Entwickler. in Android 3.1, einschließlich neuer Funktionen und Änderungen an der Framework-API seit der vorherigen Version.
USB-APIs
Android 3.1 führt leistungsstarke neue APIs für Integration verbundener Peripheriegeräte in Anwendungen, die auf der Plattform ausgeführt werden. Die APIs basieren auf einem USB-Stack (Universal Serial Bus) und den Diensten, die in die Plattform integriert, einschließlich Unterstützung für USB-Host und -Gerät Interaktionen. Mit den APIs können Entwickler Anwendungen erstellen, können Sie verschiedene Gerätetypen erkennen, mit ihnen kommunizieren und sie verwalten, USB
Der Stack und die APIs unterscheiden zwei grundlegende Arten von USB-Hardware, die auf ob das Android-Gerät als Host oder die externe Hardware agiert agiert als Host:
- Ein USB-Gerät ist eine verbundene Hardware, die vom Typ Android-Gerät, das als Host dient. Die meisten Eingabegeräte, Mäuse, Joysticks sind USB-Geräte, viele Kameras, Hubs usw.
- Ein USB-Zubehör ist eine verbundene Hardware, die mit einem USB-Kabel Host-Controller, liefert Strom und ist für die Kommunikation mit Android-Geräte über USB, eine Vielzahl von Peripheriegeräten kann als von Robotik-Controllern über Musikinstrumente bis hin zu Heimtrainern, und vieles mehr.
Für beide Typen, also USB-Geräte und USB-Zubehör, gilt: unterstützen die USB-APIs der Plattform die Intent-Übertragung, wenn sie verbunden sind oder sowie Standardschnittstellen, -endpunkte und -übertragungsmodi (Kontrolle, Massenanzeige und Unterbrechung).
Die USB APIs sind im Paket android.hardware.usb
verfügbar. Die
ist die Central-Klasse UsbManager
und bietet
Hilfsmethoden zur Identifizierung und Kommunikation
USB-Geräte und USB-Zubehör. Anwendungen können eine Instanz von
UsbManager
und fragen Sie dann die Liste der angehängten
Geräte oder Zubehör zu verwalten und dann mit ihnen zu kommunizieren oder sie zu verwalten.
UsbManager
deklariert außerdem Intent-Aktionen,
System-Broadcasts, um anzukündigen, wenn ein USB-Gerät oder -Zubehör angeschlossen ist oder
getrennt.
Weitere Klassen:
UsbDevice
, eine Klasse, die für externe Daten steht als USB-Gerät angeschlossene Hardware (wobei das Android-Gerät als Organisator).UsbAccessory
für externe Hardware das als USB-Host angeschlossen ist (wobei das Android-Gerät als USB- Gerät).UsbInterface
undUsbEndpoint
, die Zugriff auf Standard-USB ermöglichen Schnittstellen und Endpunkte für ein Gerät.UsbDeviceConnection
undUsbRequest
zum Senden und Empfangen von Daten und Steuerung Nachrichten an oder von einem USB-Gerät synchron und asynchron senden.UsbConstants
mit Konstanten für Deklaration von Endpunkttypen, Geräteklassen usw.
Der USB-Stack ist zwar in die Plattform integriert, es werden aber für den USB-Hostmodus und das offene Zubehör auf bestimmten Geräten ihre Hersteller. Insbesondere für den Hostmodus ist eine geeignete USB-Verbindung die Controller-Hardware im Android-Gerät.
Darüber hinaus können Entwickler eine Filterung bei Google Play beantragen, Ihre Anwendungen nicht für Nutzer verfügbar sind, deren Geräte den eine entsprechende USB-Unterstützung. Fügen Sie eines oder beide Elemente hinzu, um eine Filterung anzufordern in das App-Manifest einfügen:
- Wenn die App nur für Geräte sichtbar sein soll, die USB unterstützen
Hostmodus (Verbindung von USB-Geräten) verwenden, deklarieren Sie dieses Element:
<uses-feature android:name="android.hardware.usb.host" android:required="true">
- Wenn die App nur für Geräte sichtbar sein soll, die USB unterstützen
Zubehör (Verbindung von USB-Hosts) verwenden, deklarieren Sie dieses Element:
<uses-feature android:name="android.hardware.usb.accessory" android:required="true">
Vollständige Informationen zur Entwicklung von Anwendungen, die mit USB-Zubehör finden Sie in der Entwicklerdokumentation.
Beispielanwendungen, die die USB-Host-API verwenden, findest du unter ADB Test und Missile Launcher-Taste
MTP/PTP-API
Android 3.1 stellt eine neue MTP-API bereit, über die Anwendungen direkt interagieren können. mit verbundenen Kameras und anderen PTP-Geräten. Mit der neuen API kann ein App zum Empfangen von Benachrichtigungen über verbundene und entfernte Geräte, Dateien und Speicherplatz auf diesen Geräten verwalten und Dateien und Metadaten auf und von ihnen. Die MTP API implementiert die PTP-Teilmenge (Picture Transfer Protocol). der MTP-Spezifikation (Media Transfer Protocol).
Die MTP API ist im Paket android.mtp
verfügbar und bietet
diesen Klassen:
MtpDevice
kapselt ein MTP-Gerät, das die über den USB-Host-Bus verbunden sind. Eine Anwendung kann ein Objekt von und verwenden dann die zugehörigen Methoden, um Informationen über das Gerät und Objekte, die darauf gespeichert sind, sowie die Verbindungsherstellung und Datenübertragung. Zu den Methoden gehören: <ph type="x-smartling-placeholder">- </ph>
getObjectHandles()
gibt eine Liste mit Aliassen für alle Objekte auf dem Gerät zurück, die einem bestimmten Format und übergeordneten Elementen entsprechen. Um Informationen zu einem Objekt zu erhalten, Anwendung kann ein Handle angetObjectInfo()
übergeben.- Mit
importFile()
kann eine Anwendung Daten für ein Objekt in eine Datei in einer externen Umgebung kopieren Speicherplatz. Dieser Aufruf kann für einen beliebigen Zeitraum blockiert werden, je nachdem, die Größe der Daten und die Geschwindigkeit der Geräte. Daher sollten sie aus einem speziellen Diskussions-Thread. open()
Ermöglicht es einer Anwendung, ein verbundenes MTP/PTP-Gerät zu öffnen.getThumbnail()
Rückgaberecht die Miniaturansicht des Objekts als Byte-Array.
MtpStorageInfo
enthält Informationen zu einem Speicher Einheit auf einem MTP-Gerät, die dem StorageInfo-Dataset entspricht, das in Abschnitt 5.2.2 der MTP-Spezifikation. Mit Methoden in der Klasse kann eine Anwendung Beschreibungsstring, freier Speicherplatz, maximaler Speicherkapazität, Speicher-ID und Volume-ID.MtpDeviceInfo
enthält Informationen zu einem MTP-Gerät. entspricht dem DeviceInfo-Dataset, das in Abschnitt 5.1.1 des MTP beschrieben wurde. Spezifikation zu ändern. Mithilfe der Methoden in diesem Kurs können Anwendungen die Hersteller, Modell, Seriennummer und Version.MtpObjectInfo
enthält Informationen über ein gespeichertes Objekt. auf einem MTP-Gerät, entsprechend dem im Abschnitt 5.3.1 der MTP-Spezifikation. Mit Methoden in der Klasse können Anwendungen ein Größe des Objekts, Datenformat, Verknüpfungstyp, Erstellungsdatum und Miniaturansicht Informationen.MtpConstants
bietet Konstanten zum Deklarieren der MTP-Datei Formatcodes, Verknüpfungstyp und Schutzstatus.
Unterstützung neuer Eingabegeräte und Bewegungsereignisse
Android 3.1 erweitert das Eingabe-Subsystem um neue Eingabegeräte und Bewegungsereignisse in allen Ansichten und Fenstern. Entwickler können auf damit Nutzende über Mäuse, auch Trackballs, Joysticks, Gamepads und andere Geräte. Touchscreens.
Für die Eingabe per Maus, Scrollrad und Trackball unterstützt die Plattform zwei neue Aktionen für Bewegungsereignisse:
ACTION_SCROLL
, der den Zeiger beschreibt Stelle, an der eine Scrollbewegung ohne Berührung, z. B. mit dem Scrollrad der Maus, stattfand. Im MotionEvent gibt der Wert der AchsenAXIS_HSCROLL
undAXIS_VSCROLL
das relative Scrollen an. Bewegung.ACTION_HOVER_MOVE
, meldet den aktuellen Wert die Position der Maus, wenn keine Tasten gedrückt werden, sowie alle Zwischeneinstellungen, Punkte seit dem letztenHOVER_MOVE
-Ereignis. Mauszeiger auf Ein- und Ausblenden bewegen Benachrichtigungen werden noch nicht unterstützt.
Zur Unterstützung von Joysticks und Gamepads wird die InputDevice
-Klasse
umfasst diese neuen Eingabegerätequellen:
SOURCE_CLASS_JOYSTICK
– die Quelle Gerät verfügt über Joystickachsen.SOURCE_CLASS_BUTTON
– die Quelle über Tasten oder Tasten verfügt.SOURCE_GAMEPAD
– das Quellgerät verfügt über Gamepad-Schaltflächen wieKEYCODE_BUTTON_A
oderKEYCODE_BUTTON_B
. ImpliziertSOURCE_CLASS_BUTTON
SOURCE_JOYSTICK
– das Quellgerät verfügt über Joystickachsen. Impliziert SOURCE_CLASS_JOYSTICK.
Bewegungsereignisse aus diesen neuen Quellen und von Mäusen beschreiben
und Trackballs definiert, definiert die Plattform jetzt Achsencodes auf MotionEvent
, ähnlich wie Schlüsselcodes auf KeyEvent
. Neue Achsencodes für Joysticks
Zu den Controllern gehören
AXIS_HAT_X
, AXIS_HAT_Y
, AXIS_RTRIGGER
, AXIS_ORIENTATION
, AXIS_THROTTLE
und viele weitere.
Vorhandene MotionEvent
-Achsen werden durch AXIS_X
, AXIS_Y
,
AXIS_PRESSURE
, AXIS_SIZE
, AXIS_TOUCH_MAJOR
, AXIS_TOUCH_MINOR
, AXIS_TOOL_MAJOR
, AXIS_TOOL_MINOR
und AXIS_ORIENTATION
.
Außerdem definiert MotionEvent
eine Reihe von allgemeinen
die verwendet werden, wenn das Framework nicht weiß, wie ein
Achse zu definieren. Bestimmte Geräte können mithilfe der generischen Achsencodes benutzerdefinierte
Bewegungsdaten in Anwendungen übertragen. Eine vollständige Liste der Achsen und ihrer
Interpretationen finden Sie in der Dokumentation zur MotionEvent
-Klasse.
Die Plattform stellt Bewegungsereignisse für Anwendungen in Batches bereit, sodass eine einzige
Ereignis kann eine aktuelle Position und mehrere sogenannte historische Bewegungen enthalten.
Anwendungen sollten getHistorySize()
verwenden, um
Anzahl der historischen Stichproben zu ermitteln und dann alle bisherigen Stichproben abzurufen und zu verarbeiten,
in der richtigen Reihenfolge mit getHistoricalAxisValue()
. Danach sollten Anträge die aktuellen
Beispiel mit getAxisValue()
.
Einige Achsen können mit speziellen Zugriffsmethoden abgerufen werden. Beispiel:
anstatt getAxisValue()
aufzurufen, können Anwendungen getX()
aufrufen. Zu den Achsen mit integrierten Zugriffsfunktionen gehören AXIS_X
, AXIS_Y
,
AXIS_PRESSURE
, AXIS_SIZE
, AXIS_TOUCH_MAJOR
, AXIS_TOUCH_MINOR
, AXIS_TOOL_MAJOR
, AXIS_TOOL_MINOR
und AXIS_ORIENTATION
.
Jedes Eingabegerät hat eine eindeutige, vom System zugewiesene ID und kann auch
aus mehreren Quellen. Wenn ein Gerät mehrere Quellen bereitstellt, sind mehrere Quellen möglich.
können Achsendaten
mit derselben Achse bereitstellen. Beispiel: Ein Touch-Event, das
aus der Berührungsquelle nutzt die X-Achse für Daten zur Bildschirmposition, während ein Joystick
-Ereignis, das von der Joystickquelle kommt, nutzt die X-Achse für die Stickposition.
. Daher ist es wichtig, dass Anwendungen die Achsen
entnommen werden können. Beim Umgang mit Bewegungen
verwenden, sollten Anwendungen Methoden für das InputDevice
verwenden.
Klasse, um die von einem Gerät oder einer Quelle unterstützten Achsen zu ermitteln. Genauer gesagt:
Anwendungen können mit getMotionRanges()
alle Achsen eines Geräts oder alle Achsen eines bestimmten
Quelle des Geräts. In beiden Fällen werden die Bereichsinformationen für Achsen
Das InputDevice.MotionRange
-Objekt gibt die Quelle für
für jeden Achsenwert.
Da Bewegungsereignisse von Joysticks, Gamepads, Mäusen und
Trackballs keine Touch-Events sind, bietet die Plattform eine neue
werden sie als "allgemein" an View
übergeben. Bewegungsereignisse.
Konkret werden die Bewegungsereignisse ohne Touchscreen
View
s durch einen Aufruf von onGenericMotionEvent()
anstelle von onTouchEvent()
.
Die Plattform verarbeitet allgemeine Bewegungsereignisse unterschiedlich, je nachdem,
Ereignisquellenklasse. SOURCE_CLASS_POINTER
Ereignis
klicken Sie auf das View
unter dem Zeiger, ähnlich wie beim
funktionieren. Alle anderen wechseln zum aktuell fokussierten View
.
Das bedeutet zum Beispiel, dass ein View
den Fokus haben muss, um
Joystick-Ereignisse empfangen. Bei Bedarf können Anwendungen diese Ereignisse
Aktivitäts- oder Dialogfeldebene, indem Sie dort onGenericMotionEvent()
implementieren.
Beispielanwendung mit Joystickbewegung GameControllerInput und GameView.
RTP-API
Android 3.1 stellt eine API über die integrierte RTP (Real-time Transport Protocol) bereit. Stacks, mit dem Anwendungen On-Demand- oder interaktive Daten verwalten können Streaming. Das gilt insbesondere für Apps, die VoIP, Push-to-Talk, Telefonkonferenzen und Audiostreaming können die API zum Initiieren von Sitzungen und Übertragen bzw. Empfangen Datenstreams über ein beliebiges verfügbares Netzwerk zu leiten.
Die RTP API ist im Paket android.net.rtp
verfügbar. Klassen
umfassen:
RtpStream
, die Basisklasse der Streams, die Netzwerkpakete mit Mediennutzlasten über RTP empfangen können.AudioStream
, eine Unterklasse vonRtpStream
, die Audionutzlasten über RTP überträgt.AudioGroup
, ein lokaler Audio-Hub zum Verwalten und Lautsprecher, Mikrofon undAudioStream
mischen.AudioCodec
mit einer Sammlung von Codecs, die Sie für einAudioStream
definieren.
Um Audiokonferenzen und ähnliche Anwendungsfälle zu unterstützen, instanziiert eine Anwendung zwei Klassen als Endpunkte für den Stream:
AudioStream
gibt einen Remote-Endpunkt an und besteht aus der Netzwerkzuordnung und einer konfiguriertenAudioCodec
.AudioGroup
stellt den lokalen Endpunkt für eine Person dar. oder mehrAudioStream
s. Die Mixe vonAudioGroup
alleAudioStream
s und interagiert optional mit dem Gerät Lautsprecher und Mikrofon gleichzeitig verwenden.
Die einfachste Verwendung erfordert einen einzelnen Remote-Endpunkt und einen lokalen Endpunkt.
Informationen zu komplexeren Verwendungszwecken finden Sie in den
AudioGroup
Zur Verwendung der RTP API müssen Anwendungen eine Berechtigung vom Nutzer anfordern, indem sie
<uses-permission
android:name="android.permission.INTERNET">
wird deklariert
in ihren Manifestdateien. Zum Abrufen des Gerätemikrofons ist außerdem die Berechtigung <uses-permission
android:name="android.permission.RECORD_AUDIO">
erforderlich.
App-Widgets lassen sich in der Größe anpassen
Ab Android 3.1 können Entwickler ihre Startbildschirm-Widgets anpassbar: horizontal, vertikal oder auf beiden Achsen. Nutzer halten ein um die Ziehpunkte des Widgets anzuzeigen. Ziehen Sie dann die horizontalen und/oder vertikalen Ziehpunkte, um die Größe des Layoutrasters zu ändern.
Entwickler können die Größe jedes Startbildschirm-Widgets anpassen, indem sie eine
Attribut resizeMode
in den AppWidgetProviderInfo
-Metadaten des Widgets. Werte für die
resizeMode
-Attribute enthalten „horizontal“, „vertical“ und „none“.
Um ein Widget als horizontal und vertikal anpassbar zu deklarieren, geben Sie den Wert
„horizontal|vertical“ aus.
Beispiel:
<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>
Weitere Informationen zu Startbildschirm-Widgets finden Sie unter App-Widgets. Dokumentation.
Animationsframework
- Neue ViewPropertyAnimator-Klasse
<ph type="x-smartling-placeholder">
- </ph>
- Eine neue
ViewPropertyAnimator
-Klasse bietet eine praktisch können Entwickler ausgewählte Eigenschaften vonView
-Objekten animieren. Die Klasse automatisiert und optimiert die Animation der Eigenschaften und erleichtert mehrere gleichzeitige Animationen für einView
-Objekt verwalten.Die Verwendung von
ViewPropertyAnimator
ist unkompliziert. Zum Animieren von Eigenschaften fürView
, rufen Sieanimate()
an, um einViewPropertyAnimator
-Objekt für dieseView
. Verwenden Sie die Methode für dasViewPropertyAnimator
-Objekt, um anzugeben, welches Attribut und wie sie animiert werden. Wenn Sie beispielsweiseView
auf transparent machen möchten, Rufen Siealpha(0);
an.ViewPropertyAnimator
-Objekt die Details für die Konfiguration der zugrunde liegendenAnimator
-Klasse, das Starten und das Rendern der Animation.
- Eine neue
- Hintergrundfarbe der Animation
<ph type="x-smartling-placeholder">
- </ph>
- Neue
getBackgroundColor()
und MitsetBackgroundColor(int)
-Methoden Sie können die Hintergrundfarbe hinter Animationen für Fensteranimationen . Derzeit muss der Hintergrund schwarz sein und das gewünschte Alpha-Level haben.
- Neue
- Animierter Bruch wird von
ViewAnimator
abgerufen <ph type="x-smartling-placeholder">- </ph>
- Ein neues
getAnimatedFraction()
Methode liefert den aktuellen Animationsanteil, also die verstrichene/interpolierte Anteil, der beim letzten Frame-Update verwendet wurde – aus einemValueAnimator
.
- Ein neues
UI-Framework
- Erzwungenes Rendern einer Ebene
<ph type="x-smartling-placeholder">
- </ph>
- Mit der neuen Methode
buildLayer()
kann eine Anwendung Erzwingen, dass die Ebene einer Ansicht erstellt und die Ansicht sofort gerendert wird. Beispielsweise könnte eine Anwendung diese Methode verwenden, um eine View in ihre bevor Sie die Animation starten. Wenn die Ansicht komplex ist, wird sie in der Ebene vor dem Start der Animation an, um zu vermeiden, dass Frames übersprungen werden.
- Mit der neuen Methode
- Abstand der Kamera
<ph type="x-smartling-placeholder">
- </ph>
- Anwendungen können eine neue Methode verwenden
Mit
setCameraDistance(float)
legen Sie die Entfernung von der Kamera zu einer Datenansicht hinzufügen. Dies gibt Anwendungen mehr Kontrolle über die 3D-Transformationen von die Ansicht, wie z. B. Drehungen.
- Anwendungen können eine neue Methode verwenden
Mit
- Kalenderansicht von einem DatePicker abrufen
<ph type="x-smartling-placeholder">
- </ph>
- Eine neue
getCalendarView()
-Methode können Sie einenCalendarView
aus einemDatePicker
Instanz.
- Eine neue
- Callbacks erhalten, wenn Ansichten getrennt werden
<ph type="x-smartling-placeholder">
- </ph>
- Mit dem neuen
View.OnAttachStateChangeListener
kannst du empfangen -Callbacks, wenn eine View an ihr Fenster angehängt oder von diesem getrennt wird.addOnAttachStateChangeListener()
verwenden , um einen Listener hinzuzufügen, undaddOnAttachStateChangeListener()
, um ihn zu entfernen.
- Mit dem neuen
- Navigationspfad-Listener für Fragment, neue onInflate()-Signatur
<ph type="x-smartling-placeholder">
- </ph>
- Mit der neuen Methode
setOnBreadCrumbClickListener()
bietet einen Aufhänger, Anwendungen fangen Klicks auf Fragment-Breadcrumbs ab und ergreifen erforderliche Maßnahmen bevor zum Backstack-Eintrag oder -Fragment geleitet wird, auf das geklickt wurde. - In der Klasse
Fragment
wurdeonInflate(attrs, savedInstanceState)
eingestellt. Bitte verwende stattdessen „onInflate(activity, attrs, savedInstanceState)
“.
- Mit der neuen Methode
- Suchergebnis in neuem Tab anzeigen
<ph type="x-smartling-placeholder">
- </ph>
- Mit einem
EXTRA_NEW_SEARCH
-Datenschlüssel fürACTION_WEB_SEARCH
-Intents können Sie eine Suche in einem neuen Browsertab zu öffnen, anstatt in einem vorhandenen zu öffnen.
- Mit einem
- Drehbarer Textcursor
<ph type="x-smartling-placeholder">
- </ph>
- Du kannst jetzt ein Drawable als Textcursor angeben, indem du die neue
Ressourcenattribut
textCursorDrawable
.
- Du kannst jetzt ein Drawable als Textcursor angeben, indem du die neue
Ressourcenattribut
- Angezeigtes untergeordnetes Element in Remote-Ansichten festlegen
<ph type="x-smartling-placeholder">
- </ph>
- Die neue praktische Methode
setDisplayedChild(viewId, childIndex)
ist in abgeleitetenRemoteViews
-Klassen verfügbar, um können Sie das inViewAnimator
angezeigte untergeordnete Element und VonAdapterViewAnimator
abgeleitete Klassen wieAdapterViewFlipper
,StackView
,ViewFlipper
undViewSwitcher
.
- Die neue praktische Methode
- Allgemeine Tasten für Gamepads und andere Eingabegeräte
<ph type="x-smartling-placeholder">
- </ph>
KeyEvent
fügt einen Bereich generischer Keycodes zu auch für Gamepad-Tasten. Der Kurs fügt außerdemisGamepadButton(int)
und mehrere andere für die Arbeit mit Keycodes.
Grafik
- Helfer zum Verwalten von Bitmaps
<ph type="x-smartling-placeholder">
- </ph>
- Mit
setHasAlpha(boolean)
kann eine App angeben, dass alle Pixel in einer Bitmap als undurchsichtig (false) gelten oder dass einige der Pixel können undurchsichtige Alphawerte (wahr) enthalten. Hinweis: Für einige Konfigurationen (wie als RGB_565), wird dieser Aufruf ignoriert, da er Alpha-Pixel pro Pixel nicht unterstützt. Werte. Dies ist als Zeichenhinweis gedacht, z. B. als Bitmap, kann eine Trüblinie schneller sein als eine, die nicht undurchsichtig ist. Alpha-Werte pro Pixel. getByteCount()
ruft die Bitmap-Größe in Bytes.- Mit
getGenerationId()
kann eine Anwendung ob eine Bitmap z. B. für das Caching geändert wurde. sameAs(android.graphics.Bitmap)
bestimmt ob sich eine Bitmap in den Abmessungen von der aktuellen Bitmap unterscheidet, Konfiguration oder Pixeldaten.
- Mit
- Kameraposition und -drehung festlegen
<ph type="x-smartling-placeholder">
- </ph>
Camera
fügt zwei neue Methodenrotate()
undsetLocation()
für Kontrolle über die Kameraposition für 3D-Transformationen.
Netz
- Leistungsstarkes WLAN-Schloss
<ph type="x-smartling-placeholder">
- </ph>
- Eine neue leistungsstarke WLAN-Sperre sorgt dafür,
auch bei ausgeschaltetem Gerätebildschirm.
Apps, die über einen längeren Zeitraum Musik, Videos oder Sprache streamen, können die
Leistungsstarke WLAN-Sperre, um auch auf dem Display eine hohe Streamingleistung zu gewährleisten.
ist deaktiviert. Da Anwendungen mehr Strom verbrauchen, sollten sie
ein leistungsstarkes WLAN, wenn eine lange aktive
Um eine Sperre mit hoher Leistung zu erstellen, übergeben Sie
WIFI_MODE_FULL_HIGH_PERF
als Sperrmodus in einem ancreateWifiLock()
.
- Eine neue leistungsstarke WLAN-Sperre sorgt dafür,
auch bei ausgeschaltetem Gerätebildschirm.
Apps, die über einen längeren Zeitraum Musik, Videos oder Sprache streamen, können die
Leistungsstarke WLAN-Sperre, um auch auf dem Display eine hohe Streamingleistung zu gewährleisten.
ist deaktiviert. Da Anwendungen mehr Strom verbrauchen, sollten sie
ein leistungsstarkes WLAN, wenn eine lange aktive
- Weitere Verkehrsstatistiken
<ph type="x-smartling-placeholder">
- </ph>
- Anwendungen können jetzt auf Statistiken zu mehr Arten der Netzwerknutzung zugreifen
mithilfe neuer Methoden in
TrafficStats
. Anwendungen können die um UDP-Statistiken, die Paketanzahl, TCP-Sende-/Empfangsbyte und für eine bestimmte UID.
- Anwendungen können jetzt auf Statistiken zu mehr Arten der Netzwerknutzung zugreifen
mithilfe neuer Methoden in
- Nutzername für SIP-Authentifizierung
<ph type="x-smartling-placeholder">
- </ph>
- Anwendungen können jetzt den Nutzernamen für die SIP-Authentifizierung für ein Profil abrufen und festlegen
mit
die neuen Methoden
getAuthUserName()
undsetAuthUserName()
.
- Anwendungen können jetzt den Nutzernamen für die SIP-Authentifizierung für ein Profil abrufen und festlegen
mit
die neuen Methoden
Download-Manager
- Verarbeitung abgeschlossener Downloads
<ph type="x-smartling-placeholder">
- </ph>
- Anwendungen können jetzt Downloads initiieren, bei denen Nutzer nur auf
Fertigstellung. Um diese Art von Download zu starten, bestehen Anwendungen die
VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION
. in der MethodesetNotificationVisibility()
von das Anfrageobjekt. - Mit der neuen Methode
addCompletedDownload()
kann eine Anwendung dem Element lädt die Datenbank herunter, damit sie von der Downloads-Anwendung verwaltet werden kann.
- Anwendungen können jetzt Downloads initiieren, bei denen Nutzer nur auf
Fertigstellung. Um diese Art von Download zu starten, bestehen Anwendungen die
- Downloads sortiert nach Größe anzeigen
<ph type="x-smartling-placeholder">
- </ph>
- Anwendungen können die Anwendung "Downloads" im Modus "Sortieren nach Größe" starten, indem
Hinzufügen der neuen zusätzlichen
INTENT_EXTRAS_SORT_BY_SIZE
zu einemACTION_VIEW_DOWNLOADS
-Intent.
- Anwendungen können die Anwendung "Downloads" im Modus "Sortieren nach Größe" starten, indem
Hinzufügen der neuen zusätzlichen
IME-Framework
- Zusätzlichen Wertschlüssel einer Eingabemethode abrufen
<ph type="x-smartling-placeholder">
- </ph>
InputMethodSubtype
fügt den MethodecontainsExtraValueKey()
, um zu prüfen, ob ein ExtraValue-String gespeichert ist für den Untertyp und die MethodegetExtraValueOf()
, um einen bestimmten Schlüsselwert aus der ExtraValue-Hashmap zu extrahieren.
Medien
- Neue Streaming-Audioformate
<ph type="x-smartling-placeholder">
- </ph>
- Das Media-Framework bietet integrierte Unterstützung für unformatierte ADTS-AAC-Inhalte, Verbessertes Audiostreaming und Unterstützung von FLAC-Audio für höchste Qualität (verlustfreier) komprimierter Audioinhalte. Unterstützte Medienformate .
Startsteuerung an gestoppt Anwendungen
Ab Android 3.1 erfasst der Paketmanager des Systems Anwendungen, die angehalten wurden und eine Möglichkeit bieten, von Hintergrundprozessen und anderen Anwendungen.
Beachten Sie, dass der Status „gestoppt“ einer Anwendung nicht mit dem einer Aktivität identisch ist. angehalten. Das System verwaltet diese beiden angehaltenen Zustände separat.
Die Plattform definiert zwei neue Intent-Flags, mit denen ein Absender ob der Intent Komponenten in angehaltenen Elementen aktivieren darf. .
FLAG_INCLUDE_STOPPED_PACKAGES
— Intent-Filter von beendeten Anwendungen in die Liste der potenziellen Ziele aufnehmen gegen das sie geklärt werden können.FLAG_EXCLUDE_STOPPED_PACKAGES
— Intent-Filter beendeter Anwendungen aus der Liste der potenziellen Nutzer ausschließen Ziele.
Wenn keines oder beide dieser Flags in einem Intent definiert sind, wird die Standardeinstellung Filter für beendete Anwendungen in die Liste der potenziellen Zielen.
Beachte, dass das System FLAG_EXCLUDE_STOPPED_PACKAGES
allen Broadcasts hinzufügt
Intents. Dadurch wird verhindert, dass Broadcasts von Hintergrunddiensten
unbeabsichtigt oder unnötigerweise
Komponenten angehaltener Anwendungen starten.
Ein Hintergrunddienst oder eine Anwendung kann dieses Verhalten überschreiben, indem ein
FLAG_INCLUDE_STOPPED_PACKAGES
-Flag zum Übertragen
Intents, mit denen beendete Anwendungen aktiviert werden dürfen.
Anwendungen befinden sich bei der ersten Installation im Status „Beendet“, sind aber nicht noch nicht eingeführt wurden und wenn sie manuell vom Nutzer gestoppt werden (unter Anwendungen).
Benachrichtigung über den ersten Start und das Upgrade der App
Die Plattform bietet eine verbesserte Benachrichtigung über den ersten App-Start und werden die Upgrades über zwei neue Intent-Aktionen durchgeführt:
ACTION_PACKAGE_FIRST_LAUNCH
– gesendet an das Installationspaket einer Anwendung beim ersten Start (d. h., wenn er zum ersten Mal aus einem angehaltenen Zustand bewegt wird). Die Daten enthält den Namen des Pakets.ACTION_MY_PACKAGE_REPLACED
– benachrichtigt einer Anwendung aktualisiert, über die eine neue Version installiert wurde eine vorhandene Version. Sie wird nur an die Anwendung gesendet, die ersetzt wurde. Es enthält keine zusätzlichen Daten. Deklarieren Sie einen Intent-Filter, um sie zu erhalten für diese Aktion aus. Sie können den Intent verwenden, um Code auszulösen, mit dem Ihre die Anwendung nach einem Upgrade wieder in ordnungsgemäße Ausführung gebracht.Dieser Intent wird direkt an die Anwendung gesendet, aber nur, wenn die Anwendung ein Upgrade durchgeführt wurde, während es gestartet wurde (nicht angehalten).
Wichtige Dienstprogramme
- LRU-Cache
<ph type="x-smartling-placeholder">
- </ph>
- Mit der neuen
LruCache
-Klasse profitieren Ihre Anwendungen von effizient Caching. Anwendungen können die Klasse verwenden, um den Zeitaufwand zu reduzieren Daten aus dem Netzwerk berechnen oder herunterladen und gleichzeitig eine sinnvolle Arbeitsspeicherbedarf für die im Cache gespeicherten Daten.LruCache
ist ein Cache. die starke Verweise auf eine begrenzte Anzahl von Werten enthält. Jedes Mal, wenn ein Wert auf die zugegriffen wird, wird sie an den Anfang der Warteschlange verschoben. Wenn ein Wert zu einem vollständigen wird der Wert am Ende dieser Warteschlange entfernt und kann automatische Speicherbereinigung.
- Mit der neuen
- Dateideskriptor als
int
<ph type="x-smartling-placeholder">- </ph>
- Sie können jetzt die native Dateideskriptor-int für ein
ParcelFileDescriptor
mit einer der neuen MethodengetFd()
oderdetachFd()
abrufen.
- Sie können jetzt die native Dateideskriptor-int für ein
WebKit
- Cookies für Dateischemata
<ph type="x-smartling-placeholder">
- </ph>
- Die
CookieManager
unterstützt jetzt Cookies, die diefile:
-URI-Schema. MitsetAcceptFileSchemeCookies()
können Sie Unterstützung für Dateischema-Cookies aktivieren/deaktivieren, bevor eine Instanz erstellt wirdWebView
oderCookieManager
. In einerCookieManager
-Instanz können Sie prüfen, ob Dateischema-Cookies verwendet werden. wird durch Aufrufen vonallowFileSchemeCookies()
aktiviert.
- Die
- Benachrichtigung zur Anmeldeanfrage
<ph type="x-smartling-placeholder">
- </ph>
- Zur Unterstützung der mit Android 3.0 eingeführten automatischen Browser-Anmeldefunktionen wird der
neu
Methode
onReceivedLoginRequest()
benachrichtigt den Organisator Anwendung, mit der eine Anfrage zur automatischen Anmeldung für den Nutzer verarbeitet wurde.
- Zur Unterstützung der mit Android 3.0 eingeführten automatischen Browser-Anmeldefunktionen wird der
neu
Methode
- Entfernte Klassen und Schnittstellen
<ph type="x-smartling-placeholder">
- </ph>
- Mehrere Klassen und Schnittstellen wurden nach dem die sich zuvor im verworfenen Status befanden. Weitere Informationen finden Sie in der API Bericht zu Unterschieden.
Browser
Der Browser bietet die folgenden Funktionen zur Unterstützung von Anwendungen:
- Unterstützung der Inline-Wiedergabe von in HTML5 eingebetteten Videos
<video>
-Tag. Die Wiedergabe erfolgt nach Möglichkeit hardwarebeschleunigt. - Ebenenunterstützung für Elemente mit festen Positionen für alle Websites (mobile und Desktopversion).
Konstanten für neue Funktionen
Die Plattform fügt neue Konstanten für Hardwarefunktionen hinzu, die Entwickler deklarieren können
in ihren Anwendungsmanifesten, um externe Stellen wie Google
Spiel, in dem die Anforderung der Anwendung nach neuen Hardwarefunktionen unterstützt wird
in dieser Version der Plattform. Entwickler erklären diese und andere Funktionen
Konstanten in <uses-feature>
-Manifestelementen.
android.hardware.usb.accessory
: Die Anwendung verwendet den USB- API für die Kommunikation mit externen Hardwaregeräten über USB und als Hosts fungieren.android.hardware.usb.host
: Die Anwendung verwendet die USB API. um mit externen Hardwaregeräten zu kommunizieren, die über USB angeschlossen sind, und funktionieren Geräte.
Google Play filtert Apps anhand von Funktionen, die in <uses-feature>
-Manifestelementen deklariert sind. Weitere Informationen zu
zur Deklaration von Funktionen in einem App-Manifest erhalten Sie unter Google Play
Filter:
Bericht zu API-Unterschieden
Eine detaillierte Ansicht aller API-Änderungen unter Android 3.1 (API) Ebene 12), siehe API Bericht zu Unterschieden
API-Ebene
Die Android 3.1-Plattform stellt eine aktualisierte Version Framework-API. Die Android 3.1 API wird eine ganzzahlige ID zugewiesen, 12, also die im System selbst gespeichert sind. Diese Kennung, die „API-Ebene“ genannt wird, ermöglicht um zu ermitteln, ob eine App mit vor der Installation der Anwendung.
Um in Ihrer App APIs zu verwenden, die in Android 3.1 eingeführt wurden,
müssen Sie die Anwendung anhand der Android-Bibliothek kompilieren, die im
der Android 3.1 SDK-Plattform. Je nach Ihren Anforderungen können Sie
könnten
muss auch ein android:minSdkVersion="12"
-Element
<uses-sdk>
-Element im Feld
Manifests.
Weitere Informationen finden Sie unter Was ist eine API? Stufe?