API Android 2.3

Level API: 9

Untuk developer, platform Android 2.3 (GINGERBREAD) 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 2.3, gunakan Android SDK Manager untuk mendownload platform ke SDK Anda.

Ringkasan API

Bagian di bawah ini memberikan ringkasan teknis tentang hal yang baru bagi developer di versi 2.3, termasuk fitur baru dan perubahan dalam API framework sejak versi sebelumnya.

VoIP berbasis SIP

Platform ini kini menyertakan stack protokol SIP dan API framework yang memungkinkan developer mem-build aplikasi telepon internet. Dengan menggunakan API, aplikasi dapat menawarkan fitur panggilan suara tanpa harus mengelola sesi, komunikasi tingkat transportasi, atau audio — semua fitur tersebut ditangani secara transparan oleh layanan dan SIP API platform.

SIP API tersedia dalam paket android.net.sip. Class utamanya adalah SipManager, yang digunakan aplikasi untuk menyiapkan dan mengelola profil SIP, lalu memulai panggilan audio dan menerima panggilan audio. Setelah panggilan audio dibuat, aplikasi dapat membisukan panggilan, mengaktifkan mode speaker, mengirim nada DTMF, dan lainnya. Aplikasi juga dapat menggunakan SipManager untuk membuat koneksi SIP umum.

Stack dan layanan SIP yang mendasari di platform tersedia di perangkat sesuai pertimbangan produsen dan operator terkait. Karena alasan ini, aplikasi harus menggunakan metode isApiSupported() untuk memeriksa apakah dukungan SIP tersedia, sebelum menampilkan fungsi panggilan kepada pengguna.

Untuk menggunakan SIP API, aplikasi harus meminta izin dari pengguna dengan mendeklarasikan <uses-permission android:name="android.permission.INTERNET"> dan <uses-permission android:name="android.permission.USE_SIP"> dalam file manifesnya.

Selain itu, developer dapat meminta pemfilteran di Google Play, sehingga aplikasi mereka tidak dapat ditemukan oleh pengguna yang perangkatnya tidak menyertakan stack dan layanan SIP platform. Untuk meminta pemfilteran, tambahkan <uses-feature android:name="android.software.sip" android:required="true"> dan <uses-feature android:name="android.software.sip.voip"> ke manifes aplikasi.

Untuk informasi selengkapnya, baca panduan developer SIP.

Komunikasi Nirkabel Jarak Dekat (NFC)

Android 2.3 menyertakan stack NFC dan API framework yang memungkinkan developer membaca tag NDEF yang ditemukan saat pengguna menyentuh perangkat yang mendukung NFC untuk memberi tag pada elemen yang disematkan dalam stiker, poster smart, dan bahkan perangkat lainnya.

Platform ini menyediakan layanan NFC dasar yang berfungsi dengan hardware perangkat untuk menemukan tag saat tag berada dalam jangkauan. Saat menemukan tag, platform akan memberi tahu aplikasi dengan menyiarkan Intent, yang menambahkan pesan NDEF tag ke Intent sebagai tambahan. Aplikasi dapat membuat filter Intent untuk mengenali dan menangani tag dan pesan yang ditargetkan. Misalnya, setelah menerima tag berdasarkan Intent, aplikasi mengekstrak pesan NDEF, menyimpannya, memberi tahu pengguna, atau menanganinya dengan cara lain.

NFC API tersedia dalam paket android.nfc. Class utamanya adalah:

  • NfcAdapter, yang mewakili hardware NFC di perangkat.
  • NdefMessage, yang mewakili pesan data NDEF, format standar tempat "catatan" yang membawa data dikirim antara perangkat dan tag. Aplikasi dapat menerima pesan ini dari Intent ACTION_TAG_DISCOVERED.
  • NdefRecord, dikirimkan dalam NdefMessage, yang menjelaskan jenis data yang dibagikan dan membawa data itu sendiri.

Komunikasi NFC mengandalkan teknologi nirkabel pada hardware perangkat, sehingga dukungan untuk fitur NFC platform pada perangkat tertentu ditentukan oleh produsennya. Untuk menentukan dukungan NFC di perangkat saat ini, aplikasi dapat memanggil isEnabled() untuk mengkueri NfcAdapter. Namun, NFC API selalu ada, terlepas dari dukungan hardware yang mendasarinya.

Untuk menggunakan NFC API, aplikasi harus meminta izin dari pengguna dengan mendeklarasikan <uses-permission android:name="android.permission.NFC"> dalam file manifesnya.

