Bab 2 LANDASAN TEORI 2.1. Shalat - Implementasi Location Base Service (LBS) Memanfaatkan Sensor GPS untuk Menentukan Waktu Shalat, Posisi Kiblat dan Mesjid Terdekat pada Smartphone Android

Bab 2 LANDASAN TEORI

2.1. Shalat

2.1.1. Pengertian Shalat

  Salat (Bahasa Arab: صلاة; transliterasi: Shalat), merujuk kepada ritual ibadah pemeluk agama Islam. Menurut syariat Islam, praktik salat harus sesuai dengan segala petunjuk tata cara Rasulullah SAW sebagai figur pengejawantah perintah Allah.

  Rasulullah SAW bersabda, Salatlah kalian sesuai dengan apa yang kalian lihat aku mempraktikkannya.

  Secara bahasa salat berasal dari bahasa Arab yang memiliki arti, doa. Sedangkan, menurut istilah, salat bermakna serangkaian kegiatan ibadah khusus atau tertentu yang dimulai dengan takbiratul ihram dan diakhiri dengan salam. (Wikipedia 2012).

2.1.2. Waktu Shalat Fardhu

  Waktu salat dari hari ke hari, dan antara tempat satu dan lainnya bervariasi. Waktu salat sangat berkaitan dengan peristiwa peredaran semu Matahari relatif terhadap bumi. Pada dasarnya, untuk menentukan waktu salat, diperlukan letak geografis, waktu (tanggal), dan ketinggian. urutan waktu salat (dari pagi sampai malam) yaitu imsak, Subuh, syuruq, Zuhur, Asar, Maghrib dan Isya.

  1. Syuruq Syuruq adalah terbitnya Matahari. Waktu syuruq menandakan berakhirnya waktu Subuh. Waktu terbit Matahari dapat dilihat pada almanak astronomi atau dihitung dengan menggunakan algoritma tertentu.

  2. Zuhur Waktu istiwa’ (zawaal) terjadi ketika Matahari berada di titik tertinggi. Istiwa’ juga dikenal dengan sebutan tengah hari (bahasa Inggris: midday/noon). Pada saat istiwa’, mengerjakan ibadah salat (baik wajib maupun sunah) adalah haram. Waktu Zuhur tiba sesaat setelah istiwa’, yakni ketika Matahari telah condong ke arah barat. Waktu

  

tengah hari dapat dilihat pada almanak astronomi atau dihitung dengan menggunakan

algoritma tertentu.

  Secara astronomis, waktu Zuhur dimulai ketika tepi piringan Matahari telah keluar dari garis zenith, yakni garis yang menghubungkan antara pengamat dengan pusat letak Matahari ketika berada di titik tertinggi (istiwa’). Secara teoretis, antara

  

istiwa’ dengan masuknya zhuhur membutuhkan waktu 2,5 menit, dan untuk faktor

keamanan, biasanya pada jadwal salat, waktu Zuhur adalah 5 menit setelah istiwa’.

  3. Asar Menurut mazhab Syafi'i, Maliki, dan Hambali, waktu Asar diawali jika panjang bayang-bayang benda melebihi panjang benda itu sendiri. Sementara madzab Imam Hanafi mendefinisikan waktu Asar jika panjang bayang-bayang benda dua kali melebihi panjang benda itu sendiri. Waktu Ashar dapat dihitung dengan algoritma tertentu yang menggunakan trigonometri tiga dimensi.

  Waktu salat dari hari ke hari, dan antara tempat satu dan lainnya bervariasi. Waktu salat sangat berkaitan dengan peristiwa peredaran semu Matahari relatif terhadap bumi. Pada dasarnya, untuk menentukan waktu salat, diperlukan letak geografis, waktu (tanggal), dan ketinggian.

  4. Magrib Waktu Magrib diawali ketika terbenamnya Matahari. Terbenam Matahari di sini berarti seluruh "piringan" Matahari telah "masuk" di bawah horizon (cakrawala).

  5. Isya dan Subuh Waktu Isya didefinisikan dengan ketika hilangnya cahaya merah (syafaq) di langit, hingga terbitnya fajar shaddiq. Sedangkan waktu Subuh diawali ketika terbitnya fajar

  shaddiq , hingga sesaat sebelum terbitnya Matahari (syuruq).

  Perlu diketahui, bahwa sesaat setelah Matahari terbenam, langit kita tidak langsung gelap, karena bumi kita memiliki atmosfer sehingga meskipun Matahari berada di bawah horizon (ufuk barat), masih ada cahaya Matahari yang direfraksikan di langit.

  Dari sisi astronomis, cahaya di langit yang terdapat sebelum terbitnya Matahari dan setelah terbenamnya Matahari dinamakan twilight, yang secara harfiah artinya cahaya di antara dua, yakni antara siang dan malam. Dalam bahasa Arab, twilight disebut syafaq. Secara astronomis, terdapat tiga definisi twilight: a.

  Twilight Sipil, yakni ketika Matahari berada 6° di bawah horizon b.

  Twilight Nautikal, yakni ketika Matahari berada 12° di bawah horizon c. Twilight Astronomis, yakni ketika Matahari berada 18° di bawah horizon

  Astronom menganggap Twilight Astronomis Petang menandakan dimulainya malam hari; namun definisi ini adalah untuk keperluan praktis saja.

  Secara astronomis, waktu Subuh merupakan kebalikan dari waktu Isya. Menjelang pagi hari, fajar ditandai dengan adanya cahaya yang menjulang tinggi (vertikal) di ufuk timur; Ini dinamakan "fajar kadzib". Cahaya tersebut kemudian menyebar di cakrawala (secara horizontal), dan ini dinamakan fajar shaddiq.

  Bagi penentuan jadwal waktu salat (yakni munculnya fajar shaddiq dan hilangnya syafaq di petang hari), terdapat variasi penentuan sudut twilight oleh berbagai organisasi. Banyak di antara umat Islam menggunakan Twilight Astronomis (yakni ketika Matahari berada 18° di bawah horizon) sebagai waktu fajar shaddiq.

  Sebagian yang lain menetapkan kriteria fajar shaddiq atau syafaq terjadi ketika Matahari berada 17°, 19°, 20°, dan bahkan 21°. Sebagian yang lain bahkan menggunakan kriteria penambahan 90 menit, 75 menit, atau 60 menit.

  Sebuah penelitian dan observasi di berbagai tempat di dunia menunjukkan bahwa penentuan sudut twilight tertentu ternyata tidak valid (tidak bisa berlaku) untuk seluruh tempat di bumi ini terhadap peristiwa fajar shaddiq dan hilangnya syafaq. Peristiwa tersebut merupakan fungsi dari letak lintang dan musim yang bervariasi di tempat satu dan lainnya. (Wikipedia,2012).

  .

