Android 3.1 API'leri

API Düzeyi: 12

Geliştiriciler, Android 3.1 platformu (HONEYCOMB_MR1), Android SDK'sı için indirilebilir bir bileşen olarak kullanılabilir. İndirilebilir platformda bir Android kitaplığı ve sistem görüntüsünün yanı sıra bir dizi emülatör dış görünümü ve daha fazlası bulunur. İndirilebilir platformda harici kitaplık yoktur.

Android 3.1 platformu, geliştiriciler açısından Android SDK'sı için indirilebilir bir bileşen olarak mevcuttur. İndirilebilir platformda bir Android kitaplığı ve sistem görüntüsünün yanı sıra bir dizi emülatör dış görünümü ve daha fazlası bulunur. Android 3.1'e göre geliştirmeye veya test etmeye başlamak için Android SDK Yöneticisi'ni kullanarak platformu SDK'nıza indirin.

API'ye Genel Bakış

Aşağıdaki bölümlerde, önceki sürümden beri çerçeve API'sinde yapılan yeni özellikler ve değişiklikler de dahil olmak üzere Android 3.1'deki geliştiriciler için sunulan yeniliklere dair teknik bir genel bakış sunulmaktadır.

USB API'leri

Android 3.1, bağlı çevre birimlerini platformda çalışan uygulamalarla entegre etmek için yeni ve güçlü API'ler sunar. API'ler, hem USB ana makinesi hem de cihaz etkileşimleri desteği de dahil olmak üzere platformda yerleşik bir USB (Evrensel Seri Yol) yığını ve hizmetleri temel alır. Geliştiriciler API'leri kullanarak USB üzerinden bağlanan çeşitli cihaz türlerini keşfedebilen, yönetebilen ve yönetebilen uygulamalar oluşturabilir.

Yığın ve API'ler, Android destekli cihazın ana makine veya harici donanımın ana makine görevi görmesine bağlı olarak iki temel USB donanımı türünü ayırt eder:

  • USB cihaz, ana makine olarak çalışması için Android destekli bir cihaza bağlı olan bir bağlı donanım parçasıdır. Örneğin, çoğu giriş cihazı, fare ve oyun çubuğu, birçok kamera, hub ve benzeri cihazlar USB cihazıdır.
  • USB aksesuarı, USB ana makine denetleyicisine sahip, güç sağlayan ve USB üzerinden Android destekli cihazlarla iletişim kurmak üzere tasarlanmış bir bağlı donanım parçasıdır. Robot kumandalarından müzik ekipmanlarına, egzersiz bisikletlerine ve daha fazlasına kadar çeşitli çevre birimleri aksesuar olarak bağlanabilir.

Her iki türde de (USB cihazları ve USB aksesuarları) platformun USB API'leri, takıldığında veya çıkarıldığında amaç yayınına göre keşif yapmanın yanı sıra standart arayüzler, uç noktalar ve aktarım modları (kontrol, toplu ve kesme) ile keşif özelliğini destekler.

USB API'leri android.hardware.usb paketinde mevcuttur. Merkez sınıf UsbManager, hem USB cihazları hem de USB aksesuarlarını tanımlama ve bunlarla iletişim kurma için yardımcı yöntemler sağlar. Uygulamalar UsbManager öğesinin bir örneğini edinip ardından ekli cihazların veya aksesuarların listesini sorgulayıp bunlarla iletişim kurabilir ya da bunları yönetebilirler. UsbManager, bir USB cihazı veya aksesuarı takıldığında ya da çıkarıldığında haberdar etmek için sistemin yayınladığı amaç işlemlerini de beyan eder.

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

  • UsbDevice, USB cihazı olarak bağlanan harici donanımı temsil eden bir sınıftır (Android destekli cihaz ana makine görevi görür).
  • USB ana makinesi olarak bağlanmış harici donanımı temsil eden UsbAccessory (USB cihazı olarak görev yapan Android destekli cihaz ile).
  • Bir cihaz için standart USB arayüzlerine ve uç noktalarına erişim sağlayan UsbInterface ve UsbEndpoint.
  • UsbDeviceConnection ve UsbRequest: eşzamanlı ve eşzamansız olarak veri gönderip almak, USB cihazıyla veya USB cihazından mesaj göndermek için kullanılır.
  • UsbConstants uç noktası türleri, cihaz sınıfları vb. belirtmek için sabit değerler sağlar.

