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 banyak lagi. 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 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 aplikasi dari penyimpanan media sistem.
Fitur developer baru
- API yang diperluas untuk mengelola dukungan layar
Android 3.2 memperkenalkan ekstensi pada 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 atas cara aplikasi ditampilkan pada berbagai ukuran, 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 informasi selengkapnya tentang API dukungan layar dan kontrol yang disediakannya, lihat bagian di bawah.
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 dibuat berdasarkan API dukungan layar yang ada, termasuk model kepadatan layar umum platform, tetapi memperluasnya dengan kemampuan untuk secara tepat menargetkan rentang layar tertentu menurut 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 menyatakan 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"). Tinggi atau lebar layar, menjadi lebih pendek di antara 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 layar dan nilainya tidak berubah, apa pun orientasinya. SmallestWidth penting untuk aplikasi karena mewakili lebar terpendek saat UI aplikasi perlu digambar, tidak termasuk area layar yang dicadangkan oleh sistem.
- Sebaliknya, lebar dan tinggi layar merepresentasikan ruang horizontal atau vertikal saat ini yang tersedia untuk tata letak aplikasi, yang diukur dalam satuan "dp", tidak termasuk area layar yang direservasi oleh sistem. Lebar dan tinggi layar 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, width, atau height, 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 pada versi platform sebelumnya.
Karena API baru ini memungkinkan Anda menargetkan layar secara lebih 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 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 memberikan 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 dengan lebih baik untuk rentang ukuran layar. Dengan menggunakan penentu, Anda dapat membuat konfigurasi resource yang didesain 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, yang 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 tempat resource harus digunakan, yang diukur dalam satuan "dp". Seperti yang disebutkan di atas, lebar dan tinggi layar bersifat relatif dengan 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 resource 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 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 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 menambahkannya 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 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 dari 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 dijalankan. Jika layar saat ini lebih besar dari nilai yang ditentukan, sistem akan memaksa aplikasi ke mode kompatibilitas layar untuk memastikan tampilan terbaik pada 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 atribut apa pun 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 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 yang menjalankannya. Mode "zoom" baru ini memiliki skala piksel — yang 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 yang baru mungkin tidak sesuai untuk semua aplikasi, platform mengizinkan aplikasi untuk menonaktifkannya menggunakan atribut manifes. Jika 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 Perangkat 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 Fragmen yang ditentukan. Status ini dapat digunakan nanti saat membuat instance Fragment baru yang cocok dengan status saat ini. - Metode baru
setInitialSavedState()
menetapkan status tersimpan awal untuk suatu Fragment saat pertama kali dibuat. - Metode callback
onViewCreated()
baru memberi tahu Fragment bahwaonCreateView()
telah ditampilkan, tetapi sebelum status tersimpan apa pun dipulihkan ke dalam 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 terutama 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 Aktivitas dapat menangani ukuran layar dan ukuran layar terkecil atau tidak.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 "holografik" publik baru
- Platform ini kini menampilkan berbagai gaya "holografik" publik
untuk teks, widget serta tab actionbar, dan banyak lagi. Buka
R.style
untuk mengetahui daftar lengkapnya.
- Platform ini kini menampilkan berbagai gaya "holografik" publik
untuk teks, widget serta tab actionbar, dan banyak lagi. Buka
LocalActivityManager
,ActivityGroup
, danLocalActivityManager
kini tidak digunakan lagi- Aplikasi baru harus menggunakan Fragment, bukan class ini. Untuk terus menjalankan aplikasi di 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 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.
Grafis
- Utilitas yang dapat dibagi di Point dan PointF
- Class
Point
danPointF
kini menyertakan metode antarmuka dan utilitasParcelable
describeContents()
,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 tersebut untuk mengakses deskriptor yang tidak didukung secara langsung melalui API dengan 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 yang dapat dibagi
- Antarmuka baru
Parcelable.ClassLoaderCreator
memungkinkan aplikasi menerima ClassLoader tempat objek sedang 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, sehingga memastikan target dieksekusi 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 aplikasi, untuk memberi tahu entity 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 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 tersebut 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 dapat diinstal pada perangkat yang tidak menawarkannya.
android.hardware.screen.landscape
— Aplikasi ini memerlukan tampilan dalam orientasi lanskap.android.hardware.screen.portrait
— Aplikasi mengharuskan tampilan dalam orientasi potret.
Aplikasi biasa 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 ada aktivitas yang dideklarasikan dalam manifes meminta agar aplikasi tersebut dijalankan dalam orientasi tertentu, menggunakan atribut
android:screenOrientation
, 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 ini memerlukan dukungan untuk input mulitouch yang diemulasi dengan pelacakan berbeda dari lima titik atau lebih.
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 terupdate. Android 3.2 API diberi 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 tersebut, sebelum menginstal aplikasi.
Untuk menggunakan API yang diperkenalkan di Android 3.2 di aplikasi,
Anda perlu mengompilasi aplikasi terhadap library Android yang disediakan dalam
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 itu API Level?