API Android 3.2

API Level: 13

Android 3.2 (HONEYCOMB_MR2) adalah rilis platform inkremental yang menambahkan kemampuan baru bagi pengguna dan developer. Bagian di bawah ini memberikan ringkasan 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 dan image sistem Android, serta kumpulan 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 berbagai tablet

    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 di perangkat yang lebih besar. Mode baru ini menyediakan alternatif skala piksel untuk peregangan UI standar bagi aplikasi yang tidak didesain untuk berjalan pada ukuran layar yang lebih besar, seperti di tablet. Mode baru dapat diakses oleh pengguna dari ikon menu di panel sistem, untuk aplikasi yang memerlukan dukungan kompatibilitas.

  • Sinkronisasi media dari kartu SD

    Di 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 untuk mengelola UI aplikasi di berbagai perangkat yang didukung Android. API ini mencakup penentu resource baru dan atribut manifes baru yang memberi Anda kontrol yang lebih akurat atas cara aplikasi ditampilkan dalam berbagai ukuran, bukan mengandalkan kategori ukuran umum.

    Untuk 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 di area layar yang lebih kecil, lalu menskalakannya untuk mengisi ruang yang tersedia di layar. Untuk informasi selengkapnya tentang API dukungan layar dan kontrol yang disediakannya, lihat bagian di bawah.

Ringkasan API

API Dukungan Layar

Android 3.2 memperkenalkan API dukungan layar baru yang memberi Anda kontrol lebih besar atas cara aplikasi ditampilkan di berbagai ukuran layar. API ini dibuat berdasarkan API dukungan layar yang ada, termasuk model kepadatan layar umum platform, tetapi memperluasnya dengan kemampuan untuk menargetkan rentang layar tertentu secara tepat berdasarkan dimensinya, yang diukur dalam satuan 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 ini untuk menyediakan abstraksi kepadatan, yang berarti aplikasi tidak perlu mengompensasi perbedaan kepadatan piksel aktual di berbagai perangkat. Anda dapat mendesain UI aplikasi sesuai dengan jumlah ruang horizontal atau vertikal yang tersedia. Platform ini menyatakan jumlah ruang yang tersedia menggunakan tiga karakteristik baru: smallestWidth, width, dan height.

  • SmallestWidth layar adalah ukuran minimum dasarnya, yang diukur dalam unit piksel kepadatan mandiri ("dp"). Dari tinggi atau lebar layar, ini adalah yang lebih pendek dari keduanya. Untuk layar dalam orientasi potret, smallestWidth biasanya didasarkan pada lebarnya, sedangkan dalam orientasi lanskap, lebarnya didasarkan pada tingginya. Dalam semua kasus, SmallestWidth berasal dari karakteristik tetap pada layar dan nilainya tidak berubah, terlepas dari orientasi. SmallestWidth penting untuk aplikasi karena mewakili lebar terpendek tempat UI aplikasi harus digambar, 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 dicadangkan oleh sistem. Lebar dan tinggi layar berubah saat pengguna beralih orientasi antara lanskap dan potret.

API dukungan layar baru dirancang agar Anda dapat mengelola UI aplikasi sesuai dengan smallestWidth layar saat ini. Anda juga dapat mengelola UI sesuai 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 membuat kueri sistem dan mengelola pemuatan UI dan resource saat runtime, seperti pada versi platform sebelumnya.

Karena API baru memungkinkan Anda menargetkan layar secara lebih langsung melalui smallestWidth, width, dan height, sebaiknya pahami karakteristik umum dari berbagai jenis layar. Tabel di bawah memberikan beberapa contoh, yang diukur dalam satuan "dp".

Tabel 1. Perangkat umum, dengan kepadatan dan ukuran dalam dp.

Jenis Kepadatan (umum) Dimensi (dp) smallestWidth (dp)
Telepon dasar pengukuran 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 memberikan informasi selengkapnya tentang atribut manifes dan penentu layar baru. 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 minimum, lebar saat ini, atau tinggi saat ini, yang diukur dalam piksel kepadatan mandiri.

Penentu baru tersebut adalah:

  • swNNNdp — Menentukan smallestWidth minimum tempat resource harus digunakan, yang diukur dalam satuan "dp". Seperti yang disebutkan di atas, smallestWidth layar bersifat konstan, terlepas dari orientasinya. Contoh: sw320dp, sw720dp, sw720dp.
  • wNNNdp dan hNNNdp — Menentukan lebar atau tinggi minimum tempat resource harus digunakan, yang diukur dalam satuan "dp". Seperti yang disebutkan di atas, lebar dan tinggi layar bersifat relatif terhadap orientasi layar dan 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 di layar yang lebih lebar dari 480 dp, yang lain untuk lebih lebar dari 600 dp, dan yang lain untuk 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 yang dimuat di layar tertentu, Anda dapat memberi tag pada resource dengan satu penentu atau menggabungkan beberapa penentu baru atau yang sudah ada.