2.1.3. Menghitung Waktu Shalat

  Seiring dengan perkembangan ilmu pengetahuan para ahli astronomi berusaha membuat rumus waktu shalat berdasarkan konsep posisi matahari disuatu daerah, dengan melihat berdasarkan geografis dan ketinggian suatu tempat di permukaan bumi.

  Sehingga dengan adanya rumusan matematika ini dapat ditentukan posisi matahari tanpa harus melihat secara langsung dimana matahari berada. Untuk menentukan waktu lima shalat wajib di suatu tempat pada tanggal tertentu, ada beberapa parameter yang mesti diketahui:

  1. Koordinat lintang tempat tersebut (L) ataulatitude. Daerah yang terletak di sebelah utara garis khatulistiwa (ekuator) memiliki lintang positif. Sebaliknya, untuk yang disebelah selatan lintangnya negatif.

2. Koordinat bujur tempat tersebut (B) atau longitude. Daerah yang terletak disebelah timur Greenwich memiliki bujur positif.

3. Zona waktu tempat tersebut (Z). Daerah yang terletak di sebelah timur Greenwich memiliki Z positif.

  4. Ketinggian lokasi dari permukaan laut (H) atau altidude. ketinggian lokasi dari permukaan laut (H) menentukan waktu kapan terbit dan terbenamnya matahari. Tempat yang berada tinggi di atas permukaan laut akan lebih awal menyaksikan matahari terbit serta lebih akhir melihat matahari terbenam, dibandingkan dengan tempat yang lebih rendah. Satuan H adalah meter.

  5. Tanggal (D), Bulan (M) dan Tahun (Y). Merupakan parameter yang diperlukan untuk waktu shalat pada tanggal tersebut. Dari tanggal, bulan dan tahun selanjutnya di hitung nilai Julian Day (JD). Dengan rumus sebagai berikut:

  = 17220994.5 + (365.25 × ) + �30.6001( + 1)� + + Keterangan: a.

  INT: nilai hasil penjumlahan di ubah ke nilai integer (bilangan bulat) b.

  Jika M>2, maka M dan Y tidak berubah, c. Jika M = 1 atau M = 2, maka M +12 dan Y dikurangi 1 d.

  ). = 2 + � � − ; dimana = (

  

4 100

Nilai JD berlaku untuk pukul 12.00 UT atau saat tengah hari di Greenwich.

  Untuk JD yang digunakan dalam perhitungan yaitu JD lokasi tempat yang ingin ditentukan waktu shalat. Diperoleh dari JD pukul 12.00 UT waktu

  Greenwich dikurangi dengan Z/24, dimana Z adalah zona waktu lokal tersebut.

  6. Sudut Deklinasi Matahari (DM). Deklinasi matahari (DM) untuk satu tanggal tertentu dapat dihitung dengan menggunakan rumus berikut:

  = 0.37877 + 23.264 × sin(57.297 ×

  − 79.547) + 0.3812 × sin(2 × 57.297 ×

  − 82.682) + 0.17132 × sin(3 × 57.297 ×

  − 59.722) Keterangan: T adalah Sudut tanggal, dengan rumus,

  = 2 × × ( − 2451545)/365.25 7.

  Equation of Time (ET). Equation of Time untuk satu tanggal dapat dihitung, dengan rumus: = (−(1789 + 237 × ) × sin( 0) − (7146 − 62 × ) × cos( 0) + 9934

  − 14 × ) × sin(2 × 0) + (74 + 10 × ) × sin(3 × 0) + (320

  − 4 × ) × cos(3 × 0) − 212 × sin(4 × 0))/1000 Keterangan: a.

  L0 adalah Bujur rata-rata matahari,L0 = 280,46607 + 36000,7698 × U b.

  U = (JD – 2451545)/36525.

  8. Altitude matahari waktu Subuh dan Isya. Subuh saat fajar menyingsing pagi disebut dawn astronomical twilight yaitu ketika langit tidak lagi gelap dimana atmosfer bumi mampu membiaskan cahaya matahari dari bawah ufuk. Sementara Isya disebut dusk astronomicaltwilight ketika langit tampak gelap karena cahaya matahari di bawah ufuk tidak dapat lagi dibiaskan oleh atmosfer. Nilai altitude matahari berasal dari ketika langit berubah dari gelap menjadi mulai terang, ketika fajar menyingsing di pagi hari dan menyebar secara horisontal dengan seragam. Altitude matahari sangat menentukan metode perhitungan waktu shalat, dimana perbedaan 1 derajat dapat memberikan perbedaan waktu sekitar 4 menit. Terdapat beberapa pendapat mengenai nilai altitude matahari seperti tampak pada tabel berikut.