Selain itu, developer dapat meminta pemfilteran di Google Play, sehingga aplikasi mereka tidak dapat ditemukan oleh pengguna yang perangkatnya tidak mendukung NFC. Untuk meminta pemfilteran, tambahkan <uses-feature android:name="android.hardware.nfc" android:required="true"> ke manifes aplikasi.

Untuk melihat contoh aplikasi yang menggunakan NFC API, lihat NFCDemo.

Giroskop dan sensor lainnya

Android 2.3 menambahkan dukungan API dan platform untuk beberapa jenis pembacaan sensor baru — giroskop, vektor rotasi, akselerasi linear, gravitasi, dan barometer. Developer dapat menggunakan pembacaan sensor baru untuk membuat aplikasi yang merespons perubahan posisi dan gerakan perangkat dengan cepat dan lancar. Sensor API melaporkan giroskop dan perubahan sensor lainnya pada aplikasi yang tertarik, baik yang berjalan di framework aplikasi maupun dalam kode native.

Perhatikan bahwa kumpulan sensor hardware tertentu yang tersedia pada perangkat tertentu bervariasi sesuai pertimbangan produsen perangkat.

Developer dapat meminta pemfilteran di Google Play, sehingga aplikasi mereka tidak dapat ditemukan oleh pengguna yang perangkatnya tidak menawarkan sensor giroskop. Untuk melakukannya, tambahkan <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"> ke manifes aplikasi.

Untuk detail API, lihat Sensor.

Dukungan banyak kamera

Aplikasi kini dapat menggunakan kamera yang tersedia di perangkat, untuk pengambilan foto atau video. Camera memungkinkan aplikasi membuat kueri untuk jumlah kamera yang tersedia dan karakteristik unik masing-masing kamera.

Untuk melihat kode contoh untuk mengakses kamera depan, lihat CameraPreview.java dalam aplikasi contoh ApiDemos.

Camera API juga menambahkan:

Efek audio yang dapat dicampur

Framework media platform ini menambahkan dukungan untuk efek audio baru per lagu atau global, termasuk boost bass, virtualisasi headphone, penyetaraan, dan gaung.

Untuk melihat kode contoh efek audio, lihat AudioFxDemo.java dalam aplikasi contoh ApiDemos.

Framework media juga menambahkan:

  • Dukungan baru untuk tag ketinggian dalam metadata EXIF untuk file JPEG. Metode baru getAltitude() untuk mengambil nilai tag ketinggian EXIF.
  • Metode setOrientationHint() baru memungkinkan aplikasi memberi tahu MediaRecorder orientasi selama perekaman video.

Pengelola Download

Platform ini mencakup layanan sistem DownloadManager baru yang menangani download HTTP yang berjalan lama. Aplikasi dapat meminta agar URI didownload ke file tujuan tertentu. DownloadManager akan menjalankan download di latar belakang, menangani interaksi HTTP, dan mencoba kembali download setelah terjadi kegagalan atau saat terjadi perubahan konektivitas dan mulai ulang sistem.

  • Aplikasi dapat memperoleh instance class DownloadManager dengan memanggil getSystemService(String) dan meneruskan DOWNLOAD_SERVICE. Aplikasi yang meminta download melalui API ini harus mendaftarkan penerima siaran untuk ACTION_NOTIFICATION_CLICKED, agar dapat menangani dengan tepat ketika pengguna mengklik download yang sedang berjalan dalam notifikasi atau dari UI Download.
  • Class DownloadManager.Request memungkinkan aplikasi menyediakan semua informasi yang diperlukan untuk meminta download baru, seperti URI permintaan dan tujuan download. URI permintaan adalah satu-satunya parameter yang diperlukan. Perhatikan bahwa tujuan download default adalah volume bersama tempat sistem dapat menghapus file Anda jika perlu memperoleh kembali ruang penyimpanan untuk penggunaan sistem. Untuk penyimpanan download persisten, tentukan tujuan download pada penyimpanan eksternal (lihat setDestinationUri(Uri)).
  • Class DownloadManager.Query menyediakan metode yang memungkinkan aplikasi membuat kueri dan memfilter download aktif.

StrictMode

