API-Level: 21
Android 5.0 (LOLLIPOP) bietet neue Funktionen für Nutzer und App-Entwickler. Dieses Dokument enthält eine eine Einführung in die wichtigsten neuen APIs.
Wenn Sie bereits eine App veröffentlicht haben, lesen Sie den Artikel Android 5.0 Behavioral Änderungen, die du in deiner App berücksichtigen solltest. Diese Verhaltensänderungen kann sich auf Ihre App auf Geräten mit Android 5.0 auswirken, auch wenn Sie keine neuen APIs verwenden. oder die Ausrichtung auf neue Funktionen.
Um einen allgemeinen Überblick über die neuen Plattformfunktionen zu erhalten, sieh dir die Android Lollipop Highlights.
Hier geht es los
Um mit der Entwicklung von Apps für Android 5.0 zu beginnen, müssen Sie zunächst das Android SDK. Verwenden Sie dann den SDK Manager. um die Android 5.0 SDK-Plattform und System-Images herunterzuladen.
Ziel-API-Level aktualisieren
Zur Optimierung deiner App für Geräte mit Android 5.0
targetSdkVersion
festlegen auf
"21"
, installiere deine App auf einem Android-Gerät
5.0-System-Image herunter, testen Sie es und veröffentlichen Sie dann die aktualisierte App mit
diese Änderung.
Sie können Android 5.0-APIs verwenden und gleichzeitig ältere Versionen
Versionen, indem Sie Ihrem Code Bedingungen hinzufügen, mit denen das System-API-Level geprüft wird
bevor APIs ausgeführt werden, die von der minSdkVersion
nicht unterstützt werden.
Weitere Informationen zur Aufrechterhaltung der Abwärtskompatibilität finden Sie unter Unterstützung
Verschiedene Plattformversionen.
Weitere Informationen zur Funktionsweise von API-Ebenen finden Sie unter Was ist eine API? Stufe?
Wichtige Verhaltensänderungen
Wenn Sie bereits eine App für Android veröffentlicht haben, beachten Sie, dass diese von Änderungen in Android 5.0 betroffen sein können.
Vollständige Informationen finden Sie unter Änderungen bei Android 5.0.
Benutzeroberfläche
Material Design-Unterstützung
Android 5.0 unterstützt das neue Material Design von Android . Ihr könnt Apps mit Material Design erstellen, die visuell dynamisch sind und Übergänge von UI-Elementen, die sich für Nutzende natürlich anfühlen. Zu diesem Support gehören:
- Das Thema „Material“
- Schatten anzeigen
- Das
RecyclerView
-Widget - Drehbare Animations- und Stileffekte
- Material Design-Animations- und Aktivitätsübergangseffekte
- Animatoren für Ansichtseigenschaften basierend auf dem Ansichtsstatus
- Anpassbare UI-Widgets und App-Leisten mit Farbpaletten, die Sie selbst steuern können
- Animierte und nicht animierte Drawables basierend auf XML-Vektorgrafiken
Weitere Informationen zum Hinzufügen von Material Design-Funktionen zu deiner App findest du unter Material Design:
Gleichzeitige Dokumente und Aktivitäten auf dem Bildschirm „Zuletzt verwendet“
In früheren Versionen
aktueller Bildschirm
Für jede App, mit der der Nutzer interagiert hat, nur eine Aufgabe anzeigen kann
zuletzt verwendet haben. Ihre App kann jetzt bei Bedarf weitere Aufgaben für zusätzliche
gleichzeitige Aktivitäten für Dokumente. Diese Funktion erleichtert das Multitasking,
können Nutzende schnell zwischen einzelnen Aktivitäten und Dokumenten
auf dem Bildschirm „Zuletzt verwendet“ angezeigt. So kannst du in allen Apps ganz einfach zwischen den Geräten wechseln.
Beispiele für gleichzeitige Aufgaben sind z. B. geöffnete Tabs in einem Web-
Browser-App, Dokumente in einer Produktivitäts-App, gleichzeitige Übereinstimmungen in
oder in einer Messaging-App chatten. Deine App kann Aufgaben verwalten
durch die Klasse ActivityManager.AppTask
.
Eine logische Unterbrechung einzufügen, damit das System Ihre Aktivität als neue
zu verwenden, verwenden Sie FLAG_ACTIVITY_NEW_DOCUMENT
, wenn
Starten der Aktivität mit startActivity()
Dieses Verhalten erhalten Sie auch, indem Sie die
<Aktivität>
documentLaunchMode
-Attribut des Elements auf "intoExisting"
oder
"always"
.
Damit der Bildschirm „Zuletzt verwendet“ nicht überladen wird, können Sie die maximale Anzahl der
Aufgaben aus Ihrer App, die auf diesem Bildschirm angezeigt werden können. Legen Sie dazu den Parameter
<Anwendung>
Attribut android:maxRecents
. Der aktuelle
Maximal können 50 Aufgaben pro Nutzer angegeben werden (25 bei Geräten mit wenig RAM).
Sie können festlegen, dass Aufgaben auf dem Bildschirm „Zuletzt verwendet“ auch nach einem Neustart bestehen bleiben. Zum Steuern
des Persistenzverhaltens, verwenden Sie
android:persistableMode
. Sie können auch
die visuellen Eigenschaften einer Aktivität auf dem Bildschirm „Zuletzt verwendet“, z. B.
die Farbe, das Label und das Symbol der Aktivität
setTaskDescription()
.
WebView-Updates
Android 5.0 aktualisiert die WebView
Implementierung in Chromium M37 mit verbesserter Sicherheit und Stabilität,
sowie Fehlerkorrekturen. Der Standardstring für den User-Agent
WebView
mit Android 5.0 hat
wurde aktualisiert, um 37.0.0.0 als Versionsnummer aufzunehmen.
In diesem Release wird die Klasse PermissionRequest
eingeführt.
wodurch deine App die Berechtigung „WebView
“ erteilen kann
Zugriff auf geschützte Ressourcen wie Kamera und Mikrofon über Web-APIs
z. B. getUserMedia(). Ihre App muss die entsprechenden
Android-Berechtigungen für diese Ressourcen, um dem
WebView
Mit der neuen Methode onShowFileChooser()
können Sie jetzt ein Eingabeformularfeld in der WebView
verwenden,
und starten Sie eine Dateiauswahl, um Bilder und Dateien auf dem Android-Gerät auszuwählen.
Außerdem unterstützt diese Version die WebAudio WebGL und Offene Standards von WebRTC. Weitere Informationen zu den neuen Funktionen in dieser Version finden Sie unter WebView für Android
Bildschirmaufnahme und -freigabe
Mit Android 5.0 können Sie Funktionen zur Bildschirmaufnahme und Bildschirmfreigabe
Ihre App mit den neuen android.media.projection
APIs. Diese Funktion
ist nützlich, wenn Sie beispielsweise in einem Video die Bildschirmfreigabe aktivieren möchten.
Videokonferenz-App.
Die neue Methode createVirtualDisplay()
ermöglicht es Ihrer App, den Inhalt des Hauptbildschirms zu erfassen (Standardeinstellung
Display) in ein Surface
-Objekt umgewandelt, das Ihre App dann
über das Netzwerk senden. Die API lässt nur die Aufnahme eines nicht sicheren Bildschirms zu
und nicht die Systemaudioinhalte. Um mit der Bildschirmaufnahme zu beginnen, muss deine App zuerst
um die Zustimmung des Nutzers einzuholen, indem Sie mithilfe eines
Intent
erhalten durch
createScreenCaptureIntent()
.
Ein Beispiel für die Verwendung der neuen APIs finden Sie unter MediaProjectionDemo
.
im Beispielprojekt.
Benachrichtigungen
Benachrichtigungen auf dem Sperrbildschirm
Auf dem Sperrbildschirm unter Android 5.0 können Benachrichtigungen. Nutzer können in den Einstellungen festlegen, ob sie dies erlauben möchten oder nicht. werden vertrauliche Benachrichtigungsinhalte über einem sicheren Sperrbildschirm angezeigt.
Deine App kann festlegen, welche Detailgenauigkeit bei Benachrichtigungen angezeigt wird
über dem Sperrbildschirm angezeigt. Rufen Sie zum Festlegen der Sichtbarkeit
setVisibility()
und
geben Sie einen der folgenden Werte an:
VISIBILITY_PRIVATE
: Zeigt grundlegende Informationen wie das Benachrichtigungssymbol an, blendet aber die den gesamten Inhalt der Benachrichtigung.VISIBILITY_PUBLIC
: Der vollständige Inhalt der Benachrichtigung wird angezeigt.VISIBILITY_SECRET
: Es wird nichts angezeigt, auch nicht das Benachrichtigungssymbol.
Wenn die Sichtbarkeitsstufe VISIBILITY_PRIVATE
ist,
können Sie auch eine Version
der Benachrichtigung bereitstellen,
Inhalte, in denen personenbezogene Daten verborgen bleiben. Eine SMS-App könnte beispielsweise
Benachrichtigung mit der Meldung „Du hast drei neue SMS“ aber die Nachricht wird ausgeblendet,
von Inhalten und Absendern. Erstellen Sie für diese alternative Benachrichtigung zuerst den
Ersatzbenachrichtigung mit Notification.Builder
. Wann?
das Objekt für private Benachrichtigungen erstellen,
über die
setPublicVersion()
-Methode.
Benachrichtigungsmetadaten
Android 5.0 verwendet Metadaten, die mit Ihren App-Benachrichtigungen verknüpft sind.
um die Benachrichtigungen intelligenter zu sortieren. Rufen Sie zum Festlegen der Metadaten die Methode
folgenden Methoden in Notification.Builder
, wenn Sie
Benachrichtigung erstellen:
setCategory()
: Teilt dem System mit, wie mit App-Benachrichtigungen verfahren werden soll, wenn Gerät sich im Prioritätsmodus befindet, z. B. wenn eine Benachrichtigung für ein eingehenden Anruf, Chatnachricht oder Wecker).setPriority()
: Die Benachrichtigung wird als mehr oder weniger wichtig als normale Benachrichtigungen markiert. Benachrichtigungen, bei denen das Prioritätsfeld aufPRIORITY_MAX
oderPRIORITY_HIGH
erscheinen in einer wird ein kleines unverankertes Fenster angezeigt, wenn die Benachrichtigung auch einen Ton oder eine Vibration aufweist.addPerson()
: Hier können Sie eine oder mehrere Personen hinzufügen, die für eine Benachrichtigung relevant sind. Damit kann deine App dem System signalisieren, dass sie gruppiert werden soll Benachrichtigungen von den angegebenen Personen oder Benachrichtigungen dieser Personen einstufen wichtiger sind.
Grafik
Unterstützung für OpenGL ES 3.1
Android 5.0 bietet jetzt auch Java-Oberflächen und native Unterstützung für OpenGL ES 3.1. Die wichtigsten neuen Funktionen von OpenGL ES 3.1 umfassen:
- Compute-Shader
- Shader-Objekte trennen
- Indirekte Zeichenbefehle
- Multisample- und Schablonentexturen
- Verbesserungen der Schattierungssprache
- Erweiterungen für erweiterte Mischmodi und Debugging
- Abwärtskompatibilität mit OpenGL ES 2.0 und 3.0
Die Java-Oberfläche für OpenGL ES 3.1 unter Android bietet
GLES31
Wenn Sie OpenGL ES 3.1 verwenden, müssen Sie
Deklarieren Sie dies in Ihrer Manifest-Datei mit dem
<uses-feature>
-Tag und dem Attribut android:glEsVersion
. Beispiel:
<manifest> <uses-feature android:glEsVersion="0x00030001" /> ... </manifest>
Weitere Informationen zur Verwendung von OpenGL ES, einschließlich der Prüfung der der von Ihrem Gerät unterstützten OpenGL ES-Version Leitfaden zur OpenGL ES API
Android-Erweiterungspaket
Zusätzlich zu OpenGL ES 3.1 bietet diese Version ein Erweiterungspaket mit
Java-Oberflächen und native Unterstützung für erweiterte Grafikfunktionen. Diese
-Erweiterungen werden von Android als einzelnes Paket behandelt. (Wenn die
ANDROID_extension_pack_es31a
Erweiterung ist vorhanden, kann deine App
Davon ausgehen, dass alle Erweiterungen im Paket vorhanden sind, und die Schattierungssprache aktivieren
Funktionen mit einer einzigen #extension
-Anweisung.)
Das Erweiterungspaket unterstützt:
- Garantierte Fragment-Shader-Unterstützung für Shader-Speicherpuffer, Bilder und Atomics (Fragment-Shader ist in OpenGL ES 3.1 optional.)
- Tessellation- und Geometrie-Shader
- ASTC-Texturkomprimierungsformat (LDR)
- Interpolation und Schattierung pro Stichprobe
- Verschiedene Mischmodi für jeden Farbanhang in einem Frame-Zwischenspeicher
Die Java-Schnittstelle für das Erweiterungspaket wird mit
GLES31Ext
In Ihrem App-Manifest können Sie deklarieren, dass
Ihre App darf nur auf Geräten installiert werden, die das Erweiterungspaket unterstützen.
Beispiel:
<manifest> <uses-feature android:name=“android.hardware.opengles.aep” android:required="true" /> ... </manifest>
Medien
Camera API für erweiterte Kamerafunktionen
Android 5.0 führt die neue
android.hardware.camera2
API für die feinkörnige Aufnahme und Bildverarbeitung. Sie können jetzt
auf die Kamerageräte, die dem System zur Verfügung stehen,
getCameraIdList()
und eine Verbindung zu einem bestimmten Gerät
openCamera()
.
Erstelle ein CameraCaptureSession
, um mit der Aufnahme von Bildern zu beginnen
und geben Sie die Surface
-Objekte zum Senden erfasster Bilder an.
CameraCaptureSession
kann so konfiguriert werden:
einzelne oder mehrere Bilder in einer Bilderserie aufzunehmen.
Um benachrichtigt zu werden, wenn neue Bilder aufgenommen werden, implementieren Sie den
CameraCaptureSession.CaptureCallback
-Listener
und legen Sie ihn in Ihrer Aufnahmeanforderung fest. Wenn das System nun das Bild vervollständigt,
Aufnahmeanfrage, deine CameraCaptureSession.CaptureCallback
erhält Listener einen Aufruf an
onCaptureCompleted()
,
und stellt die Metadaten zur Bilderfassung in einer
CaptureResult
Mit der Klasse CameraCharacteristics
kann Ihr
App erkennen, welche Kamerafunktionen auf einem Gerät verfügbar sind. Das Objekt
Die Eigenschaft INFO_SUPPORTED_HARDWARE_LEVEL
steht für den Funktionsumfang der Kamera.
- Alle Geräte unterstützen mindestens die
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
-Hardwarestufe mit Funktionen entspricht in etwa der der verworfenenCamera
der API erstellen. - Geräte, die die
INFO_SUPPORTED_HARDWARE_LEVEL_FULL
-Hardwarestufe unterstützen, können manuell Kontrolle über die Erfassung und Nachverarbeitung sowie die Erfassung hochauflösender Bilder. bei hohen Frame-Rates.
Um zu sehen, wie Sie die aktualisierte
Kamera
API, siehe die Implementierung von Camera2Basic
und Camera2Video
in dieser Version.
Audiowiedergabe
Diese Version enthält die folgenden Änderungen an
AudioTrack
:
- Deine App kann jetzt Audiodaten im Gleitkommaformat bereitstellen
(
ENCODING_PCM_FLOAT
) Dieses ermöglicht einen größeren Dynamikumfang, eine einheitlichere Genauigkeit und einen größeren Toleranzbereich. Die Gleitkommaarithmetik ist besonders bei Zwischenberechnungen nützlich. Wiedergabeendpunkte verwenden für Audiodaten das Ganzzahlformat mit geringerer Bittiefe. (In Android 5.0 sind Teile der internen Pipeline noch nicht Gleitkomma.) - Deine App kann jetzt Audiodaten als
ByteBuffer
in folgendem Land bereitstellen: im selben Format wie vonMediaCodec
angegeben. - Das
WRITE_NON_BLOCKING
kann das Zwischenspeichern und Multithreading für einige Apps vereinfachen.
Medienwiedergabesteuerung
Mit den neuen APIs für Benachrichtigungen und Medien
über die Medienwiedergabe informiert und Albumcover extrahiert und angezeigt werden können.
Die Steuerung der Medienwiedergabe über eine Benutzeroberfläche und einen Dienst ist jetzt mit der neuen
MediaSession
und
MediaController
Klassen.
Die neue MediaSession
-Klasse ersetzt
die verworfene Klasse RemoteControlClient
und bietet
Eine einzelne Gruppe von Callback-Methoden für die Handhabung von Transportsteuerelementen und Medienschaltflächen.
Wenn Ihre App die Medienwiedergabe ermöglicht und auf dem Android-Gerät
TV oder
Wear-Plattform zu nutzen, verwenden Sie
Klasse MediaSession
für den Transport
mit denselben Callback-Methoden erstellen.
Sie können jetzt Ihre eigene Mediensteuerungs-App mit dem neuen
Klasse MediaController
. Dieser Kurs bietet
Thread-sichere Methode, um die Medienwiedergabe über den UI-Prozess Ihrer App zu überwachen und zu steuern.
Geben Sie beim Erstellen eines Controllers einen MediaSession.Token
an
-Objekt, damit deine App mit dem angegebenen MediaSession
interagieren kann.
Mit den MediaController.TransportControls
-Methoden
können Sie Befehle wie play()
,
stop()
,
skipToNext()
,
und setRating()
um die Medienwiedergabe
in dieser Sitzung zu steuern. Mit dem Controller kannst du auch
Registrieren Sie ein MediaController.Callback
-Objekt bei
Metadaten und Statusänderungen
in der Sitzung überwachen.
Darüber hinaus können Sie umfangreiche Benachrichtigungen erstellen, die eine Wiedergabesteuerung ermöglichen.
an eine Mediensitzung mit dem neuen Notification.MediaStyle
gebunden
.
Medien durchsuchen
Mit Android 5.0 können Apps nun Medieninhalte durchsuchen
einer anderen App über das neue
android.media.browse
der API erstellen. Um Medieninhalte in Ihrer App sichtbar zu machen, erweitern Sie die
Klasse MediaBrowserService
. Ihre Implementierung von
MediaBrowserService
sollte Zugriff auf eine
MediaSession.Token
, damit Apps Medieninhalte abspielen können
die über Ihren Dienst bereitgestellt werden.
Um mit einem Medienbrowser-Dienst zu interagieren, verwenden Sie den
Klasse MediaBrowser
. Komponente angeben
Name für ein MediaSession
-Element, wenn Sie ein
MediaBrowser
-Instanz. In dieser Browserinstanz
kann Ihre App dann eine Verbindung zum verknüpften Dienst herstellen und ein
MediaSession.Token
Objekt zur Wiedergabe von Inhalten offengelegt
über diesen Dienst.
Speicher
Verzeichnisauswahl
Android 5.0 erweitert die Storage Access Framework Damit Nutzer eine ganze Verzeichnisstruktur auswählen können, sodass Apps Lese-/Schreibzugriff haben allen enthaltenen Dokumenten hinzugefügt, ohne dass für jedes Element eine Bestätigung durch den Nutzer erforderlich ist.
Um eine Verzeichnisunterstruktur auszuwählen, erstellen und senden Sie eine
OPEN_DOCUMENT_TREE
die Nutzerabsicht verstehen. Das System zeigt alle
DocumentsProvider
Instanzen, die die Unterstrukturauswahl unterstützen,
Nutzer können ein Verzeichnis suchen und auswählen. Der zurückgegebene URI steht für
Zugriff auf die ausgewählte Unterstruktur. Sie können dann buildChildDocumentsUriUsingTree()
verwenden.
und buildDocumentUriUsingTree()
zusammen mit
query()
um die Unterstruktur zu erkunden.
Mit der neuen Methode createDocument()
können Sie überall neue Dokumente oder Verzeichnisse erstellen
unter der Unterstruktur. Verwenden Sie zum Verwalten vorhandener Dokumente
renameDocument()
und
deleteDocument()
.
COLUMN_FLAGS
prüfen
um den Support des Anbieters für diese Aufrufe zu überprüfen, bevor Sie sie veranlassen.
Wenn Sie eine DocumentsProvider
implementieren und
Um die Auswahl einer Unterstruktur zu unterstützen, implementieren Sie isChildDocument()
und fügen Sie FLAG_SUPPORTS_IS_CHILD
ein
in COLUMN_FLAGS
.
Mit Android 5.0 werden außerdem neue paketspezifische Verzeichnisse auf
freigegebenen Speicher, in dem deine App Mediendateien für die Verwendung ablegen kann
MediaStore
Das neue
getExternalMediaDirs()
gibt Pfade zu diesen zurück.
Verzeichnisse auf allen gemeinsam genutzten Speichergeräten. Ähnlich wie bei
getExternalFilesDir()
,
Ihre App benötigt keine zusätzlichen Berechtigungen, um auf die zurückgegebenen Pfade zuzugreifen. Die
sucht die Plattform in diesen Verzeichnissen regelmäßig nach neuen Medien. Sie können
MediaScannerConnection
verwenden, um explizit nach neuen
Inhalte.
Drahtlos & Konnektivität
Mehrere Netzwerkverbindungen
Android 5.0 bietet neue Multi-Netzwerk-APIs, mit denen Ihre App dynamisch nach verfügbaren Netzwerken mit bestimmten Funktionen suchen und eine Verbindung zu ihnen herzustellen. Diese Funktion ist nützlich, wenn Ihre App ein spezielles Netzwerk wie SUPL, MMS oder Mobilfunkanbieter-Abrechnungsnetzwerk erfordert, oder wenn Sie Daten mit einem bestimmten Transportprotokoll senden möchten.
So können Sie über Ihre App ein Netzwerk auswählen und eine Verbindung dazu herstellen: Schritte:
- Erstellen Sie ein
ConnectivityManager
. - Verwenden Sie die Klasse
NetworkRequest.Builder
, um einNetworkRequest
-Objekt und geben Sie die Netzwerkfunktionen an und Mobilitätsform, für die sich Ihre App interessiert. - Rufe
requestNetwork()
auf, um nach geeigneten Netzwerken zu suchen oderregisterNetworkCallback()
und übergeben SieNetworkRequest
-Objekt und eine Implementierung vonConnectivityManager.NetworkCallback
. Verwenden Sie die MethoderequestNetwork()
, wenn du nach der Erkennung aktiv zu einem geeigneten Netzwerk wechseln möchtest; zum Empfangen von nur Benachrichtigungen für gescannte Netzwerke erhalten, ohne aktiv zu wechseln, verwenden Sie dieregisterNetworkCallback()
.
Wenn das System ein geeignetes Netzwerk erkennt, stellt es eine Verbindung zum Netzwerk her
ruft die Methode
onAvailable()
Callback des Nutzers an. Sie können das Network
-Objekt vom Callback an
um zusätzliche Informationen
zum Netzwerk zu erhalten oder Traffic
ausgewähltes Netzwerk.
Bluetooth Low Energy
Mit Android 4.3 wurde eine Plattformunterstützung Bluetooth Low Energy (Bluetooth LE) dabei. Unter Android 5.0 kann ein Android-Gerät jetzt Sie dienen als Bluetooth LE-Peripheriegerät. Apps können diese Funktion nutzen um sie den Geräten in der Nähe bekannt zu machen. Sie können z. B. Apps erstellen, mit denen ein Gerät als Schrittzähler oder Gesundheitsüberwachungsgerät fungiert und mit einem anderen Bluetooth LE-Gerät übertragen.
Mit den neuen android.bluetooth.le
APIs können deine Apps Nachrichten an alle senden
Anzeigen, Suchen nach Antworten und Herstellen von Verbindungen über Bluetooth in der Nähe
LE-Geräte Um die neuen Werbe- und Scanfunktionen zu nutzen, fügen Sie die
BLUETOOTH_ADMIN
in deinem Manifest. Wenn Nutzer deine App im Play Store aktualisieren oder herunterladen,
wird er gebeten, Ihrer App die folgende Berechtigung zu erteilen:
Bluetooth-Verbindungsinformationen: Ermöglicht der App die Steuerung von Bluetooth,
wie das Übertragen von Informationen an Bluetooth-Geräte in der Nähe oder das Abrufen von Informationen von diesen.“
Um mit der Werbung für Bluetooth LE zu beginnen, damit andere Geräte
Ihre App, rufen Sie
startAdvertising()
und übergeben eine Implementierung der
Klasse AdvertiseCallback
. Das Callback-Objekt
einen Bericht über den Erfolg oder Misserfolg der Werbung erhält.
Unter Android 5.0 wird die Klasse ScanFilter
eingeführt, damit
dass deine App nur nach den
bestimmte Gerätetypen,
an denen sie interessiert sind. So starten Sie die Bluetooth-Suche:
LE-Geräte, startScan()
anrufen
und übergeben eine Liste von Filtern. Beim Methodenaufruf müssen Sie auch eine
Implementierung von ScanCallback
, um zu melden,
Bluetooth LE-Anzeige wurde gefunden.
Verbesserungen bei NFC
Android 5.0 fügt diese Verbesserungen hinzu, um breitere Flexible Nutzung von NFC:
- Android Beam ist jetzt im share-Menü verfügbar.
- Ihre App kann Android Beam auf dem Gerät des Nutzers aufrufen, um Daten zu teilen, indem sie
invokeBeam()
wird angerufen. So müssen Nutzende das Gerät nicht manuell gegen ein anderes antippen. NFC-fähiges Gerät zum Abschließen der Datenübertragung. - Mit der neuen Methode
createTextRecord()
können Sie einen NDEF-Eintrag mit UTF-8-Textdaten erstellen. - Wenn Sie eine Zahlungs-App entwickeln, können Sie jetzt
eine NFC-Anwendungs-ID (AID) dynamisch registrieren, indem Sie
registerAidsForService()
Sie können auchsetPreferredService()
verwenden, um den bevorzugten Dienst zur Kartenemulation festzulegen, der wird verwendet, wenn eine bestimmte Aktivität im Vordergrund ausgeführt wird.
Projekt Volta
Neben den neuen Funktionen bietet Android 5.0 auch Verbesserungen beim Akku Leben. Mit den neuen APIs und Tools die Leistungsfähigkeit deiner App besser nachvollziehen und optimieren konsumiert wird.
Jobs planen
Android 5.0 bietet eine neue JobScheduler
Eine API, mit der Sie die Akkulaufzeit optimieren können, indem Sie Jobs definieren, die das System ausführen soll
asynchron zu einem späteren Zeitpunkt oder unter bestimmten Bedingungen (z. B. wenn das
Gerät wird geladen. Die Jobplanung ist in folgenden Situationen nützlich:
- Die App enthält nicht für Nutzer sichtbare Aufgaben, die Sie aufschieben können.
- Die App enthält Vorgänge, die Sie ausführen möchten, wenn das Gerät angeschlossen ist.
- Die App hat eine Aufgabe, die einen Netzwerkzugriff oder ein WLAN erfordert
- Die App enthält eine Reihe von Aufgaben, die Sie regelmäßig als Batch ausführen möchten. ein.
Eine Arbeitseinheit wird von einem JobInfo
-Objekt eingeschlossen.
Dieses Objekt gibt die Planungskriterien an.
Verwenden Sie die Klasse JobInfo.Builder
, um zu konfigurieren, wie die
geplante Aufgabe ausgeführt werden soll. Sie können die Ausführung der Aufgabe unter bestimmten
Bedingungen wie:
- Starten, wenn das Gerät aufgeladen wird
- Starten, wenn das Gerät mit einem kostenlosen Netzwerk verbunden ist
- Starten, wenn das Gerät inaktiv ist
- Sie müssen vor einer bestimmten Frist oder mit einer minimalen Verzögerung abgeschlossen werden.
Sie können beispielsweise Code wie diesen hinzufügen, um Ihre Aufgabe auf einem gebührenfreies Netzwerk:
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);
Wenn das Gerät regelmäßig mit Strom versorgt wird, d. h. seit längerer Zeit an die Stromversorgung angeschlossen ist, als 2 Minuten und der Akkuladestand gesund) führt das System alle geplanten Jobs aus, die zur Ausführung bereit sind, auch wenn der Job Frist ist noch nicht abgelaufen.
Ein Beispiel für die Verwendung der JobScheduler
API:
finden Sie im JobSchedulerSample
-Implementierungsbeispiel in diesem Release.
Entwicklertools für Akkunutzung
Der neue dumpsys batterystats
-Befehl generiert interessante
Statistische Daten zur Akkunutzung eines Geräts, sortiert nach individueller Nutzer-ID
(UID) bezeichnet. Die Statistiken umfassen:
- Verlauf der akkubezogenen Ereignisse
- Globale Statistiken für das Gerät
- Ungefährer Stromverbrauch pro UID und Systemkomponente
- Mobile ms pro Paket pro App
- Zusammengefasste System-UID-Statistiken
- Aggregierte App-UID-Statistiken
Verwenden Sie die Option --help
, um mehr über die verschiedenen Optionen für
die Ausgabe anpassen. Zum Beispiel, um Informationen zum Akkuverbrauch
Statistiken für ein bestimmtes App-Paket seit dem letzten Aufladen des Geräts abrufen, führe diese
Befehl:
$ adb shell dumpsys batterystats --charged <package-name>
Sie können die
Akkuverlauf
auf die Ausgabe des Befehls dumpsys
,
Generierung einer HTML-Visualisierung der Energieereignisse aus den Protokollen Dieses
. Dadurch können Sie die Akkus besser verstehen und diagnostizieren.
Probleme.
Android am Arbeitsplatz und im Bildungsbereich
Verwaltete Bereitstellung
Android 5.0 bietet neue Funktionen zum Ausführen von Apps in einer Unternehmensumgebung. A Geräteadministrator kann einen verwalteten Bereitstellungsprozess starten, um eine Co-Präsentation hinzuzufügen, aber separate verwaltetes Profil auf einem Gerät, wenn der Nutzer bereits ein privates Konto hat. Apps, die verwalteten Profilen zugeordnet sind, werden neben nicht verwaltete Apps im Launcher, auf dem Bildschirm „Zuletzt verwendet“ und in den Benachrichtigungen des Nutzers angezeigt.
Um den verwalteten Bereitstellungsprozess zu starten, senden Sie
ACTION_PROVISION_MANAGED_PROFILE
in Intent
. Wenn die
erfolgreich war, löst das System den
onProfileProvisioningComplete()
-Callback.
Sie können dann setProfileEnabled()
anrufen, um
Dieses verwaltete Profil aktivieren.
Standardmäßig ist nur ein kleiner Teil der Apps im verwalteten Profil aktiviert.
Sie können zusätzliche Apps im verwalteten Profil installieren, indem Sie folgenden Befehl aufrufen:
enableSystemApp()
Wenn du eine Launcher-App entwickelst, kannst du die neue LauncherApps
-Klasse verwenden, um eine Liste mit Aktivitäten zu erhalten, die du veröffentlichen kannst.
für den aktuellen Nutzer und alle zugehörigen verwalteten Profile. Dein Launcher
Die verwalteten Apps werden visuell hervorgehoben, indem am Symbol ein Arbeitsprofil hinzugefügt wird.
Drawable. Rufen Sie zum Abrufen des Badge-Symbols Folgendes auf:
getUserBadgedIcon()
Informationen zur Verwendung der neuen Funktion finden Sie in der
Implementierungsbeispiel für BasicManagedProfile
in diesem Release.
Geräteeigentümer
Mit Android 5.0 kann eine Geräteeigentümer-App bereitgestellt werden. Ein Gerät
ist eine spezialisierte Art von
Geräteadministrator
die die zusätzliche Fähigkeit hat, sekundäre Nutzer zu erstellen und zu entfernen
Globale Einstellungen auf dem Gerät konfigurieren Die App des Geräteeigentümers kann die
Methoden in der DevicePolicyManager
-Klasse,
Detaillierte Kontrolle über Konfiguration, Sicherheit und Apps auf verwalteten Geräten
Ein Gerät kann immer nur einen aktiven Geräteinhaber haben.
Zum Bereitstellen und Aktivieren eines Geräteinhabers müssen Sie eine NFC-Datenübertragung durchführen von einer Programmier-App an das Gerät übertragen, während sich das Gerät im nicht eingerichteten Zustand befindet. Bundesstaat. Diese Datenübertragung sendet die gleichen Informationen wie im Bereitstellungs-Intent Verwaltete Bereitstellung beschrieben.
Bildschirm anpinnen
Mit Android 5.0 wird eine neue API für die Bildschirmfixierung eingeführt, mit der Sie vorübergehend Nutzer daran hindern, Ihre Aufgabe zu verlassen oder von Benachrichtigungen gestört zu werden. Dies ist beispielsweise nützlich, wenn Sie eine Bildungs-App entwickeln, die anspruchsvollen Prüfungsanforderungen unter Android, einem einzigen Zweck Kiosk-Anwendung. Sobald deine App die Bildschirmfixierung aktiviert hat, können Nutzer nichts mehr sehen Benachrichtigungen erhalten, auf andere Apps zugreifen oder zum Startbildschirm zurückkehren bis die App den Modus beendet.
Es gibt zwei Möglichkeiten, die Bildschirmfixierung zu aktivieren:
- Manuell:Nutzer können die Bildschirmfixierung aktivieren. Einstellungen > Sicherheit > Bildschirm anpinnen und wählen Sie die gewünschten Aufgaben aus. indem Sie auf das grüne Stecknadelsymbol auf dem Bildschirm „Zuletzt verwendet“ tippen.
- Programmatisch:Damit wird die Bildschirmfixierung aktiviert.
programmatisch aufrufen:
startLockTask()
aus Ihrer App. Wenn die anfragende App kein Geräteeigentümer ist, wird der Nutzer aufgefordert, zur Bestätigung. Eine Geräteeigentümer-App kann diesetLockTaskPackages()
können Sie festlegen, dass Apps ohne Bestätigung durch den Nutzer angepinnt werden können.
Wenn die Aufgabensperre aktiv ist, geschieht Folgendes:
- Die Statusleiste ist leer und Nutzerbenachrichtigungen und Statusinformationen sind ausgeblendet.
- Die Schaltflächen für den Startbildschirm und die zuletzt verwendeten Apps sind ausgeblendet.
- Andere Apps können keine neuen Aktivitäten starten.
- Die aktuelle App kann neue Aktivitäten starten, solange das neue Aufgaben zu erstellen.
- Wenn die Bildschirmfixierung von einem Geräteeigentümer aktiviert wird, bleibt der Nutzer gesperrt.
an Ihre App senden, bis sie anruft
stopLockTask()
- Wenn die Bildschirmfixierung von einer anderen App aktiviert wird, die kein Geräteeigentümer oder direkt vom Nutzer angezeigt wird, kann er die App durch Gedrückthalten der Schaltfläche „Zurück“ und „Zuletzt verwendet“ beenden.
Druckwerk
PDF als Bitmap rendern
Sie können PDF-Dokumentseiten jetzt für den Druck in Bitmapbilder rendern, indem Sie
mit der neuen Klasse PdfRenderer
. Sie müssen eine
ParcelFileDescriptor
, die suchbar sind (d. h. der Inhalt)
auf die nach dem Zufallsprinzip zugegriffen werden kann), in die das System den druckbaren Inhalt schreibt.
Ihre App kann eine Seite zum Rendern mit
openPage()
und dann anrufen
render()
um die geöffnete PdfRenderer.Page
in eine Bitmap umzuwandeln. Ich
zusätzliche Parameter festlegen, wenn Sie nur einen Teil des
Dokument in ein Bitmapbild umwandeln, z. B. um
gekacheltes Rendering
um das Dokument zu vergrößern).
Ein Beispiel für die Verwendung der neuen APIs finden Sie unter PdfRendererBasic
.
Stichprobe.
System
App-Nutzungsstatistiken
Du kannst jetzt auf einem Android-Gerät auf den App-Nutzungsverlauf zugreifen
neue android.app.usage
API Diese API bietet eine detailliertere Nutzung
als die verworfenen
getRecentTasks()
-Methode.
Damit Sie diese API verwenden können, müssen Sie zuerst den Parameter
"android.permission.PACKAGE_USAGE_STATS"
in deinem Manifest.
Der Nutzer muss auch den Zugriff für diese App unter Einstellungen > Sicherheit > Apps
mit Zugriff auf Nutzungsdaten.
Die Nutzungsdaten werden für jede App einzeln erhoben Daten in täglichen, wöchentlichen, monatlichen und jährlichen Intervallen. Die maximale Dauer dass das System diese Daten speichert:
- Tägliche Daten: 7 Tage
- Wöchentliche Daten: 4 Wochen
- Monatliche Daten: 6 Monate
- Jährliche Daten: 2 Jahre
Für jede App zeichnet das System die folgenden Daten auf:
- Der Zeitpunkt der letzten Nutzung der App
- Die Gesamtdauer der App im Vordergrund während dieses Zeitintervalls (nach Tag, Woche, Monat oder Jahr)
- Zeitstempel erfassen, wenn eine Komponente (durch einen Paket- und Aktivitätsnamen identifiziert) werden im Laufe eines Tages in den Vorder- oder Hintergrund verschoben.
- Zeitstempel erfassen, wenn sich eine Gerätekonfiguration geändert hat, z. B. wenn der Geräteausrichtung aufgrund der Drehung geändert)
Tests und Zugänglichkeits-
Tests und Verbesserungen der Bedienungshilfen
Android 5.0 bietet folgende Unterstützung für Tests und Barrierefreiheit:
- Das neue
getWindowAnimationFrameStats()
undgetWindowContentFrameStats()
-Methoden erfassen Framestatistiken für Fensteranimationen und -inhalte. Diese Methoden können Sie Instrumentierungstests schreiben, um zu bewerten, ob eine App regelmäßig aktualisiert werden, um eine reibungslose Nutzung zu gewährleisten. - Das neue
executeShellCommand()
können Sie Shell-Befehle über Ihren Instrumentierungstest ausführen. Die Die Befehlsausführung ähnelt der Ausführung vonadb shell
auf einem Host mit dem Gerät verbunden, sodass Sie Shell-basierte Tools wiedumpsys
,am
,content
undpm
. - Bedienungshilfen und Testtools, die die Accessibility APIs verwenden
(z. B.
UiAutomator
) kann jetzt detaillierte Informationen über die Eigenschaften von Fenstern im Bildschirm, mit dem sehende Nutzende interagieren können. Um eine Liste mitAccessibilityWindowInfo
-Objekte: Rufen Sie das neuegetWindows()
. - Das neue
AccessibilityNodeInfo.AccessibilityAction
können Sie Standard- oder benutzerdefinierte Aktionen für eine bestimmteAccessibilityNodeInfo
. Das neueAccessibilityNodeInfo.AccessibilityAction
ersetzt die aktionsbezogenen APIs, die zuvor inAccessibilityNodeInfo
. - Android 5.0 bietet eine detailliertere Steuerung der Sprachausgabesynthese in
für Ihre App. Mit der neuen Klasse
Voice
kann deine App Folgendes tun: Verwendung von Sprachprofilen, die mit bestimmten Gebietsschemata, Qualität und Latenz verbunden sind -Parameter und die für die Sprachausgabe-Funktion spezifischen Parameter.
IME
Einfacherer Wechsel zwischen Eingabesprachen
Ab Android 5.0 können Nutzer leichter zwischen
alle Eingaben
Methodeneditoren (IME), die von der Plattform unterstützt werden. Die Ausführung der vorgesehenen
bei einer Wechselaktion (normalerweise durch Berühren eines Globussymbols auf der Softtastatur) gewechselt wird.
über all diese IMEs. Diese Verhaltensänderung wird durch den
shouldOfferSwitchingToNextInputMethod()
.
Außerdem prüft das Framework jetzt, ob der nächste IME einen
(und ob dieser IME den Wechsel zu einem anderen
gefolgt von diesem IME). Eine
Bei einem IME mit Wechselmechanismus wird nicht zu einem IME ohne Wechsel gewechselt. Dieses
Verhaltensänderung durch die
switchToNextInputMethod()
.
Ein Beispiel für die Verwendung der aktualisierten APIs zum Wechseln von IMEs finden Sie unter aktualisiertes Beispiel für die Implementierung der Softtastatur in dieser Version. Weitere Informationen über den Wechsel zwischen IMEs implementieren, siehe Eingabemethode erstellen.
Manifestdeklarationen
Deklarierbare erforderliche Funktionen
Die folgenden Werte werden jetzt im
<uses-feature>
So kannst du dafür sorgen, dass deine App nur auf Geräten installiert wird,
die Funktionen bereitstellen,
die Ihre App benötigt.
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
Nutzerberechtigungen
Die folgende Berechtigung wird jetzt im
<uses-permission>
-Element zur Deklaration der Berechtigungen, die deine App für den Zugriff auf bestimmte APIs benötigt.
BIND_DREAM_SERVICE
: Bei Ausrichtung auf die API ab Stufe 21 benötigen, ist diese Berechtigung für Daydream-Dienst, damit sich nur das System daran binden kann.