API Android 3.2

Level API: 13

Android 3.2 (HONEYCOMB_MR2) adalah rilis platform inkremental yang menambahkan kemampuan baru bagi pengguna dan developer. Bagian di bawah ini memberikan ringkasan tentang fitur baru dan API developer.

Untuk developer, platform Android 3.2 tersedia sebagai komponen yang dapat didownload untuk Android SDK. Platform yang dapat didownload mencakup library Android dan image sistem, serta sekumpulan skin emulator dan lainnya. Untuk mulai mengembangkan atau menguji Android 3.2, gunakan Android SDK Manager untuk mendownload platform ke SDK Anda.

Sorotan Platform

Fitur pengguna baru

  • Pengoptimalan untuk tablet yang lebih beragam

    Android 3.2 menyertakan berbagai pengoptimalan di seluruh sistem untuk memastikan pengalaman pengguna yang luar biasa di berbagai perangkat tablet.

  • Zoom kompatibilitas untuk aplikasi berukuran tetap

    Android 3.2 memperkenalkan mode zoom kompatibilitas baru yang memberi pengguna cara baru untuk melihat aplikasi berukuran tetap pada perangkat yang lebih besar. Mode baru ini menyediakan alternatif berskala piksel dari peregangan UI standar untuk aplikasi yang tidak dirancang untuk berjalan pada ukuran layar yang lebih besar, seperti di tablet. Mode baru ini dapat diakses pengguna dari ikon menu di kolom sistem, untuk aplikasi yang memerlukan dukungan kompatibilitas.

  • Sinkronisasi media dari kartu SD

    Pada perangkat yang mendukung kartu SD, pengguna kini dapat memuat file media langsung dari kartu SD ke aplikasi yang menggunakannya. Fasilitas sistem membuat file dapat diakses oleh aplikasi dari penyimpanan media sistem.

Fitur developer baru

  • API yang diperluas untuk mengelola dukungan layar

    Android 3.2 memperkenalkan ekstensi ke API dukungan layar platform untuk memberi developer cara tambahan dalam mengelola UI aplikasi di berbagai perangkat yang didukung Android. API ini menyertakan penentu resource baru dan atribut manifes baru yang memberi Anda kontrol lebih akurat terhadap cara aplikasi ditampilkan pada ukuran yang berbeda, bukan mengandalkan kategori ukuran umum.

    Guna memastikan tampilan terbaik untuk aplikasi berukuran tetap dan aplikasi dengan dukungan terbatas untuk berbagai ukuran layar, platform ini juga menyediakan mode kompatibilitas zoom baru yang merender UI pada area layar yang lebih kecil, lalu menskalakannya untuk mengisi ruang yang tersedia pada layar. Untuk mengetahui informasi selengkapnya tentang API dukungan layar dan kontrol yang disediakannya, lihat bagian di bawah ini.

Ringkasan API

Screens Support API

Android 3.2 memperkenalkan API dukungan layar baru yang memberi Anda lebih banyak kontrol atas cara aplikasi ditampilkan di berbagai ukuran layar. API ini mem-build berdasarkan API dukungan layar yang ada, termasuk model kepadatan layar umum platform, tetapi memperluasnya dengan kemampuan untuk secara tepat menargetkan rentang layar tertentu berdasarkan dimensinya, yang diukur dalam unit piksel kepadatan mandiri (seperti lebar 600 dp atau 720 dp), bukan berdasarkan ukuran layar umum (seperti besar atau ekstra besar)

