API düzeyi: 12
Android 3.1 platformu (HONEYCOMB_MR1), geliştiriciler için Android SDK'nın indirilebilir bir bileşeni olarak sunulmaktadır. İ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ı bulunur. İndirilebilir platformda harici kitaplık yoktur.
Android 3.1 platformu, geliştiriciler için Android SDK'nın indirilebilir bir bileşeni olarak sunulur. İ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ı bulunur. Android 3.1'e yönelik geliştirme veya test işlemlerine başlamak için Android SDK Manager'ı kullanarak platformu SDK'nıza indirin.
API'ye Genel Bakış
Aşağıdaki bölümlerde, Android 3.1'de geliştiriciler için sunulan yeniliklere dair teknik bir genel bakış sunulmaktadır. Bu bölümlerde, önceki sürümden bu yana çerçeve API'sinde yapılan değişiklikler ve yeni özellikler de yer almaktadır.
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ını ve platformda yerleşik olarak bulunan hizmetleri temel alır. Bu hizmetler arasında hem USB ana makinesi hem de cihaz etkileşimleri için destek bulunur. Geliştiriciler, API'leri kullanarak USB üzerinden bağlanan çeşitli cihaz türlerini keşfedebilen, bunlarla iletişim kurabilen ve bunları 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ı davrandığına bağlı olarak iki temel USB donanım türünü ayırt eder:
- USB cihazı, ana makine olarak Android destekli cihaza bağlı olan bir donanım parçasıdır. Örneğin, çoğu giriş cihazı, fare ve oyun kumandası USB cihazıdır. Birçok kamera, hub vb. de USB cihazıdır.
- USB aksesuarı, USB ana makine denetleyicisi olan, güç sağlayan ve Android destekli cihazlarla USB üzerinden iletişim kurmak için tasarlanmış bağlı bir donanım parçasıdır. Robotik denetleyicilerden müzik ekipmanlarına, egzersiz bisikletlerine ve daha fazlasına kadar çeşitli çevre birimleri aksesuar olarak bağlanabilir.
Platformun USB API'leri, hem USB cihazlar hem de USB aksesuarlar için takıldığında veya çıkarıldığında intent yayınıyla keşfi, standart arayüzleri, uç noktaları ve aktarım modlarını (kontrol, toplu ve kesinti) destekler.
USB API'leri android.hardware.usb paketinde bulunur. Merkezi sınıf UsbManager, 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 alabilir ve ardından 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 duyurmak için sistemin yayınladığı intent işlemlerini de bildirir.
Diğer sınıflar şunlardır:
UsbDevice, USB cihazı olarak bağlanan harici donanımı temsil eden bir sınıf (Android destekli cihaz ana makine olarak çalışır).UsbAccessory, USB ana makinesi olarak bağlanan harici donanımı temsil eder (Android destekli cihaz, USB cihazı olarak çalışır).- Bir cihaz için standart USB arayüzlerine ve uç noktalarına erişim sağlayan
UsbInterfaceveUsbEndpoint. - USB cihazına veya cihazından eşzamanlı ve eşzamansız olarak veri ve kontrol mesajları göndermek ve almak için
UsbDeviceConnectionveUsbRequest. UsbConstants: Uç nokta türlerini, cihaz sınıflarını vb. bildirmek için sabitler sağlar.
USB yığını platformda yerleşik olarak bulunsa da belirli cihazlarda USB ana makinesi ve açık aksesuar modları için gerçek desteğin üreticileri tarafından belirlendiğini unutmayın. Özellikle ana makine modu, Android destekli cihazda uygun USB denetleyici donanımına dayanır.
Ayrıca geliştiriciler, cihazları uygun USB desteği sağlamayan kullanıcılara uygulamalarının sunulmaması için Google Play'de filtreleme isteğinde bulunabilirler. Filtreleme isteğinde bulunmak için aşağıdaki öğelerden birini veya her ikisini uygulama manifestine ekleyin:
- Uygulamanın yalnızca USB ana makine modunu (USB cihazlarının bağlantısı) destekleyen cihazlarda görünmesi gerekiyorsa şu öğeyi tanımlayın:
<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 cihazlar tarafından görülebilmesi gerekiyorsa şu öğeyi tanımlayın:
<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 ana makine API'sini kullanan örnek uygulamaları incelemek için ADB Test ve Missile Launcher sayfalarına bakın.
MTP/PTP API
Android 3.1, uygulamaların bağlı kameralar ve diğer PTP cihazlarıyla doğrudan etkileşim kurmasına olanak tanıyan yeni bir MTP API'si sunar. Yeni API, cihazlar takıldığında ve çıkarıldığında uygulamaların bildirim almasını, bu cihazlardaki dosyaları ve depolama alanını yönetmesini ve bu cihazlara dosya ve meta veri 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 bulunur ve şu sınıfları sağlar:
MtpDevice, USB ana makine veri yolu üzerinden bağlanan bir MTP cihazını kapsar. Uygulamalar bu tür bir nesneyi örneklendirebilir ve ardından yöntemlerini kullanarak cihaz ve cihazda depolanan nesneler hakkında bilgi edinebilir, bağlantıyı açabilir ve veri aktarabilir. Yöntemlerden bazıları şunlardır:getObjectHandles(), cihazda belirtilen biçim ve üst öğeyle eşleşen tüm nesnelerin tutamaçlarının listesini döndürür. Bir nesne hakkında bilgi almak için uygulamalargetObjectInfo()işlevine bir tanıtıcı iletebilir.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 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 olanak tanır.getThumbnail(), nesnenin küçük resmini bayt dizisi olarak döndürür.
MtpStorageInfo, MTP spesifikasyonunun 5.2.2 bölümünde açıklanan StorageInfo veri kümesine karşılık gelen, MTP cihazındaki bir depolama birimiyle ilgili bilgileri içerir. Sınıftaki yöntemler, bir uygulamanın depolama biriminin açıklama dizesini, boş alanını, maksimum depolama kapasitesini, depolama kimliğini ve birim tanımlayıcısını almasına olanak tanır.MtpDeviceInfo, MTP spesifikasyonunun 5.1.1 bölümünde açıklanan DeviceInfo veri kümesine karşılık gelen bir MTP cihazı hakkında bilgi içerir. Sınıftaki yöntemler, uygulamaların bir cihazın üreticisini, modelini, seri numarasını ve sürümünü almasına olanak tanır.MtpObjectInfo, MTP spesifikasyonunun 5.3.1 bölümünde açıklanan ObjectInfo veri kümesine karşılık gelen, MTP cihazında depolanan bir nesneyle ilgili bilgileri içerir. Sınıftaki yöntemler, uygulamaların bir nesnenin boyutunu, veri biçimini, ilişkilendirme türünü, oluşturma tarihini ve küçük resim bilgilerini almasına olanak tanır.MtpConstants, MTP dosya biçimi kodlarını, ilişkilendirme türünü ve koruma durumunu bildirmek için sabitler sağlar.
Yeni giriş cihazları ve hareket etkinlikleri için destek
Android 3.1, tüm görünüm ve pencerelerde yeni giriş cihazlarını ve yeni hareket etkinliği türlerini desteklemek için giriş alt sistemini genişletir. Geliştiriciler, kullanıcıların klavye ve dokunmatik ekranların yanı sıra fare, iztopu, oyun kumandası, oyun pedi ve diğer cihazları kullanarak uygulamalarıyla etkileşim kurmasına olanak tanımak için bu özelliklerden yararlanabilir.
Platform, fare, kaydırma tekerleği ve iz topu girişlerini işlemek için iki yeni hareket etkinliği işlemini destekler:
ACTION_SCROLL, fare kaydırma tekerleği gibi dokunmatik olmayan bir kaydırma hareketinin gerçekleştiği işaretçi konumunu açıklar. MotionEvent'teAXIS_HSCROLLveAXIS_VSCROLLeksenlerinin değeri, göreceli kaydırma hareketini belirtir.ACTION_HOVER_MOVE, hiçbir düğmeye basılmadığında farenin mevcut konumunu ve sonHOVER_MOVEetkinliğinden bu yana olan tüm ara noktaları bildirir. Fareyle üzerine gelme ve fareyi üzerinden çekme bildirimleri henüz desteklenmiyor.
Oyun kumandalarını ve oyun pedlerini desteklemek için InputDevice sınıfı şu yeni giriş cihazı kaynaklarını içerir:
SOURCE_CLASS_JOYSTICK: Kaynak cihazda joystick eksenleri var.SOURCE_CLASS_BUTTON: Kaynak cihazda düğmeler veya tuşlar vardır.SOURCE_GAMEPAD: Kaynak cihazdaKEYCODE_BUTTON_AveyaKEYCODE_BUTTON_Bgibi oyun kumandası düğmeleri var. Anlamı:SOURCE_CLASS_BUTTONSOURCE_JOYSTICK: Kaynak cihazda kumanda kolları var. SOURCE_CLASS_JOYSTICK'i ifade eder.
Platform, bu yeni kaynakların yanı sıra fare ve iz toplardan gelen hareket etkinliklerini açıklamak için artık MotionEvent üzerinde eksen kodları tanımlıyor. Bu, KeyEvent üzerinde tuş kodlarını tanımlama şekline benzer. Oyun çubukları ve oyun kumandaları 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.
Ayrıca MotionEvent, çerçevenin belirli bir ekseni nasıl eşleyeceğini bilmediği durumlarda kullanılan bir dizi genel eksen kodu tanımlar. Belirli cihazlar, özel hareket verilerini uygulamalara iletmek için genel eksen kodlarını kullanabilir. Eksenlerin ve amaçlanan yorumlarının tam listesi için MotionEvent sınıfı belgelerine bakın.
Platform, uygulamalara hareket etkinliklerini toplu olarak sağlar. Bu nedenle, tek bir etkinlikte mevcut konum ve birden fazla geçmiş hareket bulunabilir.
Uygulamalar, geçmiş örneklerin sayısını almak için getHistorySize() yöntemini kullanmalı, ardından getHistoricalAxisValue() yöntemini kullanarak tüm geçmiş örnekleri sırayla alıp işlemelidir. Ardından uygulamalar, getAxisValue() kullanarak mevcut örneği işlemelidir.
Bazı eksenler, özel erişim 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 bulunur.
Her giriş cihazının sistem tarafından atanmış benzersiz bir kimliği vardır ve birden fazla kaynak da 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 bir dokunma etkinliği, ekran konumu verileri için X eksenini kullanırken joystick kaynağından gelen bir joystick etkinliği, bunun yerine çubuk konumu için X eksenini kullanır. Bu nedenle, uygulamaların eksen değerlerini kaynaklarına göre yorumlaması önemlidir. Uygulamalar, hareket etkinliklerini 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 cihazın belirli bir kaynağının tüm eksenlerini sorgulamak için getMotionRanges() 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 kumandaları, oyun pedleri, fareler ve iz toplardan gelen hareket etkinlikleri dokunma etkinlikleri olmadığından platform, bunları View öğesine "genel" hareket etkinlikleri olarak iletmek için yeni bir geri çağırma yöntemi ekler.
Özellikle, dokunma dışı hareket etkinliklerini onTouchEvent() yerine onGenericMotionEvent() çağrısı aracılığıyla View öğelerine 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 öğesine gider. Diğer tüm tuşlar, o anda odaklanılan View öğesine gider.
Örneğin, joystick etkinliklerini almak için bir View öğesinin odaklanması gerekir. Gerekirse uygulamalar bu etkinlikleri Etkinlik veya İletişim Kutusu düzeyinde işlemek için onGenericMotionEvent() yöntemini kullanabilir.
Kontrol çubuğu hareket etkinliklerini kullanan örnek bir uygulamayı incelemek için GameControllerInput ve GameView sayfalarına bakın.
RTP API
Android 3.1, yerleşik RTP (Gerçek Zamanlı Aktarım Protokolü) yığını için bir API sunar. Uygulamalar, isteğe bağlı veya etkileşimli veri akışını yönetmek için bu API'yi kullanabilir. Özellikle VoIP, bas-konuş, konferans ve ses akışı sağlayan uygulamalar, oturum başlatmak ve mevcut herhangi bir ağ üzerinden veri akışı iletmek veya almak için API'yi kullanabilir.
RTP API, android.net.rtp paketinde kullanılabilir. Sınıflar
şunları içerir:
RtpStream, RTP üzerinden medya yükleri içeren ağ paketleri gönderen ve alan akışların temel sınıfıdır.AudioStream, RTP üzerinden ses yükleri taşıyan birRtpStreamalt sınıfıdır.- Cihaz hoparlörünü, mikrofonunu ve
AudioStream'i yönetmek ve karıştırmak için yerel bir ses merkezi olanAudioGroup. AudioCodec, birAudioStreamiçin tanımladığınız codec'lerin koleksiyonunu barındırır.
Sesli konferans ve benzeri kullanımları desteklemek için bir uygulama, akış için uç nokta olarak iki sınıfı örneklendirir:
AudioStream, uzak bir uç noktayı belirtir ve ağ eşlemesi ile yapılandırılmış birAudioCodec'den oluşur.AudioGroup, bir veya daha fazlaAudioStreamiçin yerel uç noktayı temsil eder.AudioGroup, tümAudioStream'leri karıştırır ve isteğe bağlı olarak cihaz hoparlörü ve mikrofonuyla aynı anda etkileşim kurar.
En basit kullanımda tek bir uzak uç nokta ve yerel uç nokta bulunur.
Daha karmaşık kullanımlar için lütfen AudioGroup ile ilgili sınırlamalara bakın.
RTP API'yi kullanmak için uygulamaların, manifest dosyalarında <uses-permission
android:name="android.permission.INTERNET"> iznini beyan ederek kullanıcıdan izin istemesi gerekir. Cihazın mikrofonunu kullanmak için <uses-permission
android:name="android.permission.RECORD_AUDIO"> izni de gereklidir.
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ırılabilir hale getirebilir. Kullanıcılar, yeniden boyutlandırma tutma yerlerini göstermek için bir widget'a dokunup basılı tutar, ardından düzen ızgarasındaki boyutu değiştirmek için yatay ve/veya dikey tutma yerlerini sürükler.
Geliştiriciler, widget'ın AppWidgetProviderInfo meta verilerinde bir resizeMode özelliği tanımlayarak tüm ana ekran widget'larını yeniden boyutlandırılabilir hale getirebilir. resizeMode özelliğinin değerleri arasında "horizontal", "vertical" ve "none" bulunur.
Bir widget'ın yatay ve dikey olarak yeniden boyutlandırılabileceğini belirtmek için "horizontal|vertical" değerini girin.
Örneğin:
<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ı belgelerine bakın.
Animasyon çerçevesi
- Yeni ViewPropertyAnimator sınıfı
- Yeni bir
ViewPropertyAnimatorsınıfı, geliştiricilerinViewnesnelerindeki belirli özellikleri canlandırması için kullanışlı bir yöntem sunar. Sınıf, özelliklerin animasyonunu otomatikleştirip optimize eder ve birViewnesnesinde aynı anda birden fazla animasyonu yönetmeyi kolaylaştırır.ViewPropertyAnimatorkullanımı oldukça kolaydır. BirViewiçin özellikleri canlandırmak üzereanimate()yöntemini çağırarak söz konusuViewiçin birViewPropertyAnimatornesnesi oluşturun. Hangi özelliğin nasıl canlandırılacağını belirtmek içinViewPropertyAnimatoryöntemlerini kullanın. Örneğin,Viewöğesini şeffaf hale getirmek içinalpha(0);işlevini çağırın.ViewPropertyAnimatornesnesi, temelAnimatorsınıfını yapılandırma ve başlatma, ardından animasyonu oluşturma işlemlerini gerçekleştirir.
- Yeni bir
- Animasyon arka plan rengi
- Yeni
getBackgroundColor()vesetBackgroundColor(int)yöntemleri, yalnızca pencere animasyonları için animasyonların arkasındaki arka plan rengini almanıza/ayarlamanıza olanak tanır. Şu anda arka plan siyah olmalı ve istenen alfa seviyesinde olmalıdır.
- Yeni
ViewAnimatorkaynağından animasyonlu kesir alınıyor- Yeni bir
getAnimatedFraction()yöntemi,ValueAnimator'dan geçerli animasyon kesrini (en son kare güncellemesinde kullanılan geçen/interpolasyonlu kesir) almanızı sağlar.
- Yeni bir
Kullanıcı arayüzü çerçevesi
- Katmanın zorunlu olarak oluşturulması
- Yeni bir
buildLayer()yöntemi, bir uygulamanın bir Görünüm katmanını oluşturmaya zorlamasına ve Görünüm'ün hemen bu katmanda oluşturulmasına olanak tanır. Örneğin, bir uygulama, animasyon başlatmadan önce bir görünümü katmanına oluşturmak için bu yöntemi kullanabilir. Görünüm karmaşıksa animasyon başlatılmadan önce katmana oluşturulması, karelerin atlanmasını önler.
- Yeni bir
- Kamera mesafesi
- Uygulamalar, kameranın bir görünüme olan mesafesini ayarlamak için yeni bir yöntem olan
setCameraDistance(float)yöntemini kullanabilir. Bu sayede uygulamalar, görünümün 3D dönüşümleri (ör. döndürme) üzerinde daha fazla kontrol sahibi olur.
- Uygulamalar, kameranın bir görünüme olan mesafesini ayarlamak için yeni bir yöntem olan
- DatePicker'dan takvim görünümü alma
- Yeni bir
getCalendarView()yöntemi,DatePickerörneğindenCalendarViewalmanızı sağlar.
- Yeni bir
- Görünümler ayrıldığında geri çağırma alma
- Yeni bir
View.OnAttachStateChangeListener, bir görünüm penceresine eklendiğinde veya penceresinden ayrıldığında geri çağırma almanıza olanak tanır. İşleyici eklemek içinaddOnAttachStateChangeListener(), kaldırmak içinaddOnAttachStateChangeListener()yöntemini kullanın.
- Yeni bir
- Fragment breadcrumb dinleyicisi, yeni onInflate() imzası
- Yeni bir yöntem olan
setOnBreadCrumbClickListener(), uygulamaların fragment-breadcrumb tıklamalarını kesmesine ve tıklanan geri yığın girişine veya parçaya gitmeden önce gereken işlemleri yapmasına olanak tanıyan bir kanca sağlar. FragmentsınıfındaonInflate(attrs, savedInstanceState)desteği sonlandırıldı. Lütfen bunun yerineonInflate(activity, attrs, savedInstanceState)politikasını kullanın.
- Yeni bir yöntem olan
- Arama sonucunu yeni sekmede göster
ACTION_WEB_SEARCHamaçları içinEXTRA_NEW_SEARCHveri anahtarı, aramayı mevcut bir tarayıcı sekmesi yerine yeni bir tarayıcı sekmesinde açmanıza olanak tanır.
- Çizilebilir metin imleci
- Artık yeni kaynak özelliği
textCursorDrawableile metin imleci olarak kullanılacak bir çizilebilir öğe belirtebilirsiniz.
- Artık yeni kaynak özelliği
- Uzaktan görünümlerde gösterilen alt öğeyi ayarlama
RemoteViewsalt sınıflarında,ViewAnimatorveAdapterViewAnimatoralt sınıflarında (ör.AdapterViewFlipper,StackView,ViewFlipperveViewSwitcher) görüntülenen alt öğeyi ayarlamanıza olanak tanıyan yeni bir kolaylık yöntemi (setDisplayedChild(viewId, childIndex)) kullanılabilir.
- Oyun kumandaları ve diğer giriş cihazları için genel tuşlar
KeyEvent, oyun kumandası düğmelerini desteklemek için bir dizi genel tuş kodu ekler. Sınıf ayrıcaisGamepadButton(int)ve tuş kodlarıyla çalışmak için başka yardımcı yöntemler de ekler.
Grafik
- Bitmap'leri yönetmek için yardımcılar
setHasAlpha(boolean), bir uygulamanın, bir bit eşlemdeki tüm piksellerin opak (false) olduğunu veya bazı piksellerin opak olmayan alfa değerleri (true) içerebileceğini belirtmesine olanak tanır. Bazı yapılandırmalarda (ör. RGB_565) piksel başına alfa değerleri desteklenmediğinden bu çağrının yoksayıldığını unutmayın. Bu, çizimle ilgili bir ipucudur. Bazı durumlarda, opak olduğu bilinen bir bit eşlem, opak olmayan piksel başına alfa değerlerine sahip olabilecek bir bit eşlemden daha hızlı çizilebilir.getByteCount(), bir 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) öğrenmesine olanak tanır.sameAs(android.graphics.Bitmap), belirli bir Bitmap'in boyut, yapılandırma veya piksel verileri açısından mevcut Bitmap'ten farklı olup olmadığını belirler.
- Kamera konumunu ve dönüşünü ayarlama
Camera, 3D dönüşümler için kameranın konumunu kontrol etmek amacıylarotate()vesetLocation()olmak üzere iki yeni yöntem ekler.
Ağ
- Yüksek performanslı kablosuz kilit
- Yeni bir yüksek performanslı Wi-Fi kilidi, uygulamaların cihaz ekranı kapalıyken bile yüksek performanslı Wi-Fi bağlantılarını sürdürmesine olanak tanır. Uzun süre müzik, video veya ses akışı yapan uygulamalar, ekran kapalıyken bile akış performansını sağlamak için yüksek performanslı Wi-Fi kilidini alabilir. Daha fazla güç kullandığından, uygulamalar uzun süreli etkin bir bağlantıya ihtiyaç duyulduğunda yüksek performanslı Wi-Fi kilidini almalıdır.
Yüksek performanslı bir kilit oluşturmak için
createWifiLock()çağrısında kilit modu olarakWIFI_MODE_FULL_HIGH_PERFdeğerini iletin.
- Yeni bir yüksek performanslı Wi-Fi kilidi, uygulamaların cihaz ekranı kapalıyken bile yüksek performanslı Wi-Fi bağlantılarını sürdürmesine olanak tanır. Uzun süre müzik, video veya ses akışı yapan uygulamalar, ekran kapalıyken bile akış performansını sağlamak için yüksek performanslı Wi-Fi kilidini alabilir. Daha fazla güç kullandığından, uygulamalar uzun süreli etkin bir bağlantıya ihtiyaç duyulduğunda yüksek performanslı Wi-Fi kilidini almalıdır.
- Daha fazla trafik istatistiği
- Uygulamalar artık
TrafficStatsiç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 almak üzere yöntemleri kullanabilir.
- Uygulamalar artık
- SIP kimlik doğrulama kullanıcı adı
- Uygulamalar artık yeni
getAuthUserName()vesetAuthUserName()yöntemlerini kullanarak bir profil için SIP kimlik doğrulama kullanıcı adını alabilir ve ayarlayabilir.
- Uygulamalar artık yeni
İndirme Yöneticisi
- Tamamlanan indirme işlemlerinin işlenmesi
- Uygulamalar artık yalnızca tamamlandığında kullanıcıları bilgilendiren indirme işlemleri başlatabilir. Bu tür bir indirme işlemini başlatmak için uygulamalar, istek nesnesinin
setNotificationVisibility()yöntemindeVISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETIONdeğerini iletir. - Yeni bir yöntem olan
addCompletedDownload(), bir uygulamanın indirilenler veritabanına dosya eklemesine olanak tanır. Böylece dosya, İndirilenler uygulaması tarafından yönetilebilir.
- Uygulamalar artık yalnızca tamamlandığında kullanıcıları bilgilendiren indirme işlemleri başlatabilir. Bu tür bir indirme işlemini başlatmak için uygulamalar, istek nesnesinin
- İndirilenleri boyuta göre sıralanmış olarak göster
- Uygulamalar,
ACTION_VIEW_DOWNLOADSamacına yeni ekINTENT_EXTRAS_SORT_BY_SIZEekleyerek İndirilenler uygulamasını boyuta göre sıralama modunda başlatabilir.
- Uygulamalar,
IME çerçevesi
- Giriş yönteminin ek değer anahtarını alma
InputMethodSubtype, alt tür için bir ExtraValue dizesinin depolanıp depolanmadığını kontrol etmek amacıylacontainsExtraValueKey()yöntemini ve ExtraValue karma eşlemesinden belirli bir anahtar değerini ayıklamak içingetExtraValueOf()yöntemini ekler.
Medya
- Yeni ses akışı biçimleri
- Medya çerçevesi, daha iyi ses akışı için ham ADTS AAC içeriğine yerleşik destek ve en yüksek kalitede (kayıpsız) sıkıştırılmış ses içeriği için FLAC ses desteği ekler. Daha fazla bilgi için Desteklenen Medya Biçimleri belgesini inceleyin.
Durdurulan uygulamalarda başlatma kontrolleri
Android 3.1'den itibaren sistemin paket yöneticisi, durdurulmuş durumdaki uygulamaları takip eder ve arka plan işlemlerinden ve diğer uygulamalardan başlatılmalarını kontrol etme imkanı sunar.
Uygulamanın durdurulma durumunun, etkinliğin durdurulma durumuyla aynı olmadığını unutmayın. Sistem, bu iki durdurulmuş durumu ayrı ayrı yönetir.
Platform, gönderenin, Intent'in durdurulan uygulamadaki 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 intent filtrelerini, çözümlenecek potansiyel hedefler listesine ekleyin.FLAG_EXCLUDE_STOPPED_PACKAGES: Durdurulan uygulamaların intent filtrelerini olası hedefler listesinden hariç tutar.
Bir intent'te bu işaretlerden hiçbiri veya her ikisi de tanımlanmadığında varsayılan davranış, durdurulan uygulamaların dahil etme filtrelerini olası hedefler listesine dahil etmektir.
Sistemin tüm yayın intent'lerine FLAG_EXCLUDE_STOPPED_PACKAGES eklediğini unutmayın. Bunu, arka plan hizmetlerinden gelen yayınların, durdurulan uygulamaların bileşenlerini yanlışlıkla veya gereksiz yere başlatmasını önlemek için yapar.
Arka plan hizmeti veya uygulaması, durdurulan uygulamaları etkinleştirmesine izin verilmesi gereken yayın intent'lerine 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 durdurulduklarında (Uygulamaları Yönetme bölümünde) durdurulmuş durumdadır.
Uygulamanın ilk kez başlatılması ve yeni sürüme geçirilmesiyle ilgili bildirim
Platform, iki yeni intent işlemi aracılığıyla uygulamanın ilk başlatılması ve yükseltilmesiyle ilgili daha iyi bildirimler ekler:
ACTION_PACKAGE_FIRST_LAUNCH: Bir uygulama ilk kez başlatıldığında (yani durdurulmuş durumdan ilk kez çıkarıldığında) uygulamanın yükleyici paketine gönderilir. Veriler, paketin adını içerir.ACTION_MY_PACKAGE_REPLACED: Bir uygulamaya, mevcut bir sürümün üzerine yeni bir sürüm yüklenerek güncellendiğini bildirir. Bu, yalnızca değiştirilen uygulamaya gönderilir. Ek veri içermez. Bu işlemi almak için bir intent filtresi tanımlayın. Yükseltme işleminden sonra uygulamanızın düzgün çalışmasını sağlayan kodu tetiklemek için bu intent'i kullanabilirsiniz.Bu intent doğrudan uygulamaya gönderilir ancak yalnızca uygulama başlatılmış durumdayken (durdurulmuş durumda değilken) yükseltildiyse gönderilir.
Temel yardımcı programlar
- LRU önbelleği
- Yeni bir
LruCachesınıfı, uygulamalarınızın verimli önbelleğe alma özelliğinden yararlanmasını sağlar. Uygulamalar, önbelleğe alınan veriler için makul bir bellekte kaplanan yer sağlarken verileri hesaplamak veya ağdan indirmek için harcanan süreyi azaltmak amacıyla bu sınıfı kullanabilir.LruCache, sınırlı sayıda değere güçlü referanslar içeren bir önbellektir. Bir değere her erişildiğinde değer, sıranın başına taşınır. Dolu bir önbelleğe değer eklendiğinde, o sıranın sonundaki değer çıkarılır ve çöp toplama için uygun hale gelebilir.
- Yeni bir
intolarak dosya tanımlayıcı- Artık yeni
getFd()veyadetachFd()yöntemlerinden birini kullanarakParcelFileDescriptoriçin yerel dosya tanımlayıcı int değerini alabilirsiniz.
- Artık yeni
WebKit
- Dosya şeması çerezleri
CookieManagerartıkfile:URI şemasını kullanan çerezleri destekliyor.WebViewveyaCookieManagerörneği oluşturmadan önce dosya şeması çerezleri desteğini etkinleştirmek/devre dışı bırakmak içinsetAcceptFileSchemeCookies()kullanabilirsiniz.CookieManagerörneğinde,allowFileSchemeCookies()yöntemini çağırarak dosya şeması çerezlerinin etkin olup olmadığını kontrol edebilirsiniz.
- Giriş isteği bildirimi
- Android 3.0'da kullanıma sunulan tarayıcı otomatik giriş özelliklerini desteklemek için yeni
onReceivedLoginRequest()yöntemi, kullanıcı için otomatik giriş isteğinin işlendiğini ana uygulamaya bildirir.
- Android 3.0'da kullanıma sunulan tarayıcı otomatik giriş özelliklerini desteklemek için yeni
- Kaldırılan sınıflar ve arayüzler
- Daha önce desteği sonlandırılmış olan çeşitli sınıflar ve arayüzler, herkese açık API'den kaldırıldı. 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çi oynatılması için destek. 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, geliştiricilerin uygulama manifestlerinde beyan edebilecekleri yeni donanım özelliği sabitleri ekler. Bu sabitler, Google Play gibi harici varlıkları, uygulamanın platformun bu sürümünde desteklenen yeni donanım özellikleri gereksinimi hakkında bilgilendirir. Geliştiriciler, bu ve diğer özellik sabitlerini <uses-feature> manifest öğelerinde bildirir.
android.hardware.usb.accessory: Uygulama, USB üzerinden bağlanan ve ana makine olarak işlev gören harici donanım cihazlarıyla iletişim kurmak için USB API'yi kullanır.android.hardware.usb.host: Uygulama, USB üzerinden bağlanan harici donanım cihazlarıyla iletişim kurmak ve cihaz olarak çalışmak için USB API'yi kullanır.
Google Play, uygulamaları <uses-feature> manifest öğelerinde belirtilen özelliklere göre filtreler. Uygulama manifestinde özellik bildirme hakkında daha fazla bilgi için Google Play Filtreleri başlıklı makaleyi okuyun.
API Farklılıkları 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'nu inceleyin.
API Seviyesi
Android 3.1 platformu, çerçeve API'sinin güncellenmiş bir sürümünü sunar. Android 3.1 API'sine, 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.
Android 3.1'de kullanıma sunulan API'leri uygulamanızda 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 de eklemeniz gerekebilir.
Daha fazla bilgi için API düzeyi nedir? başlıklı makaleyi okuyun.