Android 3.2 API'leri

API Düzeyi: 13

Android 3.2 (HONEYCOMB_MR2), kullanıcılara ve geliştiricilere yeni özellikler ekleyen artımlı bir platform sürümüdür. Aşağıdaki bölümlerde, yeni özelliklere ve geliştirici API'lerine genel bir bakış sunulmaktadır.

Android 3.2 platformu, geliştiriciler için Android SDK'sı tarafından indirilebilir bir bileşen olarak sunulur. İndirilebilir platformda Android kitaplığı ve sistem resminin yanı sıra bir dizi emülatör kaplaması ve daha fazlası bulunur. Android 3.2 için geliştirmeye veya test etmeye başlamak istiyorsanız platformu SDK'nıza indirmek için Android SDK Yöneticisi'ni kullanın.

Platformda Öne Çıkanlar

Yeni kullanıcı özellikleri

  • Daha geniş bir tablet yelpazesi için optimizasyonlar

    Android 3.2, daha geniş bir tablet cihaz yelpazesinde mükemmel bir kullanıcı deneyimi sunmak için sistem genelinde çeşitli optimizasyonlar içerir.

  • Sabit boyutlu uygulamalar için uyumluluk yakınlaştırma

    Android 3.2, kullanıcılara daha büyük cihazlarda sabit boyutlu uygulamaları görüntülemek için yeni bir yol sunan yeni bir uyumluluk yakınlaştırma modunu kullanıma sunuyor. Yeni mod, tabletler gibi daha büyük ekran boyutlarında çalışacak şekilde tasarlanmamış uygulamalar için standart kullanıcı arayüzü uzatmasına piksel ölçeklendirmeli bir alternatif sunar. Uyumluluk desteği gerektiren uygulamalar için kullanıcılar, sistem çubuğundaki menü simgesinden yeni moda erişebilir.

  • SD karttan medya senkronizasyonu

    SD kartı destekleyen cihazlarda kullanıcılar artık medya dosyalarını doğrudan SD karttan, bu dosyaları kullanan uygulamalara yükleyebilir. Sistem olanağı, dosyaların sistem medya mağazasındaki uygulamalar tarafından erişilebilir olmasını sağlar.

Yeni geliştirici özellikleri

  • Ekranları yönetmek için genişletilmiş API desteği

    Android 3.2, geliştiricilere Android destekli cihazlar genelinde uygulama kullanıcı arayüzünü yönetmenin ek yollarını sunmak için platformun ekran desteği API'sinde uzantılar sunar. API'de yeni kaynak niteleyiciler ve yeni manifest özellikleri bulunur. Bunlar, genelleştirilmiş boyut kategorilerine dayanmak yerine, uygulamalarınızın farklı boyutlarda görüntülenme şekli üzerinde daha hassas kontrol sahibi olmanızı sağlar.

    Platform, sabit boyutlu uygulamalar ve çeşitli ekran boyutları için sınırlı destek sunan uygulamalarda mümkün olan en iyi görüntülemeyi sağlamak amacıyla, kullanıcı arayüzünü daha küçük bir ekran alanında oluşturduktan sonra ekrandaki mevcut alanı dolduracak şekilde ölçeklendiren yeni bir yakınlaştırma uyumluluk modu da sunar. Ekran desteği API'si ve sağladığı denetimler hakkında daha fazla bilgi için aşağıdaki bölümlere bakın.

API'ye Genel Bakış

Screens Desteği API'leri

Android 3.2, uygulamaların farklı ekran boyutlarında nasıl görüntüleneceği konusunda size daha fazla kontrol sunan yeni ekran desteği API'lerini kullanıma sunar. API, platformun genelleştirilmiş ekran yoğunluğu modeli de dahil olmak üzere mevcut ekranları destekleyen API'yi temel alır. Ancak bu API'yi, belirli ekran aralıklarını, genel ekran boyutlarına (büyük veya büyük gibi) göre değil, yoğunluktan bağımsız piksel birimleriyle (600 dp veya 720 dp genişlik gibi) ölçülen boyutlarına göre hassas bir şekilde hedefleme özelliği ile genişletir.