Berdasarkan dimensi umum yang tercantum sebelumnya, berikut 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 Anda 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 lengkap 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 sistem. Seperti penentu resource yang dijelaskan di atas, atribut manifes baru menentukan rentang layar yang didukung aplikasi, seperti yang ditentukan oleh smallestWidth.

Atribut manifes baru untuk dukungan layar adalah:

  • android:compatibleWidthLimitDp="numDp" — Atribut ini memungkinkan Anda menentukan smallestWidth maksimum yang dapat digunakan aplikasi 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 untuk beralih ke mode kompatibilitas secara opsional melalui setelan di kolom sistem.
  • android:largestWidthLimitDp="numDp" — Atribut ini memungkinkan Anda menentukan smallestWidth maksimum tempat aplikasi dirancang untuk berjalan. Jika layar saat ini lebih besar dari nilai yang ditentukan, sistem akan memaksa aplikasi masuk 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 berjalan. Jika layar saat ini lebih kecil dari nilai yang ditentukan, sistem akan menganggap aplikasi tidak kompatibel dengan perangkat, tetapi tidak mencegahnya diinstal dan dijalankan.

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

Untuk informasi lengkap 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 tempat aplikasi tersebut berjalan. Mode "zoom" baru ini adalah skala piksel — mode ini merender aplikasi di 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 panel sistem.

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

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

Kepadatan layar baru untuk televisi 720p dan perangkat serupa

Untuk memenuhi kebutuhan aplikasi yang berjalan di televisi 720p atau yang serupa dengan layar kepadatan 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 pengontrol 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 menggunakan 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 diberikan. Status ini dapat digunakan nanti saat membuat instance Fragment baru yang cocok dengan status saat ini.
    • Metode baru setInitialSavedState() menetapkan status tersimpan awal untuk Fragmen 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 Fragmen telah dilepas secara eksplisit dari UI.
    • Metode attach() dan detach() baru memungkinkan aplikasi memasang ulang atau melepaskan fragmen di UI.
    • Metode overload setCustomAnimations() baru memungkinkan Anda menetapkan resource animasi tertentu untuk dijalankan untuk operasi masuk/keluar dan secara khusus 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 tampilan dari WindowManager
  • Gaya "hologram" publik baru
    • Platform ini kini mengekspos berbagai gaya "holografi" publik untuk teks, widget serta tab panel tindakan, dan banyak lagi. Lihat R.style untuk daftar lengkapnya.
  • LocalActivityManager, ActivityGroup, dan LocalActivityManager kini tidak digunakan lagi
    • Aplikasi baru harus menggunakan Fragment, bukan class ini. Untuk terus berjalan di platform versi lama, Anda dapat menggunakan Library Dukungan 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 berkembang dengan Android 3.0 (API level 11) atau yang lebih tinggi, tab biasanya ditampilkan di UI menggunakan ActionBar.newTab() baru dan API terkait untuk menempatkan tab dalam area panel tindakan.

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.

Grafik

Framework IME

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

Framework USB

  • Metode getRawDescriptors() baru untuk mengambil deskripsi USB mentah untuk perangkat. Anda dapat menggunakan metode ini untuk mengakses deskriptor yang tidak didukung 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 entitas eksternal seperti Google Play tentang kemampuan hardware dan software yang diperlukan. Anda mendeklarasikan konstanta fitur ini dan konstanta fitur lainnya dalam elemen manifes <uses-feature>.

Google Play memfilter aplikasi berdasarkan atribut <uses-feature>-nya, untuk memastikan bahwa aplikasi 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 menunjukkan bahwa aplikasi tidak boleh diinstal pada perangkat yang tidak menawarkan orientasi terkait. Sebaliknya, jika satu atau kedua konstanta tidak dideklarasikan, hal ini menunjukkan bahwa aplikasi tidak memiliki preferensi untuk orientasi yang tidak dideklarasikan dan dapat diinstal di perangkat yang tidak menawarkannya.

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

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

  • Konstanta fitur lainnya

Laporan Perbedaan API

Untuk melihat tampilan mendetail tentang 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 diperbarui. Android 3.2 API diberi ID bilangan bulat — 13 — yang disimpan di 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 dalam aplikasi, Anda harus mengompilasi aplikasi terhadap library Android yang disediakan di platform Android 3.2 SDK. Bergantung pada kebutuhan Anda, Anda mungkin juga perlu menambahkan atribut android:minSdkVersion="13" ke elemen <uses-sdk> dalam manifes aplikasi.

Untuk mengetahui informasi selengkapnya, baca Apa yang dimaksud dengan Level API?