Android 3.1 API'leri

API Düzeyi: 12

Geliştiriciler için Android 3.1 platformu (HONEYCOMB_MR1) Android SDK için indirilebilir bileşen. İndirilebilir platformda Android kitaplığı ve sistem resminin yanı sıra bir dizi emülatör kaplaması ve daha fazlası bulunur. İndirilebilir platform, harici kitaplık içermez.

Geliştiriciler, Android 3.1 platformuna Android SDK için indirilebilir bileşen. İndirilebilir platform şunları içerir: Android kitaplığı ve sistem görüntüsünün yanı sıra bir dizi emülatör görünümü ve daha fazla. Android 3.1'i kullanarak geliştirmeye veya test etmeye başlamak için Platformu SDK'nıza indirmek için Android SDK Yöneticisi'ni kullanın.

API'ye Genel Bakış

Aşağıdaki bölümlerde, geliştiriciler için yeniliklere ilişkin teknik bir genel bakış sunulmaktadır yeni özellikler ve çerçeve API'sinde yapılan değişiklikler dahil, kontrol edebilirsiniz.

USB API'leri

Android 3.1, bağlı çevre birimlerini platformda çalışan uygulamalarla entegre etmek için güçlü yeni API'ler sunar. API'ler USB (Evrensel Seri Yol) yığınına ve USB ana makinesi ve cihaz desteği dahil olmak üzere platformda yerleşik olarak etkileşimleridir. API'leri kullanarak geliştiriciler, çeşitli cihaz türlerini keşfetme, bunlarla iletişim kurma ve bunları yönetme USB'ye dokunun.

Yığın ve API'ler, Android destekli cihazın ana makine mi yoksa harici donanımın ana makine mi olduğuna bağlı olarak iki temel USB donanım türünü ayırt eder:

  • USB cihazı, ana makine olarak hizmet vermek için Android destekli cihaza bağlı bir donanım parçasıdır. Örneğin çoğu giriş cihazı, fare USB cihazları gibi pek çok kamera, hub ve kontrol çubuğu da buna benzer.
  • USB aksesuarı, USB girişine sahip bağlı bir donanımdır. ana bilgisayar denetleyicisi, güç sağlar ve ile iletişim kurmak üzere tasarlanmıştır. USB üzerinden Android destekli cihazlar; çeşitli çevre birimleri robotik kumandalardan müzik ekipmanlarına, egzersiz bisikletlerine kadar çeşitli aksesuarlar ve diğerleri.

USB cihazlar ve USB aksesuarları Platformun USB API'leri, takıldığında veya tutulduğunda amaca göre keşfi destekler bağımsız ve standart arayüzler, uç noktalar ve aktarım modları (kontrol, toplu ve kesme).

USB API'leri android.hardware.usb paketinde mevcuttur. Merkezi sınıf UsbManager'tür. Bu sınıf, hem USB cihazları hem de USB aksesuarlarını tanımlamak ve bunlarla iletişim kurmak için yardımcı yöntemler sağlar. Uygulamalar, UsbManager örneği edinip bağlı cihazların veya aksesuarların listesini sorgulayabilir, ardından bunlarla iletişim kurabilir ya da bunları yönetebilir. UsbManager, bir USB cihaz veya aksesuarın takılıp çıkarıldığını duyurmak için sistemin yayınladığı intent işlemlerini de belirtir.

Diğer sınıflar şunlardır:

  • UsbDevice, kuruluş dışından kişileri temsil eden bir sınıf USB cihazı olarak bağlanmış donanım (Android destekli cihaz, ana makine).
  • Harici donanımı temsil eden UsbAccessory USB ana makinesi olarak bağlanır (Android destekli cihaz, USB cihazda) olduğunu varsayalım.
  • UsbInterface ve UsbEndpoint, bir cihazın standart USB arayüzlerine ve uç noktalarına erişim sağlar.
  • Veri gönderip alma ve denetim için UsbDeviceConnection ve UsbRequest senkronize veya eşzamansız olarak USB cihazıyla mesaj alışverişi yapabilirsiniz.
  • Uç nokta türlerini, cihaz sınıflarını vb. tanımlamak için sabitler sağlayan UsbConstants.