Saat mendesain UI aplikasi, Anda masih dapat mengandalkan platform untuk menyediakan abstraksi kepadatan, yang berarti aplikasi tidak perlu mengompensasi perbedaan kepadatan piksel sebenarnya di berbagai perangkat. Anda dapat mendesain UI aplikasi sesuai dengan jumlah ruang horizontal atau vertikal yang tersedia. Platform ini menunjukkan jumlah ruang yang tersedia menggunakan tiga karakteristik baru: smallestWidth, width, dan height.

  • smallestWidth layar adalah ukuran minimum dasar, diukur dalam satuan piksel kepadatan mandiri ("dp"). Dari tinggi atau lebar layar, ukurannya lebih pendek. Untuk layar dalam orientasi potret, smallestWidth biasanya didasarkan pada lebarnya, sedangkan dalam orientasi lanskap didasarkan pada tingginya. Dalam semua kasus, smallestWidth berasal dari karakteristik tetap layar dan nilainya tidak berubah, terlepas dari orientasi. SmallestWidth penting untuk aplikasi karena mewakili lebar terpendek yang perlu digambar pada UI aplikasi, tidak termasuk area layar yang dicadangkan oleh sistem.
  • Sebaliknya, lebar dan tinggi layar mewakili ruang horizontal atau vertikal saat ini yang tersedia untuk tata letak aplikasi, yang diukur dalam satuan "dp", tidak termasuk area layar yang dipesan oleh sistem. Lebar dan tinggi layar akan berubah saat pengguna beralih orientasi antara lanskap dan potret.

API dukungan layar baru dirancang untuk memungkinkan Anda mengelola UI aplikasi sesuai dengan smallestWidth layar saat ini. Anda juga dapat mengelola UI sesuai dengan lebar atau tinggi saat ini, sesuai kebutuhan. Untuk tujuan tersebut, API menyediakan alat berikut:

  • Penentu resource baru untuk menargetkan tata letak dan resource lainnya ke smallestWidth, lebar, atau tinggi minimum, dan
  • Atribut manifes baru, untuk menentukan rentang kompatibilitas layar maksimum aplikasi

Selain itu, aplikasi masih dapat mengkueri sistem serta mengelola UI dan pemuatan resource saat runtime, seperti dalam versi platform sebelumnya.

Karena API baru ini memungkinkan Anda menargetkan layar secara langsung melalui smallestWidth, lebar, dan tinggi, sebaiknya pahami karakteristik umum berbagai jenis layar. Tabel di bawah ini menyediakan beberapa contoh, yang diukur dalam satuan "dp".

Tabel 1. Perangkat pada umumnya, dengan kepadatan dan ukuran dalam dp.

Jenis Kepadatan (umum) Dimensi (dp) smallestWidth (dp)
Ponsel dasar mdpi 320x480 320
Tablet kecil/ponsel besar mdpi 480x800 480
Tablet 7 inci mdpi 600x1024 600
Tablet 10 inci mdpi 800x1280 800

Bagian di bawah ini memberikan informasi selengkapnya tentang penentu layar baru dan atribut manifes. Untuk informasi selengkapnya tentang cara menggunakan API dukungan layar, lihat Mendukung Beberapa Layar.

Penentu resource baru untuk dukungan layar

Penentu resource baru di Android 3.2 memungkinkan Anda menargetkan tata letak dengan lebih baik untuk rentang ukuran layar. Dengan menggunakan penentu, Anda dapat membuat konfigurasi resource yang dirancang untuk smallestWidth, lebar saat ini, atau tinggi saat ini minimum tertentu, yang diukur dalam piksel kepadatan mandiri.

Penentu baru adalah:

  • swNNNdp — Menentukan smallestWidth minimum tempat resource harus digunakan, diukur dalam satuan "dp". Seperti yang disebutkan di atas, smallestWidth layar bersifat konstan, apa pun orientasinya. Contoh: sw320dp, sw720dp, sw720dp.
  • wNNNdp dan hNNNdp — Menentukan lebar atau tinggi minimum yang digunakan resource, diukur dalam satuan "dp". Seperti yang disebutkan di atas, lebar dan tinggi layar bersifat relatif terhadap orientasi layar dan akan berubah setiap kali orientasi berubah. Contoh: w320dp, w720dp, h1024dp.

