Level API: 11
Bagi pengembang, platform Android 3.0
(HONEYCOMB
) tersedia sebagai file yang dapat didownload
Android SDK untuk Android SDK. Platform yang dapat didownload berisi library dan sistem Android
serta serangkaian skin emulator dan lain-lain. Platform yang dapat didownload tidak menyertakan eksternal
library.
Untuk pengembang, platform Android 3.0 tersedia sebagai yang dapat didownload untuk Android SDK. Platform yang dapat didownload mencakup library dan image sistem Android, serta serangkaian skin emulator dan banyak lagi. Untuk memulai pengembangan atau pengujian terhadap Android 3.0, menggunakan Android SDK Manager untuk mendownload platform ke SDK Anda.
Ringkasan API
Bagian di bawah ini memberikan ringkasan teknis mengenai fitur baru untuk developer di Android 3.0, termasuk fitur baru dan perubahan dalam API framework sejak versi sebelumnya.
Fragmen
Fragmen adalah komponen kerangka kerja baru yang memungkinkan Anda memisahkan elemen yang berbeda dari
menjadi modul mandiri yang menentukan UI dan siklus prosesnya sendiri. Untuk membuat
Anda harus memperluas class Fragment
dan menerapkan beberapa siklus proses
metode callback yang mirip dengan Activity
. Anda kemudian dapat
menggabungkan beberapa
dalam satu aktivitas untuk membangun UI multipanel yang masing-masing
mengelola input pengguna dan siklus prosesnya sendiri.
Anda juga dapat menggunakan fragmen tanpa menyediakan UI dan menggunakan fragmen sebagai pekerja untuk aktivitas, seperti mengelola progres download yang hanya terjadi saat aktivitas berjalan.
Selain itu:
- Fragmen bersifat mandiri dan Anda dapat menggunakannya kembali dalam beberapa aktivitas
- Anda dapat menambahkan, menghapus, mengganti, dan menganimasikan fragmen di dalam aktivitas
- Anda bisa menambahkan fragmen ke data sebelumnya yang dikelola oleh aktivitas, yang mempertahankan status fragmen saat diubah dan memungkinkan pengguna untuk menavigasi mundur melalui berbagai negara bagian
- Dengan memberikan tata letak alternatif, Anda dapat mencampur dan mencocokkan fragmen, pada orientasi dan ukuran layar
- Fragmen memiliki akses langsung ke aktivitas penampungnya dan dapat menyumbangkan item ke Action Bar aktivitas (akan dibahas berikutnya)
Untuk mengelola fragmen dalam aktivitas, Anda harus menggunakan FragmentManager
, yang menyediakan beberapa API untuk berinteraksi dengan fragmen, misalnya
seperti menemukan fragmen dalam aktivitas dan memunculkan fragmen dari data sebelumnya untuk memulihkan
status sebelumnya.
Untuk melakukan transaksi, seperti menambahkan atau menghapus fragmen, Anda harus membuat FragmentTransaction
. Anda kemudian dapat memanggil metode seperti add()
remove()
, atau replace()
. Setelah Anda menerapkan
perubahan yang ingin Anda lakukan untuk transaksi, Anda harus memanggil commit()
dan sistem akan menerapkan transaksi fragmen ke
melakukan aktivitas tersebut.
Untuk informasi selengkapnya tentang penggunaan fragmen, baca dokumentasi Fragmen. Beberapa contoh juga tersedia di API Demos.
Panel Tindakan
Bilah Tindakan adalah pengganti bilah judul biasa di bagian atas jendela aktivitas. Ini mencakup logo aplikasi di pojok kiri dan menyediakan antarmuka baru untuk item di Menu Opsi. Selain itu, Panel Tindakan memungkinkan Anda untuk:
- Menambahkan item menu langsung di Panel Tindakan—sebagai "item tindakan".
Dalam deklarasi XML untuk item menu, sertakan atribut
android:showAsAction
dengan nilai"ifRoom"
. Ketika tersedia cukup ruang, menu akan muncul langsung di Panel Tindakan. Jika tidak, item akan ditempatkan di menu tambahan, yang ditampilkan oleh ikon menu di sisi kanan Panel Tindakan. - Mengganti item tindakan dengan widget (seperti kotak penelusuran)—membuat
"tampilan tindakan".
Dalam deklarasi XML untuk item menu, tambahkan atribut
android:actionViewLayout
dengan resource tata letak atau atributandroid:actionViewClass
dengan nama class suatu . (Anda juga harus mendeklarasikan atributandroid:showAsAction
sehingga item muncul di Panel Tindakan.) Jika tidak ada cukup ruang di Panel Tindakan dan item akan muncul di menu tambahan, berperilaku seperti item menu biasa dan tidak menampilkan widget. - Tambahkan tindakan ke logo aplikasi dan ganti dengan logo khusus
Logo aplikasi akan otomatis diberi ID
android.R.id.home
, yang dikirimkan sistem ke callbackonOptionsItemSelected()
aktivitas Anda saat disentuh. Cukup respons ID ini dalam callback Anda untuk melakukan tindakan seperti membuka "home" aplikasi Anda aktivitas Anda.Untuk mengganti ikon dengan logo, tentukan logo aplikasi Anda dalam file manifes dengan
android:logo
, lalu panggilsetDisplayUseLogoEnabled(true)
dalam aktivitas Anda. - Menambahkan breadcrumb untuk menavigasi mundur melalui data sebelumnya fragmen
- Tambahkan tab atau menu drop-down untuk menavigasi fragmen
- Sesuaikan Panel Tindakan dengan tema dan latar belakang
Bilah Tindakan adalah standar untuk semua aplikasi yang menggunakan tema holografis baru, yang
juga standar saat Anda menetapkan android:minSdkVersion
atau android:targetSdkVersion
ke "11"
.
Untuk mengetahui informasi selengkapnya tentang Panel Tindakan, baca dokumentasi Panel Tindakan. Beberapa contoh juga tersedia di API Demos.
Clipboard sistem
Aplikasi kini dapat menyalin dan menempelkan data (lebih dari sekadar teks) ke dan dari seluruh sistem papan klip. Data yang terpotong bisa berupa teks biasa, URI, atau intent.
Dengan menyediakan akses sistem ke data yang Anda inginkan pengguna, melalui penyedia konten, pengguna dapat menyalin konten yang kompleks (seperti gambar atau struktur data) dari aplikasi Anda dan menempelkannya ke aplikasi lain yang mendukung jenis konten tersebut.
Untuk mulai menggunakan papan klip, dapatkan objek ClipboardManager
global
dengan memanggil getSystemService(CLIPBOARD_SERVICE)
.
Untuk menyalin item ke papan klip, Anda perlu membuat objek ClipData
baru, yang menyimpan satu atau beberapa ClipData.Item
, masing-masing menggambarkan satu entitas. Untuk membuat objek ClipData
yang hanya berisi satu ClipData.Item
, Anda
dapat menggunakan salah satu metode helper,
seperti newPlainText()
, newUri()
, dan newIntent()
, yang masing-masing menampilkan objek ClipData
yang telah dimuat sebelumnya dengan
ClipData.Item
yang Anda berikan.
Untuk menambahkan ClipData
ke papan klip, teruskan ke setPrimaryClip()
untuk instance ClipboardManager
Anda.
Anda kemudian dapat membaca file dari papan klip (untuk menempelkannya) dengan memanggil getPrimaryClip()
pada ClipboardManager
. Menangani ClipData
yang Anda terima dapat
rumit dan Anda perlu memastikan bahwa Anda
benar-benar dapat menangani jenis data di {i>clipboard<i}
sebelum mencoba menempelkannya.
Clipboard hanya menyimpan satu data yang terpotong (ClipData
objek) pada satu waktu, tetapi satu ClipData
dapat berisi beberapa ClipData.Item
.
Untuk informasi selengkapnya, baca artikel Menyalin lalu Tempelkan. Anda juga bisa melihat implementasi sederhana salin dan tempel di Demo API sampel dan implementasi yang lebih lengkap dalam contoh Note Pad.
Tarik lalu lepas
API baru menyederhanakan operasi tarik lalu lepas dalam antarmuka pengguna aplikasi Anda. Sebuah {i>drag<i} (menarik)
adalah transfer beberapa jenis data—yang dibawa dalam ClipData
— dari satu tempat ke tempat lain. Titik awal dan akhir untuk operasi tarik adalah View
, sehingga API yang langsung menangani operasi tarik lalu lepas
di class View
.
Operasi tarik lalu lepas memiliki siklus proses yang ditentukan oleh beberapa tindakan tarik—masing-masing
ditentukan oleh objek DragEvent
—seperti ACTION_DRAG_STARTED
, ACTION_DRAG_ENTERED
, dan
ACTION_DROP
. Setiap tampilan yang ingin berpartisipasi dalam tarikan
bisa memproses tindakan ini.
Untuk mulai menarik konten dalam aktivitas Anda, panggil startDrag()
di View
, yang menyediakan objek ClipData
yang mewakili
data yang akan ditarik, View.DragShadowBuilder
untuk memfasilitasi "bayangan"
yang dilihat pengguna di bawah jari mereka saat menarik, dan Object
yang dapat membagikan
informasi tentang objek tarik dengan tampilan yang mungkin menerima objek.
Untuk menerima objek tarik dalam View
(menerima "drop"), daftarkan tampilan
menggunakan OnDragListener
dengan memanggil setOnDragListener()
. Bila peristiwa tarik terjadi pada tampilan, metode
sistem memanggil onDrag()
untuk OnDragListener
, yang menerima DragEvent
yang menjelaskan jenis tindakan tarik yang telah terjadi (seperti ACTION_DRAG_STARTED
, ACTION_DRAG_ENTERED
, dan
ACTION_DROP
). Selama penyeretan, sistem berulang kali memanggil onDrag()
untuk tampilan di bawah penyeretan, untuk mengirimkan
peristiwa tarik. Tampilan penerima dapat meminta jenis peristiwa yang dikirim ke onDragEvent()
dengan memanggil getAction()
di DragEvent
.
Catatan: Meskipun peristiwa tarik dapat membawa objek ClipData
, hal ini tidak terkait dengan papan klip sistem. Tarik lalu lepas
tidak boleh menempatkan data yang ditarik di papan klip sistem.
Untuk informasi selengkapnya, baca Menarik dan Melepaskan dokumentasi. Anda juga dapat melihat implementasi tarik lalu lepas pada aplikasi API Demos dan Honeycomb Gallery aplikasi.
Widget aplikasi
Android 3.0 mendukung beberapa class widget baru untuk widget aplikasi yang lebih interaktif bagi pengguna
Layar utama, termasuk: GridView
, ListView
, StackView
, ViewFlipper
, dan AdapterViewFlipper
.
Yang lebih penting, Anda dapat menggunakan RemoteViewsService
baru untuk membuat aplikasi
widget dengan koleksi, menggunakan widget seperti GridView
, ListView
, dan StackView
yang didukung oleh data jarak jauh,
seperti dari penyedia konten.
Class AppWidgetProviderInfo
(ditentukan dalam XML dengan elemen <appwidget-provider>
) juga mendukung dua kolom baru: autoAdvanceViewId
dan previewImage
. Kolom autoAdvanceViewId
memungkinkan Anda menentukan ID tampilan properti
subtampilan widget aplikasi yang seharusnya dimaju secara otomatis oleh host widget aplikasi. Tujuan
Kolom previewImage
menentukan pratinjau
widget aplikasi terlihat dan ditampilkan kepada pengguna dari pemilih widget. Jika kolom ini bukan
disediakan, ikon widget aplikasi akan digunakan untuk pratinjau.
Untuk membantu membuat gambar pratinjau bagi widget aplikasi Anda (yang akan ditentukan di kolom previewImage
), Android emulator menyertakan sebuah
aplikasi bernama "Widget Preview". Untuk membuat gambar pratinjau, luncurkan aplikasi ini, pilih
untuk aplikasi Anda dan mengaturnya dengan cara yang Anda inginkan untuk menampilkan gambar pratinjau, lalu simpan
dan menempatkannya dalam sumber daya drawable aplikasi Anda.
Anda dapat melihat implementasi fitur widget aplikasi baru di Widget Aplikasi StackView dan Widget Daftar Cuaca menggunakan berbagai aplikasi obrolan.
Notifikasi status bar
Notification
API telah diperluas untuk mendukung status yang lebih kaya konten
notifikasi batang, ditambah class Notification.Builder
baru yang memudahkan Anda
membuat objek Notification
.
Fitur baru ini meliputi:
- Dukungan untuk ikon besar dalam notifikasi, menggunakan
setLargeIcon()
. Ini biasanya untuk aplikasi sosial untuk menampilkan foto kontak orang yang merupakan sumber notifikasi atau agar aplikasi media menampilkan thumbnail album. - Dukungan untuk tata letak kustom di ticker status bar, menggunakan
setTicker()
. - Dukungan untuk tata letak notifikasi kustom untuk menyertakan tombol dengan
PendingIntent
, untuk widget notifikasi yang lebih interaktif. Sebagai contoh, bisa mengontrol pemutaran musik tanpa memulai suatu aktivitas.
Loader konten
API framework baru memfasilitasi pemuatan data asinkron menggunakan class Loader
. Anda dapat menggunakannya dalam kombinasi dengan komponen UI seperti tampilan dan
fragmen untuk memuat data secara dinamis dari thread pekerja. Subclass CursorLoader
dirancang khusus untuk membantu Anda melakukannya untuk data yang didukung oleh
ContentProvider
.
Anda hanya perlu mengimplementasikan antarmuka LoaderCallbacks
untuk menerima callback saat loader baru diminta atau data telah
diubah, lalu panggil initLoader()
untuk melakukan inisialisasi
untuk aktivitas atau fragmen Anda.
Untuk informasi selengkapnya, baca dokumentasi Loader. Anda juga dapat melihat kode contoh menggunakan loader di LoaderCursor dan LoaderThrottle.
API headset dan A2DP Bluetooth
Android kini menyertakan API untuk aplikasi guna memverifikasi status Bluetooth A2DP yang terhubung dan perangkat profil headset. Misalnya, aplikasi dapat mengidentifikasi saat headset Bluetooth terhubung untuk mendengarkan musik dan memberi tahu pengguna sebagaimana mestinya. Pendaftaran juga dapat menerima {i>broadcast <i}untuk perintah AT khusus vendor dan memberi tahu pengguna tentang status perangkat Anda, seperti saat baterai perangkat yang terhubung lemah.
Anda dapat menginisialisasi BluetoothProfile
masing-masing dengan memanggil getProfileProxy()
dengan A2DP
atau HEADSET
dan BluetoothProfile.ServiceListener
untuk menerima
ketika klien Bluetooth terhubung atau terputus.
Framework animasi
Framework animasi baru yang fleksibel memungkinkan Anda menganimasikan properti arbitrer dari objek apa pun (View, Drawable, Fragment, Object, atau apa pun). Fungsi ini memungkinkan Anda untuk mendefinisikan beberapa aspek sebuah animasi, seperti:
- Durasi
- Jumlah dan perilaku pengulangan
- Jenis interpolasi waktu
- Animator mengatur untuk memutar animasi secara bersamaan, berurutan, atau setelah penundaan tertentu
- Penundaan refresh frame
Anda dapat menentukan aspek animasi ini, dan lainnya, untuk int, float, dan heksadesimal objek
nilai warna secara default. Artinya, ketika sebuah objek memiliki isian
properti untuk salah satu tipe ini, Anda
dapat mengubah nilainya dari waktu ke waktu untuk memengaruhi animasi. Untuk menganimasikan jenis nilai lainnya, Anda memberi tahu
sistem cara menghitung nilai untuk jenis tertentu, dengan menerapkan antarmuka TypeEvaluator
.
Ada dua animator yang dapat Anda gunakan untuk menganimasikan nilai properti: ValueAnimator
dan ObjectAnimator
. ValueAnimator
menghitung nilai animasi, tetapi tidak mengetahui
objek atau properti yang dianimasikan sebagai hasilnya. Aplikasi ini hanya melakukan perhitungan, dan Anda harus
mendengarkan pembaruan dan
memproses data dengan logika Anda sendiri. ObjectAnimator
adalah subclass dari ValueAnimator
dan
memungkinkan Anda menetapkan objek dan properti yang akan dianimasikan, dan menangani semua tugas animasi.
Artinya, Anda memberi ObjectAnimator
objek yang akan dianimasikan, objek
untuk properti objek berubah seiring waktu, dan serangkaian nilai yang akan diterapkan pada properti
waktu, kemudian
mulai animasinya.
Selain itu, class LayoutTransition
memungkinkan transisi otomatis
animasi untuk perubahan yang Anda buat pada tata letak aktivitas. Untuk mengaktifkan transisi untuk bagian dari
buka tata letak, buat objek LayoutTransition
, lalu tetapkan
ViewGroup
dengan memanggil setLayoutTransition()
. Hal ini menyebabkan {i>default<i}
animasi yang akan dijalankan setiap kali item ditambahkan ke atau dihapus dari grup. Untuk menentukan kustom
animasi, panggil setAnimator()
pada LayoutTransition
dan sediakan Animator
kustom,
seperti ValueAnimator
atau ObjectAnimator
yang telah dibahas di atas.
Untuk informasi selengkapnya, lihat dokumentasi Animasi Properti. Anda dapat lihat juga beberapa contoh penggunaan API animasi di API Demos.
Framework UI yang diperluas
- Pilihan pilihan ganda untuk ListView dan GridView
Mode
CHOICE_MODE_MULTIPLE_MODAL
baru untuksetChoiceMode()
memungkinkan pengguna memilih beberapa item dariListView
atauGridView
. Saat digunakan di bersama dengan Bilah Tindakan, pengguna dapat memilih beberapa item dan kemudian memilih tindakan untuk dijalankan dari daftar opsi di Panel Tindakan (yang telah berubah menjadi Multi-pilihan Mode Tindakan).Untuk mengaktifkan pilihan pilihan ganda, panggil
setChoiceMode(CHOICE_MODE_MULTIPLE_MODAL)
dan daftarkanMultiChoiceModeListener
dengansetMultiChoiceModeListener()
.Jika pengguna menekan lama sebuah item, Panel Tindakan akan beralih ke Multi-pilihan Mode Tindakan. Sistem memberi tahu
MultiChoiceModeListener
saat item dipilih dengan memanggilonItemCheckedStateChanged()
.Untuk contoh pilihan pilihan ganda, lihat Daftar15. Java dalam aplikasi contoh Demo API.
- API baru untuk mengubah tampilan
API baru memungkinkan Anda menerapkan transformasi 2D dan 3D dengan mudah ke tampilan dalam aktivitas Anda tata letak. Transformasi baru dimungkinkan dengan serangkaian properti objek yang mendefinisikan posisi tata letak, orientasi, transparansi, dan banyak lagi.
Metode baru untuk menyetel properti tampilan meliputi:
setAlpha()
,setBottom()
,setLeft()
,setRight()
,setBottom()
,setPivotX()
,setPivotY()
,setRotationX()
,setRotationY()
,setScaleX()
,setScaleY()
,setAlpha()
, dan lainnya.Beberapa metode juga memiliki atribut XML terkait yang bisa Anda tetapkan dalam tata letak untuk menerapkan transformasi default. Atribut yang tersedia meliputi:
translationX
,translationY
,rotation
,rotationX
,rotationY
,scaleX
,scaleY
,transformPivotX
,transformPivotY
, danalpha
.Penggunaan beberapa properti tampilan baru ini bersama dengan framework animasi baru (yang dibahas di atas), Anda dapat dengan mudah menerapkan beberapa animasi keren ke tampilan Anda. Misalnya, untuk memutar tampilan pada sumbu y-nya, berikan
ObjectAnimator
denganView
, "rotationY" serta nilai awal dan akhir:Kotlin
ObjectAnimator.ofFloat(myView, "rotationY", 0f, 360f).apply { duration = 2000 start() }
Java
ObjectAnimator animator = ObjectAnimator.ofFloat(myView, "rotationY", 0, 360); animator.setDuration(2000); animator.start();
- Tema holografis baru
Widget sistem standar dan tampilan keseluruhan telah didesain ulang dan menyertakan "holografis" tema antarmuka pengguna Anda. Sistem menerapkan tema baru menggunakan sistem gaya dan tema standar.
Aplikasi apa pun yang menargetkan platform Android 3.0—dengan menyetel
android:minSdkVersion
atau nilaiandroid:targetSdkVersion
menjadi"11"
—mewarisi tema holografi secara default. Tetapi, jika aplikasi Anda juga menerapkan temanya sendiri, maka tema Anda akan menggantikan tema holografis, kecuali Anda memperbarui gaya untuk mewarisi tema holografis.Untuk menerapkan tema holografik pada aktivitas individual atau mewarisinya dalam tema Anda sendiri definisinya, gunakan salah satu dari beberapa
Theme.Holo
tema. Jika aplikasi Anda kompatibel dengan versi Android yang lebih rendah dari 3.0 dan berlaku maka Anda harus memilih tema berdasarkan platform versi. - Widget baru
AdapterViewAnimator
Class dasar untuk
AdapterView
yang menjalankan animasi saat beralih di antara tampilannya.AdapterViewFlipper
ViewAnimator
sederhana yang menganimasikan antara dua tampilan atau lebih yang memiliki telah ditambahkan ke dalamnya. Hanya satu turunan yang ditampilkan pada satu waktu. Jika diminta, LLM dapat secara otomatis membalik antara setiap anak dengan interval teratur.CalendarView
Memungkinkan pengguna memilih tanggal dari kalender dengan menyentuh tanggal dan dapat menggulir atau melemparkan kalender ke tanggal yang diinginkan. Anda dapat mengonfigurasi rentang tanggal yang tersedia di widget.
ListPopupWindow
Menaruh dirinya sendiri ke tampilan host dan menampilkan daftar pilihan, seperti daftar saran saat mengetik dalam tampilan
EditText
.NumberPicker
Memungkinkan pengguna memilih angka dari rentang yang telah ditentukan. Widget ini menyajikan input serta tombol atas dan bawah untuk memilih angka. Menyentuh bidang {i>input<i} memungkinkan pengguna untuk scroll nilai atau sentuh lagi untuk langsung mengedit nilai saat ini. Hal ini juga memungkinkan Anda memetakan posisi ke string, sehingga yang ditampilkan adalah string yang sesuai, bukan indeks posisi Anda.
PopupMenu
Menampilkan
Menu
di jendela pop-up modal yang ditambatkan ke tampilan. Tujuan pop-up akan muncul di bawah tampilan anchor jika ada ruang, atau di atasnya jika tidak ada. Jika IME (lembut) keyboard) terlihat, pop-up tidak tumpang-tindih dengan IME sampai pengguna menyentuh Google Spreadsheet.SearchView
Menyediakan kotak penelusuran yang dapat dikonfigurasikan untuk mengirimkan kueri penelusuran ke aktivitas dan menampilkan saran penelusuran (dengan cara yang sama seperti dialog penelusuran biasa). Ini sangat berguna untuk menawarkan widget penelusuran di Panel Tindakan. Untuk informasi selengkapnya, lihat Membuat Antarmuka Penelusuran.
StackView
Tampilan yang menampilkan anak-anaknya dalam tumpukan 3D dan memungkinkan pengguna untuk menggeser tampilan seperti {i>rolodex<i}.
Grafik
- Grafis 2D dengan akselerasi hardware
Sekarang Anda dapat mengaktifkan perender OpenGL untuk aplikasi dengan menyetel
android:hardwareAccelerated="true"
dalam<application>
elemen manifes atau untuk<activity>
individual yang kurang penting.Penanda ini membantu aplikasi dengan membuat mereka menggambar lebih cepat. Ini menghasilkan animasi yang lebih halus, scroll yang lebih mulus, serta performa dan respons yang lebih baik secara keseluruhan terhadap interaksi pengguna.
- Melihat dukungan untuk lapisan hardware dan software
Secara default,
View
tidak memiliki lapisan yang ditentukan. Anda dapat menentukan bahwa tampilan didukung oleh lapisan hardware atau software, yang ditentukan oleh nilaiLAYER_TYPE_HARDWARE
danLAYER_TYPE_SOFTWARE
, menggunakansetLayerType()
ataulayerType
.Lapisan perangkat keras didukung oleh tekstur khusus perangkat keras (umumnya Objek Buffering Frame atau FBO pada hardware OpenGL) dan menyebabkan tampilan dirender menggunakan rendering hardware Android pipeline, tetapi hanya jika akselerasi hardware diaktifkan untuk hierarki tampilan. Ketika perangkat keras akselerasi dimatikan, lapisan perangkat keras berfungsi sama persis dengan lapisan perangkat lunak.
Lapisan software didukung oleh bitmap dan menyebabkan tampilan dirender menggunakan antarmuka pipeline rendering software, meskipun jika akselerasi hardware diaktifkan. Lapisan perangkat lunak harus dapat dihindari jika hierarki tampilan yang terpengaruh sering diperbarui. Setiap update perlu merender ulang lapisan perangkat lunak yang baru, yang mungkin akan menjadi lambat.
Untuk mengetahui informasi selengkapnya, lihat dokumentasi
LAYER_TYPE_HARDWARE
danLAYER_TYPE_SOFTWARE
. - Mesin grafis 3D Renderscript
Renderscript adalah framework 3D runtime yang menyediakan API untuk membangun adegan 3D juga sebagai bahasa shader khusus platform independen untuk performa maksimal. Dengan menggunakan Renderscript, Anda dapat mempercepat operasi grafis dan pemrosesan data. Renderscript adalah cara yang ideal untuk membuat efek 3D performa tinggi untuk aplikasi, wallpaper, korsel, dan banyak lagi.
Untuk informasi selengkapnya, lihat Rendering 3D dan Komputasi dengan Renderscript-nya.
Media
- Video time lapse
Camcorder API kini mendukung kemampuan untuk merekam video time lapse.
setCaptureRate()
menetapkan kecepatan frame yang seharusnya ditangkap. - Dukungan tekstur untuk aliran gambar
SurfaceTexture
baru memungkinkan Anda merekam streaming gambar sebagai OpenGL ES tekstur. Dengan memanggilsetPreviewTexture()
untukCamera
, Anda dapat menentukanSurfaceTexture
yang akan digunakan untuk menggambar frame pemutaran video atau pratinjau dari kamera. - Live streaming HTTP
Aplikasi kini dapat meneruskan URL playlist M3U ke framework media untuk memulai HTTP Live sesi {i>streaming<i}. Kerangka kerja media ini mendukung sebagian besar spesifikasi {i>HTTP Live streaming<i}, termasuk kecepatan bit adaptif. Lihat dokumen Format Media yang Didukung untuk informasi selengkapnya.
- Data EXIF
ExifInterface
menyertakan kolom baru untuk bukaan foto, ISO, dan eksposur baik. - Profil perekam video
Metode
hasProfile()
baru dan beberapa video profil kualitas (sepertiQUALITY_1080P
,QUALITY_720P
,QUALITY_CIF
, dan lainnya) memungkinkan Anda menentukan perekam video pilihan kualitas. - Transfer file media digital
Platform ini mencakup dukungan bawaan untuk {i>Media/Picture Transfer Protocol<i} (MTP/PTP) melalui USB, yang memungkinkan pengguna dengan mudah mentransfer jenis file media apa pun antar perangkat dan ke komputer {i>host<i}. Developer dapat memanfaatkan dukungan ini, membuat aplikasi yang memungkinkan pengguna membuat atau mengelola file file media yang mungkin ingin mereka transfer atau bagikan di seluruh perangkat.
- Manajemen hak digital (DRM)
Framework baru manajemen hak digital (DRM) yang dapat diperluas untuk memeriksa dan menegakkan hak cipta. Hal ini diimplementasikan dalam dua lapisan arsitektur:
- API framework DRM, yang diekspos ke aplikasi dan berjalan melalui Dalvik VM untuk aplikasi standar.
- Pengelola DRM kode native yang mengimplementasikan API framework dan mengekspos antarmuka untuk DRM {i>plug-in<i} untuk menangani manajemen hak dan dekripsi untuk berbagai skema DRM.
Untuk developer aplikasi, framework ini menawarkan API abstrak dan terpadu yang menyederhanakan pengelolaan konten yang dilindungi. API menyembunyikan kompleksitas operasi DRM dan memungkinkan mode operasi yang konsisten untuk konten yang dilindungi dan tidak dilindungi, serta di berbagai jenis DRM skema baru.
Untuk produsen perangkat, pemilik konten, dan penyedia media digital Internet, DRM API plugin framework menyediakan sarana untuk menambahkan dukungan skema DRM pilihan ke dalam Sistem Android, untuk penerapan perlindungan konten yang aman.
Rilis pratinjau tidak menyediakan plugin DRM native untuk memeriksa dan menerapkan hak cipta. Namun, produsen perangkat dapat mengirimkan plugin DRM bersama perangkatnya.
Anda dapat menemukan semua DRM API dalam paket
android.drm
.
Dukungan keyboard
- Dukungan untuk pengubah Kontrol, Meta, Caps Lock, Num Lock, dan Scroll Lock. Untuk informasi selengkapnya,
lihat
META_CTRL_ON
dan kolom terkait. - Dukungan untuk keyboard bergaya desktop lengkap, termasuk dukungan untuk tombol seperti Escape, Home, End,
Hapus dan lainnya. Anda dapat menentukan apakah peristiwa tombol berasal dari keyboard penuh dengan
membuat kueri
getKeyboardType()
dan memeriksaKeyCharacterMap.FULL
TextView
kini mendukung fitur potong, salin, dan tempel berbasis keyboard tempel, dan pilih semua, menggunakan kombinasi tombol Control+X, Control+C, Control+V, dan Control+A. Alat ini juga mendukung PageUp/PageDown, Home/End, dan pemilihan teks berbasis keyboard.KeyEvent
menambahkan beberapa metode baru untuk mempermudah pemeriksaan kunci status pengubah secara benar dan konsisten. LihathasModifiers(int)
,hasNoModifiers()
,metaStateHasModifiers()
,metaStateHasNoModifiers()
.- Aplikasi dapat menerapkan pintasan keyboard kustom dengan membuat subclass
Activity
,Dialog
, atauView
dan menerapkanonKeyShortcut()
. Framework memanggil metode ini setiap kali sebuah kunci dikombinasikan dengan tombol {i>Control<i}. Saat membuat Menu Opsi, Anda dapat mendaftarkan keyboard pintasan dengan menetapkan atributandroid:alphabeticShortcut
atauandroid:numericShortcut
untuk setiap<item>
(atau dengansetShortcut()
). - Android 3.0 menyertakan "keyboard virtual" baru perangkat dengan ID
KeyCharacterMap.VIRTUAL_KEYBOARD
. Virtual keyboard memiliki peta tombol AS bergaya desktop yang berguna untuk menyintesis peristiwa tombol untuk pengujian input teks.
Pisahkan peristiwa sentuh
Sebelumnya, hanya satu tampilan yang dapat menerima peristiwa sentuh pada satu waktu. Android 3.0 menambahkan dukungan untuk memisahkan peristiwa sentuh di seluruh tampilan dan bahkan jendela, sehingga tampilan yang berbeda dapat menerima peristiwa sentuh secara serentak.
Peristiwa sentuh terpisah diaktifkan secara default saat aplikasi menargetkan
Android 3.0 Artinya, ketika aplikasi telah menyetel android:minSdkVersion
atau nilai atribut android:targetSdkVersion
ke "11"
.
Namun, properti berikut memungkinkan Anda menonaktifkan peristiwa sentuh terpisah di seluruh tampilan di dalamnya kelompok tampilan tertentu dan di seluruh jendela.
- Atribut
android:splitMotionEvents
untuk kelompok tampilan memungkinkan Anda menonaktifkan peristiwa sentuh terpisah yang terjadi di antara tampilan turunan dalam tata letak. Contoh:<LinearLayout android:splitMotionEvents="false" ... > ... </LinearLayout>
Dengan cara ini, tampilan turunan dalam tata letak linear tidak dapat memisahkan peristiwa sentuh—hanya satu tampilan yang bisa menerima peristiwa sentuh pada satu waktu.
- Properti gaya
android:windowEnableSplitTouch
memungkinkan Anda menonaktifkan peristiwa sentuh terpisah di seluruh jendela, dengan menerapkannya ke tema untuk aktivitas atau seluruh aplikasi. Contoh:<style name="NoSplitMotionEvents" parent="android:Theme.Holo"> <item name="android:windowEnableSplitTouch">false</item> ... </style>
Saat tema ini diterapkan ke
<activity>
atau<application>
, hanya peristiwa sentuh dalam jendela aktivitas saat ini yang diterima. Misalnya, dengan menonaktifkan pemisahan peristiwa sentuh di seluruh jendela, bilah sistem tidak dapat menerima peristiwa sentuh secara bersamaan dengan aktivitas Anda. Ini tidak memengaruhi apakah tampilan dalam aktivitas dapat memisahkan sentuhan peristiwa—secara default, aktivitas masih dapat memisahkan peristiwa sentuh di seluruh tampilan.Untuk informasi selengkapnya tentang cara membuat tema, baca Menerapkan Gaya dan Tema.
WebKit
- Class
WebViewFragment
baru untuk membuat fragmen yang terdiri dariWebView
. - Metode
WebSettings
baru:setDisplayZoomControls()
memungkinkan Anda menyembunyikan kontrol zoom di layar sambil tetap memungkinkan pengguna melakukan zoom dengan gestur jari (setBuiltInZoomControls()
harus diseteltrue
).- Metode
WebSettings
baru,setEnableSmoothTransition()
, memungkinkan Anda untuk memungkinkan transisi yang mulus saat menggeser dan memperbesar. Saat diaktifkan, WebView akan memilih solusi untuk memaksimalkan performa (misalnya, konten WebView mungkin tidak diperbarui selama transisi).
- Metode
WebView
baru:- Callback
onPause()
, untuk menjeda pemrosesan yang terkait dengan WebView saat disembunyikan. Hal ini berguna untuk mengurangi penggunaan CPU atau traffic jaringan saat WebView tidak ada di latar depan. - Callback
onResume()
, untuk melanjutkan pemrosesan yang dikaitkan dengan WebView, yang dijeda selamaonPause()
. saveWebArchive()
memungkinkan Anda menyimpan tampilan saat ini sebagai arsip web di perangkat.showFindDialog()
memulai penelusuran teks di tampilan saat ini.
- Callback
Browser
Aplikasi Browser menambahkan fitur berikut untuk mendukung aplikasi web:
- Pengambilan media
Seperti yang didefinisikan oleh HTML Media Capture spesifikasi, Browser memungkinkan aplikasi web mengakses perekaman audio, gambar, dan video kemampuan perangkat. Misalnya, HTML berikut memberikan input bagi pengguna untuk mengambil foto untuk diunggah:
<input type="file" accept="image/*;capture=camera" />
Atau, dengan mengecualikan parameter
capture=camera
, pengguna dapat memilih untuk merekam gambar baru dengan kamera atau pilih gambar dari perangkat (misalnya dari aplikasi Galeri). - Orientasi Perangkat
Seperti yang ditentukan oleh Peristiwa Orientasi Perangkat browser memungkinkan aplikasi web mendengarkan kejadian DOM yang menyediakan informasi tentang orientasi fisik dan gerakan perangkat.
Orientasi perangkat dinyatakan dengan sumbu x, y, dan z, dalam derajat dan gerakan adalah yang dinyatakan dengan data percepatan dan laju rotasi. Halaman web dapat mendaftar untuk orientasi peristiwa dengan memanggil
window.addEventListener
dengan jenis peristiwa"deviceorientation"
dan mendaftar peristiwa gerakan dengan mendaftarkan jenis peristiwa"devicemotion"
. - Transformasi 3D CSS
Seperti yang didefinisikan oleh Transformasi 3D CSS lain, Browser memungkinkan elemen yang dirender oleh CSS diubah menjadi tiga dimensi kustom.
Utilitas JSON
Kelas baru, JsonReader
dan JsonWriter
, membantu Anda
membaca dan menulis aliran JSON. API baru melengkapi class org.json
, yang memanipulasi
dokumen dalam memori.
Anda dapat membuat instance JsonReader
dengan memanggil
metode konstruktornya dan meneruskan InputStreamReader
yang memberi feed string JSON.
Lalu mulai baca objek dengan memanggil beginObject()
, baca
nama kunci dengan nextName()
, baca nilai menggunakan metode
masing-masing dengan jenisnya, seperti nextString()
dan nextInt()
, dan terus melakukannya sementara hasNext()
bernilai benar.
Anda dapat membuat instance JsonWriter
dengan memanggil konstruktornya dan
meneruskan OutputStreamWriter
yang sesuai. Kemudian tulis data JSON dengan cara
mirip dengan pembaca, yang menggunakan name()
untuk menambahkan nama properti
dan metode value()
yang sesuai untuk menambahkan
dengan sejumlah nilai.
Class ini ketat secara default. setLenient()
di setiap class mengonfigurasi mereka agar
lebih liberal dalam hal apa yang diterima. Longgar ini
mode penguraian juga kompatibel dengan parser default org.json
.
Konstanta fitur baru
<uses-feature>
Elemen manfest harus digunakan untuk memberi tahu entitas eksternal (seperti Google Play) tentang kumpulan
fitur perangkat keras dan perangkat lunak
yang diandalkan oleh aplikasi Anda. Dalam rilis ini, Android menambahkan
berikut konstanta baru yang dapat dideklarasikan aplikasi dengan elemen ini:
"android.hardware.faketouch"
Bila dideklarasikan, ini menunjukkan bahwa aplikasi kompatibel dengan perangkat yang menawarkan layar sentuh yang diemulasikan (atau yang lebih baik). Perangkat yang menawarkan layar sentuh yang diemulasi memberikan input pengguna yang dapat mengemulasi subset layar sentuh kemampuan IT. Contoh sistem input adalah {i>mouse<i} atau {i>remote control<i} yang menggerakkan kursor pada layar. Sistem input tersebut mendukung peristiwa sentuh dasar seperti klik bawah, klik atas, dan tarik. Namun, tipe input yang lebih rumit (seperti gestur, fling, dll.) mungkin lebih sulit atau tidak mungkin dilakukan di perangkat faulttouch (dan gestur multisentuh jelas tidak mungkin).
Jika aplikasi tidak memerlukan gestur yang rumit dan Anda memerlukannya tidak ingin aplikasi Anda difilter dari perangkat dengan layar sentuh yang diemulasi, harus mendeklarasikan
"android.hardware.faketouch"
dengan<uses-feature>
. Dengan begitu, aplikasi Anda akan tersedia untuk sebagian besar jenis perangkat, termasuk yang hanya menyediakan input layar sentuh yang diemulasikan.Semua perangkat yang menyertakan layar sentuh juga mendukung
"android.hardware.faketouch"
, karena kemampuan layar sentuh adalah superset dari kemampuan faulttouch. Jadi, kecuali jika Anda benar-benar memerlukan layar sentuh, Anda harus menambahkan<uses-feature>
untuk faulttouch.
Izin baru
"android.permission.BIND_REMOTEVIEWS"
Izin ini harus dideklarasikan sebagai izin yang diperlukan dalam manifes
<service>
untuk implementasiRemoteViewsService
. Misalnya, ketika membuat Widget Aplikasi yang menggunakanRemoteViewsService
untuk mengisi tampilan koleksi, entri manifes akan terlihat seperti ini:<service android:name=".widget.WidgetService" android:exported="false" android:permission="android.permission.BIND_REMOTEVIEWS" />
Teknologi platform baru
- Penyimpanan
- dukungan sistem file ext4 untuk mengaktifkan penyimpanan eMMC onboard.
- FUSE sistem file untuk mendukung perangkat MTP.
- Dukungan mode host USB untuk mendukung keyboard dan hub USB.
- Dukungan untuk MTP/PTP
- Kernel Linux
- Diupgrade ke versi 2.6.36
- VM Dalvik
- Kode baru untuk mendukung dan mengoptimalkan SMP
- Berbagai peningkatan pada infrastruktur JIT
- Peningkatan pengumpul sampah:
- Disesuaikan untuk SMP
- Dukungan untuk ukuran heap yang lebih besar
- Penanganan terpadu untuk bitmap dan buffer byte
- Library Inti Dalvik
- Implementasi NIO yang baru dan jauh lebih cepat (library I/O modern)
- Pesan pengecualian yang ditingkatkan
- Koreksi dan perbaikan performa secara menyeluruh
Laporan perbedaan API
Untuk tampilan mendetail dari semua perubahan API di Android 3.0 (API Level 11), lihat Laporan Perbedaan API.
API Level
Platform Android 3.0 menghadirkan versi terbaru dari API framework. Android 3.0 API diberi ID bilangan bulat — 11 — yang merupakan disimpan di dalam sistem itu sendiri. ID ini, yang disebut "API Level", memungkinkan sistem untuk menentukan dengan benar apakah suatu aplikasi kompatibel dengan sistem, sebelum menginstal aplikasi.
Untuk menggunakan API yang diperkenalkan di Android 3.0 di aplikasi Anda,
Anda harus mengompilasi aplikasi terhadap library Android yang disediakan di
platform Android 3.0 SDK. Tergantung kebutuhan, Anda mungkin
juga perlu menambahkan android:minSdkVersion="11"
ke elemen <uses-sdk>
dalam elemen
manifes. Jika aplikasi Anda dirancang untuk berjalan hanya pada Android 2.3 dan yang lebih tinggi,
mendeklarasikan atribut akan mencegah aplikasi diinstal sebelumnya
versi dasar dari platform tersebut.
Untuk informasi selengkapnya, baca Apa yang dimaksud dengan API Tingkat?