USB yığını platformda yerleşik olarak bulunsa da, belirli cihazlarda USB ana makinesi ve açık aksesuar modlarına yönelik gerçek desteğin üreticileri tarafından belirlendiğini unutmayın. Özellikle ana makine modu, Android destekli cihazdaki uygun USB denetleyici donanımını kullanır.

Ayrıca geliştiriciler, Google Play'de uygulamalarının uygun USB desteği sağlamayan kullanıcılar tarafından kullanılamaması için filtreleme isteğinde bulunabilirler. Filtreleme isteğinde bulunmak için aşağıdaki öğelerin birini veya her ikisini uygun şekilde uygulama manifestine ekleyin:

  • Uygulamanın yalnızca USB ana makine modunu (USB cihazlarının bağlantısı) destekleyen cihazlara görünür olması gerekiyorsa bu öğeyi belirtin:

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

  • Uygulamanın yalnızca USB aksesuarlarını (USB ana makinelerinin bağlantısı) destekleyen cihazlara görünür olması gerekiyorsa bu öğeyi belirtin:

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

USB aksesuarlarıyla etkileşimde bulunan uygulamaların nasıl geliştirileceği hakkında ayrıntılı bilgi için lütfen geliştirici belgelerine bakın.

USB sunucu API'sini kullanan örnek uygulamalara göz atmak için ADB Testi ve Füze Başlatıcı bölümlerine bakın.

MTP/PTP API'sı

Android 3.1, uygulamaların bağlı kameralarla ve diğer PTP cihazlarıyla doğrudan etkileşim kurmasına olanak tanıyan yeni bir MTP API'sini kullanıma sunuyor. Yeni API, bir uygulamanın cihazlar takılıp kaldırıldığında bildirim almasını, bu cihazlardaki dosyaları ve depolama alanını yönetmesini, dosyalar ve meta verileri bu cihazlar arasında aktarmasını kolaylaştırır. MTP API, MTP (Medya Aktarım Protokolü) spesifikasyonunun PTP (Resim Aktarım Protokolü) alt kümesini uygular.