Anda juga dapat membuat beberapa konfigurasi resource yang tumpang-tindih jika diperlukan. Misalnya, Anda dapat memberi tag pada beberapa resource untuk digunakan pada layar yang lebih lebar dari 480 dp, yang lainnya untuk layar yang lebih lebar dari 600 dp, dan yang lainnya untuk layar yang lebih lebar dari 720 dp. Jika beberapa konfigurasi resource memenuhi syarat untuk layar tertentu, sistem akan memilih konfigurasi yang paling cocok. Untuk kontrol yang akurat atas resource mana yang dimuat pada layar tertentu, Anda dapat memberi tag pada resource dengan satu penentu atau menggabungkan beberapa penentu baru atau yang sudah ada.

Berdasarkan dimensi standar yang tercantum sebelumnya, berikut adalah beberapa contoh cara menggunakan penentu baru:

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

Versi platform yang lebih lama akan mengabaikan penentu baru, sehingga Anda dapat mencampurnya sesuai kebutuhan untuk memastikan aplikasi terlihat bagus di perangkat apa pun. Berikut beberapa contohnya:

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

Untuk informasi selengkapnya tentang cara menggunakan penentu baru, lihat Menggunakan penentu ukuran baru.

Atribut manifes baru untuk kompatibilitas ukuran layar

Framework ini menawarkan kumpulan atribut manifes <supports-screens> baru yang memungkinkan Anda mengelola dukungan aplikasi untuk berbagai ukuran layar. Secara khusus, Anda dapat menentukan layar terbesar dan terkecil tempat aplikasi dirancang untuk berjalan, serta layar terbesar tempat aplikasi dirancang berjalan tanpa memerlukan mode kompatibilitas layar baru dari sistem. Seperti penentu resource yang dijelaskan di atas, atribut manifes baru menentukan rentang layar yang didukung aplikasi, seperti yang ditetapkan oleh smallestWidth.

Atribut manifes baru untuk dukungan layar adalah:

  • android:compatibleWidthLimitDp="numDp" — Atribut ini memungkinkan Anda menentukan smallestWidth maksimum tempat aplikasi dapat berjalan tanpa memerlukan mode kompatibilitas. Jika layar saat ini lebih besar dari nilai yang ditentukan, sistem akan menampilkan aplikasi dalam mode normal tetapi memungkinkan pengguna secara opsional beralih ke mode kompatibilitas melalui setelan di kolom sistem.
  • android:largestWidthLimitDp="numDp" — Atribut ini memungkinkan Anda menentukan smallestWidth maksimum tempat aplikasi dirancang untuk dijalankan. Jika layar saat ini lebih besar dari nilai yang ditentukan, sistem akan memaksa aplikasi ke mode kompatibilitas layar untuk memastikan tampilan terbaik di layar saat ini.
  • android:requiresSmallestWidthDp="numDp" — Atribut ini memungkinkan Anda menentukan smallestWidth minimum tempat aplikasi dapat dijalankan. Jika layar saat ini lebih kecil dari nilai yang ditentukan, sistem akan menganggap aplikasi tersebut tidak kompatibel dengan perangkat, tetapi tidak mencegahnya diinstal dan dijalankan.

Catatan: Google Play saat ini tidak memfilter aplikasi berdasarkan salah satu atribut di atas. Dukungan untuk pemfilteran akan ditambahkan dalam rilis platform selanjutnya. Aplikasi yang memerlukan pemfilteran berdasarkan ukuran layar dapat menggunakan atribut <supports-screens> yang ada.

Untuk informasi selengkapnya tentang cara menggunakan atribut baru, lihat Mendeklarasikan dukungan ukuran layar.

Mode kompatibilitas layar

Android 3.2 menyediakan mode kompatibilitas layar baru untuk aplikasi yang secara eksplisit mendeklarasikan bahwa aplikasi tersebut tidak mendukung layar sebesar layar yang sedang dijalankan. Mode "zoom" baru ini melakukan penskalaan piksel — mode ini merender aplikasi dalam area layar yang lebih kecil, lalu menskalakan piksel untuk mengisi layar saat ini.

