API Düzeyi: 12
Geliştiriciler, Android 3.1 platformu
(HONEYCOMB_MR1
),
Android SDK için indirilebilir bir bileşen olarak bulunur. İndirilebilir platformda bir Android kitaplığı ve sistem görüntüsünün yanı sıra bir dizi emülatör görünümü ve daha fazlası yer alır. İndirilebilir platformda harici kitaplık yoktur.
Geliştiriciler açısından Android 3.1 platformu, 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 görünümü ve daha fazlası yer alır. Android 3.1'e yönelik uygulama geliştirmeye veya test etmeye başlamak için Android SDK Manager'ı kullanarak platformu SDK'nıza indirin.
API'ye Genel Bakış
Aşağıdaki bölümlerde, önceki sürümden bu yana çerçeve API'sindeki yeni özellikler ve değişiklikler de dahil olmak üzere Android 3.1'deki geliştiriciler için sunulan yeniliklere teknik bir genel bakış sunulmaktadır.
USB API'leri
Android 3.1, bağlı çevre birimlerini platformda çalışan uygulamalarla entegre etmeye yönelik yeni ve güçlü API'ler sunar. API'ler, hem USB ana makinesi hem de cihaz etkileşimleri desteği de dahil olmak üzere, USB (Evrensel Seri Yol) yığınını ve platformda yerleşik olarak bulunan hizmetleri temel alır. Geliştiriciler, API'leri kullanarak USB üzerinden bağlı çeşitli cihaz türlerini keşfedebilen, iletişim kurabilen ve yönetebilen uygulamalar oluşturabilir.
Yığın ve API'ler, Android destekli cihazın ana makine olarak mı, yoksa harici donanımın ana makine olarak mı kullanıldığına bağlı olarak iki temel USB donanımı türünü ayırır:
- USB cihaz, ana makine olarak işlev görecek Android destekli cihaza bağlı olan bir donanım parçasıdır. Örneğin, çoğu giriş cihazı, fare, kontrol çubuğu ve diğer pek çok kamera, hub ve benzeri cihazlar USB cihazıdır.
- USB aksesuarı, USB ana makine denetleyicisine sahip olan, güç sağlayan ve USB üzerinden Android destekli cihazlarla iletişim kurmak için 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.
Platformun USB API'leri, her iki türde (USB cihazları ve USB aksesuarları) için takıldığında veya çıkarıldığında amaca göre yayın yapmanın yanı sıra standart arayüzler, uç noktalar ve aktarım modları (kontrol, toplu ve kesme) desteklenmektedir.
USB API'leri android.hardware.usb
paketinde mevcuttur. Merkezi sınıf, hem USB cihazlarını hem de USB aksesuarlarını tanımlama ve bunlarla iletişim kurma için yardımcı yöntemler sağlayan UsbManager
'dir. Uygulamalar UsbManager
öğesinin bir örneğini alıp daha sonra bağlı cihazların veya aksesuarların listesini sorgulayıp bunlarla iletişim kurabilir ya da bunları yönetebilir.
UsbManager
, bir USB cihazı veya aksesuarı takıldığında ya da çıkarıldığında haberdar etmek için sistemin yayınladığı intent işlemlerini de açıklar.
Diğer sınıflar şunlardır:
UsbDevice
, USB cihazı olarak bağlanan harici donanımları temsil eden bir sınıftır (Android destekli cihaz ana makine olarak görev yapar).UsbAccessory
, USB ana makinesi olarak bağlı harici donanımı (Android destekli cihaz USB cihazı olarak işlev görür) temsil eder.- Bir cihazın standart USB arayüzlerine ve uç noktalarına erişim sağlayan
UsbInterface
veUsbEndpoint
. - USB cihaza veri gönderip almak ve mesajları eşzamanlı ve eşzamansız olarak kontrol etmek için
UsbDeviceConnection
veUsbRequest
. UsbConstants
. Uç nokta türleri, cihaz sınıfları vb. bildirmek için sabit değerler sağlar.
USB yığını platforma yerleştirilmiş olsa 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ılara sunulmayacak şekilde filtrelenmesi için talepte bulunabilirler. Filtreleme isteğinde bulunmak için aşağıdaki öğelerden birini veya her ikisini uygulama manifest dosyasına uygun şekilde ekleyin:
- Uygulamanın yalnızca USB ana makine modunu (USB cihaz bağlantısı) destekleyen cihazlar tarafından görülebilmesi 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şim kuran 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 doğrudan bağlı kameralarla ve diğer PTP cihazlarıyla etkileşim kurmasına olanak tanıyan yeni bir MTP API'sini kullanıma sunuyor. Yeni API, uygulamaların cihaz takılıp kaldırıldığında bildirim almasını, bu cihazlardaki dosyaları ve depolama alanını yönetmesini, bu cihazlardaki dosya ve meta verileri 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 şu sınıfları sağlar:
MtpDevice
, USB ana veri yolu üzerinden bağlanan bir MTP cihazını içerir. Bir uygulama bu tür bir nesneyi örnekleyebilir ve ardından cihaz ve cihazda depolanan nesneler hakkında bilgi almanın yanı sıra bağlantıyı açmak ve veri aktarmak için bu nesnenin yöntemlerini kullanabilir. Yöntemlerden bazıları şunlardır:getObjectHandles()
, cihazdaki tüm nesneler için belirtilen biçim ve üst öğeyle eşleşen tutma yerlerinin listesini döndürür. Uygulama, bir nesne hakkında bilgi almak için bir tanıtıcıyıgetObjectInfo()
öğesine geçirebilir.importFile()
, bir uygulamanın bir nesneye ilişkin verileri harici depolama alanındaki bir dosyaya kopyalamasına izin verir. Bu çağrı, verilerin boyutuna ve cihazların hızına bağlı olarak rastgele bir süre için engellenebilir, bu nedenle 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ındaki bilgileri 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, bir 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, uygulamaların cihazın üreticisini, modelini, seri numarasını ve sürümünü öğrenmesine olanak tanır.MtpObjectInfo
, MTP cihazında depolanan bir nesne hakkındaki bilgileri içerir. Bu bilgiler, MTP spesifikasyonunun 5.3.1 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 ekranlara ek olarak fare, izleme topu, joystick, oyun kumandası ve diğer cihazları kullanarak uygulamalarıyla etkileşime girmesini 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 destekler:
ACTION_SCROLL
bulunur. MotionEvent'teAXIS_HSCROLL
veAXIS_VSCROLL
eksenlerinin değeri, göreli kaydırma hareketini belirtir.ACTION_HOVER_MOVE
, hiçbir düğmeye basılmadığında farenin mevcut konumunu ve sonHOVER_MOVE
etkinliğinden bu yana tüm ara noktaları bildirir. Fareyle üzerine gelerek giriş 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:
SOURCE_CLASS_JOYSTICK
: Kaynak cihazın kontrol çubuğu eksenleri vardır.SOURCE_CLASS_BUTTON
— Kaynak cihazda düğmeler veya tuşlar vardır.SOURCE_GAMEPAD
— Kaynak cihazdaKEYCODE_BUTTON_A
veyaKEYCODE_BUTTON_B
gibi oyun kumandası düğmeleri vardır. Şu anlama gelir:SOURCE_CLASS_BUTTON
SOURCE_JOYSTICK
: Kaynak cihazın kontrol çubuğu eksenleri vardır. SOURCE_CLASS_JOYSTICK anlamına gelir.
Hem bu yeni kaynaklardaki hem de fare ve iztopu kaynaklı hareket etkinliklerini açıklamak için platform, KeyEvent
üzerindeki temel kodları tanımlamaya benzer şekilde artık MotionEvent
üzerinde eksen kodlarını tanımlıyor. Gezinme çubukları ve oyun denetleyicileri için yeni eksen kodları arasında AXIS_HAT_X
, AXIS_HAT_Y
, AXIS_RTRIGGER
, AXIS_ORIENTATION
, AXIS_THROTTLE
ve daha birçok kod bulunur.
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çeve 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 iletmek için genel eksen kodlarını kullanabilir. Eksenlerin ve amaçlanan yorumlamalarının tam listesi için MotionEvent
sınıfı belgelerine bakın.
Platform, hareket etkinliklerini uygulamalara toplu olarak sağlar. Böylece tek bir etkinlik, mevcut bir konumu ve birden fazla sözde geçmiş hareketi içerebilir.
Uygulamalar, geçmiş örneklerin sayısını almak için getHistorySize()
kullanmalı ve ardından tüm geçmiş örnekleri getHistoricalAxisValue()
kullanarak sırayla almalı ve 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ş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
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, dokunma kaynağından gelen dokunma etkinliği ekran konumu verileri için X eksenini kullanırken, kontrol çubuğu kaynağından gelen bir kontrol çubuğu etkinliği çubuğun konumu için X eksenini kullanır. Bu nedenle, uygulamaların eksen değerlerini ait oldukları kaynağa 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. Spesifik olarak, uygulamalar bir cihazın tüm eksenlerini veya belirli bir cihaz kaynağının tüm eksenlerini sorgulamak için getMotionRanges()
kullanabilir. Her iki durumda da InputDevice.MotionRange
nesnesinde döndürülen eksenler için aralık bilgisi, her bir eksen değerinin kaynağını belirtir.
Son olarak, joystick, oyun kumandası, fare ve iztoplarından kaynaklanan hareket etkinlikleri dokunma etkinlikleri olmadığından, platform bunları bir View
öğesine "genel" hareket etkinlikleri olarak geçirmek için yeni bir geri çağırma yöntemi ekler.
Daha açık belirtecek olursak, dokunmatik olmayan hareket etkinliklerini onTouchEvent()
yerine onGenericMotionEvent()
çağrıları aracılığıyla View
'lere bildirir.
Platform, genel hareket etkinliklerini etkinlik kaynak sınıfına bağlı olarak farklı şekilde dağıtır. SOURCE_CLASS_POINTER
etkinlikleri, dokunma etkinliklerinin çalışmasına benzer şekilde, işaretçinin altındaki View
öğesine gider. Diğer tüm etkinlikler, o sırada odaklanılan View
öğesine gider.
Örneğin bu, kontrol çubuğu etkinliklerini almak için View
öğesinin odaklanması gerektiği anlamına gelir. Uygulamalar, gerekirse onGenericMotionEvent()
etkinliklerini uygulayarak bu etkinlikleri Etkinlik veya İletişim Kutusu düzeyinde işleyebilir.
Kontrol çubuğu hareket etkinliklerini kullanan örnek bir uygulamaya bakmak için GameControllerInput ve GameView'a bakın.
RTP API'sı
Android 3.1, uygulamaların isteğe bağlı veya etkileşimli veri akışını yönetmek için kullanabileceği dahili RTP (Gerçek Zamanlı Aktarım Protokolü) yığınına bir API sunar. Özellikle VOIP, konuşarak konuş, konferans ve ses akışı sağlayan uygulamalar, bu API'yi oturum başlatmak ve mevcut herhangi bir ağ üzerinden veri akışı aktarmak ya da almak için kullanabilir.
RTP API, android.net.rtp
paketinde mevcuttur. Sınıflar şunları içerir:
RtpStream
, RTP üzerinden medya yükü içeren ağ paketlerini gönderen ve alan akışların temel sınıfıdır.AudioStream
, RTP üzerinden ses yükü taşıyan birRtpStream
alt sınıfıdır.AudioGroup
, cihazın hoparlörünü, mikrofonunu veAudioStream
cihazını yönetmek ve mikslemek için kullanılan yerel bir ses merkezidir.AudioCodec
,AudioStream
için tanımladığınız codec'lerin koleksiyonunu içerir.
Bir uygulama, sesli konferans ve benzer kullanımları desteklemek amacıyla 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ış birAudioCodec
'dan oluşur.AudioGroup
, bir veya daha fazlaAudioStream
için yerel uç noktayı temsil eder.AudioGroup
, tümAudioStream
öğelerini karıştırır ve isteğe bağlı olarak aynı anda cihazın hoparlörü ile 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
ile ilgili 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">
tanımlayarak kullanıcıdan izin istemesi gerekir. Cihaz mikrofonunu edinebilmek için <uses-permission
android:name="android.permission.RECORD_AUDIO">
izni de gereklidir.
Yeniden boyutlandırılabilir uygulama widget'ları
Android 3.1 sürümünden başlayarak, 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örüntülemek 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ırabilir hale getirebilirler. resizeMode
özelliğinin değerleri arasında "yatay", "dikey" 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 ViewPropertyAnimator sınıfı
- Yeni
ViewPropertyAnimator
sınıfı, geliştiricilerinView
nesnelerinde belirli özellikleri canlandırmaları için kolay bir yol sağlar. Sınıf, özelliklerin animasyonunu otomatikleştirip optimize eder ve birView
nesnesinde birden çok eşzamanlı animasyonu yönetmeyi kolaylaştırır.ViewPropertyAnimator
kullanımı oldukça kolaydır. BirView
öğesinin özelliklerine animasyon eklemek içinanimate()
yöntemini çağırarak buView
ile ilgiliViewPropertyAnimator
nesnesi oluşturun. Hangi özelliğin canlandırılacağını ve nasıl canlandırılacağını belirtmek içinViewPropertyAnimator
üzerindeki yöntemleri kullanın. Örneğin,View
öğesini şeffaf hale getirmek içinalpha(0);
çağrısı yapın.ViewPropertyAnimator
nesnesi, temelAnimator
sınıfını yapılandırma ve başlatma ile ilgili ayrıntıları işler, ardından animasyonu oluşturur.
- Yeni
- Animasyon arka plan rengi
- Yeni
getBackgroundColor()
vesetBackgroundColor(int)
yöntemleri, yalnızca pencere animasyonları için animasyonların arkasındaki arka plan rengini belirlemenize/hazırlamanıza olanak tanır. Şu anda arka plan, istenen alfa düzeyinde siyah olmalıdır.
- Yeni
ViewAnimator
kaynağından animasyonlu kesir alınıyor- Yeni
getAnimatedFraction()
yöntemi, mevcut animasyon kesirini (en son kare güncellemesinde kullanılan geçen/interpole edilen kesir)ValueAnimator
öğesinden almanızı sağlar.
- Yeni
kullanıcı arayüzü çerçevesi
- Bir katmanın zorla oluşturulması
- Yeni
buildLayer()
yöntemi, uygulamaların bir Görünüm katmanının oluşturulmasını ve View katmanının hemen oluşturulmasını zorunlu kılmasını sağlar. Örneğin, bir uygulama, bir animasyona başlamadan önce katmanında Görünüm oluşturmak için bu yöntemi kullanabilir. Görünüm karmaşıksa, animasyonu başlatmadan önce görünümün katmanda oluşturulması, karelerin atlanmasını önler.
- Yeni
- Kamera mesafesi
- Uygulamalar, kamera ile Görünüm arasındaki mesafeyi ayarlamak için yeni bir
setCameraDistance(float)
yöntemi kullanabilir. Bu sayede uygulamalar, Görünümün 3D dönüşümleri üzerinde (ör. döndürmeler) gelişmiş kontrol sahibi olur.
- Uygulamalar, kamera ile Görünüm arasındaki mesafeyi ayarlamak için yeni bir
- Tarih Seçici'den takvim görünümü alma
- Yeni bir
getCalendarView()
yöntemi, birDatePicker
örneğindenCalendarView
almanıza olanak tanır.
- Yeni bir
- Görüntülemeler kaldırıldığında geri arama alma
- Yeni bir
View.OnAttachStateChangeListener
, bir Görünüm eklendiğinde veya penceresinden ayrıldığında geri çağırmalar almanıza olanak tanır. İşleyici eklemek içinaddOnAttachStateChangeListener()
, kaldırmak içinaddOnAttachStateChangeListener()
kullanın.
- Yeni bir
- Parça içerik haritası işleyici, yeni onInflate() imzası
- Yeni bir yöntem olan
setOnBreadCrumbClickListener()
, uygulamaların parça içerik haritası tıklamalarına müdahale etmesini ve tıklanan geri yığın girişine veya parçaya gitmeden önce gerekli işlemleri yapmasını sağlayan bir kanca sağlar. Fragment
sınıfındaonInflate(attrs, savedInstanceState)
kullanımdan kaldırılmıştır. Lütfen bunun yerineonInflate(activity, attrs, savedInstanceState)
politikasını kullanın.
- Yeni bir yöntem olan
- Arama sonucunu yeni sekmede göster
ACTION_WEB_SEARCH
amaçları içinEXTRA_NEW_SEARCH
veri anahtarı, aramayı mevcut bir tarayıcı sekmesinde değil, yeni bir tarayıcı sekmesinde açmanıza olanak tanır.
- Çekilebilir metin imleci
- Artık yeni
textCursorDrawable
kaynak özelliğini kullanarak metin imleci olarak kullanılacak bir çekilebilir öğe belirtebilirsiniz.
- Artık yeni
- Uzak görünümlerde gösterilen alt öğeyi ayarlama
ViewAnimator
veAdapterViewFlipper
,StackView
,ViewFlipper
veViewSwitcher
gibiAdapterViewAnimator
alt sınıflarda görüntülenen alt sınıfları ayarlamanıza olanak tanımak içinsetDisplayedChild(viewId, childIndex)
,RemoteViews
alt sınıflarında kullanıma sunulmuştur.
- Oyun kumandaları ve diğer giriş cihazları için genel anahtarlar
KeyEvent
, oyun kumandası düğmelerine yer vermek için bir dizi genel anahtar kodu ekler. Sınıf, anahtar kodlarıyla çalışmak içinisGamepadButton(int)
ve diğer birçok yardımcı yöntemi de ekler.
Grafik
- Bit eşlemleri yönetmeye yardımcı olan 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 (doğru) belirtmesini sağlar. Bu çağrı, bazı yapılandırmalarda (RGB_565 gibi) piksel başına alfa değerlerini desteklemediğinden yok sayılır. Bu, çizim ipucu olarak ifade edilir. Bazı durumlarda opak olduğu bilinen bir bit eşlem, piksel başına opak olmayan alfa değerleri içeren bir çizim durumundan daha hızlı bir çizim durumu alabilir.getByteCount()
, Bit eşlemin boyutunu bayt cinsinden alır.getGenerationId()
, uygulamanın önbelleğe alma gibi bir amaçla bir Bit Eşlem'in değiştirilip değiştirilmediğini öğrenmesine olanak tanır.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üşünü ayarlama
Camera
, 3D dönüşümler için kamera konumunun kontrolüne yönelik iki yeni yöntem (rotate()
vesetLocation()
) ekler.
Ağ
- Yüksek performanslı kablosuz ağ kilidi
- Yüksek performanslı yeni kablosuz ağ kilidi, uygulamaların cihaz ekranı kapalıyken bile yüksek performanslı kablosuz bağlantıları sürdürmesini sağlar.
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üreli aktif bağlantıya ihtiyaç duyulduğunda uygulamalar yüksek performanslı kablosuz bağlantıyı elde etmelidir.
Yüksek performanslı bir kilit oluşturmak için
createWifiLock()
çağrısında kilit modu olarakWIFI_MODE_FULL_HIGH_PERF
değerini geçirin.
- Yüksek performanslı yeni kablosuz ağ kilidi, uygulamaların cihaz ekranı kapalıyken bile yüksek performanslı kablosuz bağlantıları sürdürmesini sağlar.
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üreli aktif bağlantıya ihtiyaç duyulduğunda uygulamalar yüksek performanslı kablosuz bağlantıyı elde etmelidir.
- Diğer trafik istatistikleri
- Uygulamalar artık
TrafficStats
içinde yeni yöntemler 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 aktarma/alma yük baytlarını ve segmentlerini almak için bu yöntemleri kullanabilir.
- Uygulamalar artık
- SIP yetkilendirme kullanıcı adı
- Uygulamalar artık
getAuthUserName()
vesetAuthUserName()
adlı yeni yöntemleri kullanarak bir profil için SIP kimlik doğrulaması kullanıcı adını alabilir ve ayarlayabilir.
- Uygulamalar artık
İndirme Yöneticisi
- Tamamlanan indirmelerin işlenmesi
- Uygulamalar artık kullanıcılara yalnızca işlem tamamlandığında bilgi veren indirme işlemleri başlatabilir. Uygulamalar bu tür indirmeleri başlatmak için bir istek nesnesinin
setNotificationVisibility()
yöntemindeVISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION
iletir. - 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.
- Uygulamalar artık kullanıcılara yalnızca işlem tamamlandığında bilgi veren indirme işlemleri başlatabilir. Uygulamalar bu tür indirmeleri başlatmak için bir istek nesnesinin
- İndirilenleri boyuta göre sıralanmış olarak göster
- Uygulamalar,
ACTION_VIEW_DOWNLOADS
amacına yeni ekstraINTENT_EXTRAS_SORT_BY_SIZE
ekleyerek İndirilenler uygulamasını boyuta göre sıralama modunda başlatabilir.
- Uygulamalar,
IME çerçevesi
- Bir giriş yönteminin ek değer anahtarını alma
InputMethodSubtype
, alt tür için bir ExtraValue dizesinin depolanıp depolanmadığını kontrol etmek içincontainsExtraValueKey()
yöntemini ve ExtraValue karma haritasından belirli bir anahtar değerini ayıklamak içingetExtraValueOf()
yöntemini ekler.
Medya
- Yeni ses yayını 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 başlayarak durmuş durumdaki uygulamaları izler ve başlatmalarını arka plan işlemlerden ve diğer uygulamalardan kontrol etmek için bir araç sağlar.
Bir uygulamanın durduruldu durumunun Etkinlik'in durduruldu durumuyla aynı olmadığını unutmayın. Sistem, durdurulan bu iki durumu ayrı ayrı yönetir.
Platform, gönderenin Intent'in durdurulan uygulamada bileşenleri etkinleştirmesine izin verilip verilmeyeceğini belirtmesine olanak tanıyan iki yeni intent işareti tanımlar.
FLAG_INCLUDE_STOPPED_PACKAGES
: Durdurulan uygulamaların amaç filtrelerini, çözümlenecek potansiyel hedefler listesine ekleyin.FLAG_EXCLUDE_STOPPED_PACKAGES
: Durdurulan uygulamaların amaç filtrelerini potansiyel hedefler listesinden hariç tutun.
Bir intent'de bu işaretlerin hiçbiri ya da her ikisi de tanımlanmadığında varsayılan davranış, durdurulan uygulamaların filtrelerini olası hedefler listesine eklemektir.
Sistemin tüm yayın amaçlarına FLAG_EXCLUDE_STOPPED_PACKAGES
öğesi eklediğini unutmayın. Arka plan hizmetlerinden gelen yayınların, durdurulmuş uygulamaların bileşenlerini yanlışlıkla veya gereksiz bir şekilde 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 kez yüklendiklerinde ancak henüz başlatılmadıklarında ve kullanıcı tarafından manuel olarak durdurulduklarında (Uygulamaları Yönet bölümünde) durdurulmuş durumda olurlar.
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 iyileştirilmiş bildirim ekler ve iki yeni intent işlemiyle yükseltme yapar:
ACTION_PACKAGE_FIRST_LAUNCH
- Bir uygulama ilk kez başlatıldığında (durmuş durumdan ilk kez çıkarıldığında) uygulamanın yükleyici paketine gönderilir. Verilerde paketin adı yer alır.ACTION_MY_PACKAGE_REPLACED
- Uygulamayı güncellendiğini ve mevcut bir sürümün üzerine yeni bir sürümün yüklendiğini bildirir. Bu, yalnızca değiştirilen uygulamaya gönderilir. Ek veri içermez. Bildirimi almak için bu işlem için bir amaç filtresi tanımlayın. Intent'i kullanarak, uygulamanızın yeni sürüme geçirildikten sonra doğru şekilde çalışmaya tekrar başlamasına yardımcı olacak bir kodu tetikleyebilirsiniz.Bu niyet doğrudan uygulamaya gönderilir ancak bu yalnızca uygulama, başlatılmış durumdayken (durmuş durumda değil) yükseltilmişse yapılır.
Temel yardımcı programlar
- LRU önbelleği
- Yeni bir
LruCache
sınıfı, uygulamalarınızın verimli önbelleğe alma özelliğinden yararlanmasına olanak tanır. Uygulamalar bu sınıfı kullanarak ağdaki verileri hesaplamaya veya indirmeye harcanan süreyi kısaltabilir ve önbelleğe alınan veriler için makul bir bellek ayak izi sağlar.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 çıkarılır ve çöp toplama için uygun hale gelebilir.
- Yeni bir
int
olarak dosya açıklayıcısı- Artık
getFd()
veyadetachFd()
yeni yöntemlerinden birini kullanarakParcelFileDescriptor
için yerel dosya tanımlayıcısını int alabilirsiniz.
- Artık
WebKit
- Dosya şeması çerezleri
CookieManager
artıkfile:
URI şemasını kullanan çerezleri destekliyor.WebView
veyaCookieManager
örneği oluşturmadan önce, dosya şeması çerezleri desteğini etkinleştirmek/devre dışı bırakmak içinsetAcceptFileSchemeCookies()
kullanabilirsiniz. BirCookieManager
örneğinde,allowFileSchemeCookies()
yöntemini çağırarak dosya şeması çerezlerinin etkinleştirilip etkinleştirilmediğini kontrol edebilirsiniz.
- Giriş isteği bildirimi
- Yeni
onReceivedLoginRequest()
yöntemi, Android 3.0'da sunulan tarayıcı otomatik giriş özelliklerini desteklemek için ana makine uygulamasına, kullanıcı için bir otomatik giriş isteğinin işlendiğini bildirir.
- Yeni
- Kaldırılan sınıflar ve arayüzler
- Önceden kullanımdan kaldırılan birkaç sınıf ve arayüz, genel API'den kaldırıldı. Daha fazla bilgi için API Farkları 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ı satır içi oynatma desteği. Oynatma, mümkün olduğunda donanım hızlandırmalı olarak gerçekleştirilir. - Tüm siteler (mobil ve masaüstü) için sabit konumlu öğeler için katman desteği.
Yeni özellik sabitleri
Platform, uygulamanın bu platform sürümünde desteklenen yeni donanım özelliklerine yönelik gereksinimini Google Play gibi harici kuruluşlara bildirmek amacıyla, geliştiricilerin uygulama manifest dosyalarında beyan edebilecekleri yeni donanım özelliği sabitleri ekler. Geliştiriciler, bu ve diğer özellik sabitlerini <uses-feature>
manifest öğelerinde tanımlar.
android.hardware.usb.accessory
: Uygulama, USB üzerinden bağlanan harici donanım cihazlarıyla iletişim kurmak ve ana makine olarak işlev görmek için USB API'sini kullanır.android.hardware.usb.host
— Uygulama, USB üzerinden bağlı harici donanım cihazlarıyla iletişim kurmak ve cihaz olarak işlev görmek için USB API'sini kullanır.
Google Play, uygulamaları, <uses-feature>
manifest öğelerinde belirtilen özelliklere göre filtreler. Uygulama manifest dosyasındaki özellikleri bildirme hakkında daha fazla bilgi 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 Farkları 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" adı verilen bu tanımlayıcı, sistemin bir uygulamanın uygulamayı yüklemeden önce sistemle uyumlu olup olmadığını doğru şekilde belirlemesine olanak tanır.
Uygulamanızda Android 3.1'de sunulan API'ları 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, uygulamanın manifest dosyasındaki <uses-sdk>
öğesine bir android:minSdkVersion="12"
özelliği eklemeniz de gerekebilir.
Daha fazla bilgi için API Düzeyi nedir?