MTP API, android.mtp paketinde mevcuttur ve aşağıdaki sınıfları sunar:

  • MtpDevice, USB ana makine veri yolu üzerinden bağlanan bir MTP cihazını içerir. Bir uygulama bu tür bir nesneyi örnekleyebilir ve ardından bu nesneleri cihaz ve cihazda depolanan nesneler hakkında bilgi almanın yanı sıra bağlantıyı açmak ve veri aktarmak için kullanabilir. Yöntemlerden bazıları şunlardır:
    • getObjectHandles(), cihazdaki tüm nesneler için belirtilen biçim ve üst öğeyle eşleşen tanıtıcıların listesini döndürür. Uygulama, bir nesne hakkında bilgi almak için herkese açık kullanıcı adını getObjectInfo() öğesine geçirebilir.
    • importFile(), bir uygulamanın bir nesneye ait verileri harici depolama alanındaki bir dosyaya kopyalamasına olanak tanır. Bu çağrı, verilerin boyutuna ve cihazların hızına bağlı olarak rastgele bir süre boyunca engellenebileceğinden, ayrı bir iş parçacığından yapılmalıdır.
    • open() bir uygulamanın bağlı bir MTP/PTP cihazını açmasına izin verir.
    • getThumbnail(), nesnenin küçük resmini bayt dizisi olarak döndürür.
  • MtpStorageInfo, MTP cihazındaki bir depolama birimi hakkında bilgi içerir. Bu bilgiler, MTP spesifikasyonunun 5.2.2 bölümünde açıklanan StorageInfo Veri Kümesine karşılık gelir. Sınıftaki yöntemler, uygulamanın depolama biriminin açıklama dizesini, boş alanı, maksimum depolama kapasitesini, depolama alanı kimliğini ve birim tanımlayıcısını almasını sağlar.
  • 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 sayesinde uygulamalar cihazın üreticisini, modelini, seri numarasını ve sürümünü öğrenebilir.
  • MtpObjectInfo, MTP cihazında depolanan bir nesneyle ilgili bilgileri içerir. Bu bilgi, MTP spesifikasyonunun 5.3.1 numaralı bölümünde açıklanan ObjectInfo Veri Kümesine karşılık gelir. Sınıftaki yöntemler, uygulamaların bir nesnenin boyutunu, veri biçimini, ilişkilendirme türünü, oluşturulma tarihini ve küçük resim bilgilerini almasını sağlar.
  • MtpConstants; MTP dosya biçimi kodlarını, ilişkilendirme türünü ve koruma durumunu belirtmek için sabit değerler sağlar.

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

Android 3.1, giriş alt sistemini, tüm görünümlerde ve pencerelerde yeni giriş cihazlarını ve yeni hareket etkinliği türlerini destekleyecek şekilde genişletir. Geliştiriciler, kullanıcıların klavye ve dokunmatik ekranların yanı sıra fare, izleme topu, oyun çubuğu, oyun kumandası ve diğer cihazları kullanarak uygulamalarıyla etkileşimde bulunmasını sağlamak için bu özellikleri geliştirebilir.

Fare, kaydırma tekerleği ve iztopu girişlerini işlemek için platform iki yeni hareket etkinliği işlemini desteklemektedir:

  • ACTION_SCROLL: Bu boyut, fare kaydırma tekerleği gibi dokunması olmayan bir kaydırma hareketinin gerçekleştiği işaretçi konumunu tanımlar. MotionEvent'te AXIS_HSCROLL ve AXIS_VSCROLL eksenlerinin değeri, göreli kaydırma hareketini belirtir.
  • ACTION_HOVER_MOVE, hiçbir düğmeye basılmadığında farenin o anki konumunu ve son HOVER_MOVE etkinliğinden bu yana geçen ara noktaları bildirir. Fareyle üzerine gelme ve çıkış bildirimleri henüz desteklenmemektedir.

InputDevice sınıfı, joystick ve oyun kumandalarını desteklemek için şu yeni giriş cihazı kaynaklarını içerir:

Platform, bu yeni kaynakların yanı sıra fare ve iztoplarından gelen hareket etkinliklerini açıklamak için artık MotionEvent üzerinde eksen kodları tanımlıyor. Bu işlem, KeyEvent üzerindeki temel kodları tanımlamaya benzer. Oyun çubukları ve oyun kumandaları için yeni eksen kodları şunlardır: AXIS_HAT_X, AXIS_HAT_Y, AXIS_RTRIGGER, AXIS_ORIENTATION, AXIS_THROTTLE ve daha pek çok kod. 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 ile temsil edilir.

Buna ek olarak MotionEvent, çerçevenin belirli bir ekseni nasıl eşleyeceğini bilemediğinde kullanılan bir dizi genel eksen kodu tanımlar. Belirli cihazlar, uygulamalara özel hareket verilerini aktarmak için genel eksen kodlarını kullanabilir. Eksenlerin tam listesi ve amaçlanan yorumlamaları için MotionEvent sınıfı belgelerine bakın.

