APIs unter Android 3.1

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 und UsbEndpoint, die Zugriff auf Standard-USB ermöglichen Schnittstellen und Endpunkte für ein Gerät.
  • UsbDeviceConnection und UsbRequest 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 an getObjectInfo() ü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 Achsen AXIS_HSCROLL und AXIS_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 letzten HOVER_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:

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 Views 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 von RtpStream, die Audionutzlasten über RTP überträgt.
  • AudioGroup, ein lokaler Audio-Hub zum Verwalten und Lautsprecher, Mikrofon und AudioStream mischen.
  • AudioCodec mit einer Sammlung von Codecs, die Sie für ein AudioStream 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 konfigurierten AudioCodec.
  • AudioGroup stellt den lokalen Endpunkt für eine Person dar. oder mehr AudioStreams. Die Mixe von AudioGroup alle AudioStreams 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 von View-Objekten animieren. Die Klasse automatisiert und optimiert die Animation der Eigenschaften und erleichtert mehrere gleichzeitige Animationen für ein View-Objekt verwalten.

      Die Verwendung von ViewPropertyAnimator ist unkompliziert. Zum Animieren von Eigenschaften für View, rufen Sie animate() an, um ein ViewPropertyAnimator-Objekt für diese View. Verwenden Sie die Methode für das ViewPropertyAnimator-Objekt, um anzugeben, welches Attribut und wie sie animiert werden. Wenn Sie beispielsweise View auf transparent machen möchten, Rufen Sie alpha(0); an. ViewPropertyAnimator-Objekt die Details für die Konfiguration der zugrunde liegenden Animator-Klasse, das Starten und das Rendern der Animation.

  • Hintergrundfarbe der Animation <ph type="x-smartling-placeholder">
      </ph>
    • Neue getBackgroundColor() und Mit setBackgroundColor(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.
  • 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 einem ValueAnimator.

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.
  • 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.
  • Kalenderansicht von einem DatePicker abrufen <ph type="x-smartling-placeholder">
  • Callbacks erhalten, wenn Ansichten getrennt werden <ph type="x-smartling-placeholder">
  • Navigationspfad-Listener für Fragment, neue onInflate()-Signatur <ph type="x-smartling-placeholder">
  • Suchergebnis in neuem Tab anzeigen <ph type="x-smartling-placeholder">
      </ph>
    • Mit einem EXTRA_NEW_SEARCH-Datenschlüssel für ACTION_WEB_SEARCH-Intents können Sie eine Suche in einem neuen Browsertab zu öffnen, anstatt in einem vorhandenen zu öffnen.
  • Drehbarer Textcursor <ph type="x-smartling-placeholder">
      </ph>
    • Du kannst jetzt ein Drawable als Textcursor angeben, indem du die neue Ressourcenattribut textCursorDrawable.
  • Angezeigtes untergeordnetes Element in Remote-Ansichten festlegen <ph type="x-smartling-placeholder">
  • 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ßerdem isGamepadButton(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.
  • Kameraposition und -drehung festlegen <ph type="x-smartling-placeholder">

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 an createWifiLock().

  • 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.
  • 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() und setAuthUserName().

Download-Manager

  • Verarbeitung abgeschlossener Downloads <ph type="x-smartling-placeholder">
  • Downloads sortiert nach Größe anzeigen <ph type="x-smartling-placeholder">

IME-Framework

  • Zusätzlichen Wertschlüssel einer Eingabemethode abrufen <ph type="x-smartling-placeholder">

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. .

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.
  • Dateideskriptor als int <ph type="x-smartling-placeholder">

WebKit

  • Cookies für Dateischemata <ph type="x-smartling-placeholder">
      </ph>
    • Die CookieManager unterstützt jetzt Cookies, die die file:-URI-Schema. Mit setAcceptFileSchemeCookies() können Sie Unterstützung für Dateischema-Cookies aktivieren/deaktivieren, bevor eine Instanz erstellt wird WebView oder CookieManager. In einer CookieManager-Instanz können Sie prüfen, ob Dateischema-Cookies verwendet werden. wird durch Aufrufen von allowFileSchemeCookies() aktiviert.
  • 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.
  • 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.

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?