Bab 2 Tinjauan Pustaka...7 Bab 2 Tinjauan Pustaka 2.1 Penelitian Terdahulu Berbagai penelitian...

32
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).

Transcript of Bab 2 Tinjauan Pustaka...7 Bab 2 Tinjauan Pustaka 2.1 Penelitian Terdahulu Berbagai penelitian...

  • 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.