Platform, uygulamalara toplu olarak hareket etkinlikleri sağlar. Böylece tek bir etkinlik, mevcut bir konumu ve birden fazla sözde geçmiş hareketi içerebilir. Uygulamalar, geçmiş örnek sayısını almak için getHistorySize() kullanmalı, ardından tüm geçmiş örnekleri getHistoricalAxisValue() kullanarak sırayla alıp işlemelidir. Ardından uygulamalar mevcut örneği getAxisValue() kullanarak işlemelidir.

Bazı eksenler, özel erişimci yöntemleri kullanılarak alınabilir. Örneğin, uygulamalar getAxisValue() yerine getX() yöntemini çağırabilir. Yerleşik erişimcilere sahip 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 bulunmaktadır.

Her giriş cihazının sistem tarafından atanmış benzersiz bir kimliği vardır ve birden fazla kaynak sağlayabilir. Bir cihaz birden fazla kaynak sağladığında, birden fazla kaynak aynı ekseni kullanarak eksen verileri sağlayabilir. Örneğin, dokunmatik kaynaktan gelen bir dokunma etkinliği, ekran konumu verileri için X eksenini kullanırken, kontrol çubuğu kaynağından gelen bir kontrol çubuğu etkinliği, çubuk konumu için X eksenini kullanır. Bu nedenle, uygulamaların eksen değerlerini kökenlerine göre yorumlamaları önemlidir. Uygulamalar, bir hareket etkinliğini işlerken bir cihaz veya kaynak tarafından desteklenen eksenleri belirlemek için InputDevice sınıfındaki yöntemleri kullanmalıdır. Özellikle uygulamalar, bir cihazın tüm eksenlerini veya belirli bir cihaz kaynağının tüm eksenlerini sorgulamak için getMotionRanges() özelliğini kullanabilir. Her iki durumda da InputDevice.MotionRange nesnesinde döndürülen eksenlerin aralık bilgileri her bir eksen değerinin kaynağını belirtir.

Son olarak, oyun çubuğu, oyun kumandası, fare ve izleme toplarından gelen hareket etkinlikleri dokunma etkinlikleri olmadığından, platform bunları "genel" hareket etkinlikleri olarak bir View öğesine geçirmek için yeni bir geri çağırma yöntemi ekler. Özellikle, dokunma dışı hareket etkinliklerini onTouchEvent() yerine onGenericMotionEvent() çağrılarıyla View'lere bildirir.

Platform, etkinlik kaynağı sınıfına bağlı olarak genel hareket etkinliklerini farklı şekilde gönderir. SOURCE_CLASS_POINTER etkinlikleri, dokunma etkinliklerinin işleyiş şekline benzer şekilde, işaretçinin altındaki View bölümüne gider. Diğer tüm kullanıcılar, geçerli olarak odaklanılmış View öğesine gider. Örneğin bu, kontrol çubuğu etkinliklerini almak için View öğesinin odaklanması gerektiği anlamına gelir. Gerekirse uygulamalar bu etkinlikleri Etkinlik veya İletişim Kutusu düzeyinde işleyebilir. Bunun için ilgili seçeneğe onGenericMotionEvent() etiketini uygulayın.

Kontrol çubuğu hareket etkinliklerini kullanan örnek bir uygulamaya bakmak için GameControllerInput ve GameView öğelerine bakın.

RTP API'sı

Android 3.1, bir API'yi uygulamaların isteğe bağlı veya etkileşimli veri akışını yönetmek için kullanabileceği yerleşik RTP (Gerçek Zamanlı Aktarım Protokolü) yığınına sunar. Özellikle VOIP, push-to-talk, konferans ve ses akışı sağlayan uygulamalar API'yi kullanarak oturum başlatabilir ve mevcut herhangi bir ağ üzerinden veri akışı gönderip alabilir.