USB grubu platformda yerleşik olarak bulunsa da asıl desteğin belirli cihazlardaki USB ana makine ve açık aksesuar modları için üretirler. Özellikle, ana makine modu uygun USB denetleyici donanımı bulunuyor.

Ayrıca, geliştiriciler Google Play'de filtreleme isteğinde bulunabilirler. uygulamaları, cihazlarında bu özelliği sağlamayan kullanıcılara gerekir. Filtreleme isteğinde bulunmak için aşağıdaki öğelerden birini veya ikisini birden uygun şekilde uygulama manifest dosyasına ekleyin:

  • Uygulamanın yalnızca USB'yi destekleyen cihazlar tarafından görülebilmesi gerekiyorsa ana makine modunda (USB cihazları bağlantısı) şu öğeyi belirtin:

    <uses-feature android:name="android.hardware.usb.host" android:required="true">

  • Uygulamanın yalnızca USB'yi destekleyen cihazlar tarafından görülebilmesi gerekiyorsa (USB ana makinelerinin bağlantısı) şu öğeyi belirtin:

    <uses-feature android:name="android.hardware.usb.accessory" android:required="true">

Google tarafından sağlananlarla etkileşime geçen uygulamaların nasıl geliştirileceğine USB aksesuarları için: geliştirici belgelerini inceleyin.

USB ana makine API'sini kullanan örnek uygulamaları incelemek için ADB Test ve Missile Başlatıcı

MTP/PTP API'sı

Android 3.1, uygulamaların doğrudan etkileşim kurmasına olanak tanıyan yeni bir MTP API'sı sunar bağlı kameralar ve diğer PTP cihazlarıyla çalışır. Yeni API, projenizin Cihazlar takıldığında ve çıkarıldığında bildirim almak için uygulamayı, bu cihazlardaki dosyaları ve depolama alanını yönetebilir, dosyalar ve meta verileri yardımcı olabilir. MTP API, MTP (Medya Aktarım Protokolü) spesifikasyonunun PTP (Resim Aktarım Protokolü) alt kümesini uygular.