Bir uygulamanın kullanıcı arayüzünü tasarlarken, yoğunluk soyutlaması sağlamak için platformdan yararlanabilirsiniz. Bu sayede, uygulamaların cihazlar arasındaki gerçek piksel yoğunluğundaki farklılıkları telafi etmesine gerek kalmaz. Uygulama kullanıcı arayüzünü, mevcut yatay veya dikey alana göre tasarlayabilirsiniz. Platform, kullanılabilir alan miktarını üç yeni özellik kullanarak ifade eder: smallestWidth, width ve height.

  • Bir ekranın smallestWidth, yoğunluktan bağımsız piksel ("dp") birimleriyle ölçülen temel minimum boyutudur. Ekranın yüksekliği veya genişliği arasından daha kısa olan. Dikey yönde olan bir ekran için smallestWidth normalde genişliğine, yatay yönde olan bir ekran için ise yüksekliğine göre belirlenir. smallestWidth her durumda ekranın sabit bir özelliğinden türetilir ve değer, yönde değişiklikten bağımsız olarak değişmez. smallestWidth, sistem tarafından ayrılan ekran alanları hariç olmak üzere uygulama kullanıcı arayüzünün çizilmesi gereken mümkün olan en kısa genişliği temsil ettiği için uygulamalar için önemlidir.
  • Buna karşılık, bir ekranın width ve height değerleri, sistem tarafından ayrılmış ekran alanları hariç, "dp" birimler cinsinden ölçülen uygulama düzeni için kullanılabilen geçerli yatay veya dikey alanı temsil eder. Kullanıcı yönü yatay ve dikey arasında değiştirdiğinde ekranın genişliği ve yüksekliği değişir.

Yeni ekran desteği API'si, uygulama kullanıcı arayüzünü mevcut ekranın smallestWidth değerine göre yönetmenize olanak tanıyacak şekilde tasarlanmıştır. Gerekirse kullanıcı arayüzünü mevcut genişliğe veya yüksekliğe göre de yönetebilirsiniz. API, bu amaçlar için şu araçları sağlar:

  • Minimum smallestWidth, width veya height değerine göre düzenleri ve diğer kaynakları hedeflemek için yeni kaynak niteleyiciler ve
  • Uygulamanın maksimum ekran uyumluluğu aralığını belirtmek için kullanılan yeni manifest özellikleri:

Ayrıca, uygulamalar platformun önceki sürümlerinde olduğu gibi, sistemi sorgulamaya ve çalışma zamanında kullanıcı arayüzü ve kaynak yüklemeyi yönetmeye devam edebilir.

Yeni API, en küçük genişlik, genişlik ve yükseklik aracılığıyla ekranları daha doğrudan hedeflemenize olanak tanıdığından farklı ekran türlerinin tipik özelliklerini anlamak faydalı olacaktır. Aşağıdaki tabloda, "dp" birimlerinde ölçülen bazı örnekler verilmiştir.

Tablo 1. Yoğunluk ve boyutu dp cinsinden olan tipik cihazlar.

Tür Yoğunluk (genelleştirilmiş) Boyutlar (dp) en küçükGenişlik (dp)
Referans telefon mdpi 320x480 320
Küçük tablet/büyük telefon mdpi 480x800 480
7 inç tablet mdpi 600x1024 600
10 inç tablet mdpi 800x1280 800

Aşağıdaki bölümlerde, yeni ekran niteleyicileri ve manifest özellikleri hakkında daha fazla bilgi verilmektedir. Screen Support API'nin nasıl kullanılacağıyla ilgili eksiksiz bilgi için Birden Çok Ekranı Destekleme bölümüne bakın.

Ekran desteği için yeni kaynak niteleyiciler

Android 3.2'deki yeni kaynak niteleyiciler, düzenlerinizi ekran boyutu aralıkları için daha iyi hedeflemenize olanak tanır. Niteleyicileri kullanarak, belirli bir minimum smallestWidth, mevcut genişlik veya mevcut yükseklik için tasarlanmış, yoğunluğa bağlı olmayan piksel cinsinden ölçülen kaynak yapılandırmaları oluşturabilirsiniz.

Yeni niteleyiciler şunlardır:

  • swNNNdp: Kaynağın "dp" birimlerinde ölçülen minimum smallestWidth değerini belirtir. Yukarıda belirtildiği gibi, ekranın smallestWidth özelliği, yöndemeden bağımsız olarak sabittir. Örnekler: sw320dp, sw720dp, sw720dp.
  • wNNNdp ve hNNNdp: Kaynağın "dp" birimlerinde ölçülen minimum genişliğini veya yüksekliğini belirtir. Yukarıda belirtildiği gibi, bir ekranın genişliği ve yüksekliği ekranın yönüne göre değişir ve yön değiştiğinde değişir. Örnekler: w320dp, w720dp, h1024dp.