RTP API, android.net.rtp paketinde mevcuttur. Sınıflar şunları içerir:

  • RtpStream, RTP üzerinden medya yükleri içeren ağ paketlerini gönderen ve alan akışların temel sınıfıdır.
  • RTP üzerinden ses yükleri taşıyan bir RtpStream alt sınıfı olan AudioStream.
  • AudioGroup, cihaz hoparlörünü, mikrofonunu ve AudioStream cihazını yönetmek ve karıştırmak için kullanılan yerel bir ses merkezidir.
  • AudioCodec veya bir AudioStream için tanımladığınız codec'lerin koleksiyonunu içerir.

Bir uygulama, sesli konferans ve benzer kullanımları desteklemek için akış için uç nokta olarak iki sınıfı örneklendirir:

  • AudioStream, uzak uç noktayı belirtir ve ağ eşlemeden ve yapılandırılmış bir AudioCodec'dan oluşur.
  • AudioGroup, bir veya daha fazla AudioStream için yerel uç noktayı temsil eder. AudioGroup, tüm AudioStream öğelerini karıştırır ve isteğe bağlı olarak aynı anda cihaz hoparlörüyle mikrofonla etkileşime geçer.

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 için açıklanan sınırlamalara bakın.

RTP API'yi kullanmak için uygulamaların, manifest dosyalarında <uses-permission android:name="android.permission.INTERNET"> özelliğini belirterek kullanıcıdan izin istemesi gerekir. 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'den itibaren geliştiriciler, ana ekran widget'larını yatay, dikey veya her iki eksende yeniden boyutlandırabilirler. Kullanıcılar, yeniden boyutlandırma tutamaçlarını göstermek için widget'a dokunup basılı tutar, ardından düzen ızgarasındaki boyutu değiştirmek için yatay ve/veya dikey tutamaçları sürükleyin.

Geliştiriciler, widget'ın AppWidgetProviderInfo meta verilerinde resizeMode özelliği tanımlayarak herhangi bir Ana ekran widget'ını yeniden boyutlandırılabilir yapabilirler. resizeMode özelliğinin değerleri arasında "yatay", "sektör" ve "yok" bulunur. Bir widget'ı yatay ve dikey olarak yeniden boyutlandırılabilir olarak tanımlamak için "Yatay|dikey" 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ı dokümanlarına bakın.