Untuk membantu developer memantau dan meningkatkan performa aplikasi mereka, platform menawarkan fasilitas sistem baru yang disebut StrictMode. Saat diterapkan dalam aplikasi, StrictMode akan menangkap dan memberi tahu developer tentang disk atau aktivitas jaringan yang tidak disengaja yang dapat menurunkan performa aplikasi, seperti aktivitas yang berlangsung di thread utama aplikasi (tempat operasi UI diterima dan animasi juga berlangsung). Developer dapat mengevaluasi masalah penggunaan jaringan dan disk yang muncul dalam StrictMode dan memperbaikinya jika perlu, sehingga thread utama tetap lebih responsif dan mencegah dialog ANR ditampilkan kepada pengguna.

  • StrictMode adalah class inti dan merupakan titik integrasi utama dengan sistem dan VM. Class ini menyediakan metode praktis untuk mengelola kebijakan thread dan VM yang berlaku pada instance.
  • StrictMode.ThreadPolicy dan StrictMode.VmPolicy memiliki kebijakan yang Anda tentukan dan terapkan ke thread dan instance VM.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan StrictMode guna mengoptimalkan aplikasi, lihat dokumentasi class dan kode contoh di android.os.StrictMode.

Framework UI

  • Dukungan untuk overscroll
    • Dukungan baru untuk overscroll dalam Tampilan dan Widget. Dalam View, aplikasi dapat mengaktifkan/menonaktifkan overscroll untuk tampilan tertentu, menetapkan mode overscoll, mengontrol jarak overscroll, dan menangani hasil overscrolling.
    • Di Widget, aplikasi dapat mengontrol karakteristik overscroll seperti animasi, pegas, dan jarak overscroll. Untuk mengetahui informasi selengkapnya, lihat android.view.View dan android.widget.OverScroller.
    • ViewConfiguration juga menyediakan metode getScaledOverflingDistance() dan getScaledOverscrollDistance().
    • Atribut overScrollMode, overScrollFooter, dan overScrollHeader baru untuk elemen <ListView>, untuk mengontrol perilaku overscroll.
  • Dukungan untuk pemfilteran sentuh
    • Dukungan baru untuk pemfilteran sentuh, yang memungkinkan aplikasi meningkatkan keamanan View yang memberikan akses ke fungsi sensitif. Misalnya, pemfilteran sentuh sesuai untuk memastikan keamanan tindakan pengguna seperti memberikan permintaan izin, melakukan pembelian, atau mengklik iklan. Untuk mengetahui detailnya, lihat dokumentasi View class.
    • Atribut filterTouchesWhenObscured baru untuk elemen tampilan, yang mendeklarasikan apakah akan memfilter sentuhan saat jendela tampilan terhalang oleh jendela lain yang terlihat. Jika ditetapkan ke "true", tampilan tidak akan menerima sentuhan setiap kali toast, dialog, atau jendela lain muncul di atas jendela tampilan. Baca Lihat dokumentasi keamanan untuk mengetahui detailnya.

    Untuk melihat kode contoh untuk pemfilteran sentuh, lihat SecureView.java dalam aplikasi contoh ApiDemos.

  • Peningkatan pengelolaan peristiwa
    • Class dasar baru untuk peristiwa input, InputEvent. Class ini menyediakan metode yang memungkinkan aplikasi menentukan makna peristiwa, seperti dengan membuat kueri untuk InputDevice yang menjadi asal peristiwa. KeyEvent dan MotionEvent adalah subclass dari InputEvent.
    • Class dasar baru untuk perangkat input, InputDevice. Class ini menyimpan informasi tentang kemampuan perangkat input tertentu dan menyediakan metode yang memungkinkan aplikasi menentukan cara menafsirkan peristiwa dari perangkat input.
  • Peningkatan peristiwa gerakan
    • MotionEvent API diperluas untuk menyertakan informasi "ID pointer", yang memungkinkan aplikasi melacak setiap jari saat bergerak ke atas dan ke bawah. Class ini menambahkan berbagai metode yang memungkinkan aplikasi bekerja secara efisien dengan peristiwa gerakan.
    • Sistem input kini memiliki logika untuk menghasilkan peristiwa gerakan dengan informasi ID pointer baru, yang menyintesis ID saat pointer baru turun. Sistem melacak beberapa ID pointer secara terpisah selama peristiwa gerakan, dan memastikan kontinuitas pointer yang tepat dengan mengevaluasi jarak antara kumpulan pointer terakhir dan berikutnya.
  • Kontrol pemilihan teks
    • Metode setComposingRegion baru memungkinkan aplikasi menandai wilayah teks sebagai menulis teks, mempertahankan gaya visual saat ini. Metode getSelectedText menampilkan teks yang dipilih ke aplikasi. Metode tersebut tersedia dalam BaseInputConnection, InputConnection, dan InputConnectionWrapper.
    • Atribut textSelectHandle, textSelectHandleLeft, textSelectHandleRight, dan textSelectHandleWindowStyle baru untuk <TextView>, untuk mereferensikan drawable yang akan digunakan untuk menampilkan anchor pemilihan teks dan gaya untuk jendela yang memuatnya.
  • Kontrol aktivitas
  • Gaya ikon dan teks notifikasi
  • Layar Ekstra Besar

    Platform ini kini mendukung ukuran layar ekstra besar, seperti yang mungkin dapat ditemukan di perangkat tablet. Developer dapat menunjukkan bahwa aplikasi mereka dirancang untuk mendukung ukuran layar ekstra besar dengan menambahkan elemen <supports screens ... android:xlargeScreens="true"> ke file manifesnya. Aplikasi dapat menggunakan penentu resource baru, xlarge, untuk memberi tag pada resource yang spesifik bagi layar ekstra besar. Untuk mengetahui detail cara mendukung ukuran layar ekstra besar dan ukuran layar lainnya, lihat Mendukung Beberapa Layar.

    Grafis

    Penyedia Materi

    • Class penyedia AlarmClock baru untuk menyetel alarm atau menangani alarm. Penyedia tersebut berisi tindakan Intent ACTION_SET_ALARM dan tambahan yang dapat digunakan untuk memulai Aktivitas guna menyetel alarm baru dalam aplikasi jam alarm. Aplikasi yang ingin menerima Intent SET_ALARM harus membuat aktivitas yang memerlukan izin SET_ALARM. Aplikasi yang ingin membuat alarm baru harus menggunakan Context.startActivity(), sehingga pengguna memiliki opsi untuk memilih aplikasi jam alarm yang akan digunakan.
    • MediaStore mendukung tindakan Intent baru, PLAY_FROM_SEARCH, yang memungkinkan aplikasi menelusuri media musik dan otomatis memutar konten dari hasil jika memungkinkan. Misalnya, aplikasi dapat memicu Intent ini sebagai hasil dari perintah pengenalan suara untuk mendengarkan musik.
    • MediaStore juga menambahkan tanda MEDIA_IGNORE_FILENAME baru yang memberi tahu pemindai media untuk mengabaikan media dalam direktori penampung dan subdirektorinya. Developer dapat menggunakan ini untuk mencegah grafis muncul di Galeri dan juga mencegah suara dan musik aplikasi muncul di aplikasi Musik.
    • Penyedia Settings menambahkan tindakan Aktivitas baru APPLICATION_DETAILS_SETTINGS dan MANAGE_ALL_APPLICATIONS_SETTINGS, yang memungkinkan aplikasi menampilkan layar detail untuk aplikasi tertentu atau menampilkan layar Kelola Aplikasi.
    • Penyedia ContactsContract menambahkan jenis data ContactsContract.CommonDataKinds.SipAddress, untuk menyimpan alamat SIP (telepon internet) kontak.

    Lokasi

    • LocationManager kini melacak permintaan aplikasi yang menghasilkan penguncian layar saat aktif atau penguncian Wi-Fi sesuai dengan WorkSource, class yang dikelola sistem yang mengidentifikasi aplikasi.

      LocationManager melacak semua klien yang meminta update berkala, dan memberi tahu penyedianya sebagai parameter WorkSource, saat menetapkan waktu update minimumnya. Penyedia lokasi jaringan menggunakan WorkSource untuk melacak penguncian pengaktifan dan Wi-Fi yang dimulai oleh aplikasi, serta menambahkannya ke penggunaan baterai aplikasi yang dilaporkan dalam Kelola Aplikasi.

    • LocationManager menambahkan beberapa metode baru yang memungkinkan Aktivitas mendaftar untuk menerima update lokasi berkala atau satu kali berdasarkan kriteria yang ditentukan (lihat di bawah).
    • Class Criteria baru memungkinkan aplikasi menentukan serangkaian kriteria untuk memilih penyedia lokasi. Misalnya, penyedia dapat diurutkan sesuai dengan akurasi, penggunaan daya, kemampuan untuk melaporkan ketinggian, kecepatan, dan bearing, serta biaya keuangan.

    Penyimpanan

    • Android 2.3 menambahkan StorageManager baru yang mendukung file OBB (Opaque Binary Blob). Meskipun dukungan platform untuk OBB tersedia di Android 2.3, alat pengembangan untuk membuat dan mengelola file OBB tidak akan tersedia hingga awal tahun 2011.
    • Platform Android 2.3 menambahkan dukungan resmi untuk perangkat yang tidak menyertakan kartu SD (meskipun menyediakan partisi Kartu SD virtual, jika kartu SD fisik tidak tersedia). Metode praktis, isExternalStorageRemovable(), memungkinkan aplikasi menentukan apakah ada kartu SD fisik atau tidak.

    Pengelola Paket

    Telepon

    Akses native ke siklus proses Aktivitas, jendela

    Android 2.3 mengekspos sekumpulan API yang luas ke aplikasi yang menggunakan kode native. Kelas framework yang menarik untuk aplikasi tersebut meliputi:

    • NativeActivity adalah jenis class Aktivitas baru, yang callback siklus prosesnya diterapkan langsung dalam kode native. NativeActivity dan kode native yang mendasarinya berjalan di dalam sistem sama seperti Activity lainnya — khususnya aktivitas yang berjalan dalam proses sistem aplikasi Android dan dieksekusi di UI thread utama aplikasi, serta menerima callback siklus proses yang sama seperti Activity lainnya.
    • Class InputQueue dan antarmuka callback baru memungkinkan kode native mengelola antrean peristiwa.
    • Antarmuka SurfaceHolder.Callback2 baru memungkinkan kode native mengelola SurfaceHolder.
    • Metode takeInputQueue dan takeSurface() baru di Window memungkinkan kode native mengelola peristiwa dan platform.

    Untuk informasi selengkapnya tentang menggunakan kode native atau mendownload NDK, lihat halaman Android NDK.

    Runtime Dalvik

    Elemen dan atribut manifes baru

    • Atribut xlargeScreens baru untuk elemen <supports-screens>, untuk menunjukkan apakah aplikasi mendukung faktor bentuk layar ekstra besar. Untuk detailnya, lihat Mendukung Beberapa Layar.
    • Nilai baru untuk atribut android:screenOrientation dari elemen <activity>:
      • "reverseLandscape" — Aktivitas ingin memiliki layar dalam orientasi lanskap, yang diputar ke arah yang berlawanan dari lanskap normal.
      • "reversePortrait" — Aktivitas ingin layar dalam orientasi potret diputar ke arah yang berlawanan dari potret normal.
      • "sensorLandscape" — Aktivitas ingin memiliki layar dalam orientasi lanskap, tetapi dapat menggunakan sensor untuk mengubah arah yang menghadap layar.
      • "sensorPortrait" — Aktivitas ingin memiliki layar dalam orientasi potret, tetapi dapat menggunakan sensor untuk mengubah arah layar menghadap.
      • "fullSensor" — Orientasi ditentukan oleh sensor orientasi fisik: layar akan berputar berdasarkan cara pengguna menggerakkan perangkat. Hal ini memungkinkan salah satu dari 4 rotasi yang memungkinkan, terlepas dari apa yang biasanya dilakukan perangkat (misalnya beberapa perangkat biasanya tidak menggunakan rotasi 180 derajat).

    Izin Baru

    • com.android.permission.SET_ALARM — Mengizinkan aplikasi menyiarkan Intent untuk menyetel alarm bagi pengguna. Aktivitas yang menangani tindakan Intent SET_ALARM harus memerlukan izin ini.
    • android.permission.USE_SIP — Mengizinkan aplikasi menggunakan SIP API untuk melakukan atau menerima panggilan internet.
    • android.permission.NFC — Mengizinkan aplikasi menggunakan NFC API untuk membaca tag NFC.

    Konstanta Fitur Baru

    Platform ini menambahkan beberapa fitur hardware baru yang dapat dideklarasikan oleh developer dalam manifes aplikasi mereka sebagai yang diperlukan oleh aplikasi mereka. Hal ini memungkinkan developer mengontrol cara pemfilteran aplikasi, saat dipublikasikan di Google Play.

    Untuk mengetahui informasi selengkapnya tentang cara mendeklarasikan fitur dan menggunakannya untuk pemfilteran, lihat dokumentasi untuk <uses-feature>.

    Laporan perbedaan API

    Untuk melihat tampilan mendetail semua perubahan API di Android 2.3 (API Level 9), lihat Laporan Perbedaan API.

    API Level

    Platform Android 2.3 menghadirkan versi API framework yang terupdate. Android 2.3 API diberi ID bilangan bulat — 9 — 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 2.3 di aplikasi, Anda perlu mengompilasi aplikasi terhadap library Android yang disediakan dalam platform Android 2.3 SDK. Bergantung pada kebutuhan, Anda mungkin juga perlu menambahkan atribut android:minSdkVersion="9" ke elemen <uses-sdk> dalam manifes aplikasi. Jika aplikasi Anda dirancang hanya untuk berjalan di Android 2.3 dan yang lebih tinggi, mendeklarasikan atribut ini akan mencegah penginstalan aplikasi pada versi platform sebelumnya.

    Untuk mengetahui informasi selengkapnya, baca Apa itu API Level?