Gerekirse birden fazla çakışan kaynak yapılandırması da oluşturabilirsiniz. Örneğin, bazı kaynakları 480 dp'den geniş ekranlarda, bazılarını 600 dp'den geniş ekranlarda ve bazılarını da 720 dp'den geniş ekranlarda kullanılmak üzere etiketleyebilirsiniz. Belirli bir ekran için birden fazla kaynak yapılandırması uygun olduğunda sistem, en yakın eşleşmeyi sağlayan yapılandırmayı seçer. Belirli bir ekrana hangi kaynakların yükleneceği üzerinde hassas kontrol sahibi olmak için kaynakları bir nitelikle etiketleyebilir veya birkaç yeni ya da mevcut niteliği birleştirebilirsiniz.

Daha önce listelenen tipik boyutlara dayanarak yeni nitelikleri nasıl kullanabileceğinize dair bazı örnekler aşağıda verilmiştir:

res/layout/main_activity.xml   # For phones
res/layout-sw600dp/main_activity.xml   # For 7” tablets
res/layout-sw720dp/main_activity.xml   # For 10” tablets
res/layout-w600dp/main_activity.xml   # Multi-pane when enough width
res/layout-sw600dp-w720dp/main_activity.xml   # For large width

Platformun eski sürümleri yeni nitelikleri yoksayar. Bu nedenle, uygulamanızın tüm cihazlarda harika görünmesini sağlamak için bunları gerektiği gibi karıştırabilirsiniz. Aşağıda bazı örnekler verilmiştir:

res/layout/main_activity.xml   # For phones
res/layout-xlarge/main_activity.xml   # For pre-3.2 tablets
res/layout-sw600dp/main_activity.xml   # For 3.2 and up tablets

Yeni nitelikleri kullanma hakkında tam bilgi için Yeni boyut niteliklerini kullanma başlıklı makaleyi inceleyin.

Ekran boyutu uyumluluğu için yeni manifest özellikleri

Çerçeve, uygulamanızın farklı ekran boyutlarına yönelik desteğini yönetmenizi sağlayan bir dizi yeni <supports-screens> manifest özelliği sunar. Daha açık belirtmek gerekirse, uygulamanızın çalıştırılması için tasarlandığı en büyük ve en küçük ekranları, ayrıca sistemin yeni ekran uyumluluk moduna ihtiyaç duymadan çalıştırılması için tasarlandığı en büyük ekranı belirtebilirsiniz. Yukarıda açıklanan kaynak niteleyicilerde olduğu gibi yeni manifest özellikleri, uygulamanın desteklediği ekran aralığını (smallestWidth ile belirtilen şekilde) belirtir.

Ekran desteği için yeni manifest özellikleri şunlardır:

  • android:compatibleWidthLimitDp="numDp": Bu özellik, uygulamanın uyumluluk moduna ihtiyaç duymadan çalışabileceği maksimum smallestWidth değerini belirtmenize olanak tanır. Mevcut ekran belirtilen değerden büyükse sistem, uygulamayı normal modda gösterir ancak kullanıcının isteğe bağlı olarak sistem çubuğundaki bir ayar aracılığıyla uyumluluk moduna geçmesine olanak tanır.
  • android:largestWidthLimitDp="numDp": Bu özellik, uygulamanın çalıştırılması için tasarlanan maksimum smallestWidth değerini belirtmenizi sağlar. Mevcut ekran belirtilen değerden büyükse sistem, mevcut ekranda en iyi görüntülemeyi sağlamak için uygulamayı ekran uyumluluğu moduna zorlar.
  • android:requiresSmallestWidthDp="numDp": Bu özellik, uygulamanın çalışabileceği minimum SmallestWidth değerini belirtmenize olanak tanır. Mevcut ekran belirtilen değerden küçükse sistem, uygulamanın cihazla uyumlu olmadığını düşünür ancak uygulamanın yüklenmesini ve çalıştırılmasını engellemez.

Not: Google Play şu anda uygulamaları yukarıdaki özelliklerden herhangi birine göre filtrelememektedir. Filtreleme desteği sonraki bir platform sürümünde eklenecektir. Ekran boyutuna göre filtreleme gerektiren uygulamalar mevcut <supports-screens> özelliklerini kullanabilir.

