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 nilainilai 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). 7
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 keterbukaan,
dengan
platform
keterjangkauan,
Android, open
yang
source,
dan
menjanjikan 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 onSaveInstanceState( ). 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
mengimplementasi
service.
method
Jika
lifecycle
sebuah secara
activity
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
OnErrorListener.onError(), didaftarkan
terlebih
untuk jika
memanggil OnErrorListener dahulu
metode telah 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() interface
OnPreparedListener,
jika
dari 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
OnSeekComplete.onSeekComplete()
user
menyediakan jika
OnSeekCompleteListener yang telah terdaftar sebelumnya melalui (OnSeekCompleteListener).
setOnSeekCompleteListener
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
OnCompletion.onCompletion(),
metode
callback,
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.