Tabel 2.1 Altitude Matahari Saat Subuh dan Isya 9.

  Tetapan panjang bayangan Ashar, dalam hal ini terdapat dua pendapat berbeda. Pendapat madzhab Imam Syafi'i menyatakan panjang bayangan benda saat Ashar adalah tinggi benda ditambah panjang bayangan saat Zhuhur. Sementara madzhab Imam Hanafi menyatakan panjang bayangan benda saat Ashar sama dengan dua kali tinggi benda ditambah panjang bayangan saat Zhuhur.

  Setiap parameter sangat menentukan datangnya waktu shalat, bila salah satu parameter kurang akurat maka ketepatan datangnya waktu shalat akan sebanding. Waktu shalat dapat ditentukan dengan menggunakan rumus-rumus pergerakkan matahari dengan tepat. Berikut adalah rumus waktu shalat:

  1. Rumus Waktu Shalat Subuh 2.

  Rumus Waktu Shalat Zuhur ℎ = 12 + −

  15 −

  60 3. Rumus Waktu Shalat Ashar

  Dimana MA merupakan Mazhab yang digunakan, MA sama dengan 1 untuk mazhab imam Syafi'i dan MA sama dengan 2 untuk Mazhab imam Hanafi.

  4. Rumus Waktu Shalat Magrib

5. Rumus Waktu Shalat Isya

2.2 Kiblat

  2.2.1. Pengertian Kiblat

  Dalam Qur'an, dikatakan Muslim harus menghadap Kabah di Mekkah selagi menegakkan shalat. Cukuplah bagi mereka yang tidak berada di Mekkah berdiri mengarah ke sana sehingga orang bisa mengatakan “ia berdiri dalam arah Kiblat.”Agama Islam memperkenalkan Kabah sebagai pusat pemujaan Allah dan Muslim diperintahkan menghadap Kiblat di mana pun mereka berada di bumi, sehingga persaudaraan, kesatuan, dan ketertiban di antara mereka dapat dipertahankan. (HarunYahya, 2012).

  2.2.2. Menentukan Arah Kiblat