Yeni özelliklerin nasıl kullanılacağı hakkında tam bilgi için Ekran boyutu desteğini belirtme başlıklı makaleyi inceleyin.

Ekran uyumluluğu modu

Android 3.2, çalıştırıldıkları kadar büyük ekranları desteklemediğini açıkça belirten uygulamalar için yeni bir ekran uyumluluk modu sağlar. Bu yeni "yakınlaştırma" modu, piksel ölçeklidir. Uygulamayı daha küçük bir ekran alanında oluşturur ve ardından pikselleri mevcut ekranı dolduracak şekilde ölçeklendirir.

Sistem, varsayılan olarak ekran uyumluluğu modunu, bunu gerektiren uygulamalar için kullanıcı seçeneği olarak sunar. Kullanıcılar, sistem çubuğundaki bir denetimi kullanarak yakınlaştırma modunu etkinleştirebilir veya devre dışı bırakabilir.

Yeni ekran uyumluluğu modu tüm uygulamalar için uygun olmayabileceğinden platform, uygulamanın manifest özelliklerini kullanarak bu modu devre dışı bırakmasına izin verir. Uygulama tarafından devre dışı bırakıldığında sistem, uygulama çalışırken kullanıcılara "yakınlaştırma" uyumluluk modunu seçenek olarak sunmaz.

Not: Uygulamalarınızda uyumluluk modunu nasıl kontrol edeceğiniz hakkında önemli bilgiler için lütfen Android Developers Blog'daki Büyük Ekranlardaki Uygulamalar İçin Yeni Mod makalesini inceleyin.

720p televizyonlar ve benzer cihazlar için yeni ekran yoğunluğu

Android 3.2, 720p televizyonlarda veya orta yoğunluktaki ekranlara sahip benzer cihazlarda çalışan uygulamaların ihtiyaçlarını karşılamak için yaklaşık 213 dpi'ye sahip yeni bir genelleştirilmiş yoğunluk olan tvdpi'ü kullanıma sunar. Uygulamalar, densityDpi içinde yeni yoğunluk için sorgu yapabilir ve televizyonlar ile benzer cihazlara ait kaynakları etiketlemek için yeni tvdpi niteleyicisini kullanabilir. Örnek:

res/drawable-tvdpi/my_icon.png   # Bitmap for tv density

Genel olarak, uygulamaların bu yoğunlukta çalışması gerekmez. 720p ekran için çıkış gerektiğinde kullanıcı arayüzü öğeleri platform tarafından otomatik olarak ölçeklendirilebilir.

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

  • Parçalar
    • Yeni Fragment.SavedState sınıfı, saveFragmentInstanceState() aracılığıyla bir fragment örneğinden alınan durum bilgilerini tutar.
    • Yeni saveFragmentInstanceState() yöntemi, belirli bir Parçanın mevcut örnek durumunu kaydeder. Durum, daha sonra mevcut durumla eşleşen yeni bir Fragment örneği oluşturulurken kullanılabilir.
    • Yeni setInitialSavedState() yöntemi, bir Fragment'in ilk oluşturulduğunda ilk kaydedilen durumunu ayarlar.
    • Yeni onViewCreated() geri çağırma yöntemi, onCreateView()'un döndürüldüğünü ancak kaydedilmiş bir durumun Görüntüleme'ye geri yüklenmesinden önce Fragment'i bilgilendirir.
    • isDetached() yöntemi, Fragment'in kullanıcı arayüzünden açıkça ayrılıp ayrılmadığını belirler.
    • Yeni attach() ve detach() yöntemleri, uygulamaların kullanıcı arayüzündeki parçaları yeniden eklemesini veya çıkarmasını sağlar.
    • Yeni bir setCustomAnimations() aşırı yükleme yöntemi, giriş/çıkış işlemleri ve özellikle arka yığının açılması için çalışacak belirli animasyon kaynaklarını ayarlamanıza olanak tanır. Mevcut uygulama, parçaların arka yığın açılırken sergilediği farklı davranışı dikkate almaz.
  • ActivityInfo ve ApplicationInfo'daki ekran boyutu bilgileri
  • WindowManager'dan görüntü boyutunu alma yardımcıları
  • Herkese açık yeni "holografik" stiller
    • Platformda artık metin, işlem çubuğu widget'ları, sekmeleri ve daha fazlası için herkese açık çeşitli "holografik" stiller sunuyor. Tam listeyi R.style
  • LocalActivityManager, ActivityGroup ve LocalActivityManager desteği sonlandırıldı
    • Yeni uygulamalar bu sınıflar yerine Fragment'leri kullanmalıdır. Platformun eski sürümlerinde çalışmaya devam etmek için Android SDK'da bulunan v4 Destek Kitaplığı'nı (uyumluluk kitaplığı) kullanabilirsiniz. 4. sürüm Destek Kitaplığı, Fragment API'nin Android 1.6'ya (API düzeyi 4) kadar uyumlu bir sürümünü sağlar.
    • Android 3.0 (API düzeyi 11) veya sonraki sürümler için geliştirilen uygulamalarda sekmeler, genellikle sekmeleri işlem çubuğu alanlarına yerleştirmek amacıyla yeni ActionBar.newTab() ve ilgili API'ler kullanılarak kullanıcı arayüzünde sunulur.