Animasyon çerçevesi

  • Yeni ViewMülkAnimator sınıfı
    • Yeni ViewPropertyAnimator sınıfı, geliştiricilerin View nesnelerinde seçili mülkleri canlandırması için kullanışlı bir yol sağlar. Sınıf, mülklerin animasyonunu otomatikleştirip optimize eder ve bir View nesnesinde birden fazla eş zamanlı animasyonun yönetilmesini kolaylaştırır.

      ViewPropertyAnimator ürününü kullanmak oldukça kolaydır. Bir View öğesinin özelliklerine animasyon eklemek için animate() yöntemini çağırarak bu View öğesi için bir ViewPropertyAnimator nesnesi oluşturun. Hangi özelliğin canlandırılacağını ve nasıl canlandırılacağını belirtmek için ViewPropertyAnimator ile ilgili yöntemleri kullanın. Örneğin, View öğesini şeffaf hale getirmek için alpha(0); çağrısı yapın. ViewPropertyAnimator nesnesi, temel Animator sınıfını yapılandırma ve başlatma işleminin ayrıntılarını işler ve ardından animasyonu oluşturur.

  • Animasyon arka plan rengi
    • Yeni getBackgroundColor() ve setBackgroundColor(int) yöntemleri, animasyonların arkasında arka plan rengini yalnızca pencere animasyonları için almanızı/ayarlamanızı sağlar. Şu anda arka plan, istenen alfa düzeyinde siyah olmalıdır.
  • ViewAnimator öğesinden animasyonlu kesir alınıyor
    • Yeni bir getAnimatedFraction() yöntemi, mevcut animasyon kesrini (en son kare güncellemesinde kullanılan geçen/interpolasyon oranı) ValueAnimator öğesinden elde etmenizi sağlar.

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

  • Bir katmanın zorla oluşturulması
    • Yeni buildLayer() yöntemi, bir uygulamanın bir View katmanının oluşturulmasını ve Görünüm'ün bu katmanda hemen oluşturulmasını zorunlu kılmasını sağlar. Örneğin, bir uygulama bu yöntemi kullanarak bir animasyonu başlatmadan önce katmanında bir Görünüm oluşturabilir. Görünüm karmaşıksa, animasyona başlamadan önce görünümü katmanda oluşturmak karelerin atlanmasını önler.
  • Kamera mesafesi
    • Uygulamalar, kameranın bir Görünüme olan mesafesini ayarlamak için yeni bir setCameraDistance(float) yöntemi kullanabilir. Bu sayede uygulamalar, Görünümün 3D dönüşümleri (ör. döndürmeler) üzerinde daha fazla kontrol sahibi olur.
  • Tarih Seçici'den takvim görünümü alma
  • Görüntülemeler kaldırıldığında geri arama alma
  • Parça içerik haritası işleyici, yeni onInflate() imzası
  • Arama sonucunu yeni sekmede göster
    • ACTION_WEB_SEARCH amaçları için EXTRA_NEW_SEARCH veri anahtarı, aramayı mevcut tarayıcı sekmesinde değil yeni bir tarayıcı sekmesinde açmanıza olanak tanır.
  • Çizilebilir metin imleci
    • Artık yeni kaynak özelliği olan textCursorDrawable ile metin imleci olarak kullanılacak bir çizim belirtebilirsiniz.
  • Uzak görünümlerde gösterilen alt öğe ayarlama
  • Oyun kumandaları ve diğer giriş cihazları için genel anahtarlar
    • KeyEvent, oyun kumandası düğmelerini barındırmak için bir dizi genel anahtar kodu ekler. Sınıf, anahtar kodlarıyla çalışmak için isGamepadButton(int) ve diğer birkaç yardımcı yöntemi de ekler.

Grafik

  • Bit eşlemleri yönetmenin yardımcıları
    • setHasAlpha(boolean), bir uygulamanın Bit Eşlem'deki tüm piksellerin opak (yanlış) olarak bilindiğini veya bazı piksellerin opak olmayan alfa değerleri (true) içerebileceğini belirtmesine olanak tanır. Bu çağrı, bazı yapılandırmalarda (RGB_565 gibi) piksel başına alfa değerlerini desteklemediğinden yok sayılır. Bazı durumlarda opak olduğu bilinen bir bit eşlem, piksel başına opak olmayan alfa değerlerine sahip olan bir çizimden daha hızlı çizim yapabileceği için bu, çizim ipucu olarak ifade edilir.
    • getByteCount(), Bit eşlemin boyutunu bayt cinsinden alır.
    • getGenerationId(), bir uygulamanın bit eşlemin değiştirilip değiştirilmediğini (ör. önbelleğe alma için) öğrenmesini sağlar.
    • sameAs(android.graphics.Bitmap), belirli bir Bit Eşlem'in boyut, yapılandırma veya piksel verileri olarak mevcut Bit Eşlem'den farklı olup olmadığını belirler.
  • Kamera konumunu ve dönüşü ayarlama

  • Yüksek performanslı kablosuz ağ kilidi
    • Yeni yüksek performanslı kablosuz bağlantı kilidi, uygulamaların cihaz ekranı kapalı olduğunda bile yüksek performanslı kablosuz bağlantıları korumasına olanak tanır. Uzun süre müzik, video veya ses akışı sağlayan uygulamalar, ekran kapalıyken bile akış performansını sağlamak için yüksek performanslı kablosuz ağ kilidini alabilir. Daha fazla güç kullandığından, uzun süre çalışan etkin bir bağlantıya ihtiyaç duyulduğunda uygulamalar yüksek performanslı kablosuz ağ elde etmelidir.

      Yüksek performanslı bir kilit oluşturmak için createWifiLock() çağrısında kilit modu olarak WIFI_MODE_FULL_HIGH_PERF değerini geçirin.

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