2.2.2.1. Koordinat Posisi Geografis

  Bola (sphere) adalah benda tiga dimensi yang unik dimana jarak antara setiap titik di permukaan bola dengan titik pusatnya selalu sama. Karena bumi sangat mirip dengan bola, maka cara menentukan arah dari satu tempat (misalnya masjid) ke tempat lain (misalnya Ka'bah) dapat dilakukan dengan mengandaikan bumi seperti bola.

  Setiap titik di permukaan bumi dapat dinyatakan dalam duat koordinat, yaitu bujur (longitude) dan lintang (latitude). Semua titik yang memiliki bujur nol terletak pada garis meridian Greenwich (setengah lingkaran besar yang menghubungkan kutub utara dan selatan dan melewati Greenwich). Sementara itu semua titik yang memiliki lintang nol terletak pada garis ekuator (khatulistiwa).

  Bujur timur terletak di sebelah timur Greenwich, sedangkan bujur barat terletak di sebelah barat Greenwich. Sesuai kesepakatan umum, bujur timur bernilai positif, sedangkan bujur barat bernilai negatif. Sementara itu semua titik yang terletak di sebelah utara ekuator disebut lintang utara, demikian juga untuk titik di selatan ekuator disebut lintang selatan. Lintang utara bernilai positif, sedangkan lintang selatan bernilai negatif.

Gambar 2.1 Pembagian Bumi Berdasarkan Bujur dan Lintang

2.2.2.2. Ilmu Ukur Segitiga Bola

  Ilmu ukur segitiga bola atau disebut juga dengan istilah trigonometri bola (spherical trigonometri) adalah ilmu ukur sudut bidang datar yang diaplikasikan pada permukaan berbentuk bola yaitu dalam hal ini Bumi. Segitiga bola menjadi ilmu andalan tidak hanya untuk menghitung arah kiblat bahkan termasuk jarak lurus dua buah tempat di permukaan bumi.

  Sebagaimana yang sudah disepakati secara umum bahwa yang disebut arah adalah jarak terpendek berupa garis lurus ke suatu tempat, sehingga Kiblat juga menunjukkan arah terpendek dari suatu lokasi ke Ka'bah. Karena bentuk bumi yang bulat, jarak ini membentuk busur besar sepanjang permukaan bumi. Lokasi Ka'bah berdasarkan pengukuran menggunakan Global Positioning System (GPS) maupun menggunakan software Google Earth secara astronomi berada di 21° 25' 21.04” Lintang Utara dan 39° 50' 34.04”. Perhitungan dan pengukuran arah kiblat dilakukan dengan derajat sudut dari titik kutub Utara, dengan menggunakan alat bantu mesin hitung atau kalkulator. Adapun untuk menghitung arah kiblat, ada 3 buah variabel yang diperlukan, yaitu:

  1. Lokasi Ka'bah (Mekah) 2. Lokasi yang akan ditentukan arah kiblatnya.

  3. Kutub utara

Gambar 2.2 Segitiga Bola ABC yang menghubungkan titik A (Ka'bah), titik B (Lokasi), dan titik C (Kutub Utara)

  Berdasarkan ketiga variabel ini, lokasi Ka'bah dan Kutub Utara adalah dua variabel yang tetap, sedangkan Lokasi yang akan ditentukan arah kiblat senantiasa berubah. Bila ketiga variabel tersebut digambarkan pada permukaan bumi, maka akan membentuk segitiga bola ABC seperti tampak pada Gambar. Dimana titik A merupakan Lokasi Ka'bah, B Lokasi yang ditentukan arah kiblat dan titik C Kutub Utara. Titik A (Ka'bah) memiliki koordinat bujur Ba dan lintang La. Titik B (Lokasi) memiliki koordinat bujur Bb dan lintang Lb. Titik C memiliki lintang 90 derajat. Busur a adalah panjang busur yang menghubungkan titk B dan C. Busur b adalah panjang busur yang menghubungkan titik A dan C. Busur c adalah panjang busur yang menghubungkan titik A dan B. Sudut C tidak lain adalah selisih antara bujur Ba dan bujur Bb. Jadi sudut C = Ba – Bb. Sementara sudut B adalah arah menuju titk A (Ka'bah). Jadi arah kiblat dari titik B dapat diketahui dengan menentukan besar sudut B.

  Dianggap jari-jari bumi sama dengan 1. Sudut yang menghubungkan titik di khatulistiwa, pusat bumi dan kutub utara adalah 90 derajat. Karena lintang titik A adalah La, maka busur b sama dengan 90 – La. Karena lintang titik B adalah Lb, maka busur a sama dengan 90 – Lb.

2.2.2.3. Rumus Segitiga Bola

  Dalam trigonometri bola, terdapat rumus-rumus standar sebagai berikut:

Gambar 2.3. Segitiga Bola

  cos(b) = cos(a) cos(c) + sin(a) sin(c) cos(B) cos(c) = cos(a) cos(b) + sin(a) sin(b) cos (C) Dengan menggabungkan ketiga rumus di atas diperoleh rumus sebagai berikut: Sehingga sudut B adalah: B = arctan(tan(B))

  Azimuth arah kiblat ditujukkan oleh sudut B. Azimuth 0 derajat menunjukkan arah utara (true north). Nilai B sangat tergantung dari pembilang dan penyebut pada ruas kanan rumus tan(B). Dengan kata lain, nilai B bergantung pada nilai sin(Ba – Bb) dan nilai cos(Lb)*tan(La) – sin(Lb)*cos(Ba – Bb). Untuk memudahkan, tan(B) dapat ditulis sama dengan y/x. Sehingga nilai sudut B yang sesuai bergantung pula dari positif atau negatifnya nilai x dan y, dapat dijelaskan sebagai berikut:

  1. Jika x positif dan y positif, maka tan(B) positif yang menghasilkan 0 < B < 90.

  2. Jika x negatif dan y positif, maka tan(B) negatif yang menghasilkan 90 < B < 180.

  3. Jika x negatif dan y negatif, maka tan(B) positif yang menghasilkan 180 < B < 270 atau -180 < B < -90. Jika B negatif, maka ditambahkan dengan 360 derajat.

  4. Jika x positif dan y negatif, maka tan(B) negatif yang menghasilkan 270 < B < 360 atau -90 < B < 0.

  Setelah mengetahui sudut azimuth kiblat, maka selanjutnya menentukan kutub utara sejati (true north). Dari kutub utara sejati tersebut ditambahkan dengan nilai azimuth yang ditemukan dengan pergerakkan searah jarum jam, sehingga didapatkan arah kiblat pada lokasi.

2.3. Location Based Service (LBS)

  Layanan Berbasis lokasi adalah layanan informasi yang dapat diakses melalui mobile

  

sevice dengan mengunakan mobile network, yang dilengkapi kemampuan untuk

  memanfaatkan lokasi dari mobile device tersebut. LBS memberikan kemungkinan komunikasi dan interaksi dua arah. Oleh karena itu pengguna memberitahu penyedia layanan untuk mendapatkan informasi yang dia butuhkan, dengan referensi posisi pengguna tersebut. Layanan berbasis lokasi dapat digambarkan sebagai suatu layanan yang berada pada pertemuan tiga teknologi yaitu:Geographic Information System,

  

Internet Service , dan Mobile Devices, hal ini dapat dilihat pada gambar LBS adalah

pertemuan dari tiga teknologi.

  Secara Garis besar jenis Layanan Berbasis Lokasi juga dapat dibagi menjadi dua, yaitu:

  1.Pull Service: Layanan diberikan berdasarkan permintaan dari pelanggan akan kebutuhan suatu informasi. Jenis layanan ini dapat dianalogikan seperti menggakses suatu web pada jaringan internet.

  2.Push Service: Layanan ini diberikan langsung oleh sevice provider tanpa menunggu permintaan dari pelanggan, tentu saja informasi yang diberikan tetap berkaitan dengan kebutuhan pelanggan.

2.3.1 Komponen LBS

  Dalam Layanan Berbasis Lokasi terdapat Lima komponen penting yaitu: 1.

  Mobile Devices: Suatu alat yang digunakan oleh pengguna untuk meminta informasi yang dibutuhkan. Informasi dapat diberikan dalam bentuk suara, gambar, dan text.

  2. Comunication Network: Komponen kedua adalah jaringan komunikasi yang mengirim data pengguna dan informasi yang diminta dari mobile terminal ke

  Service Provider kemudian mengirimkan kembali informasi yang diminta ke

  pengguna. Communicationnetwork dapat berupa jaringan seluler (GSM, CDMA), Wireless Local Area Network (WLAN), atau Wireless Wide Area

  Network (WWAN) 3.

  Positioning Component: Untuk memproses suatu layanan maka posisi pengguna harus diketahui

  4. Service and Aplication Provider: Penyedia layanan menawarkan berbagai macam layanan kepada pengguna dan bertanggung jawab untuk memproses informasi yang diminta oleh pengguna.

  5. Data and Content Provider: Penyedia layanan tidak selalu menyimpan semua data yang dibutuhkan yang bisa diakses oleh pengguna. Untuk itu, data dapat diminta daridata and Content Provider. Selanjutnya Service and Aplication Provider mengirim informasi yang telah diolahmelaui jaringan internet dan jaringan komunikasi.Pada akhirnya pengguna dapat menerima informasiyang diinginkan.

2.3.2. Google Maps

  Google Maps merupakan layanan dariGoogle yang mempermudah pengunanya untukmelakukan kemampuan pemetaan untuk aplikasiyang dibuat. Sedangkan Google Maps APImemungkinkan pengembangan untukmengintegrasikan Google Maps ke dalam situs web.Dengan menggunakan Google Maps APImemungkinkan untuk menanamkan situs GoogleMaps ke dalam situs eksternal, di mana situs datatertentu dapat dilakukan overlay.

  Meskipun pada awalnya hanya JavaScriptAPI, API Maps sejak diperluas untuk menyertakansebuah API untuk Adobe Flash aplikasi, layananuntuk mengambil gambar peta statis, dan layananweb untuk melakukan geocoding, menghasilkanpetunjuk arah mengemudi, dan mendapatkan profilelevasi.

  Kelas kunci dalam perpustakaan Mapsadalah MapView, sebuah subclass dari

  

ViewGroup dalam standar perpustakaan Android. SebuahMapView menampilkan peta

  dengan data yangdiperoleh dari layanan Google Maps. BilaMapView memiliki fokus, dapat menangkap tombolyang ditekan dan gerakan sentuh untuk pan danzoom peta secara otomatis, termasuk penangananpermintaan jaringan untuk ubin peta tambahan. Inijuga menyediakan semua elemen UI yangdiperlukan bagi pengguna untuk mengendalikanpeta. Aplikasi tersebut juga dapat menggunakanmetode MapView kelas untuk mengontrolMapView secara terprogram dan menariksejumlah jenis Tampilan di atas peta.

  Secara umum, kelas MapViewmenyediakan pembungkus di Google Maps APIyang memungkinkan aplikasi tersebutmemanipulasi data Google Maps melalui metodekelas, dan itu memungkinkan dikerjakan dengandata Maps seperti jenis lain Views. PerpustakaanMaps eksternal bukan bagian dari perpustakaanAndroid standar, sehingga tidak mungkin adapada beberapa perangkat Android biasa.Demikian pula, perpustakaan Maps eksternaltidak termasuk dalam perpustakaan Androidstandar yang disediakan dalam SDK. Google APIpengaya menyediakan perpustakaan Maps untuksehingga dapat mengembangkan, membangun,dan menjalankan aplikasi berbasis peta di SDKAndroid, dengan akses penuh ke data GoogleMaps.(Arifin et al., 2012).

2.4. Android

  2.4.1. Pengertian Android

  Android adalah satu kumpulan perangkat lunak yang dapat berupa sistem operasi,

  

middleware , dan aplikasi kunci perangkat mobile. Android terdiri dari satu tumpukan

  yang lengkap, mulai dari boot loader, device driver, dan fungsi-fungsi pustaka, hingga perangkat lunak API, termasuk aplikasi dan SDK (Software Depelopment Kit). Jadi, sebenarnya Android bukanlah satu perangkat tertentu, melainkan sebuah platform yang dapat digunakan dan di adaptasikan untuk mendukung berbagai konfigurasi perangkat keras. Walaupun kelas utama perangkat yang didukung oleh Android adalah telepon mobile, tetapi sekarang ini juga digunakan pada electronic book

  readers , netbooks, table, dan set-top boxes (STB) (Collins et al., 2012).

  2.4.2. Sejarah Android

  Pada mulanya terdapat berbagai macam sistem operasi pada perangkat selular, diantaranya 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 platformAndroid, yang menjanjikan keterbukaan, keterjangkauan, open

  source , dan framework berkualitas.

  Pada tahun 2005, Google mengakuisisi perusahaan Android Inc. Untuk memulai pengembangan platformAndroid. Dimana terlibat dalam pengembangan ini Andy Rubin, Rich Miner, Nick Sears, dan Chris White. Pada pertengahan 2007 sekelompok pemimpin industri bersama-sama membentuk aliansi perangkat selular terbuka, Open Handset Alliance (OHA). Bagian dari tujuan aliansi ini adalah berinovasi dengan cepat dan menanggapi kebutuhan konsumen dengan lebih baik, dengan produk awalnya adalah platformAndroid. Dimana Android dirancang untuk melayani kebutuhan operator telekomunikasi, manufaktur handset, dan pengembang aplikasi. OHA berkomitmen untuk membuat Androidopen source dengan lisensi Apache versi 2.0.

  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, pada tabel berikut diberikan daftar lengkap versi-versi Android hingga peluncuran terakhirnya pada tahun 2011.

  Tabe1 2.2 Versi-Versi Android Versi Android Tanggal Peluncuran API Level Nama Kode

  23 September 2008

  1

  • 1.0

  1.1

  9 Februari 2009 2 -

  1.5

  30 April 2009

  3 Cupcake

  1.6

  15 September 2009

  4 Donut

  2.0

  26 Oktober 2009

  5 Eclair

  2.01

  3 Desember 2009

  6

  2.1

  31 Maret 2010

  7

  2.2

  20 Mei 2010

  8 Froyo (Frozen Yoghurt)

  2.3

  6 Desember 2010

  9 Gingerbread

  2.3.3

  9 Februari 2011

  10

  3.0

  12 Februari 2011

  11 HoneyComb

  3.1

  10 Mei 2011

  12

  3.2

  2 Juli 2011

  13

  4.0

  19 Oktober 2011

  14 Ice Cream Sandwitch

  4.03

  16 Desember 2011

  15

2.4.3 Anatomi Android

  Dalam paket sistem operasi Android tediri dari beberapa unsur seperti tampak pada

gambar 2.1. Secara sederhana arsitektur Android merupakan sebuah kernel Linux dan sekumpulan pustaka C / C++ dalam suatu framework yang menyediakan dan

  mengatur alur proses aplikasi.

Gambar 2.4 Detail Anatomi Android

  2.4.3.1 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 karenanya pada Android hanya terdapat beberapa servis 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.

  2.4.3.2. Libraries

  Android menggunakan beberapa paket pustaka yang terdapat pada C/C++ dengan standar Berkeley Software Distribution (BSD) hanya setengah dari yang aslinya untuk tertanam pada kernel Linux. Beberapa pustaka diantaranya: 1.

  Media Library untuk memutar dan merekam berbagai macam format audio dan video.

  2. Surface Manager untuk mengatur hak akses layer dari berbagai aplikasi.

  3. Graphic Library termasuk didalamnya SGL dan OpenGL, untuk tampilan 2D dan 3D.

  4. SQLite untuk mengatur relasi database yang digunakan pada aplikasi.

  5. SSl dan WebKit untuk browser dan keamanan internet. Pustaka-pustaka tersebut bukanlah aplikasi yang berjalan sendiri, namun hanya dapat digunakan oleh program yang berada di level atasnya. Sejak versi Android 1.5, pengembang dapat membuat dan menggunakan pustaka sendiri menggunakan Native Development Toolkit (NDK).

2.4.3.3. Android Runtime

  Pada Android tertanam paket pustaka inti yang menyediakan sebagian besar fungsi Android. Inilah yang membedakan Android 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:

1. Pustaka Inti, Android dikembangkan melalui bahasa pemrograman Java, tapi

  Android Runtime bukanlah mesin virtual Java. Pustaka inti Android menyediakan hampir semua fungsi yang terdapat pada pustaka Java serta beberapa pustaka khusus Android.

  2. Mesin Virtual Dalvik, 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.

2.4.3.4. Application Framework

  Kerangka 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 terpenting dalam kerangka aplikasi Android adalah sebagai berikut:

  1. Activity Manager, berfungsi untuk mengontrol siklus hidup aplikasi dan menjaga keadaan ”Backstack“ untuk navigasi penggunaan.

  2. Content Providers, berfungsi untuk merangkum data yang memungkinkan digunakan oleh aplikasi lainnya, seperti daftar nama.

  3. Resuource Manager, untuk mengatur sumber daya yang ada dalam program.

  Serta menyediakan akses sumber daya diluar kode program,seperti karakter, grafik, dan file layout.

  4. Location Manager, berfungsi untuk memberikan informasi detail mengenai lokasi perangkat Android berada.

  5. Notification Manager, mencakup berbagai macam peringatan seperti, pesan masuk, janji, dan lain sebagainya yang akan ditampilkan pada status bar.

2.4.3.5. Application Layer

  Puncak dari diagram arsitektur Android adalah lapisan aplikasi dan widget. Lapisan aplikasi merupakan lapisan yang paling tampak pada pengguna ketika menjalankan program. Pengguna 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 berjalan diatas lapisan aplikasi dengan menggunakan pustaka API (Application Programming Interface) yang sama.

2.4.4. 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 pengembang 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.

2.4.4.1. Activities

  

Activity merupakan bagian yang paling penting dalam sebuah aplikasi, karena Activity

  menyajikan tampilan visual program yang sedang digunakan oleh pengguna. Setiap

  

Activity dideklarasikan dalam sebuah kelas yang bertugas untuk menampilkan

  antarmuka pengguna 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 pengguna 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, yaitu:

  1. Active, setiap activity yang berada ditumpukan paling atas, maka dia akan terlihat, terfokus, dan menerima masukkan dari pengguna. 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.

  2. 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 pengguna. Dalam kasus ekstrim, Android akan menghentikan activity dalam keadaan paused ini, untuk menunjang sumber daya bagi activity yang sedang aktif.

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

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

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

  2.4.4.3. 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 aplikasi ingin menampilkan URL, sistem akan menentukan komponen apa yang dibutuhkan oleh Intents tersebut.

  2.4.4.4. 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 pengguna. Namun, Broadcast Receivers dapat menggunakan Notification Manager untuk memberitahukan sesuatu kepada pengguna.

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

2.4.5. Tipe Aplikasi Android

  Terdapat tiga kategori aplikasi pada Android, yaitu: 1.

  Foreground Activity Aplikasi yang hanya dapat dijalankan jika tampil pada layar dan tetap efektif walaupun tidak terlihat. Aplikasi dengan tipe ini pasti mempertimbangkan siklus hidup activity, sehingga perpindahan antar activity dapat berlangsung dengan lancar.

  2. Background Service Aplikasi yang memiliki interaksi terbatas dengan user, selain dari pengaturan konfigurasi, semua dari prosesnya tidak tidak tampak pada layar. Contohnya aplikasi penyaringan panggilan atau sms auto respon.

  3. Intermittent Activity Aplikasi yang masih membutuhkan beberapa masukkan dari pengguna, namun sebagian sangat efektif jika dijalankan di background dan jika diperlukan akan memberi tahu pengguna 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 karenanya perlu pertimbangan bagaimana aplikasi tersebut digunakan dan menentukan kategori aplikasi yang sesuai.

2.4.6. Siklus Hidup Aplikasi Android

  Siklus hidup aplikasi Android dikelola oleh sistem, berdasarkan kebutuhan pengguna, sumberdaya yang tersedia, dan sebagainya. Misalnya Pengguna ingin menjalankan browser web, pada akhirnya sistem yang akan menentukan menjalankan aplikasi.

  Sistem sangat berperan dalam menentukan apakah aplikasi dijalankan, dihentikan sementara, atau dihentikan sama sekali. Jika pengguna ketika itu sedang menjalankan sebuah Activity, maka sistem akan memberikan perioritas utama untuk aplikasi yang tersebut. Sebaliknya, jika suatu Activity tidak terlihat dan sistem membutuhkan sumber daya yang lebih, maka Activity yang prioritas rendah akan ditutup.

  Android menjalankan setiap aplikasi dalam proses secara terpisah, yang masing-masing memliki mesin virtual pengolah sendiri, dengan ini melindungi penggunaan memori pada aplikasi. Selain itu juga Android dapat mengontrol aplikasi mana yang layak menjadi prioritas utama. Karenanya Android sangat sensitive dengan siklus hidup aplikasi dan komponen-komponennya. Perlu adanya penanganan terhadap setiap kondisi agar aplikasi menjadi stabil. Gambar 2.2 Prioritas menunjukkan prioritas dari aplikasi.

Gambar 2.5 Prioritas Aplikasi Berdasarkan Activity

2.4.7. 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: 1.

  Keterbukaan, Bebas pengembangan tanpa dikenakan biaya terhadap sistem karena berbasiskan Linux dan open source. Pembuat perangkat menyuka 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.

2. Arsitektur komponen dasar Android terinspirasi dari teknologi internet

  Mashup . Bagian dalam sebuah aplikasi dapat digunakan oleh aplikasi lainnya,

  bahkan dapat diganti dengan komponen lain yang sesuai dengan aplikasi yang dikembangkan.

  3. Banyak dukungan service, kemudahan dalam menggunakan berbagai macam layanan pada aplikasi seperti penggunaan layanan pencarian lokasi, database SQL, browser dan penggunaan peta. Semua itu sudah tertanam pada Android sehingga memudahkan dalam pengembangan aplikasi.

  4. Siklus hidup aplikasi diatur secara otomatis, setiap program terjaga antara satu sama lain oleh berbagai lapisan keamanan, sehingga kerja sistem menjadi lebih stabil. Pengguna tak perlu kawatir dalam menggunakan aplikasi pada perangkat yang memorinya terbatas.

  5. Dukungan grafis dan suarat terbaik, dengan adanya dukungan 2D grafis dan animasi yang diilhami oleh Flash menyatu dalam 3D menggunakan OpenGL memungkinkan membuat aplikasi maupun game yang berbeda.

  6. Portabilitas aplikasi, aplikasi dapat digunakan pada perangkat yang ada saat ini maupun yang akan datang. Semua program ditulis dengan menggunakan bahas pemrograman Java dan dieksekusi oleh mesin virtual Dalvik, sehingga kode program portabel antara ARM, X86, dan arsitektur lainnya. Sama halnya dengan dukungan masukan seperti penggunaan Keyboard, layar sentuh, trackball dan resolusi layar semua dapat disesuaikan dengan program.

2.4.8. Lingkungan Pengembangan Android

  Untuk membangun perangkat lunak aplikasi Android, ada beberapa perkakas (tools) yang diperlukan, mulai dari lingkungan pengembangan, alat-alat bantu pengembagan kompiler, dll. (Haseman, 2008; Mednieks et al., 2010).

2.4.8.1. Java Development Kit (JDK)

  JDK menyediakan perkakas yang diperlukan untuk mengembangkan program Java, yang memuat semua perkakas (tools) dan pustaka (libraries) yang dibutuhkan untuk menjalankan aplikasi berbasis Java, misalnya Java compiler yang digunakan oleh IDE dan SDK. Disamping itu, JDK juga memuat Java Runtime Environment (JRE) yang memungkinkan program Java seperti Eclipse, hanya JRE nilai yang diperlukan.

2.4.8.2. IDE Eclipse

  Eclipse adalah sebuah IDE (Integrated Development Environment) untuk mengembangkan perangkat lunak dan dapat dijalankan di semua platform (platform- independent). Berikut ini adalah sifat dari Eclipse: 1.

  Multi-platform: Target sistem operasi Eclipse adalah Microsoft Windows, Linux, Solaris, AIX, HP-UX dan Mac OS X.

  2. Multi-language: Eclipse dikembangkan dengan bahasa pemrograman Java, akan tetapi Eclipse mendukung pengembangan aplikasi berbasis bahasa pemrograman lainnya, seperti C/C++, Cobol, Python, Perl, PHP, dan lain sebagainya.

  3. Multi-role: Selain sebagai IDE untuk pengembangan aplikasi, Eclipse pun bisa digunakan untuk aktivitas dalam siklus pengembangan perangkat lunak, seperti dokumentasi, test perangkat lunak, pengembangan web, dan lain sebagainya.

Gambar 2.6 Eclipse Indigo

  Eclipse pada saat ini merupakan salah satu IDE favorit dikarenakan gratis dan open

  

source , yang berarti setiap orang boleh melihat kode pemrograman perangkat lunak

  ini. Selain itu, kelebihan dari Eclipse yang membuatnya populer adalah kemampuannya untuk dapat dikembangkan oleh pengguna dengan komponen yang dinamakan plug-in.

  2.4.8.3. Android SDK

  Android Software Development Kit (SDK) adalah sekumpulan file yang terdiri dari pustaka, kode eksekusi, skrip, dokumentasi dll. Android SDK dapat di unduh secara gratis di Google.

  2.4.8.4. Build Target

  Build Targe adalah aplikasi akhir sesuai dengan versi Android yang mendukung bermacam-macam versi sitem operasi Android dengan level API (Aplication

  

Programming Interface ). Untuk keperluan ini digunakan SDK dan AVD (Android

Virtual Device ) Manager. API merupakan inti dari Android SDK yang memuat

  kumpulan fungsi, metode, sifat-sifat, class, dan pustaka yang digunakan oleh pengembang aplikasi untuk mebuat program yang sesuai untuk platform tertentu. API terdiri dari kumpulan Google API dan Optional API.

2.4.8.5. Android Development Tools (ADT)

  ADT menambahkan fungsionalitas khusus Android pada Eclipse, sehingga Eclipse dapat membangun aplikasi Android, menjalankan Android Emulator, terhubung ke layanan debugging pada emulator, menyunting berkas XML Android, membuat paket aplikasi Android (berkas-berkas.apk), dan melaksanakan tugas-tugas spesifik Android.

  Dengan Android Emulator, misalnya, kita dapat menjalankan aplikasi untuk versi Android dan level API tertentu dari komputer tanpa harus menjalankan langsung di peralatan yang diperlukan. (Sitompul, 2012).