Secara default, sistem menawarkan mode kompatibilitas layar sebagai opsi pengguna, untuk aplikasi yang memerlukannya. Pengguna dapat mengaktifkan dan menonaktifkan mode zoom menggunakan kontrol yang tersedia di kolom sistem.

Karena mode kompatibilitas layar baru mungkin tidak sesuai untuk semua aplikasi, platform mengizinkan aplikasi untuk menonaktifkannya menggunakan atribut manifes. Saat dinonaktifkan oleh aplikasi, sistem tidak menawarkan mode kompatibilitas "zoom" sebagai opsi bagi pengguna saat aplikasi sedang berjalan.

Catatan: Untuk informasi penting tentang cara mengontrol mode kompatibilitas di aplikasi Anda, baca artikel Mode Baru untuk Aplikasi di Layar Besar di Blog Developer Android.

Kepadatan layar baru untuk televisi 720p dan perangkat serupa

Untuk memenuhi kebutuhan aplikasi yang berjalan pada televisi 720p atau yang serupa dengan layar berkepadatan sedang, Android 3.2 memperkenalkan kepadatan umum baru, tvdpi, dengan perkiraan dpi 213. Aplikasi dapat membuat kueri untuk kepadatan baru di densityDpi dan dapat menggunakan penentu tvdpi baru untuk memberi tag pada resource untuk televisi dan perangkat serupa. Contoh:

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

Secara umum, aplikasi tidak perlu bekerja dengan kepadatan ini. Untuk situasi saat output diperlukan untuk layar 720p, elemen UI dapat diskalakan secara otomatis oleh platform.

Framework UI

  • Fragmen
    • Class Fragment.SavedState baru menyimpan informasi status yang diambil dari instance fragmen melalui saveFragmentInstanceState().
    • Metode baru saveFragmentInstanceState() menyimpan status instance saat ini dari Fragment yang ditentukan. Status ini dapat digunakan nanti saat membuat instance Fragmen baru yang cocok dengan status saat ini.
    • Metode baru setInitialSavedState() menetapkan status tersimpan awal untuk sebuah Fragment saat pertama kali dibuat.
    • Metode callback onViewCreated() baru memberi tahu Fragment bahwa onCreateView() telah ditampilkan, tetapi sebelum status tersimpan dipulihkan ke View.
    • Metode isDetached() menentukan apakah Fragment telah dilepas secara eksplisit dari UI.
    • Metode attach() dan detach() baru memungkinkan aplikasi melampirkan kembali atau melepaskan fragmen di UI.
    • Metode overload setCustomAnimations() yang baru memungkinkan Anda menetapkan resource animasi tertentu yang akan dijalankan untuk operasi masuk/keluar, dan khususnya saat memunculkan data sebelumnya. Implementasi yang ada tidak memperhitungkan perilaku fragmen yang berbeda saat memunculkan data sebelumnya.
  • Informasi ukuran layar di ActivityInfo dan ApplicationInfo
  • Helper untuk mendapatkan ukuran layar dari WindowManager
  • Gaya "holografis" publik baru
    • Platform ini kini menampilkan berbagai gaya "holografis" publik untuk teks, widget serta tab actionbar, dan lain-lain. Buka R.style untuk mengetahui daftar lengkapnya.
  • LocalActivityManager, ActivityGroup, dan LocalActivityManager kini tidak digunakan lagi
    • Aplikasi baru harus menggunakan Fragment, bukan class ini. Untuk terus berjalan pada versi platform yang lebih lama, Anda dapat menggunakan Support Library v4 (library kompatibilitas), yang tersedia di Android SDK. Support Library v4 menyediakan versi Fragment API yang kompatibel hingga Android 1.6 (API level 4).
    • Untuk aplikasi yang dikembangkan dengan Android 3.0 (API level 11) atau yang lebih tinggi, tab biasanya ditampilkan pada UI menggunakan ActionBar.newTab() baru dan API terkait untuk menempatkan tab dalam area panel tindakannya.