İndirme Yöneticisi

  • Tamamlanan indirmelerin işlenmesi
    • Uygulamalar artık kullanıcılara yalnızca işlem tamamlandığında bildirim gönderen indirme işlemleri başlatabilir. Uygulamalar bu tür bir indirme başlatmak için bir istek nesnesinin setNotificationVisibility() yönteminde VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION değerini geçirir.
    • Yeni bir yöntem olan addCompletedDownload(), bir uygulamanın İndirilenler uygulaması tarafından yönetilebilmesi için İndirilenler veritabanına bir dosya eklemesine olanak tanır.
  • İndirilenleri boyuta göre sıralanmış olarak göster

IME çerçevesi

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

Medya

  • Yeni ses akışı biçimleri
    • Medya çerçevesi, iyileştirilmiş ses akışı için ham ADTS AAC içeriği için yerleşik desteğin yanı sıra en yüksek kalitede (kayıpsız) sıkıştırılmış ses içeriği için FLAC ses desteği sunar. Daha fazla bilgi için Desteklenen Medya Biçimleri belgesine bakın.

Durdurulan uygulamalardaki başlatma kontrolleri

Sistemin paket yöneticisi, Android 3.1'den itibaren durmuş durumdaki uygulamaları izler ve başlatma işlemlerini arka plan işlemlerinden ve diğer uygulamalardan kontrol etmek için bir yol sağlar.

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

Platform, gönderenin Intent'in durdurulan uygulamada bileşenleri etkinleştirmesine izin verilip verilmeyeceğini belirtmesini sağlayan iki yeni intent işareti tanımlar.

Bir amaçta bu işaretlerin hiçbiri ya da her ikisi de tanımlanmadığında varsayılan davranış, durdurulan uygulamaların filtrelerini potansiyel hedefler listesine eklemektir.

Sistemin tüm yayın amaçlarına FLAG_EXCLUDE_STOPPED_PACKAGES eklediğini unutmayın. Arka plan hizmetlerinden gelen yayınların yanlışlıkla veya gereksiz şekilde durdurulan uygulamaların bileşenlerini başlatmasını önlemek için bunu yapar. Bir arka plan hizmeti veya uygulaması, durdurulan uygulamaları etkinleştirmesine izin verilmesi gereken yayın amaçlarına FLAG_INCLUDE_STOPPED_PACKAGES işaretini ekleyerek bu davranışı geçersiz kılabilir.

Uygulamalar ilk yüklendiklerinde ancak henüz başlatılmadıklarında ve kullanıcı tarafından manuel olarak durdurulduğunda (Uygulamaları Yönet bölümünde) durduruldu durumundadır.

Uygulamanın ilk kez başlatılmasına ve yeni sürüme geçirilmesine ilişkin bildirim

Platformda uygulamanın ilk kez başlatılmasıyla ilgili iyileştirilmiş bildirim eklendi ve iki yeni amaç işlemi aracılığıyla yükseltme yapıldı:

  • ACTION_PACKAGE_FIRST_LAUNCH: Bir uygulama ilk kez başlatıldığında (durulmuş durumdan ilk kez taşındığında) uygulamanın yükleyici paketine gönderilir. Veriler, paketin adını içerir.
  • ACTION_MY_PACKAGE_REPLACED - Uygulamayı, mevcut bir sürümün üzerine yeni bir sürümün yüklenmiş olarak güncellendiğini bildirir. Bu, yalnızca değiştirilen uygulamaya gönderilir. Ek veri içermez. Bu mesajı almak için bu işlem için bir intent filtresi tanımlayın. Intent'i, uygulamanızın yeni sürüme geçirildikten sonra tekrar düzgün şekilde çalışmaya başlamasına yardımcı olacak bir kodu tetiklemek için kullanabilirsiniz.

    Bu intent doğrudan uygulamaya gönderilir ancak yalnızca uygulama, başlangıç durumundayken (durmuş durumda değil) yükseltilmişse gönderilir.

