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 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 jenis tablet
Android 3.2 menyertakan berbagai pengoptimalan di seluruh sistem untuk memastikan pengalaman pengguna yang luar biasa pada 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 memberikan alternatif berskala piksel untuk peregangan UI standar untuk aplikasi yang tidak dirancang untuk berjalan pada ukuran layar yang lebih besar, seperti pada tablet. Mode baru ini dapat diakses oleh pengguna dari ikon menu di kolom 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 lebih banyak kontrol 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 untuk memberikan abstraksi kepadatan, yang berarti aplikasi tidak perlu mengkompensasi perbedaan kepadatan piksel yang sebenarnya di seluruh 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 dasar, yang diukur dalam satuan piksel kepadatan mandiri ("dp"). Terkait tinggi atau lebar layar, ukurannya lebih pendek dibandingkan keduanya. 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 orientasinya. 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 lebih langsung melalui smallestWidth, width, dan tinggi, sebaiknya pahami karakteristik umum dari berbagai jenis layar. Tabel di bawah ini memberikan beberapa contoh, yang diukur dalam satuan "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 ini menyediakan informasi selengkapnya tentang penentu layar dan atribut manifes yang 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 untuk rentang ukuran layar dengan lebih baik. 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
danhNNNdp
— 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 mendekati. 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 standar yang tercantum sebelumnya, berikut ini 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 mana 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 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 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 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 salah satu 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 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 tidak mendukung layar sebesar layar tempat aplikasi berjalan. Mode "zoom" baru ini diskalakan dengan 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 kolom 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 berkepadatan sedang, Android 3.2 memperkenalkan kepadatan umum baru,
tvdpi
, dengan perkiraan dpi 213. Aplikasi dapat meminta
kepadatan baru di densityDpi
dan dapat menggunakan
penentu tvdpi
baru guna 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 berfungsi 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 melaluisaveFragmentInstanceState()
. - Metode baru
saveFragmentInstanceState()
menyimpan status instance saat ini dari Fragment yang diberikan. Status dapat digunakan nanti saat membuat instance Fragment baru yang cocok dengan status saat ini. - Metode baru
setInitialSavedState()
menetapkan status awal yang disimpan untuk sebuah Fragment saat pertama kali dibuat. - Metode callback
onViewCreated()
baru memberi tahu Fragment bahwaonCreateView()
telah ditampilkan, tetapi sebelum status tersimpan apa pun dipulihkan ke View. - Metode
isDetached()
menentukan apakah Fragment telah dilepas secara eksplisit dari UI. - Metode
attach()
dandetach()
baru memungkinkan aplikasi melampirkan kembali 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.
- Class
- Informasi ukuran layar di ActivityInfo dan ApplicationInfo
ActivityInfo
menambahkanCONFIG_SCREEN_SIZE
danCONFIG_SMALLEST_SCREEN_SIZE
sebagai mask bit diconfigChanges
. Bit menunjukkan apakah Aktivitas itu sendiri dapat menangani ukuran layar dan ukuran layar terkecil.ApplicationInfo
menambahkan kolomlargestWidthLimitDp
,compatibleWidthLimitDp
, danrequiresSmallestWidthDp
, yang berasal dari atribut<supports-screens>
yang sesuai dalam file manifes aplikasi.
- Helper untuk mendapatkan ukuran tampilan dari WindowManager
- Metode baru
getSize()
dangetRectSize()
memungkinkan aplikasi mendapatkan ukuran mentah layar.
- Metode baru
- Gaya "holografi" publik baru
- Platform kini mengekspos berbagai gaya "hologram" publik
untuk teks, widget dan tab actionbar, dan lainnya. Lihat
R.style
untuk daftar lengkapnya.
- Platform kini mengekspos berbagai gaya "hologram" publik
untuk teks, widget dan tab actionbar, dan lainnya. Lihat
LocalActivityManager
,ActivityGroup
, danLocalActivityManager
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 dikembangkan untuk 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 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.
Grafik
- Utilitas parcelable di Point dan PointF
- Class
Point
danPointF
kini menyertakan antarmukaParcelable
dan metode utilitasdescribeContents()
,readFromParcel()
, danwriteToParcel()
.
- Class
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 deskripsi yang tidak didukung secara langsung melalui API level yang lebih tinggi.
Jaringan
- Konstanta jenis jaringan
ConnectivityManager
menambahkan konstantaTYPE_ETHERNET
danTYPE_BLUETOOTH
.
Telepon
- Konstanta jenis jaringan
NETWORK_TYPE_HSPAP
baru.
Utilitas inti
- Utilitas parcelable
- Antarmuka baru
Parcelable.ClassLoaderCreator
memungkinkan aplikasi menerima ClassLoader tempat objek dibuat. adoptFd
,dup()
, danfromFd()
baru untuk mengelola objekParcelFileDescriptor
.
- Antarmuka baru
- Binder dan IBinder
- Metode baru
dumpAsync()
diBinder
danIBinder
memungkinkan aplikasi melakukan dump ke file yang ditentukan, memastikan target dieksekusi secara asinkron. - Kode transaksi protokol
IBinder
TWEET_TRANSACTION
yang baru memungkinkan aplikasi mengirim tweet ke objek target.
- Metode baru
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 di 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 perlu ditampilkan 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.
android.hardware.screen.landscape
— Aplikasi memerlukan tampilan dalam orientasi lanskap.android.hardware.screen.portrait
— Aplikasi memerlukan tampilan dalam orientasi potret.
Aplikasi umum yang berfungsi dengan baik pada orientasi lanskap dan potret biasanya tidak perlu mendeklarasikan persyaratan orientasi. Sebaliknya, aplikasi yang didesain terutama untuk satu orientasi, seperti aplikasi yang dirancang untuk televisi, bisa mendeklarasikan salah satu konstanta untuk memastikan bahwa itu tidak tersedia untuk perangkat yang tidak menyediakan orientasi tersebut.
Jika ada aktivitas yang dideklarasikan dalam permintaan manifes yang dijalankan dalam orientasi tertentu, menggunakan atribut
android:screenOrientation
, aktivitas ini juga akan mendeklarasikan bahwa aplikasi memerlukan orientasi tersebut. - Konstanta fitur lainnya
android.hardware.faketouch.multitouch.distinct
— Aplikasi memerlukan dukungan untuk input multimedia yang diemulasi dengan pelacakan dua titik atau lebih yang berbeda.android.hardware.faketouch.multitouch.jazzhand
— Aplikasi memerlukan dukungan untuk input multisentuh yang diemulasi dengan pelacakan lima titik atau lebih yang berbeda.
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 menyediakan versi terbaru API framework. Android 3.2 API diberi ID bilangan bulat — 13 — yang disimpan di 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 dalam aplikasi,
Anda harus mengompilasi aplikasi terhadap library Android yang disediakan di
platform Android 3.2 SDK. Bergantung pada kebutuhan, 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 API Level?