View
221
Download
0
Category
Preview:
Citation preview
7
Bab 2
Tinjauan Pustaka
2.1 Penelitian Terdahulu
Berbagai penelitian mengenai aplikasi virtual gamelan telah
banyak dilakukan di antaranya adalah penelitian mengenai Design
of Virtual Javanese Gamelan as Learning Media. Dalam penelitian
pertama ini didapatkan bahwa gamelan Jawa virtual di multimedia
memungkinkan siswa untuk praktek mempelajari dan bermain
gamelan sendiri. Multimedia belajar ini diharapkan dapat
menjembatani siswa untuk menyukai gamelan Jawa yang nyata,
sehingga gamelan Jawa sebagai warisan budaya yang memiliki nilai-
nilai mulia kehidupan yang dapat diteruskan dari satu generasi ke
generasi berikutnya. Dengan media ini generasi muda indonesia
akan selalu mengerti dan menyukai budaya lokal dan nasional di era
globalisasi (Pramudi, 2011).
Penelitian kedua mengenai Android juga pernah dilakukan
dengan judul Implementation of an Android Phone Based Video
Streamer. Dalam penelitian kedua ini didapatkan bahwa metodologi
yang digunakan untuk mengintegrasikan open source media server
LIVE555 dengan MPEG4 perekam video berbasis modul perangkat
lunak yang berjalan pada Android berbasis ponsel. Sistem yang
diterapkan memanfaatkan kamera di ponsel untuk menangkap
gambar video secara rael time yang kemudian dialirkan melalui
jaringan WiFi kemudian video dapat dilihat di stasiun remote
menggunakan standar VLC media player (Vun, 2010).
8
Berdasarkan penelitian-penelitian sebelumnya, penelitian ini
mengembangkan dari penelitian yang sudah ada dengan objek
penelitian gamelan dengan menggunakan teknologi Android.
Penelitian yang dibuat adalah “ Perancangan dan Implementasi
Aplikasi Virtual Gamelan Berbasis Android ” menggunakan metode
Prototype. Perbedaan dari penelitian yang sudah ada, penelitian yang
dilakukan sekarang adalah mengenai aplikasi yang menyajikan
gamelan dalam bentuk virtual berbasis Android. Diharapkan dengan
adanya aplikasi ini user dapat memainkan gamelan pada telepon
seluler sehingga lebih ringkas dan harga terjangkau.
2.2 Virtual
Menurut Kamus Besar Bahasa Indonesia pengertian virtual
adalah secara nyata (KBBI, 2008). Dengan kata lain sesuatu yang
telah divirtualkan tidak dapat lagi dilihat dengan mata atau dipegang,
tetapi mempunyai fungsi yang sama seperti sistem aslinya (Siahaan,
2011).
2.3 Gamelan
2.3.1 Pengertian Gamelan
Gamelan adalah perangkat alat musik Jawa (sunda, bali, dan
sebagainya) yang terdiri atas saron, bonang, rebab, gendang, gong,
dan sebagainya (KBBI, 2008). Sedangkan menurut (Yudoyono,
1984) gamelan adalah sebuah pernyataan musikal berupa kumpulan
alat-alat musik (bunyi-bunyian) tradisional dalam jumlah besar yang
terdapat (terutama) di Pulau Jawa. Gamelan lengkap mempunyai
kira-kira 75 alat dan dapat dimainkan oleh 30 niyaga (penabuh)
9
dengan disertai 10 sampai 15 pesinden. Semua alat tersebut
dibunyikan bersama-sama atau sebagian dengan cara yang sesuai,
sehingga merupakan konsert atau kumpulan suara yang teratur
menurut tempo dan irama tertentu.
Komponen utama yang menyusun alat-alat musik gamelan
adalah bambu, logam, dan kayu. Masing-masing alat mempunyai
fungsi tersendiri dalam pagelaran musik gamelan. Misalnya, gong
berperan menutup sebuah irama yang panjang dan memberi
keseimbangan setelah sebelumnya musik dihiasi oleh irama gending
(Haryono, 2001).
2.3.2 Sejarah dan Perkembangan Gamelan
Sedemikian telah menyatunya, dalam perjalanannya gamelan
Jawa telah mempunyai sejarah yang panjang. Dan seperti musik dari
kebudayaan lain, gamelan Jawa juga mengalami perubahan dan
perkembangan yang masih berlangsung sampai saat ini. Perubahan
terutama terlihat dari tata cara serta bahan pembuatannya, sedangkan
perkembangan menyangkut segi kuantitas serta pemilikan dan
penggunaanya. Kalau dahulu hanya terbatas untuk kalangan istana,
kini siapa pun yang berminat dapat memainkanya. Sepanjang bukan
gamelan-gamelan Jawa yang termasuk dalam kategori pusaka
(Yudoyono, 1984).
2.4 Android
2.4.1 Pengertian Android
Android adalah perangkat lunak toolkit baru open source
untuk perangkat bergerak yang dikembangkan oleh Google dan
10
Open Handset Allience (OHA) yaitu aliansi perangkat selular
terbuka yang terdiri dari 47 perusahaan hardware, software dan
perusahaan telekomunikasi ditujukan untuk mengembangkan standar
terbuka bagi perangkat selular. Dalam beberapa tahun Android
diharapkan bisa ditemukan didalam berjuta-juta telepon dan
perangkat gerak yang lainnya (Burnette, 2009).
Android Standart Development Kid (SDK) menyediakan
perlengkapan dan Application Programming Interface (API) yang
diperlukan untuk mengembangkan aplikasi pada platform Android
dengan menggunakan bahasa pemrograman Java (Android
Developer, 2011).
2.4.2 Sejarah dan Perkembangan Android
Pada mulanya terdapat berbagai macam sistem operasi pada
perangkat selular, di antaranya sistem operasi Symbian, Microsoft
Windows, Mobile, Mobile Linux, iPhone, dan sistem operasi lainnya.
Namun diantara sistem operasi yang ada belum mendukung standar
dan penerbitan API yang dapat dimanfaatkan secara keseluruhan dan
dengan biaya yang murah. Kemudian Google ikut berkecimpung
didalamnya dengan platform Android, yang menjanjikan
keterbukaan, keterjangkauan, open source, dan framework
berkualitas.
Pada tahun 2005, Google mengakuisisi perusahaan Android
Inc. Untuk memulai pengembangan platform Android. Di mana
terlibat dalam pengembangan ini Andy Rubin, Rich Miner, Nick
Sears, dan Chris White. Pada pertengahan 2007 sekelompok
pemimpin industri bersama-sama membentuk aliansi perangkat
11
selular terbuka, Open Handset Alliance (OHA). Bagian dari tujuan
aliansi tersebut adalah berinovasi dengan cepat dan menanggapi
kebutuhan konsumen dengan lebih baik, dengan produk awalnya
adalah platform Android, di mana Android dirancang untuk
melayani kebutuhan operator telekomunikasi, manufaktur handset,
dan pengembang aplikasi. OHA berkomitmen untuk membuat
Android open source dengan lisensi Apache versi 2.0 (Hashimi,
2009).
Android pertama kali diluncurkan pada 5 November 2007, dan
smartphone pertama yang menggunakan sistem operasi Android
dikeluarkan oleh T-Mobile dengan sebutan G1 pada bulan
September 2008. Hingga saat ini Android telah merilis beberapa
versi Android untuk menyempurnakan versi sebelumnya. Selain
berdasarkan penomoran, pada setiap versi Android terdapat kode
nama berdasarkan nama-nama kue.
Hingga saat ini sudah terdapat beberapa versi yang telah
diluncurkan, diantaranya: versi 1.1 dirilis pada 9 Februari 2009,
versi 1.5 dirilis pada 30 April 2009 diberi nama Cupcake, versi 1.6
dirilis pada 15 September 2009 diberi nama Donut, versi 2.0/2.1
dirilis pada 26 Oktober 2009 diberi nama Éclair dan mengalami
perbaikan pada januari 2010. versi 2.2 dirilis mei 2010 diberi nama
Froyo (frozen yogurt )dan perbaikan pada juni 2010, versi
2.3.3/2.3.4 dirilis februari 2011 diberi nama Gingerbread dan
mengalami perbaikan pada mei 2011, versi 3.0/3.1/3.2 diberi nama
Honeycomb dan mengalamai perbaikan pada februari, mei dan juli
12
2011, dan versi terakhir saat ini 4.0 dirilis pada oktober 2011 dan
diberi nama Ice Cream Sandwich (Android Developer, 2011).
2.4.3 Features Android
Features yang tersedia pada platform android saat ini antara
lain (Meier,2009):
- Tidak ada biaya perijinan (licensing), distribusi atau
pengembangan.
- Akses Wi-Fi untuk perangkat keras.
- GSM, EDGE, dan 3G untuk transfer telepon atau data,
memungkinkan user untuk membuat, menerima panggilan atau
pesan SMS, atau untuk mengirim dan mengambil data pada
jaringan mobile.
- APIs meliputi service location-based seperti untuk GPS.
- Kendali DNS termasuk perangkat keras multimedia playback dan
recording menggunakan kamera dan mikrofon.
- APIS untuk accelerometer dan perangkat keras penunjuk arah
(kompas).
- IPC untuk menyampaikan pesan.
- Berbagi data stores
- Integrasi browser berdasarkan open source engine WebKit
- Dukungan penuh untuk mengintegrasikan aplikasi pengendalian
peta sebagai bagian dari penghubung antara user dengan aplikasi.
- Dukungan Peer-to-peer (P2P) menggunakan Google Talk
- Grafis yang dioptimalkan dan didukung oleh library grafis 2D
yang terkustominasi, grafis 3D berdasarkan spesifikasi openGL
ES .
13
- Mendukung audio (MP3, AAC, AMR, ), video (MPEG4,
H.264),dan gambar (JPG, PNG, GIF).
- Framework aplikasi yang mendukung penggunaan kembali
komponen aplikasi dan penggantian dari aplikasi asli.
- Mesin virtual Delvix berjalan diatas linux kernel dan
dioptimalkan untuk perangkat mobile.
- SQLite untuk penyimpanan data terstruktur.
- Multi-touch : kemampuan layaknya handset modern yang dapat
menggunakan dua jari atau lebih untuk berinteraksi dengan
peangkat.
- Lingkungan Development yang lengkap dan kaya termasuk
perangkat emulator, tools untuk debugging, profil dan kinerja
memori, dan plugin untuk Eclipse IDE.
2.4.3 Architecture Android
Gambar 2.1 Detail Architecture Android (Android Developer, 2011)
Paket sistem operasi Android tediri dari beberapa unsur seperti
terlihat pada Gambar 2.1. Secara sederhana arsitektur Android
merupakan sebuah kernel Linux dan sekumpulan pustaka C / C++
14
dalam suatu framework yang menyediakan dan mengatur alur
proses aplikasi (Meier, 2009).
- Linux Kernel
Android dibangun di atas kernel Linux 2.6. Namun secara
keseluruhan Android bukanlah linux, karena dalam Android tidak
terdapat paket standar yang dimiliki oleh linux lainnya. Linux
merupakan sistem operasi terbuka yang handal dalam manajemen
memori dan proses. Oleh karena itu, pada Android hanya terdapat
beberapa service yang diperlukan seperti keamanan, manajemen
memori, manajemen proses, jaringan dan driver. Kernel linux
menyediakan driver layar, kamera, keypad, WiFi, Flash Memory,
audio, dan IPC (Interprocess Communication) untuk mengatur
aplikasi dan lubang keamanan. Kernel juga bertindak sebagai lapisan
abstrak antara perangkat keras (hardware) dan perangkat lunak
(software) stacknya (Meier, 2009).
- Librares
Android menyertakan libraris C / C++ yang digunakan oleh
berbagai komponen dari sistem Android. Kemampuan ini disediakan
kepada developer aplikasi melalui framework aplikasi Android.
Beberapa inti libraries tercantum di bawah ini (Android Developers,
2011):
- System C library
Merupakan variasi dari implementasi BSD berasal dari
pelaksanaan sistem standar C library (libc), sesuai untuk
perangkat embedded berbasis linux.
15
- Media Libraries
Merupakan Packet video berdasarkan OpenCORE; library
mendukung pemutaran rekaman dengan banyak format audio dan
video , serta file gambar ,termasuk MPEG4, H.264, MP3, AAC,
AMR, JPG DAN, PNG.
- Surface Manager
Mengelola akses ke subsistem layar, lapisan komposit 2D dan
grafis 3D dari beberapa aplikasi.
- LibWebCore
Merupakan mesin web modern yang powerfull yang baik untuk
browser pada embeddable web Android.
- SGL
Merupakan mesin grafis 2D
- 3D libraries
Merupakan implementasi berdasarkan openGL ES 1,0 API ;
libraries menggunakan perangkat keras akselerasi 3D (apabila
tersedia) atau yang disertakan, termasuk software yang sangat
mengoptimalkan 3D.
- FreeType
Merupakan bitmap dan vektor font rendering.
- SQLite
Merupakan mesin penghubung database yang kuat dan ringan
dan tersedia untuk semua aplikasi.
- Android Runtime
Pada Android tertanam paket core libraries yang menyediakan
sebagian besar fungsi Android. Inilah yang membedakan Android
16
dibandingkan dengan sistem operasi lain yang juga
mengimplementasikan Linux. Android Runtime merupakan mesin
virtual yang membuat aplikasi Android menjadi lebih tangguh
dengan paket pustaka yang telah ada.
Dalam Android Runtime terdapat 2 bagian utama, diantaranya
(Burnette, 2009) :
- Core Libraries
Android dikembangkan melalui bahasa pemrograman Java, tapi
Android Runtime bukanlah mesin virtual Java. Core libraries
Android menyediakan hampir semua fungsi yang terdapat pada
pustaka Java serta beberapa pustaka khusus Android.
- Dalvik Virtual Machine
Dalvik merupakan sebuah mesin virtual yang dikembangkan oleh
Dan Bornstein yang terinspirasi dari nama sebuah perkampungan
yang berada di Iceland. Dalvik hanyalah interpreter mesin virtual
yang mengeksekusi file dalam format Dalvik Executable (*.dex).
Dengan format ini Dalvik akan mengoptimalkan efisiensi
penyimpanan dan pengalamatan memori pada file yang
dieksekusi. Dalvik berjalan di atas kernel Linux 2.6, dengan
fungsi dasar seperti threading dan manajemen memori yang
terbatas.
- Application Framework
Framework aplikasi menyediakan kelas-kelas yang dapat
digunakan untuk mengembangkan aplikasi Android. Selain itu, juga
menyediakan abstraksi generik untuk mengakses perangkat, serta
mengatur tampilan user interface dan sumber daya aplikasi. Bagian
17
terpenting dalam framework aplikasi Android adalah sebagai berikut
(Burnette, 2009):
- Activity Manager, berfungsi untuk mengontrol siklus hidup
aplikasi dan menjaga keadaan ”Backstack“ untuk navigasi
penggunaan.
- Content Providers, berfungsi untuk merangkum data yang
memungkinkan digunakan oleh aplikasi lainnya, seperti daftar
nama.
- Resuource Manager, untuk mengatur sumber daya yang ada
dalam program. Serta menyediakan akses sumber daya diluar
kode program, seperti karakter, grafik, dan file layout.
- Location Manager, berfungsi untuk memberikan informasi detail
mengenai lokasi perangkat Android berada.
- Notification Manager, mencakup berbagai macam peringatan
seperti, pesan masuk, janji, dan lain sebagainya yang akan
ditampilkan pada statusbar.
- Application Layer
Puncak dari diagram arsitektur Android adalah lapisan aplikasi
dan widget. Lapisan aplikasi merupakan lapisan yang paling terlihat
pada user ketika menjalankan program. User hanya akan melihat
program ketika digunakan tanpa mengetahui proses yang terjadi
dibalik lapisan aplikasi. Lapisan ini berjalan dalam Android runtime
dengan menggunakan kelas dan service yang tersedia pada
framework aplikasi. Lapisan aplikasi Android sangat berbeda
dibandingkan dengan sistem operasi lainnya. Pada Android semua
aplikasi, baik aplikasi inti (native) maupun aplikasi pihak ketiga
18
berjalan diatas lapisan aplikasi dengan menggunakan pustaka API
(Application Programming Interface) yang sama.
Aplikasi juga merupakan program yang dapat mengambil alih
keseluruhan layar dan saling berhubungan dengan user. Pada sisi
lain, Widgets ( kadang-kadang disebut Gadgets) hanya beroperasi
didalam empat persegi panjang yang kecil diantara home screen
aplikasi.
2.4.5 Komponen Aplikasi
Fitur penting Android adalah bahwa satu aplikasi dapat
menggunakan elemen dari aplikasi lain (untuk aplikasi yang
memungkinkan). Sebagai contoh, sebuah aplikasi memerlukan fitur
scroller dan aplikasi lain telah mengembangkan fitur scroller yang
baik dan memungkinkan aplikasi lain menggunakannya. Maka
developer tidak perlu lagi mengembangkan hal serupa untuk
aplikasinya, cukup menggunakan scroller yang telah ada .
Agar fitur tersebut dapat bekerja, sistem harus dapat
menjalankan aplikasi ketika setiap bagian aplikasi itu dibutuhkan,
dan pemanggilan objek Java untuk bagian itu. Oleh karenanya
Android berbeda dari sistem-sistem lain, Android tidak memiliki
satu tampilan utama program seperti fungsi main() pada aplikasi
lain. Sebaliknya, aplikasi memiliki komponen penting yang
memungkinkan sistem untuk memanggil dan menjalankan ketika
dibutuhkan (Android Developer, 2011).
Aplikasi Android terdiri dari komponen yang bebas
digabungkan, mengikat menggunakan suatu project manifest yang
menggambarkan masing-masing komponen dan bagaimana
19
komponen saling berhubungan. Ada enam komponen yang
disediakan untuk membangun blok aplikasi (Meier, 2009):
- Activities
Activity merupakan bagian yang paling penting dalam sebuah
aplikasi, karena activity menyajikan tampilan visual program
yang sedang digunakan oleh user. Setiap activity dideklarasikan
dalam sebuah kelas yang bertugas untuk menampilkan antarmuka
user yang terdiri dari views dan respon terhadap event. Setiap
aplikasi memiliki sebuah activity atau lebih. Biasanya pasti akan
ada activity yang pertama kali tampil ketika aplikasi dijalankan.
Perpindahan antara activity dengan activity lainnya diatur melalui
sistem, dengan memanfaatkan activity stack. Keadaan suatu
activity ditentukan oleh posisinya dalam tumpukan acitivity,
LIFO (Last In First Out) dari semua aplikasi yang sedang
berjalan. Bila suatu activity baru dimulai, activity yang
sebelumnya digunakan maka akan dipindahkan ketumpukan
paling atas. Jika user ingin menggunakan activity sebelumnya,
cukup menekan tombol back, atau menutup activity yang sedang
digunakan, maka activity yang berada diatas akan aktif kembali.
Memory manager Android menggunakan tumpukkan ini untuk
menentukan prioritas aplikasi berdasarkan activity, memutuskan
untuk mengakhiri suatu aplikasi dan mengambil sumber daya dari
aplikasi tersebut.
Ketika activity diambil dan disimpan dalam tumpukkan
activity terdapat 4 kemungkinan kondisi transisi yang akan terjadi
(Meier, 2009):
20
- Active, setiap activity yang berada ditumpukan paling atas, maka
activity tersebut akan terlihat, terfokus, dan menerima masukkan
dari user. Android akan berusaha untuk membuat activity aplikasi
ini untuk untuk tetap hidup dengan segala cara, bahkan akan
menghentikan activity yang berada dibawah tumpukkannya jika
diperlukan. Ketika activity sedang aktif, maka yang lainnya akan
dihentikan sementara.
- Paused, dalam beberapa kasus activity akan terlihat tapi tidak
terfokus pada kondisi inilah disebut paused. Keadaan ini terjadi
jika activity transparan dan tidak fullscreen pada layar. Ketika
activity dalam keadaan paused, dia terlihat active namun tidak
dapat menerima masukkan dari user. Dalam kasus ekstrim,
Android akan menghentikan activity dalam keadaan paused ini,
untuk menunjang sumber daya bagi activity yang sedang aktif.
- Stopped, ketika sebuah activity tidak terlihat, maka itulah yang
disebut stopped. Activity akan tetap berada dalam memori dengan
semua keadaan dan informasi yang ada. Namun akan menjadi
kandidat utama untuk dieksekusi oleh sistem ketika
membutuhkan sumberdaya lebih. Oleh karenanya ketika suatu
activity dalam kondisi stopped maka perlu disimpan data dan
kondisi antarmuka saat itu. Karena ketika activity telah keluar
atau ditutup, maka dia akan menjadi inactive.
- Inactive, kondisi ketika activity telah dihentikan dan sebelum
dijalankan. Inactive activity telah ditiadakan dari tumpukan
activity sehingga perlu restart ulang agar dapat tampil dan
digunakan kembali. Kondisi transisi ini sepenuhnya ditangani
21
oleh manajer memori Android. Android akan memulai menutup
aplikasi yang mengandung activity inactive, kemudian stopped
activity, dan dalam kasus luar biasa paused activity juga akan di
tutup.
- Services
Suatu service tidak memiliki tampilan antarmuka, melainkan
berjalan di background untuk waktu yang tidak terbatas.
Komponen service diproses tidak terlihat, memperbarui sumber
data dan menampilkan notifikasi. Service digunakan untuk
melakukan pengolahan data yang perlu terus diproses, bahkan
ketika activity tidak aktif atau tidak tampak.
- Content Providers
Content providers digunakan untuk mengelola dan berbagi
database. Data dapat disimpan dalam file sistem, dalam database
SQLite, atau dengan cara lain yang pada prinsipnya sama. Dengan
adanya content provider memungkinkan antar aplikasi untuk
saling berbagi data. Komponen ini sangat berguna ketika sebuah
aplikasi membutuhkan data dari aplikasi lain, sehingga mudah
dalam penerapannya.
- Intents
Intens merupakan sebuah mekanisme untuk menggambarkan
tindakan tertentu, seperti memilih foto, menampilkan halaman
web, dan lain sebagainya. Intents tidak selalu dimulai dengan
menjalankan aplikasi, namun juga digunakan oleh sistem untuk
memberitahukan ke aplikasi bila terjadi suatu hal, misal pesan
masuk. Intents dapat eksplisit atau implisit, contohnya jika suatu
22
aplikasi ingin menampilkan URL, sistem akan menentukan
komponen apa yang dibutuhkan oleh intents tersebut.
- Broadcast Receivers
Broadcast receivers merupakan komponen yang sebenarnya tidak
melakukan apa-apa kecuali menerima dan bereaksi
menyampaikan pemberitahuan. Sebagian besar Broadcast berasal
dari sistem misalnya, baterai sudah hampir habis, informasi zona
waktu telah berubah, atau pengguna telah merubah bahasa default
pada perangkat. Sama halnya dengan service, broadcast receivers
tidak menampilkan antarmuka user. Namun, broadcast receivers
dapat menggunakan notification manager untuk memberitahukan
sesuatu kepada user
- Notifications
Notifications merupakan kerangka pemberitahuan untuk user.
Notification memberikan isyarat atau peringatan tanpa mencuri
perhatian atau menyela aktivitas yang sedang dilakukan user.
Notifications adalah teknik yang lebih disukai untuk membuat
perhatian user dari dalam suatu layanan atau broadcast receiver .
Sebagai contoh, ketika device menerima pesan teks atau
panggilan masuk ditandai dengan menampilkan keterangan
berupa cahaya, berbunyi, menampilkan icon, atau menampilkan
pesan dialog. Sehingga user bisa cepat bertindak pada peristiwa
serupa karena memiliki aplikasi yang menggunakan notifications.
2.4.6 Tipe Aplikasi Android
Terdapat tiga kategori aplikasi pada Android yaitu (Meier,
2009) :
23
- Foreground Activity
Aplikasi yang hanya dapat dijalankan jika tampil pada layar dan
tetap efektif walaupun tidak terlihat. Aplikasi dengan tipe ini
selalu mempertimbangkan siklus hidup activity, sehingga
perpindahan antar activity dapat berlangsung dengan lancar.
- Background Service
Aplikasi yang memiliki interaksi terbatas dengan user, selain dari
pengaturan konfigurasi, semua dari prosesnya tidak tampak pada
layar. Contohnya aplikasi penyaringan panggilan atau sms auto
respon.
- Intermittent Activity
Aplikasi yang masih membutuhkan beberapa masukkan dari user,
namun sebagian sangat efektif jika dijalankan di background dan
jika diperlukan akan memberi tahu user tentang kondisi tertentu.
Contohnya pemutar musik.
Untuk aplikasi yang kompleks akan sulit untuk menentukan
kategori aplikasi tersebut apalagi aplikasi memiliki ciri-ciri dari
semua kategori. Oleh karena itu, perlu mempertimbangkan
bagaimana aplikasi tersebut digunakan dan menentukan kategori
aplikasi yang sesuai.
2.4.7 Siklus Hidup Aplikasi Android
Siklus hidup aplikasi Android dikelola oleh sistem,
berdasarkan kebutuhan user, sumber daya yang tersedia, dan
sebagainya. Misalnya user ingin menjalankan browser web, pada
akhirnya sistem yang akan menentukan menjalankan aplikasi.
Sistem sangat berperan dalam menentukan apakah aplikasi
24
dijalankan, dihentikan sementara, atau dihentikan sama sekali. Jika
user sedang menjalankan sebuah activity, maka sistem akan
memprioritaskan aplikasi tersebut. Sebaliknya, jika suatu activity
tidak terlihat dan sistem membutuhkan sumber daya yang lebih,
maka activity yang prioritas rendah akan ditutup (Hashimi, 2009).
Gambar 2.2 Siklus Hidup Activity Android (Burnette, 2009)
User mengatasi method ini pada activity class, dan Android
akan memanggilnya menurut waktu yang tepat (Burnette, 2009):
- onCreate(Bundle) : Dipanggil ketika activity pertama kali dibuat,
disini user melakukan pengaturan statis secara normal, misal
membuat view, memasukkan data dan sebagainya. Method ini
mempassing obyek yang berisi status activity sebelumnya, jika
status tersebut sebelumnya telah di catat . Selalu diikuti dengan
onStart( ).
- onStart() : Dipanggil sebelum activity terlihat moleh user. Selalu
diikuti onResume( ).
25
- onResume( ) : Dipanggil sebelum activity mulai berinteraksi
dengan user. Pada titik ini, activity berada pada stack activity
yang paling atas. Selalu diikuti onPause( ).
- onPause( ) : Dipanggil ketika sistem akan memulai activity lain.
Method ini biasa digunakan untuk melakukan perubahan yang
tidak disimpan kedalam data yang tetap, menghentikan animasi,
dan hal lain yang memakai CPU dan yang lainnya. Diikuti
onResume( ) jika activity tetap berada di layar atau onStop( ) jika
activity menjadi tidak terlihat oleh user.
- onStop( ) : Dipanggil ketika activity tidak lagi terlihat oleh user.
Ini mungkin terjadi karena kemudian dihancurkan atau jika
activity lain yang sudah ada atau yang baru telah dilanjutkan.
Diikuti dengan onRestart( ) jika activity kembali berinteraksi
dengan user atau dengan onDestroy( ) jika activity akan ditutup.
- onRestart( ) : Dipanggil setelah activity dihentikan, dan
merupakan prioritas untuk di jalankan kembali dan selalu diikuti
onStart( ).
- onDestroy( ) : Dipanggil sebelum activity dihancurkan, ini
merupakan panggilan terakhir yang diterima activity. Bisa
dikatakan activity diakhiri ( finish( ) ), atau karena sistem secara
temporary menghancurkan instant activity untuk menghemat
ruang.
- onSaveInstanceState(Bundle) : Android akan memanggil method
ini untuk mengizinkan activity menyimpan setiap contoh
keadaan, seperti posisi kursor dalam sebuah text field. Pada
umunya user tidak akan membutuhkan untuk mengatasi
26
pelaksanaan penyimpanan keadaan, karena pelaksanaan
penyimpanan untuk semua tampilan user dikontrol secara
otomatis.
- onRestoreInstanceState(Bundle) : Dipanggil ketika activity di
inisialisasi ulang sejak keadaan sebelum disimpan dari onSave-
InstanceState( ). Default implementasi dikembalikan dari
keadaan tampilan user.
Activity tidak berjalan di dalam bagian yang mungkin akan
dihentikan atau proses linux menempatkannya yang mungkin akan
dihentikan pada setiap waktu pada setiap perintah untuk membuat
tempat activity baru. Sementara itu, method onPause( ) mungkin
akan jadi method terakhir yang dipanggil dalam activity.
Android menjalankan setiap aplikasi dalam proses secara
terpisah, yang masing-masing memiliki mesin virtual pengolah
sendiri, dengan melindungi penggunaan memori pada aplikasi.
Selain itu juga Android dapat mengontrol aplikasi mana yang layak
menjadi prioritas utama. Karena itu Android sangat sensitive dengan
siklus hidup aplikasi dan komponen-komponennya. Gambar 1.2
menunjukkan prioritas dari aplikasi (Meier, 2009).
27
Gambar 2.3 Prioritas Aplikasi Berdasarkan Activity (Meier, 2009)
- Active Processes (foreground)
Proses yang sedang dibutuhkan oleh user. Suatu proses
dipertimbangkan menjadi yang terdepan jika berada pada kondisi
(Android Developer, 2011) :
- Menjalankan sebuah activity di mana user sedang berinteraksi
dengannya (Method Objek Activity onResume( ) sedang
dipanggil).
- Merupakan host service yang terkait dengan activity di mana
user sedang berinteraksi dengannya.
- Memiliki obyek BroadcastReceiver yang mengeksekusi
method onReceive( ).
- Memiliki obyek service yang mengeksekusi satu dari lifecycle
callback (onStart(), onCreate(), atau onDestroy()).
28
- Visible Processes
Merupakan proses tidak memiliki komponen yang di depan,
tetapi tetap mempengaruhi apa yang user lihat dilayar. Proses ini
dipertimbangkan menjadi terlihat ketika salah satu dari kedua
kondisi ini terjadi :
- Host dari sebuah activity yang tidak berada didepan, teatapi
tetap terlihat oleh user (method onPause( ) dipanggil). Ini
mungkin terjadi, misalnya, jika activity yang terdepan
merupakan dialog yang mengijinkan activity sebelumnya
terlihat pada latar belakang.
- Host dari sebuah service yang terikat pada activity yang
terlihat.
Proses yang terlihat dipertimbangkan menjadi sangat penting
dan tidak akan dimatikan kecuali jika itu diperlukan untuk
menjaga foreground berjalan.
- Started Service Processes
Suatu proses service yang menjalankan service dengan method
startService ( ) dan tidak berada kedalam salah satu dari dua
kategori diatas. Walaupun proses service tidak secara langsung
mengikat pada apapun yang dilihat user. Pada umumnya
melakukan sesuatu yang dilakukan oleh user seperti memainkan
file.mp3 pada background, atau mendownload data pada network,
maka dari itu sistem menjaga mereka tetap berjalan, kecuali
memori tidak mencukupi untuk memelihara semua foreground
dan proses yang terlihat.
29
- Background Processes
Proses yang memegang suatu activity yang saat ini tidak terlihat
oleh user (method obyek onStop( ) dipangil). Proses ini tidak
secara langsung berpengaruh kepada user, dan dapat dimatikan
kapanpun untuk mengklaim memori untuk proses foreground,
terlihat atauproses service. Jika sebuah activity
mengimplementasi method lifecycle secara benar, dan
mengcapture status saat itu, mematikan proses tidak membuat
user terganggu.
- Empty Processes
Proses untuk meningkatkan keseluruhan pencapaian sistem,
Android sering mempertahankan aplikasi didalam memori setelah
mereka sudah mencapai akhir dari umur hidup mereka. Android
memelihara cache ini untuk meningkatkan proses start-up
aplikasi ketika kembali dihidupkan atau dipakai. Proses ini secara
rutin mematikan ketika diperlukan.
2.4.8 Kelebihan Android
Sudah banyak platform untuk perangkat selular saat ini,
termasuk didalamnya Symbian, iPhone, Windows Mobile,
Blackberry, Java Mobile Edition, Linux Mobile (LiM0), dan banyak
lagi. Namun ada beberapa hal yang menjadi kelebihan Android.
Walaupun beberapa fitur-fitur yang ada telah muncul sebelumnya
pada platform lain, Android adalah yang pertama menggabungkan
hal seperti berikut (Burnette, 2009) :
30
- A truly open, free development platform based on Linux and
opensource. Developer perangkat menyukai hal ini karena dapat
membangun platform yang sesuai yang diinginkan tanpa harus
membayar royality. Sementara pengembang software menyukai
karena Android dapat digunakan diperangkat manapun dan tanpa
terikat oleh vendor manapun.
- A component-based architecture inspired by Internet mashups.
Bagian dalam sebuah aplikasi dapat digunakan oleh aplikasi
lainnya, bahkan dapat diganti dengan komponen lain yang sesuai
dengan aplikasi yang dikembangkan.
- Tons of built-in services out of the box, kemudahan dalam
menggunakan berbagai macam layanan pada aplikasi seperti
penggunaan layanan pencarian lokasi, database SQL, browser
dan penggunaan peta. Semua sudah tertanam pada Android
sehingga memudahkan dalam pengembangan aplikasi.
- Automatic management of the application life cycle, setiap
program terjaga antara satu sama lain oleh berbagai lapisan
keamanan, sehingga kerja sistem menjadi lebih stabil. User tak
perlu takut dalam menggunakan aplikasi pada perangkat yang
memiliki memori terbatas.
- High-quality graphics and sound, dengan adanya dukungan 2D
grafis dan animasi yang diilhami oleh Flash menyatu dalam 3D
menggunakan OpenGL memungkinkan membuat aplikasi
maupun game yang berbeda.
- Portability across a wide range of current and future hardware,
aplikasi dapat digunakan pada perangkat yang ada saat ini
31
maupun yang akan datang. Semua program ditulis dengan
menggunakan bahasa pemrograman Java dan dieksekusi oleh
mesin virtual Dalvik, sehingga kode program portabel antara
ARM, X86, dan arsitektur lainnya. Sama halnya dengan dukungan
bermacam cara inputan seperti penggunaan keyboard, layar
sentuh, trackball dan resolusi layar semua dapat disesuaikan
dengan program.
2.5 Class MediaPlayer Android
Gambar 2.4 Diagram Bagian Mediaplayer dari Android API Reference (Every,
2009).
32
Kontrol playback audio atau video file dan arus dikelola
sebagai bagian dari mesin. Gambar 2.4 menunjukkan siklus hidup
dan bagian-bagian dari objek MediaPlayer yang dikendalikan oleh
pengoperasian pemutaran yang didukung oleh kontrol. Bentuk
lengkung mewakili bagian MediaPlayer, dapat berada didalam
lengkungan mewakili operasi untuk mengontrol pemutaran yang
mendorong transisi keadaan objek. Ada dua jenis lengkungan. Tanda
panah dengan ujung tunggal mewakili metode panggilan sinkron,
sementara tanda panah dengan ujung ganda merupakan pemanggilan
metode asynchronous (Android Developer, 2011).
Diagram Bagian Mediaplayer dari Android API Reference
dapat dilihat bahwa objek MediaPlayer memiliki keadaan berikut:
- Ketika sebuah objek MediaPlayer hanya dibuat menggunakan
new atau setelah reset() dipanggil, itu adalah dalam keadaan
idle, dan setelah release() dipanggil merupakan bagian akhir.
Antara dua bagian siklus hidup dari objek MediaPlayer.
- Ada sedikit perbedaan penting antara objek MediaPlayer
baru dibangun dan objek MediaPlayer setelah reset()
dipanggil. Apaila terjadi kesalahan dalam menuliskan
kode, maka membutuhkan metode seperti
getCurrentPosition(),getDuration(),getVideoHeight(),getV
ideoWidth(),setAudioStreamType(int),setLooping(boolean
),setVolume(float, float), pause(), start(), stop(),
seekTo(int), prepare() or prepareAsync() dalam keadaan
idle untuk kedua kasus. Jika salah satu metode ini benar
setelah objek MediaPlayer dibangun, user disediakan
33
metode callback OnErrorListener.onError dan tidak akan
dipanggil oleh mesin pemutar internal dan bagian objek
tetap tidak akan berubah, tetapi jika metode ini disebut
tepat setelah reset(), user disediakan metode callback
OnErrorListener.onError() dan akan dipanggil oleh mesin
pemutar internal dan objek akan ditransfer ke bagian
kesalahan.
- Selanjutnya, objek yang dibuat menggunakan
MediaPlayer baru berada di bagian Idle, sementara itu
yang dibuat dengan salah satu kelebihan beban
menciptakan metode yang nyaman tidak dalam keadaan
idle. Bahkan, objek berada dalam keadaan prepared jika
dibuat menggunakan metode create sukses.
- Secara umum, beberapa operasi mengontrol pemutaran
mungkin tidak berfungsi karena berbagai alasan, seperti tidak
didukung audio / video format, buruknya interleaved audio /
video, resolusi terlalu tinggi, streaming timeout, dan
sejenisnya. Dengan demikian, kesalahan pelaporan dan
pemulihan merupakan perhatian penting dalam situasi seperti
ini. Terkadang karena kesalahan pemrograman, memanggil
operasi kontrol playback dalam keadaan tidak valid juga dapat
terjadi. Di dalam semua kondisi kesalahan, mesin pemutar
internal meminta user untuk memanggil metode
OnErrorListener.onError(), jika OnErrorListener telah
didaftarkan terlebih dahulu melalui
34
setOnErrorListener(android.media.MediaPlayer.
OnErrorListener).
- Saat terjadi kesalahan, objek MediaPlayer masuk dalam
keadaan Error (kecuali seperti yang disebutkan di atas),
bahkan jika kesalahan error listener belum terdaftar oleh
aplikasi.
- Perintah untuk menggunakan kembali objek MediaPlayer
dalam keadaan Error dan mengembalikan dari error,
reset() dapat dipanggil untuk mengembalikan objek ke
keadaan idle sebelumnya.
- IllegalStateException dieksekusi untuk mencegah
kesalahan pemrograman seperti memanggil prepare(),
prepareAsync(), atau salah satu kelebihan beban
setDataSource metode dalam keadaan tidak valid.
- Memanggil setDataSource(FileDescriptor), atau
setDataSource(String), atau setDataSource(Context, Uri), atau
setDataSource(FileDescriptor, long, long) transfer objek
MediaPlayer dalam keadaan idle ke keadaan diinisialisasi.
- IllegalStateException akan dieksekusi jika
setDataSource() dipanggil di bagian lain.
- IllegalArgumentException dan IOException mungkin
dibuang dari metode setDataSource karena overload.
- Sebuah objek MediaPlayer harus terlebih dahulu memasukkan
keadaan prepared sebelum pemutaran dapat dimulai.
35
- Ada dua cara (synchronous vs. asynchronous) bahwa
bagian prepared dapat dihubungi, baik panggilan untuk
prepare() (synchronous) yang mentransfer objek untuk
bagian prepared setelah metode kembali dipanggil, atau
panggilan untuk prepareAsync() (asynchronous) yang
pertama transfer objek untuk bagian preparing setelah
panggilan ulang (yang terjadi hampir benar) sedangkan
mesin pemutar internal yang terus bekerja pada persiapan
sisa pekerjaan hingga pekerjaan persiapan selesai. Ketika
persiapan selesai atau saat prepared() mengembalikan
panggilan, mesin pemutar internal kemudian dipanggil,
user disediakan metode callback onPrepared() dari
interface OnPreparedListener, jika suatu
OnPreparedListener terdaftar terlebih dahulu melalui
setOnPreparedListener(Android.media.MediaPalayer.On
PreparedListener).
- preparing merupakan keadaan sementara, dan tindakan
memanggil banyak metode dapat berakibat objek
MediaPlayer dalam keadaan preparing tidak terdefinisi.
- IllegalStateException akan dieksekusi jika prepare() atau
prepareAsync() dipanggil di bagian lain.
- Sementara di bagian prepaed, properti seperti volume
audio / suara, screenOnWhilePlaying, perulangan dapat
disesuaikan dengan menerapkan metode yang sesuai.
- Untuk memulai pemutaran, start() harus dipanggil. Setelah
start() berhasil dikembalikan, objek MediaPlayer dalam
36
keadaan Started. isPlaying() dapat dipanggil untuk menguji
apakah objek MediaPlayer dalam keadaan Started.
- Sementara dalam keadaan started, mesin pemutar internal
memanggil OnBufferingUpdateListener.
onBufferingUpdate() yang disediakan user metode
callback jika OnBufferingUpdateListener telah terdaftar
terlebih dahulu melalui setOnBufferingUpdateListener
(OnBufferingUpdateListener). Panggilan balik ini
memungkinkan aplikasi untuk melacak keadaan buffering
sementara streaming audio / video.
- Memanggil start() tidak berpengaruh pada objek
MediaPlayer yang sudah dalam keadaan Started.
- Pemutaran dalam keadaan Paused dan Stopped, dan posisi
pemutaran saat ini dapat disesuaikan. Pemutaran dapat di
hentikan sementara melalui pause(). Ketika panggilan untuk
kembali pause(), objek MediaPlayer memasuki keadaan
dihentikan sementara. Pada transisi dari bagian start bagian
puase dan sebaliknya terjadi asynchronous dalam mesin
pemutar. Sehingga diperlukan beberapa waktu sebelum bagian
diperbarui dalam panggilan untuk isPlaying (), dan dapat
menjadi jumlah detik dalam kasus konten streaming.
- Memanggil start() untuk melanjutkan pemutaran objek
MediaPlayer yang Paused, dan posisi pemutaran kembali
sama seperti saat paused. Ketika panggilan untuk
37
mengembalikan start(), objek paused MediaPlayer
kembali ke keadaan Started.
- Memanggil pause() tidak memiliki pengaruh pada objek
MediaPlayer yang sudah dalam keadaan paused.
- Memanggil stop() untuk menghentikan pemutaran dan
menyebabkan MediaPlayer dalam keadaan Started, Paused,
Prepared atau PlaybackCompleted untuk memasuki bagian
Stopped.
- Setelah di bagian Stopped, pemutaran tidak dapat dimulai
sampai prepare() atau prepareAsync() dipanggil untuk
mengatur objek MediaPlayer ke bagian Prepared lagi.
- Memanggil stop() tidak memiliki pengaruh pada objek
MediaPlayer yang sudah dalam keadaan Stopped.
- Posisi pemutaran dapat disesuaikan dengan panggilan untuk
seekTo(int).
- Meskipun asynchronuous seekTo(int) dipanggil kembali
dengan cara yang benar, operasi seek biasanya digunakan
sebelum selesai, terutama untuk audio / video-streaming.
Ketika operasi aktual seek selesai, mesin pemutar
panggilan internal meminta user menyediakan
OnSeekComplete.onSeekComplete() jika
OnSeekCompleteListener yang telah terdaftar sebelumnya
melalui setOnSeekCompleteListener
(OnSeekCompleteListener).
38
- seekTo(int) juga dapat disebut di bagian-bagian lain,
seperti bagian Prepared, Paused dan PlaybackCompleted.
- Selanjutnya, posisi pemutaran aktual saat ini dapat diambil
dengan panggilan getCurrentPosition(), yang sangat
membantu untuk aplikasi seperti pemutar musik yang
perlu untuk melacak progress pemutaran.
- Bila pemutaran mencapai ujung stream, selanjutnya pemutaran
akan selesai.
- Jika modus perulangan sedang diatur untuk truewith
setLooping(boolean), objek MediaPlayer akan tetap pada
bagian Started.
- Jika modus perulangan ditetapkan ke false, mesin pemutar
panggilan user disediakan metode callback,
OnCompletion.onCompletion(), jika suatu
OnCompletionListener terdaftar terlebih dahulu melalui
setOnCompletionListener(OnCompletionListener),
melibatkan sinyal dari objek callback yang sekarang
dalam keadaan PlaybackCompleted.
- Ketika dalam keadaan PlaybackCompleted, memanggil
start() bisa mengembalikan pemutaran kembali dari awal
sumber audio / video.
Recommended