Temel yardımcı programlar

  • LRU önbelleği
    • Yeni bir LruCache sınıfı, uygulamalarınızın verimli önbelleğe alma özelliğinden yararlanmasını sağlar. Uygulamalar, ağdan veri hesaplamak veya ağdan veri indirmek için harcanan süreyi azaltmak ve önbelleğe alınan veriler için makul bellek ayak izini korumak amacıyla sınıfı kullanabilir.LruCache, sınırlı sayıda değere güçlü referanslar barındıran bir önbellektir. Bir değere her erişildiğinde sıranın başına taşınır. Tam önbelleğe bir değer eklendiğinde sıranın sonundaki değer atılır ve çöp toplama için uygun hale gelebilir.
  • int olarak dosya tanımlayıcısı

WebKit

  • Dosya şeması çerezleri
    • CookieManager artık file: URI şemasını kullanan çerezleri desteklemektedir. WebView veya CookieManager örneği oluşturmadan önce, dosya şeması çerezleri desteğini etkinleştirmek/devre dışı bırakmak için setAcceptFileSchemeCookies() kullanabilirsiniz. Bir CookieManager örneğinde, allowFileSchemeCookies() yöntemini çağırarak dosya şeması çerezlerinin etkinleştirilip etkinleştirilmediğini kontrol edebilirsiniz.
  • Giriş isteği bildirimi
    • Android 3.0'da sunulan tarayıcı otomatik giriş özelliklerini desteklemek için onReceivedLoginRequest() adlı yeni yöntem, ana makine uygulamasına kullanıcı için bir otomatik giriş isteğinin işlendiğini bildirir.
  • Kaldırılan sınıflar ve arayüzler
    • Önceden kullanımdan kaldırılmış olan bazı sınıflar ve arayüzler, genel API'den kaldırılmıştır. Daha fazla bilgi için API Farklılıkları Raporu'na bakın.

Tarayıcı

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

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

Yeni özellik sabitleri

Platform, geliştiricilerin uygulama manifest dosyalarında bildirebileceği yeni donanım özelliği sabit değerleri ekler. Böylece Google Play gibi harici varlıklar, uygulamanın bu sürümde desteklenen yeni donanım özelliklerine yönelik uygulama gereksinimi hakkında bilgi verir. Geliştiriciler, bu ve diğer özellik sabitlerini <uses-feature> manifest öğelerinde beyan ederler.

Google Play, uygulamaları <uses-feature> manifest öğelerinde belirtilen özelliklere göre filtreler. Bir uygulama manifestindeki özellikleri bildirme hakkında daha fazla bilgi edinmek için Google Play Filtreleri konusunu okuyun.

API Farkları Raporu

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

API Düzeyi

Android 3.1 platformu, çerçeve API'sinin güncellenmiş bir sürümünü sunar. Android 3.1 API'ye, sistemin kendisinde depolanan bir tam sayı tanımlayıcı (12) atanır. "API Düzeyi" olarak adlandırılan bu tanımlayıcı, sistemin, uygulamayı yüklemeden önce uygulamanın sistemle uyumlu olup olmadığını doğru şekilde belirlemesine olanak tanır.

Uygulamanızda Android 3.1'de sunulan API'leri kullanmak için uygulamayı Android 3.1 SDK platformunda sağlanan Android kitaplığına göre derlemeniz gerekir. İhtiyaçlarınıza bağlı olarak uygulama manifestindeki <uses-sdk> öğesine bir android:minSdkVersion="12" özelliği de eklemeniz gerekebilir.

Daha fazla bilgi için API Düzeyi nedir?