Medya çerçevesi

  • Platformun medya sağlayıcısını (MediaStore) kullanan uygulamalar artık medya verilerini, cihaz tarafından destekleniyorsa doğrudan çıkarılabilir SD karttan okuyabilir. Uygulamalar ayrıca MTP API'yi kullanarak doğrudan SD kart dosyalarıyla etkileşimde de bulunabilir.

Grafik

IME çerçevesi

  • Değiştirici tuşların mevcut durumunu almak için yeni getModifiers() yöntemi.

USB çerçevesi

  • Cihazın ham USB tanımlayıcılarını almak için yeni getRawDescriptors() yöntemi. Doğrudan üst düzey API'ler aracılığıyla desteklenmeyen tanımlayıcılara erişmek için bu yöntemi kullanabilirsiniz.

Telefon

Temel yardımcı programlar

Yeni özellik sabitleri

Platform, Google Play gibi harici tüzel kişileri gerekli donanım ve yazılım özelliklerinden haberdar etmek için uygulama manifest dosyalarında tanımlayabileceğiniz yeni donanım özelliği sabitleri ekler. Bunları ve diğer özellik sabitlerini <uses-feature> manifest öğelerinde tanımlarsınız.

Google Play, uygulamaların yalnızca koşullarının karşılandığı cihazlarda kullanılabilmesini sağlamak için <uses-feature> özelliklerine göre filtreler.

  • Yatay veya dikey gereksinimleri için özellik sabitleri

    Android 3.2, uygulamaların yatay yönde mi, dikey yönde mi yoksa her iki yönde mi görüntüleme gerektirdiklerini belirtmelerini sağlayan yeni özellik sabitleri sunuyor. Bu sabit değerlerin bildirilmesi, uygulamanın, ilgili yönü sunmayan bir cihaza yüklenmemesi gerektiği anlamına gelir. Buna karşılık, sabitlerden biri veya ikisi de tanımlanmamışsa uygulamanın, tanımlanmamış yönler için tercihi olmadığını ve bunları sunmayan bir cihaza yüklenmiş olabileceğini gösterir.

    Hem yatay hem de dikey yönlerde düzgün çalışan tipik bir uygulamanın normalde yön şartı beyan etmesi gerekmez. Bunun yerine, öncelikle bir yön için tasarlanmış bir uygulama (ör. televizyon için tasarlanmış bir uygulama), bu yönü sağlamayan cihazların uygulamayı kullanamamasını sağlamak amacıyla sabitlerden birini tanımlayabilir.

    Manifest dosyasında belirtilen etkinliklerden herhangi biri, android:screenOrientation özelliğini kullanarak belirli bir yönde çalıştırılmasını istiyorsa bu, uygulamanın bu yönü gerektirdiğini de belirtir.

  • Diğer özellik sabitleri

API Farkları Raporu

Android 3.2'deki (API Seviyesi 13) tüm API değişikliklerinin ayrıntılı görünümü için API Farklılık Raporu'na bakın.

API düzeyi

Android 3.2 platformu, çerçeve API'sinin güncellenmiş bir sürümünü sunar. Android 3.2 API'ye, sistemde depolanan bir tam sayı tanımlayıcı (13) atanır. "API Seviyesi" 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.2'de kullanıma sunulan API'leri uygulamanızda kullanmak için uygulamayı Android 3.2 SDK platformunda sağlanan Android kitaplığıyla derlemeniz gerekir. İhtiyaçlarınıza bağlı olarak, uygulamanın manifest dosyasındaki <uses-sdk> öğesine bir android:minSdkVersion="13" özelliği eklemeniz de gerekebilir.

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