Framework media

  • Aplikasi yang menggunakan penyedia media platform (MediaStore) kini dapat membaca data media langsung dari kartu SD yang dapat dilepas, jika didukung oleh perangkat. Aplikasi juga dapat berinteraksi dengan file kartu SD secara langsung, menggunakan MTP API.

Grafis

framework IME

  • Metode getModifiers() baru untuk mengambil status tombol pengubah saat ini.

Framework USB

  • Metode getRawDescriptors() baru untuk mengambil deskriptor USB mentah untuk perangkat. Anda dapat menggunakan metode ini untuk mengakses deskriptor yang tidak didukung secara langsung melalui API dengan tingkat yang lebih tinggi.

Jaringan

Telepon

Utilitas inti

Konstanta fitur baru

Platform ini menambahkan konstanta fitur hardware baru yang dapat Anda deklarasikan dalam manifes aplikasinya, untuk menginformasikan entity eksternal seperti Google Play tentang kemampuan hardware dan software yang diperlukan. Anda mendeklarasikan konstanta fitur ini dan lainnya dalam elemen manifes <uses-feature>.

Google Play memfilter aplikasi berdasarkan atribut <uses-feature>, untuk memastikan bahwa aplikasi tersebut hanya tersedia untuk perangkat yang memenuhi persyaratannya.

  • Konstanta fitur untuk persyaratan lanskap atau potret

    Android 3.2 memperkenalkan konstanta fitur baru yang memungkinkan aplikasi menentukan apakah aplikasi memerlukan tampilan dalam orientasi lanskap, orientasi potret, atau keduanya. Mendeklarasikan konstanta ini akan menunjukkan bahwa aplikasi tidak boleh diinstal pada perangkat yang tidak menawarkan orientasi terkait. Sebaliknya, jika salah satu atau kedua konstanta tidak dideklarasikan, ini menunjukkan bahwa aplikasi tidak memiliki preferensi untuk orientasi yang tidak dideklarasikan dan mungkin diinstal pada perangkat yang tidak menawarkannya.

    Aplikasi umum yang berfungsi dengan baik dalam orientasi lanskap dan potret biasanya tidak perlu mendeklarasikan persyaratan orientasi. Sebaliknya, aplikasi yang didesain terutama untuk satu orientasi, seperti aplikasi yang didesain untuk televisi, bisa mendeklarasikan salah satu konstanta untuk memastikan bahwa itu tidak tersedia untuk perangkat yang tidak menyediakan orientasi tersebut.

    Jika salah satu aktivitas yang dideklarasikan dalam manifes meminta agar dijalankan dalam orientasi tertentu, menggunakan atribut android:screenOrientation, aktivitas ini juga mendeklarasikan bahwa aplikasi memerlukan orientasi tersebut.

  • Konstanta fitur lainnya

Laporan Perbedaan API

Untuk melihat tampilan mendetail semua perubahan API di Android 3.2 (API Level 13), lihat Laporan Perbedaan API.

API Level

Platform Android 3.2 menghadirkan versi API framework yang telah diupdate. Android 3.2 API diberikan ID bilangan bulat — 13 — yang disimpan dalam sistem itu sendiri. ID ini, yang disebut "API Level", memungkinkan sistem menentukan dengan benar apakah aplikasi kompatibel dengan sistem, sebelum menginstal aplikasi.

Untuk menggunakan API yang diperkenalkan di Android 3.2 di aplikasi, Anda perlu mengompilasi aplikasi tersebut ke library Android yang disediakan dalam platform SDK Android 3.2. Bergantung pada kebutuhan, Anda mungkin juga perlu menambahkan atribut android:minSdkVersion="13" ke elemen <uses-sdk> dalam manifes aplikasi.

Untuk informasi selengkapnya, baca Apa itu API Level?