MTP API, android.mtp paketinde bulunur ve şu sınıflarda:

  • MtpDevice, aşağıdaki gibi bir MTP cihazını içerir: bağlanmıştır. Bir uygulama, cihaz ve cihaz hakkında bilgi almak için yöntemlerini verilerin yanı sıra, bağlantıyı açma ve veri aktarma konularında daha fazla bilgi edinmenizi sağlar. Bu yöntemlerden bazıları şunlardır:
    • getObjectHandles(), cihazdaki tüm nesnelerin listesini döndürür ve belirtilen biçim ve üst öğeyle eşleşmelidir. Bir nesne hakkında bilgi almak için uygulaması getObjectInfo() işlevine bir herkese açık kullanıcı adı geçirebilir.
    • importFile(), uygulamanın bir nesneye ait verileri harici cihazdaki bir dosyaya kopyalamasına izin verir depolama alanına sahip olursunuz. Bu çağrı, ve cihazların hızına göre ayarlanır. Bu nedenle, özel bir ortak çalışma ileti dizisi.
    • open(). bir uygulamanın bağlı bir MTP/PTP cihazını açmasına izin verir.
    • getThumbnail() karşılığında iade bayt dizisi olarak nesnenin küçük resmini sunar.
  • MtpStorageInfo, MTP cihazındaki bir depolama birimi hakkında bilgi içerir. Bu bilgi, MTP spesifikasyonunun 5.2.2 numaralı bölümünde açıklanan StorageInfo veri kümesine karşılık gelir. Sınıftaki yöntemler, bir uygulamanın depolama biriminin açıklama dizesini, boş alanı, maksimum depolama kapasitesini depolama alanı kimliği ve birim tanımlayıcısı bulunur.
  • MtpDeviceInfo, MTP spesifikasyonunun 5.1.1 numaralı bölümünde açıklanan DeviceInfo veri kümesine karşılık gelen bir MTP cihazıyla ilgili bilgileri içerir. Sınıftaki yöntemler, uygulamaların bir cihazın üretici, model, seri numarası ve sürüm.
  • MtpObjectInfo, depolanan bir nesneyle ilgili bilgileri içerir (Bölüm 7'de açıklanan ObjectInfo Veri Kümesine karşılık gelen) MTP spesifikasyonunun 5.3.1'i. Sınıftaki yöntemler, uygulamaların nesnenin boyutu, veri biçimi, ilişkilendirme türü, oluşturma tarihi ve küçük resmi ekleyebilirsiniz.
  • MtpConstants, MTP dosyasını tanımlamak için sabit değerler sağlar biçim kodları, ilişkilendirme türü ve koruma durumu.

Yeni giriş cihazları ve hareket etkinlikleri için destek

Android 3.1, giriş alt sistemini yeni giriş cihazlarını destekleyecek şekilde genişletir ve tüm görünümlerde ve pencerelerde hareket etkinliği türlerini görebilirsiniz. Geliştiriciler, mobil cihazlarda kullanıcıların fare kullanarak uygulamalarıyla etkileşim kurmasına olanak tanıyan bu özellikler oyun kumandaları ve diğer cihazların yanı sıra dokunmatik ekranlar.

Platform; fare, kaydırma tekerleği ve izleme topuyla ilgili girişlerin işlenmesi için şunları destekler: İki yeni hareket etkinliği işlemi var:

  • ACTION_SCROLL (işaretçiyi açıklayan) örneğin fare kaydırma tekerleği gibi dokunmatik olmayan kaydırma hareketinin gerçekleştirilmiştir. MotionEvent'te AXIS_HSCROLL ve AXIS_VSCROLL eksenlerinin değeri, göreli kaydırma hareketini belirtir.
  • ACTION_HOVER_MOVE, güncel bilgileri verir herhangi bir düğmeye basılmadan önce farenin konumu ve son HOVER_MOVE etkinlikten bu yana puan. Fareyle giriş yapma ve çıkış bildirimler henüz desteklenmiyor.

InputDevice sınıfı, kontrol çubuklarını ve oyun kumandaları desteklemek için aşağıdaki yeni giriş cihazı kaynaklarını içerir:

Bu yeni kaynaklardaki hareket etkinliklerini ve farelerden gelen hareket etkinliklerini açıklamak ve iztoplarını tanımlarken platform, KeyEvent üzerindeki anahtar kodlarını tanımlamasına benzer şekilde, MotionEvent üzerinde eksen kodlarını tanımlar. Kontrol çubukları için yeni eksen kodları Oyun kumandaları arasında, AXIS_HAT_X, AXIS_HAT_Y, AXIS_RTRIGGER, AXIS_ORIENTATION, AXIS_THROTTLE ve daha pek çok kullanıcı. Mevcut MotionEvent eksenleri AXIS_X, AXIS_Y, AXIS_PRESSURE, AXIS_SIZE, AXIS_TOUCH_MAJOR, AXIS_TOUCH_MINOR, AXIS_TOOL_MAJOR, AXIS_TOOL_MINOR ve AXIS_ORIENTATION.

Ayrıca, MotionEvent bir dizi genel tanımı tanımlar. çerçeve bir öğenin nasıl eşleneceğini bilmediğinde kullanılan eksen kodları kullanabilirsiniz. Belirli cihazlar, özel segmentleri aktarmak için genel eksen kodlarını kullanabilir ve hareket verilerini uygulamaya koyabiliyoruz. Eksenlerin tam listesi ve amaçları için MotionEvent sınıf dokümanlarına bakın.

Platform, hareket etkinliklerini uygulamalara toplu olarak sağlar. Dolayısıyla, olayın içinde mevcut bir konum ve sözde birden fazla tarihsel hareket bulunabilir. Uygulamalar, geçmiş örneklerin sayısını almak için getHistorySize()'ü kullanmalı, ardından getHistoricalAxisValue()'ü kullanarak tüm geçmiş örnekleri sırayla alıp işlemelidir. Bundan sonra, başvurular mevcut getAxisValue() kullanan örnek.

Bazı eksenler özel erişimci yöntemleri kullanılarak alınabilir. Örneğin, uygulamalar getAxisValue() yerine getX()'i arayabilir. Yerleşik erişimcileri olan eksenler arasında AXIS_X, AXIS_Y, AXIS_PRESSURE, AXIS_SIZE, AXIS_TOUCH_MAJOR, AXIS_TOUCH_MINOR, AXIS_TOOL_MAJOR, AXIS_TOOL_MINOR ve AXIS_ORIENTATION.

Her giriş cihazının sistem tarafından atanmış benzersiz bir kimliği vardır ve birden fazla kaynak olduğunu varsayalım. Bir cihaz birden fazla kaynak sağladığında, birden fazla kaynak aynı ekseni kullanarak eksen verileri sağlayabilir. Örneğin, yaklaşan bir dokunma etkinliği kontrol çubuğu, ekran konumu verileri için X eksenini, kontrol çubuğu ise kontrol çubuğu kaynağından gelen etkinlik, çubuk konumu için X eksenini kullanır . Bu nedenle, uygulamaların eksenleri ve kaynakların kaynağındaki bilgilere göre değerlendirmelisiniz. Hareketi ele alırken etkinliği varsa, uygulamalar InputDevice üzerindeki yöntemleri kullanmalıdır. sınıfını kullanır. Daha açık belirtmek gerekirse, uygulamalar bir cihazın tüm eksenlerini veya cihazın belirli bir kaynağının tüm eksenlerini sorgulamak için getMotionRanges() kullanabilir. Her iki durumda da, InputDevice.MotionRange nesnesi, her eksen değeri için gösterilir.

Son olarak, kontrol çubuğu, oyun kumandası, fare ve izleme topundan gelen hareket etkinlikleri dokunma etkinlikleri olmadığından platform, bunları "genel" hareket etkinlikleri olarak View'e iletmek için yeni bir geri çağırma yöntemi ekler. Özellikle, dokunmatik olmayan hareket etkinliklerini onTouchEvent() yerine onGenericMotionEvent() numaralı telefona yapılan bir çağrı üzerinden View.

Platform, genel hareket etkinliklerini, mevcut konuma bağlı olarak etkinlik kaynağı sınıfı. SOURCE_CLASS_POINTER etkinlik dokunmaya benzer şekilde işaretçinin altındaki View simgesine gidin nasıl belirleyeceğinizi öğreneceksiniz. Diğer tüm kullanıcılar, şu anda odaklanılan View bölümüne gider. Örneğin bu, View ürününün kontrol çubuğu etkinlikleri alma. Gerekirse uygulamalar, onGenericMotionEvent() yerine bu etkinlikleri Etkinlik veya İleti düzeyinde işleyebilir.

Kontrol çubuğu hareketi kullanan örnek bir uygulamaya bakmak için etkinlikler için GameControllerInput bölümüne bakın ve GameView öğelerini açın.

RTP API'sı

Android 3.1, yerleşik RTP'sine (Gerçek Zamanlı Aktarım Protokolü) bir API sunar. yığını, hangi uygulamaların isteğe bağlı veya etkileşimli verileri yönetmek için kullanabileceği yayın. Özellikle VOIP, bas ve konuş, konferans, iletişim vb. özellikli uygulamalar ve ses akışı, oturumları başlatmak ve iletmek ya da almak için API'yi kullanabilir. veri akışlarına erişebilir.

RTP API'si android.net.rtp paketinde mevcuttur. Sınıflar şunlardır:

Sesli konferans ve benzer kullanımları desteklemek için bir uygulama örnek olarak gösterilebilir. akışın uç noktası olarak iki sınıfı kullanır:

En basit kullanım, tek bir uzak uç nokta ve yerel uç nokta içerir. Daha karmaşık kullanımlar için lütfen AudioGroup

Uygulamaların RTP API'yi kullanmak için şu tarihe kadar kullanıcıdan izin istemesi gerekir: <uses-permission android:name="android.permission.INTERNET"> tanımlanıyor bildirmelidir. Cihaz mikrofonunu edinmek için <uses-permission android:name="android.permission.RECORD_AUDIO"> izni de gerekir.

Yeniden boyutlandırılabilir uygulama widget'ları

Android 3.1 sürümünden itibaren geliştiriciler ana ekran widget'larını oluşturabilirler (yatay, dikey veya her iki eksende) yeniden boyutlandırabilirsiniz. Kullanıcılar bir cihazda dokunup yeniden boyutlandırma tutamaçlarını görün, ardından yatay ve/veya dikey tutma yerlerini kullanabilirsiniz.

Geliştiriciler herhangi bir Ana ekran widget'ını Widget'ın AppWidgetProviderInfo meta verilerinde resizeMode özelliği. için değerler resizeMode özellikleri arasında "Yatay", "dikey" ve "yok" bulunur. Bir widget'ı yatay ve dikey olarak yeniden boyutlandırılabilir olarak tanımlamak için "horizontal|vertical" değerini girin.

Aşağıda bununla ilgili bir örnek verilmiştir:

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

Ana ekran widget'ları hakkında daha fazla bilgi için Uygulama Widget'ları bölümüne bakın. belgelerinden faydalanabilirsiniz.

Animasyon çerçevesi

  • Yeni ViewPropertyAnimator sınıfı
    • Yeni ViewPropertyAnimator sınıfı, geliştiricilerin View nesnelerindeki belirli özellikleri animasyonlu hale getirmelerine uygun bir yol sunar. Sınıf ve özelliklerin animasyonunu otomatikleştirir ve optimize etmeyi, Bir View nesnesinde aynı anda birden çok animasyonu yönetebilir.

      ViewPropertyAnimator kullanımı oldukça kolaydır. Şu öğelerin özelliklerine animasyon eklemek için: View için animate() numaralı telefonu arayın söz konusu View için bir ViewPropertyAnimator nesnesi oluşturun. Şunu kullanın: yöntemleri belirtmek için ViewPropertyAnimator üzerinde nasıl canlandırılacağını öğreneceğiz. Örneğin, View rengini şeffaf hale getirmek için alpha(0); numaralı telefonu arayın. ViewPropertyAnimator nesnesi temel Animator sınıfını yapılandırma ve başlatma, animasyon ekler.

  • Animasyon arka plan rengi
    • Yeni getBackgroundColor() ve setBackgroundColor(int) yöntemleri, yalnızca pencere animasyonlarında animasyonların arkasındaki arka plan rengini almanıza/ayarlamanıza olanak tanır. Şu anda arka planın, istenen alfa düzeyiyle siyah olması gerekir.
  • ViewAnimator öğesinden animasyonlu kesir alınıyor
    • Yeni bir getAnimatedFraction() yöntem animasyon kesirini (geçen/interpolasyon) elde etmenizi sağlar en son kare güncellemesinde kullanılan kesir (ValueAnimator karesinden).

Kullanıcı arayüzü çerçevesi

  • Bir katmanın zorunlu olarak oluşturulması
    • Yeni bir buildLayer() yöntemi, bir uygulamanın bir Görünüm katmanının oluşturulmasına ve Görünüm'ün hemen ona oluşturulmasını sağlayabilir. Örneğin, bir uygulama, kendi içinde bir Görünüm oluşturmak için bu yöntemi kullanabilir katmanını kullanmanız gerekir. Görünüm karmaşıksa, katmanın karelerin atlanmasını önler.
  • Kamera mesafesi
    • Uygulamalar yeni bir yöntem kullanabilir ile uzaklığı ayarlamak için setCameraDistance(float) kamera bir görünüm olarak ekleyebilirsiniz. Bu sayede, uygulamaların 3D dönüşümleri üzerinde daha fazla kontrol sahibi görebilirsiniz.
  • Tarih Seçici'den takvim görünümü alma
  • Görüntülemeler ayrıldığında geri arama alma
  • Parça içerik haritası işleyicisi, yeni onInflate() imzası
  • Arama sonucunu yeni sekmede görüntüleme
  • Çekilebilir metin imleci
    • Artık yeni kaynak özelliği textCursorDrawable'yi kullanarak metin imleci olarak kullanılacak bir çizilebilir öğe belirtebilirsiniz.
  • Uzaktan görünümlerde görüntülenen alt öğeyi ayarlama
  • Oyun kumandaları ve diğer giriş cihazları için genel anahtarlar
    • KeyEvent, oyun kumandası düğmelerinin yerini değiştirebilir. Sınıfta ayrıca isGamepadButton(int) ve birkaç kullanıcı daha yardımcı yöntemlere yer verir.

Grafik

  • Bit eşlemleri yönetme yardımcıları
    • setHasAlpha(boolean), bir uygulamanın bir Bitmap'teki tüm piksellerin opak (yanlış) olduğunu veya bazı piksellerin opak olmayan alfa değerleri (doğru) içerebileceğini belirtmesine olanak tanır. Bazı yapılandırmalarda (ör. RGB_565 olarak) içeriyorsa bu çağrı, piksel başına alfa değerini desteklemediği için yoksayılır. değerler. Bu, çizime dair bir ipucudur. Bazı durumlarda, dikkat çekmek istediğiniz bir çizim durumu, opak olmayan bir çizime göre daha hızlı olabilir. piksel başına alfa değerlerine karşılık gelir.
    • getByteCount(), bir Bit eşlemin boyutunu alır. bayt olarak kabul edilir.
    • getGenerationId(), bir uygulamanın bir Bitmap'in değiştirilip değiştirilmediğini (ör. önbelleğe alma için) öğrenmesini sağlar.
    • sameAs(android.graphics.Bitmap) belirler belirli bir Bit Eşlem'in, boyut olarak mevcut Bit Eşlem'den farklı olup veya piksel verileri olabilir.
  • Kamera konumunu ve dönüşünü ayarlama

  • Yüksek performanslı kablosuz ağ kilidi
    • Yüksek performanslı yeni bir kablosuz kilidi, uygulamaların kablosuz bağlantı (cihazın ekranı kapalıyken bile yüksek performanslı kablosuz bağlantı) sağlar. Uzun süre müzik, video veya ses akışı sağlayan uygulamalar yüksek performanslı kablosuz bağlantı kilidiyle ekran açıkken bile akış performansı kapalı olduğundan emin olun. Daha fazla güç tükettiği için, uygulamalar ihtiyaç olduğunda yüksek performanslı bir kablosuz bağlantı kullanmaya başlayabilirsiniz. bağlantı.

      Yüksek performanslı bir kilit oluşturmak için WIFI_MODE_FULL_HIGH_PERF değerini createWifiLock() numaralı telefona sesli arama yapın.

  • Diğer trafik istatistikleri
    • Uygulamalar artık TrafficStats'teki yeni yöntemleri kullanarak daha fazla ağ kullanımı türüyle ilgili istatistiklere erişebilir. Uygulamalar, UDP istatistiklerini, paket sayısını, TCP iletim/alma yük baytlarını ve segmentlerini seçin.
  • SIP kimlik doğrulaması kullanıcı adı
    • Uygulamalar artık bir profil için SIP kimlik doğrulaması kullanıcı adını alıp ayarlayabilir kullanarak yeni getAuthUserName() ve setAuthUserName() yöntemleri.

İndirme Yöneticisi

IME çerçevesi

  • Giriş yönteminin ek değer anahtarını alma

Medya

  • Yeni ses akışı biçimleri
    • Medya çerçevesi, ham ADTS AAC içeriği için yerleşik destek sağlar. iyileştirilmiş ses akışı ile FLAC ses desteği, en yüksek kalite için sıkıştırılmış ses içeriği (kayıpsız) Desteklenen Medya Biçimleri bölümüne bakın. belgesini inceleyebilirsiniz.

üzerindeki başlatma kontrolleri durduruldu uygulamalar

Sistemin paket yöneticisi, Android 3.1'den başlayarak tüm görevleri uygulamalar için bir kontrol aracı sağlayan ve durdurulmuş ve diğer uygulamalardan lansmanlarını takip edebilirsiniz.

Bir uygulamanın durdurulmuş durumunun, Etkinlik'in durdurulmuş durumuyla aynı olmadığını unutmayın. Sistem bu iki durdurma durumunu ayrı ayrı yönetir.

Platform, gönderenin belirtmesine olanak tanıyan iki yeni amaç işareti tanımlar. Intent'in, durdurulduğunda bileşenleri etkinleştirmesine izin verilip verilmeyeceğini kabul edersiniz.

Bu işaretlerin ikisi de ya da her ikisi de bir intent'de tanımlanmadığında varsayılan listesine, durdurulan uygulamaların filtrelerini eklemek önceliklendirebilirsiniz.

Sistemin tüm yayınlara FLAG_EXCLUDE_STOPPED_PACKAGES eklediğini unutmayın intent'lere karşılık gelir. Bu, arka plan hizmetlerinden gelen yayınların durdurulan uygulamaların bileşenlerini yanlışlıkla veya gereksiz yere başlatmasını önlemek için yapılır. Bir arka plan hizmeti veya uygulama, Yayınlanacak FLAG_INCLUDE_STOPPED_PACKAGES işareti Durdurulan uygulamaları etkinleştirmesine izin verilmesi gereken amaçlar.

Uygulamalar ilk kez yüklendiklerinde ancak henüz yüklenmediklerinde durmuş durumda başlatıldığı ve kullanıcı tarafından elle durdurulduğu zaman (Yönetme Uygulamalar).

Uygulamanın ilk kez başlatılması ve yeni sürüme geçirilmesiyle ilgili bildirim

Platform, uygulamanın ilk kez başlatılmasıyla ilgili daha iyi bildirimler ekler ve iki yeni amaç işlemiyle yükseltme işlemleri:

  • ACTION_PACKAGE_FIRST_LAUNCH — Alıcı: Bir uygulama ilk çalıştırıldığında yükleyici paketi (yani, durdurulmuş durumdan ilk kez taşındığında). Veriler içerir.
  • ACTION_MY_PACKAGE_REPLACED: Uygulamayı, mevcut sürümün üzerine yeni bir sürümün yüklenerek güncellendiği konusunda bilgilendirir. Bu e-posta, yalnızca değiştirilen uygulamaya gönderilir. Ek veri içermez. Bu bildirimi almak için bu işlem için bir intent filtresi tanımlayın. Uygulamanızın yeni sürüme geçtikten sonra tekrar düzgün şekilde çalışmasını sağlayan kodu tetiklemek için intent'i kullanabilirsiniz.

    Bu niyet doğrudan uygulamaya gönderilir ancak cihaz, başlatılmış durumda (durdurulmuş durumda değil) yeni sürüme geçirildiyse.

Temel yardımcı programlar

  • LRU önbelleği
    • Yeni LruCache sınıfı, uygulamalarınızın avantaj elde etmesini sağlar verimli önbelleklerden kurtarır. Uygulamalar, sınıfı kullanarak ağdan veri hesaplama veya indirme işlemine harcanan süreyi azaltırken önbelleğe alınmış veriler için makul bir bellek kullanımı sağlar.LruCache, sınırlı sayıda değere güçlü referanslar içeren bir önbellektir. Bir değer sıranın başına taşınır. Dolu bir önbelleğe bir değer eklendiğinde, söz konusu kuyruğun sonundaki değer çıkarılır ve çöp toplama işlemi için uygun hale gelebilir.
  • int olarak dosya tanımlayıcı

WebKit

  • Dosya şeması çerezleri
    • CookieManager artık "the" file: URI şeması. WebView veya CookieManager örneği oluşturmadan önce dosya şeması çerezleri desteğini etkinleştirmek/devre dışı bırakmak için setAcceptFileSchemeCookies() öğesini kullanabilirsiniz. CookieManager örneğinde olduğu gibi, dosya şeması çerezlerinin allowFileSchemeCookies() aranarak etkinleştirilir.
  • Giriş isteği bildirimi
    • Android 3.0'da kullanıma sunulan tarayıcı otomatik giriş özelliklerini desteklemek için yeni yöntem onReceivedLoginRequest() düzenleyeni bilgilendirir Kullanıcı için otomatik giriş isteğinin işlendiği uygulama.
  • Kaldırılan sınıflar ve arayüzler
    • Sonraki adımlardan sonra bazı sınıf ve arayüzler, genel API'den kaldırıldı. önceden desteği sonlandırıldı. Bkz. API Farklar Raporu'na göz atın.

Tarayıcı

Tarayıcı uygulaması, web'i desteklemek için aşağıdaki özellikleri ekler uygulamalar:

  • HTML5'e yerleştirilmiş videoların satır içinde oynatılması desteği <video> etiketi. Oynatma, mümkün olduğunda donanım hızlandırmalı olarak gerçekleştirilir.
  • Tüm siteler için sabit konum öğeleri için katman desteği (mobil ve masaüstü).

Yeni özellik sabitleri

Platform, geliştiricilerin bildirebileceği yeni donanım özelliği sabitleri ekler Google gibi harici tüzel kişileri bilgilendirmek amacıyla Desteklenen yeni donanım özellikleri için uygulama gereksiniminin Play Store'u kullanıma sunuyoruz. Geliştiriciler bunları ve diğer özellikleri beyan eder <uses-feature> manifest öğelerinde sabit değerler.

Google Play, uygulamaları <uses-feature> manifest öğelerinde belirtilen özelliklere göre filtreler. Uygulama manifestinde özellikleri belirtme hakkında daha fazla bilgi için Google Play Filtreleri başlıklı makaleyi inceleyin.

API Farkları Raporu

Android 3.1'deki (API) tüm API değişikliklerinin ayrıntılı görünümü için Seviye 12), bkz. API Farklılıklar Raporu.

API düzeyi

Android 3.1 platformu, çerçeve API'si. Android 3.1 API bir tam sayı tanımlayıcısına atanır — 12: yani sistemde depolanır. "API Düzeyi" adı verilen bu tanımlayıcı, sistemiyle uyumlu olup olmadığını doğru şekilde belirlemek amacıyla kullanılabilir. sisteme yükleyin.

Android 3.1'de kullanıma sunulan API'leri uygulamanızda kullanmak için uygulamayı, verilen Android kitaplığına göre derlemeniz gerekir Android 3.1 SDK platformu. İhtiyaçlarınıza bağlı olarak, şunu yapabilir: bir android:minSdkVersion="12" eklemeniz de gerekiyor özelliğinin <uses-sdk> öğesine manifest'ini kullanabilirsiniz.

Daha fazla bilgi için API seviyesi nedir? başlıklı makaleyi okuyun.