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".
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
danhNNNdp
— 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 melaluisaveFragmentInstanceState()
. - 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 bahwaonCreateView()
telah ditampilkan, tetapi sebelum status tersimpan 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()
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.
- Class
- Informasi ukuran layar di ActivityInfo dan ApplicationInfo
ActivityInfo
menambahkanCONFIG_SCREEN_SIZE
danCONFIG_SMALLEST_SCREEN_SIZE
sebagai bit mask diconfigChanges
. Bit menunjukkan apakah suatu Aktivitas dapat menangani ukuran layar dan ukuran layar terkecil.ApplicationInfo
menambahkan kolomlargestWidthLimitDp
,compatibleWidthLimitDp
, danrequiresSmallestWidthDp
, yang berasal dari atribut<supports-screens>
yang terkait dalam file manifes aplikasi.
- Helper untuk mendapatkan ukuran layar dari WindowManager
- Metode baru
getSize()
dangetRectSize()
memungkinkan aplikasi mendapatkan ukuran mentah tampilan.
- Metode baru
- 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.
- Platform ini kini menampilkan berbagai gaya "holografis" publik untuk teks, widget serta tab actionbar, dan lain-lain. Buka
LocalActivityManager
,ActivityGroup
, danLocalActivityManager
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
- Utilitas parcelable di Point dan PointF
- Class
Point
danPointF
kini menyertakan metode antarmukaParcelable
dan utilitasdescribeContents()
,readFromParcel()
, danwriteToParcel()
.
- Class
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
- Konstanta jenis jaringan
ConnectivityManager
menambahkan konstantaTYPE_ETHERNET
danTYPE_BLUETOOTH
.
Telepon
- Konstanta jenis jaringan
NETWORK_TYPE_HSPAP
baru.
Utilitas inti
- Utilitas parcelable
- Antarmuka
Parcelable.ClassLoaderCreator
baru memungkinkan aplikasi menerima ClassLoader tempat objek sedang dibuat. adoptFd
,dup()
, danfromFd()
baru untuk mengelola objekParcelFileDescriptor
.
- Antarmuka
- Binder dan IBinder
- Metode baru
dumpAsync()
diBinder
danIBinder
memungkinkan aplikasi melakukan dump ke file yang ditentukan, memastikan bahwa target dijalankan secara asinkron. - Kode transaksi protokol
IBinder
baruTWEET_TRANSACTION
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 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.
android.hardware.screen.landscape
— Aplikasi ini memerlukan tampilan dalam orientasi lanskap.android.hardware.screen.portrait
— Aplikasi ini perlu ditampilkan dalam orientasi potret.
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
android.hardware.faketouch.multitouch.distinct
— Aplikasi ini memerlukan dukungan untuk input mulitouch yang diemulasi dengan pelacakan dua titik atau lebih yang berbeda.android.hardware.faketouch.multitouch.jazzhand
— Aplikasi memerlukan dukungan untuk input mulitouch yang diemulasi dengan pelacakan lima atau beberapa titik yang berbeda.
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?