Ibadah shalat lima waktu merupakan
kewajiban yang harus senantiasa dikerjakan oleh umat muslim, setiap hari. Melaksanakan
sesuai dengan waktu-waktu yang telah ditentukan serta menghadap kearah kiblat
merupakan keutamaan dalam menunaikan ibadah wajib ini. Tentunya dalam era
modern ini umat muslim tidak boleh menjadikan kesibukannya sebagai alasan untuk
melalaikan perintah shalat. Oleh karenanya umat muslim perlu disiplin dalam
membagi waktu. Pemanfaatan perangkat Handphone sebagai pendamping dalam melaksanakan
kegiatan sehari-hari sudah sangat lumrah bagi sebagian orang. Hal ini
dikarenakan beberapa Handphone sudah memiliki fungsi dan kemampuan lebih
dari sekedar fungsi dasarnya. Android sebagai sistem operasi yang dapat
ditanamkan pada perangkat handphone memiliki kemampuan untuk dapat
diinstall aplikasi-aplikasi yang diperlukan oleh pengguna. Dengan adanya
aplikasi pengingat shalat dan arah kiblat atau yang diberi nama kupluk,
diharapkan umat muslim yang menggunakan perangkat handphone berbasiskan sistem
operasi android dapat terbantu untuk tetap melaksanakan ibadah tepat waktu dan
sesuai dengan arah kiblat yang benar.
Keywords: Android, Aplikasi Pengingat
Shalat dan Arah Kiblat, Kupluk
Pertama-tama penulis panjatkan puji syukur atas kehadiran Allah S.W.T
karena atas rahmt dan karunianyalah akhirnya laporan tugas akhir ini dapat
penulis selesaikan. Tak lupa pula salawat dan salam penulis panjatkan kepada
Nabi akhir zaman Muhammad S.A.W, karena berkat perjuangannyalah karunia Iman
dan Islam senantiasa menjadi inspirasi bagi penulis.
Adapun maksud penulisan Laporan Tugas Akhir ini adalah sebagai gambaran
terhadap apa yang penulis kerjakan pada Tugas Akhir. Selain itu juga laporan
ini sebagai syarat untuk pelaksanaan mata kuliah Tugas Akhir dalam
menyelesaikan program studi strata satu (S-1) di Institut Teknologi Indonesia.
Oleh
karenanya, pada kesempatan ini penulis ingin mengucapkan banyak terima kasih
kepada:
- Ibu Dra. Endang RD, M.Kom selaku Ketua Program Studi Teknik Informatika.
- Ibu Yustina SS, MT. Selaku Penasehat Akademik, Koordinator Tugas Akhir, dan Dosen Pembimbing penulis menyelesaikan laporan Tugas Akhir ini. Telah memberikan Saran-saran perbaikan, pengetahuan dan dorongan dalam penyelesaian Tugas Akhir Penulis.
- Para Dosen penguji Tugas Akhir, telah menguji Tugas Akhir penulis dan memberikan masukkan untuk perbaikan laporan Tugas Akhir penulis.
- Seluruh DOSEN PROGRAM STUDI TEKNIK INFORMATIKA ITI, terima kasih untuk bimbingan dan pengajarannya. Semoga ilmu yang penulis terima kelak bermanfaat untuk penulis.
- Kedua orang tua, khususnya mama yang telah memberikan dukungan materil dan imateril semangat, kasih sayang, dan pengorbanan kepada penulis yang tak terhitung dan ternilai jumlahnya.
- Keluarga yang selalu mengasihi, adik-adik, bibi, paman dan saudara lainnya yang tak bisa disebutkan satu-satu.
- Seseorang yang menjadi impian penulis, yang selalu mengingatkan, menambahkan dukungan, semangat, dan kasih sayang. Oki Oktaviani.
- Teman-teman Teknik Informatika angkatan 2006 khususnya Aktifis-aktifis himpunan periode 2008-2009 : Eko, Trisna, Ramdan, Pram, Dana, Silvi, Septian, Raqib, Rizqi, Emo, Ari, Ade, Panji, Rado, Gristi, Dadi, Kiki, Marina, Vinda. Terima kasih atas kerjasama, kekompakkan dan kebersamaannya.
- Seluruh Mahasiswa Teknik Informatika 2004, 2005, 2007 dan 2008.
- Teman-teman alumni Ma’had Al-Zaytun khususnya angkatan kedua (Persada), terima kasih atas motivasinya.
- Cipto, Babun, Bundo, Bejo, dan Slamet. Terima kasih telah selalu bersama penulis memberikan bantuan yang mungkin saja tanpa kalian penulis tak dapat menyelesaikan masa kuliah ini dengan lancar.
Penulis mendoakan untuk semua
pihak untuk semua pihak yang telah membantu penulis mendapatkan imbalan yang
setimpal dan senantiasa di berkahi ramat berlimpah dari Allah S.W.T. Amin.
Semoga dengan terselesaikannya Tugas Akhir
dan Laporannya ini dapat memberikan manfaat bagi penulis khususnya dan para
pembaca pada umumnya. Penulis menyadari bahwa Tugas Akhir dan Laporan ini masih
jauh dari kesempurnaan. Mengingat terbatasnya pengetahuan dan kemampuan
penulis. Oleh karenanya penulis memohon maaf dan selalu terbuka untuk menerima
kritik dan saran dari pembaca.
Tangerang,
Maret 2010
Penulis
1. Pendahuluan
1.1. Latar Belakang
Perkembangan teknologi semakin pesat dan cepat, khususnya teknologi
informasi dan komunikasi. Hal ini membuat manusia bagaikan tak terpisah oleh
jarak ruang dan waktu. Dengan perkembangan teknologi yang kian maju, manusia
dapat membuat berbagai macam peralatan sebagai alat bantu dalam menjalankan berbagai
aktivitas untuk mendukung produktifitas.
Dengan segala aktifitas yang
kian padat menjadikan sebagian orang memiliki tingkat mobilitas yang tinggi.
Terkadang hal yang tidak menjadi prioritas namun suatu kewajiban terlalaikan.
Salah satunya kewajiban ibadah shalat fardhu lima waktu bagi umat Muslim yang
kadang terlambat, terabaikan bahkan terlupakan. Salah satu faktor penyebabnya
adalah terbatasnya informasi atau peringatan ketika telah datang waktu shalat.
Misalkan ketika seseorang berada di suatu tempat atau daerah yang suara azan
tidak terjangkau dari masjid terdekat atau suatu lokasi yang baru, maka ketika
waktu shalat tiba ada kemungkinan orang tersebut tidak tahu.
Seiring dengan tingkat
mobilitas yang tinggi, beberapa tahun terakhir tengah marak perangkat bergerak
atau mobile device. Salah satu perangkat mobile yang paling pesat adalah Handphone dimana hampir
setiap orang memilikinya. Handphone yang sedianya sebagai alat
komunikasi, saat ini sudah lebih dari fungsi dasarnya. Berbagai macam fitur
telah ditanamkan, seperti pengolah gambar dan video, pengolah dokumen dan lain
sebagainya. Hal ini tak lepas dari penggunaan Sistem Operasi pada Handphone.
Layaknya pada komputer, Handphone pun dapat di-install berbagai macam
aplikasi yang diinginkan.
Android sebagai Sistem Operasi
berbasis linux yang dapat digunakan di berbagai perangkat mobile. Android memiliki tujuan utama untuk memajukan inovasi
piranti telepon bergerak agar pengguna mampu mengeksplorasi kemampuan dan
menambah pengalaman lebih dibandingkan dengan platform mobile lainnya.
Hingga saat ini Android terus berkembang, baik secara sistem maupun
aplikasinya.
1.2. Rumusan Masalah
Berdasarkan dari uraian latar belakang di atas
maka dapat dirumuskan suatu permasalahan. Bagaimana membangun dan merealisasikan
suatu aplikasi pada paltform Android
yang dapat digunakan di berbagai tempat untuk informasi arah kiblat dan waktu shalat serta secara otomatis
mengingatkan pada saat tiba waktu shalat.
1.3. Tujuan
Tujuan dari pengerjaan tugas akhir ini adalah
membangun sebuah program aplikasi pengingat shalat dan arah kiblat pada Sistem
Operasi Android yang dapat digunakan dimanapun dengan memanfaatkan Global
Positioning System (GPS) dan Acelometer.
1.4. Manfaat
Manfaat dari pengembangan Aplikasi Pengingat Shalat dan Arah Kiblat ini
adalah:
- Membantu umat muslim khususnya pengguna Android yang memiliki tingkat mobilitas tinggi untuk senantiasa tahu waktu shalat dan arah kiblat.
- Membantu umat muslim untuk senantiasa melaksanakan ibadah shalat tepat waktu dan arah kiblat yang tepat.
- Meningkatkan pemahaman tentang struktur dan sistem kerja pada sistem operasi Android.
1.5. Batasan Masalah
Agar dalam pengerjaan tugas akhir ini dapat lebih
terarah, maka pembahasan penulisan ini dibatasi pada ruang lingkup pembahasan
sebagai berikut:
- Sistem pewaktuan shalat hanya dapat digunakan pada sistem operasi Android dengan memanfaatkan Global Positioning System (GPS).
- Penunjukkan arah qiblat sesuai dengan arah kiblat diman lokasi user berada.
- User dapat mengatur sistem pengingat waktu shalat. Sehingga sistem dapat menampilkan pesan pengingat ketika waktu shalat tiba.
1.6. Metode Penelitian
Metode yang digunakan dalam pembuatan Aplikasi
Pewaktuan Shalat dan menyusun laporan tugas akhir ini adalah:
- Metode Pengumpulan Data (Data Gathering)
Mencari dan mengumpulkan
data-data yang dibutuhkan dan berkaitan dengan pembuatan Aplikasi Pewaktuan
Shalat.
- Metode Wawancara
Dilakukan
terhadap ahli pewaktuan shalat dan arah kiblat.
- Studi Kepustakaan
Studi kepustakaan seperti mempelajari buku-buku referensi
yang berhubungan dengan Android dan pewaktuan shalat untuk membantu
dalam pembuatan Aplikasi Pewaktuan Shalat. Selain itu juga mempelajari web-web
referensi seputar hal yang sama untuk membantu dalam penyajian informasi yang
akan ditampilkan.
- Merancang dan Mengimplementasi
Merancang dan mengimplementasi Aplikasi yang akan
dikembangkan agar sesuai dengan yang diharapkan.
1.7. Sistematika Penulisan Laporan
Secara garis besar materi laporan Tugas Akhir ini
terbagi dalam beberapa bab yang tersusun sebagai berikut:
BAB I PENDAHULUAN
Bab ini berisikan latar
belakang, rumusan masalah, tujuan dan manfaat, batasan masalahh, metodologi dan
sistematika penulisan laporan.
BAB II LANDASAN TEORI
Bab ini menguraikan tentang
teori yang berhubungan dengan judul tugas akhir, seperti penentuan waktu shala
berserta perhitungannya, penentuan arah kiblat sesuai dengan lokasi berada, dan
hal-hal terkait mengenai android.
BAB III ANALISIS DAN PERANCANGAN APLIKASI
PENGINGAT SHALAT
Bab ini menjelaskan mengenai
analisa aplikasi pengingat shalat dan perancangan yang dilakukan untuk
membangun aplikasi.
BAB 4 IMPLEMENTASI APLIKASI PENGINGAT
SHALAT
Pada bab ini menjelaskan bentuk
implementasi aplikasi beserta pengujiannya.
BAB V KESIMPULAN DAN SARAN
Pada bagian ini dijelaskan
mengenai kesimpulan dan saran guna memperbaiki kelemahan yang terdapat pada
aplikasi tersebut.
2. Landasan Teori
2.1. Shalat
2.1.1.Pengertian Shalat
Shalat menurut bahasa berarti doa. Menurut
Istilah ahli fiqih berarti: Perbuatan (gerak), dan perkataan yang dimulai
dengan takbir dan diakhiri dengan salam dengan syarat-syarat tertentu. Shalat
merupakan ibadah yang paling fundamental dalam Islam. Khususnya Shalat Fardhu
lima kali sehari semalam yang tak boleh ditinggalkan. [Tuntunan Shalat lengkap
dan benar, Dra. Neni Nuraeni, M.Ag, Mutiara Media]
Menurut syariat Islam, praktik shalat
harus sesuai dengan segala petunjuk tata cara Rasulullah SAW sebagai figur
penyampai perintah Allah. Nabi Muhammad telah memberikan peringatan keras
kepada orang yang suka meninggalkan shalat, diantaranya beliau bersabda: “Perjanjian
yang memisahkan kita dengan mereka adalah Shalat. Barang siapa yang
meninggalkan shalat, berarti dia telah kafir”, Hadist riwayat Imam Ahmad
dan Tirmidzi.
2.1.2.Waktu Shalat - Shalat Fardhu
Untuk pelaksanaan ibadah shalat, semuanya
diatur dan tertuang dalam Kitab Suci Al-Qur'an dan Hadist Nabi Muhammad SAW.
Mengenai waktu shalat fardhu nabi bersabda dalam sebuah hadist sebagai berikut:
Dari Jabir bin Abdullah meriwayatkan " Malaikat
Jibril datang kepada Nabi SAW lalu berkata: "Marilah shalat". Lalu ia
melakukan shalat zhuhur di waktu matahari telah condong (tergelincir). Kemudian
Jibril datang kepada Nabi di waktu Asar lalu berkata: "Marilah
shalat". Lalu ia shalat Asar di waktu bayangan tiap-tiap sesuatu jadi sama
panjangnya dengan keadaan dirinya. Kemudian Jibril datang kepada Nabi S.A.W di
waktu maghrib lalu berkata: "Marilah shalat" lalu ia shalat Maghrib
di waktu matahari telah masuk (terbenam). Kemudian Jibril datang kepada Nabi
S.A.W di waktu Isya lalu berkata: "Marilah shalat". Lalu ia shalat
Isya lalu berkata; "Marilah shalat". Lalu ia shalat Isya di waktu
telah hilang tanda merah di tempat matahari terbenam. Kemudian Jibril datang
kepada Nabi S.A.W di waktu fajar lalu berkata: "Marilah shalat" Lalu
ia shalat Fajar (subuh) di waktu fajar telah terbit. Kemudian Jibril datang
kepada Nabi S.A.W pada esok harinya lagi di waktu zuhur lalu berkata:
"Marilah shalat". Lalu ia shalat zuhur, di waktu bayangan tiap-tiap
sesuatu itu jadi sama panjangnya dengan keadaan dirinya. Kemudian Jibril datang
kepada Nabi S.A.W di waktu Asar lalu berkata: "Marilah shalat". Lalu
ia shalat di waktu Asar, di waktu bayangan tiap-tiap sesuatu itu jadi dua kali
panjang daripada dirinya. Kemudian Jibril datang kepada Nabi S.A.W di waktu
maghrib yang sama waktunya dengan kemarin, lalu ia shalat maghrib. Kemudian
jibril datang kepada Nabi S.A.W di waktu Isya, sehabis tengah malam, lalu
berkata: "marilah shalat". Lalu ia shalat Isya. Kemudian Jibril
datang kepada Nabi pada waktu telah terang cuaca (sebelum terbit matahari). Lalu
berkata: "Marilah shalat". Lalu ia shalat fajar. Kemudian Jibril
berkata: Antara dua waktu itulah waktu bagi tiap-tiap shalat." (Hadist
Riwayat: Ahmad, Tirmidzi, Nasa'i, Ibnu Hibban dan Hakim)
Hadits di atas memberikan penjelasan
mengenai awal dan akhir waktu shalat, yaitu berdasarkan pergerakkan matahari,
baik di atas ufuk (horison) maupun dampak pergerakkan matahari di bawah ufuk.
Efek pergerakkan matahari diantaranya adalah berubahnya panjang bayangan benda,
terbit dan terbenamnya matahari, munculnya mega merah di waktu fajar dan
berakhirnya mega merah di malam hari. [Dr. Rinto Anugraha, Eramuslim, 21 Oktober 2009.
Dapat diambil kesimpulan berdasarkan
hadits Rasulullah mengenai waktu shalat adalah sebagai berikut:
1. Zhuhur
Waktu zhuhur dimulai
saat pertengahan hari, yaitu ketika matahari melewati garis meridian (lingkaran
besar langit yang menghubungkan utara dan selatan). Saat melewati garis
meridian, ada tiga kemungkinan azimuth matahari (dihitung dari arah utara).
Pertama, azimuth matahari = 0 derajat, yaitu ketika matahari melewati garis
meridian, posisinya di belahan langit utara. Kedua, azimuth – 180 derajat,
ketika posisinya di belahan langit selatan. Ketiga, azimuthnya tidak dapat
ditentukan, ketika posisinya benar-benar tepat di zenith (atas kepala) atau
ketinggiannya tepat 90 derajat. Waktu zhuhur berakhir saat datangnya waktu
shalat ashar.
2. Ashar
Berdasarkan hadits
di atas, ada dua pendapat mengenai kapan datangnya waktu shalat ashar. Ini berkaitan dengan bayangan benda yang
ditegakkan di atas tanah. Menurut mazhab Hanafi, waktu shalat Ashar adalah
ketika panjang bayangan sama dengan dua kali tinggi benda (ditambah panjang
bayangan saat Zhuhur). Panjang bayangan pada waktu Zhuhur yang merupakan
panjang bayangan minimum ini perlu diperhitungkan, karena sangat mungkin
panjang bayangan saat Zhuhur itu lebih panjang dari tinggi benda itu sendiri
seperti tempat yang memiliki lintang tinggi. Jika bayangan saat Ashar = Sa,
bayangan saat Zhuhur = Sz dan tinggi benda= h, maka secara sederhana dapat
ditulis Sa = h + Sz menurut mazhab Syafi'i dan Sa = 2 * h + Sz menurut mazhab
Hanafi. Untuk waktu Ashar berakhir saat datangnya waktu shalat maghrib.
3. Maghrib
Waktu shalat
maghrib dimulai saat matahari terbenam (sunset). Ketika matahari terbenam
dimana posisinya di bawah ufuk, langit tidak langsung gelap. Hal ini disebabkan
adanya atmosfer bumi yang membiaskan cahaya matahari. Karena itu, matahari
harus tenggelam hingga belasan derajat di bawah ufuk supaya tidak ada lagi
cahaya matahari yang dapat dibiaskan sehingga langit menjadi gelap. Waktu
shalat maghrib berakhir saat datangnya waktu shalat Isya'.
4. Isya'
Waktu shalat
Isya' dimulai saat langit gelap, atau berakhirnya mega merah (astronomical
twilight) di langit barat. Waktu Isya' berakhir saat datangnya waktu shubuh.
5. Shubuh
Waktu shubuh
dimulai ketika munculnya fajar (shidiq) atau cahaya secara merata di langit
timur. Meskipun saat itu matahari masih belasan derajat di bawah ufuk, namun
akibat pembiasan atmosfer cahaya matahari dapat dibiaskan sehingga langit tidak
lagi gelap. Beberapa catatan mengenai penentuan waktu Isya' dan Shubuh
disajikan pada catatan di bawah. Waktu shubuh berakhir saat matahari terbit.
Sebelum manusia menemukan ilmu
hisab/perhitungan falak/astronomi, pada zaman Rasulullah waktu shalat yang
telah disebutkan ditentukan berdasarkan observasi terhadap gejala alam dengan
melihat langsung matahari. Lalu berkembang dengan dibuatnya jam Surya atau Jam
Matahari serta Jam Istiwa atau sering disebut Tongkat Istiwa dengan kaidah
bayangan matahari.
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) atau altidude.
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). 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:
JD = 1720994,5 + INT(365,25 * Y) +
INT(30,6001(M + 1)) + B + D
Ket:
INT : Lambang nilai integer (bilangan bulat)
Jika M>2, maka M dan Y tidak berubah.
Jika M = 1 atau M = 2, maka M +12 dan Y dikurangi 1
B = 2 + INT (A/4) – A; dimana A = INT (Y/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 (Delta).
Deklinasi matahari (Delta) untuk satu tanggal tertentu dapat dihitung dengan
menggunakan rumus berikut:
Delta = 0,37877 + 23,264 * sin(57,297 * T –
79,547) + 0,3812 * sin(2 * 57,297 * T – 82, 682) + 0,17132 * sin(3 * 57,297 * T
– 59,722)
Ket:
T adalah Sudut tanggal, dengan
rumus, T = 2 * PI * (JD – 2451545) / 365,25
7.
Equation of Time (ET). Equation of Time
untuk satu tanggal dapat dihitung, dengan rumus:
ET = (- (1789 +
237 * U) * sin(L0) – (7146 – 62 * U) * cos(L0) + (9934 – 14 * U) * sin(2 * L0)
– (29 + 5 * U) * cos(2 * L0) + (74 + 10 * U) * sin(3 * L0) + (320 – 4 * U) *
cos(3 * L0) – 212 * sin(4 * L0))/1000
Ket:
L0 adalah Bujur
rata-rata matahari, L0 = 280,46607 + 36000,7698 * U.
U = (JD – 2451545)/36525.
8. Altitude
matahari waktu Shubuh dan Isya. Shubuh 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 astronomical twilight 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 2.1 Tetapan panjang bayangan Ashar, dalam hal
ini terdapat dua pendapat berbeda. Pendapat madzhab Imam Syafi'i menyatakan
panjanga 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.
a. Shubuh
= waktu zhuhur – (12/PI) * acos((sin(-1 * sudut altitude matahari subuh) –
sin(delta) * sin(L)) / (cos(delta) * cos(L))
b. Zhuhur
= 12 + Z – B / 15 – ET/60
c.
Ashar = waktu zhuhur + (12/PI) * acos((sin(atan(1/MA +
tan(abs(L – delta))))) – sin(delta) * sin(L)) / (cos(delta) * cos(L)))
Dimana MA
merupakan Mazhab yang digunakan, MA sama dengan 1 untuk mazhab imam Syafi'i dan
MA sama dengan 2 untuk Mazhab imam Hanafi.
d.
Magrib = waktu zhuhur + (12/PI) * acos((sin((-0,8333 –
0,0347 * H ^ 0,5)) – sin(delta) * sin(L)) / (cos(delta) * cos(L)))
e.
Isya' = waktu zhuhur + (12/PI) * acos((sin(-1 * sudut
altitude matahari isya') – sin(delta) * sin(L)) / cos(delta) * cos(lintang)))
2.2. Kiblat
2.2.1.Pengertian Kiblat
Kiblat berasal dari bahasa Arab “Qiblah”
adalah arah yang merujuk ke suatu tempat dimana bangunan Ka'bah di Masjidil
Haram, Makkah, Arab Saudi. Ka'bah juga sering disebut dengan Baitullah (Rumah
Allah). Menghadap arah kiblat merupakan suatu masalah yang penting dalam
syariat Islam. Menurut hukum syariat, menghadap ke arah kiblat diartikan
sebagai seluruh tubuh atau badan seseorang menghadap ke arah Ka'bah yang
terletak di Makkah yang merupakan pusat tumpuan umat Islam bagi menyempurnakan
ibadah-ibadah tertentu.
Pada awalnya, kiblat mengarah
ke Baitul Maqdis atau Masjidil Aqsa Jerusalem di Palestina, namun pada tahun
624 M ketika Nabi Muhammad SAW hijrah ke Madinah, arah Kiblat berpindah ke arah
Ka'bah di Makkah hingga kini atas petunjuk wahyu dari Allah SWT. Menghadap ke
arah kiblat menjadi syarat sah bagi umat Islam yang hendak menunaikan shalat
baik shalat fardhu lima waktu sehari semalam atau shalat-shalat sunat yang
lain. Kaidah dalam menentukan arah kiblat memerlukan suatu ilmu khusus yang
harus dipelajari atau sekurang-kurangnya meyakini arah yang dibenarkan sesuai
dengan syariat. [http://rukyatulhilal.org/]
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. [Dr. Rinto Anugraha, SEGITIGA BOLA DAN ARAH
KIBLAT, 13/04/09]
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 qiblat
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
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:
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:
Sesuai yang telah ditetapkan
sebelumnya, C = Ba – Bb, a = 90 – Lb, b = 90 – La, serta mengingat cos (90 – x)
= sin(x), sin (90 – x) = cos(x) dan cot (90 – x) = tan(x), maka rumus diatas
menjadi:
Sehingga sudut B adalah:
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:
·
Jika x positif dan y positif, maka tan(B)
positif yang menghasilkan 0 < B < 90.
·
Jika x negatif dan y positif, maka tan(B)
negatif yang menghasilkan 90 < B < 180.
·
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.
·
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. Android
2.3.1.Pengertian Android
Android adalah kumpulan perangkat lunak yang ditujukan bagi perangkat
bergerak mencakup sistem operasi, middleware,
dan aplikasi kunci. Android Standart
Development Kid (SDK) menyediakan perlengkapan dan Application Programming Interface (API) yang diperlukan untuk
mengembangkan aplikasi pada platform Android menggunakan bahasa pemrograman
Java.[developer.android.com]
Android dikembangkan oleh Google bersama 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.
2.3.2.Sejarah dan Perkembangan Android
Pada mulanya terdapat berbagai macam sistem operasi pada perangkat
selular, diantaranya sistem operasi Symbian, Microsoft Windsos 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. 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 platform Android. Dimana 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. [Sayed Y. Hashimi and Satya
Komatineni, Pro Android, Apress, USA 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.5 dirilis pada 30 April 2009 diberi nama Cupcake,
versi 1.6 dirilis pada 15 September 2009 diberi nama Donut, dan versi terakhir 2.0 dirilis pada 26 Oktober 2009 diberi
nama Éclair.
2.3.3.Anatomi Android
Dalam paket sistem
operasi android tediri dari beberapa unsur seperti tampak pada gambar 2.3. Secara
sederhana arsitektur android merupakan sebuah kernel Linux dan sekumpulan
pustaka C / C++ dalam suatu framework yang
menyediakan dan mengatur alur proses aplikasi.[Google IO, Android Anatomy and
Physiology]
2.3.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.3.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:
- Media Library untuk memutar dan merekam berbagai macam format audio dan video.
- Surface Manager untuk mengatur hak akses layer dari berbagai aplikasi.
- Graphic Library termasuk didalamnya SGL dan OpenGL, untuk tampilan 2D dan 3D.
- SQLite untuk mengatur relasi database yang digunakan pada aplikasi.
- 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.3.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:
- 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.
- 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. [Nicolas Gramlich, Andbook, anddev.org]
2.3.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 [Hello Android
2nd Edition]:
- 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 status bar.
2.3.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.3.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
[developer.android.com].
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.3.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 [Reto Meier, Profesional Android
Application Development, Wiley Publishing, Canada, 2009]:
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.3.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.3.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.3.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, Batre 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.3.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.3.5.Tipe Aplikasi Android
Terdapat tiga kategori aplikasi pada android [Reto Meier, Profesional
Android Application Development, Wiley Publishing, Canada, 2009] :
- 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.
- 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.
- 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.3.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. [Sayed . Y. Hashimi and Satya Komatineni, Pro
Android, Apress, USA 2009]
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.4
menunjukkan prioritas dari aplikasi.
2.3.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 [Ed Burnette, Hello Android 2nd Edition, usa 2009]:
- Keterbukaan, Bebas pengembangan tanpa dikenakan biaya terhadap sistem karena berbasiskan Linux dan open source. Pembuat 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.
- 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.
- 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.
- 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.
- 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.
- 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.
3. Analisis dan Perancangan
Pada bab ini akan dijelaskan
analisis dan perancangan sistem yang akan dikembangkan. Sistem aplikasi
pengingat shalat dan arah kiblat ini diberi nama Kupluk, sehingga untuk
selanjutnya penyebutan sistem aplikasi pengingat shalat dan arah kiblat ini adalah
Kupluk.
3.1. Analisis Kebutuhan Kupluk
Analisis sistem adalah
penguraian dari suatu sistem yang utuh ke dalam bagian-bagian komponennya
dengan maksud untuk mengidentifikasi dan mengevaluasi permasalahan. Bagian
analisis ini terdiri atas analisis fungsional, anallisis performansi, gambaran
sistem dari sudut pandang user yang dinyatakan dalam use case diagram, dan
gambaran alur sistem.
3.1.1.Analisis Fungsional
Analisis fungsional merupakan
paparan mengenai fitur-fitur yang akan dimasukkan ke dalam Kupluk. Fitur-fitur
tersebut antara lain sebagai berikut:
1.
Mampu menampilkan jadwal waktu shalat yang sesuai
dengan lokasi dimana pengguna berada.
2. Mampu menampilkan arah kiblat secara
otomatis dan realtime berdasarkan posisi pengguna dengan bantuan acelometer.
3. Terdapat pilihan pengaturan metode
perhitungan waktu shalat sesuai yang diinginkan pengguna.
4. Terdapat dua pilihan pengaturan penentuan
waktu shalat Ashar berdasarkan mazhab yang dianut pengguna.
5. Terdapat pilihan pengaturan reminder yang
berfungsi untuk mengingatkan waktu shalat.
3.1.2.Performansi Kupluk
Kupluk merupakan aplikasi yang berjalan di lingkungan sistem operasi
android. Terdapat beberapa keterbatasan yang ditemui pada perangkat berbasiskan
android. Sehingga perlu diperhatikan guna menjadi acuan dalam pengembangan
Kupluk, diantaranya:
- Sumber daya memori yang terbatas, hingga saat ini perangkat android yang banyak beredar memiliki kapasistas memori terbatas. Adapun yang tertinggi saat ini 512 Mb.
- Sumber daya baterai yang secara efektif hanya mampu bertahan selama kurang lebih 6 jam, dengan penggunaan secara terus-menerus dan kurang lebih 200 jam dalam keadaan standby.
- Tampilan antar muka aplikasi sangat berpengaruh terhadap waktu tunggu hingga aplikasi benar-benar siap digunakan, semakin banyak komponen yang digunakan akan semakin lama pula waktu tunggu yang dibutuhkan.
Dari keterbatasan-keterbatasan pada perangkat, maka diusulkan beberapa
alternatif untuk meningkatkan performa
aplikasi dengan keterbatasan yang ada, diantaranya:
- Merancang aplikasi dengan penggunaan memori seefektif mungkin, sehingga tidak menganggu siklus operasi android dan aplikasi lain.
- Merancang aplikasi dengan pemanfaatan sumber daya seefisien mungkin namun tidak mengurangi fungsi dan performa aplikasi.
- Merancang aplikasi dengan antar muka yang sederhana namun tetap menarik dan ramah bagi pengguna.
3.1.3.Use Case Diagram
Use case merupakan gambaran skenario dari interaksi antara user
dengan sistem. Sebuah diagram use case menggambarkan hubungan antara
aktor dan kegiatan yang dapat dilakukannya terhadap aplikasi.
Pada diagram di atas terdiri dari 2 aktor dan 4 use case. Di dalam
diagram ini terdapat sebuah extend yang digunakan untuk menunjukkan
bahwa satu use case merupakan tambahan fungsional dari use case
lain jika kondisi tertentu terpenuhi. Alur ini dimulai dari ketika user memulai
menjalankan program Kupluk, GPS akan menyampaikan informasi mengenai nilai
altitude, longitude, dan alitude lokasi perangkat saat itu. Dari informasi
inilah akan diolah oleh aplikasi sehingga menampilkan jadwal shalat kepada user
saat itu. Ketika pengguna melakukan pengaturan untuk pengingat waktu shalat,
maka aplikasi akan secara otomatis memberikan penanda berupa alarm atau
pemberitahuan ketika waktu shalat telah tiba. Ketika pengguna menjalankan use
case arah kiblat, maka GPS memberikan informasi kepada sistem tentang nilai
latitude dan longitude user berada. Dari data ini akan diolah aplikasi yang
selanjutnya dengan bantuan sensor dari acelometer, aplikasi menunjukkan
arah kiblat yang sesuai dengan lokasi user.
3.1.4.Diagram Alir (Flowchart)
Diagram Alir atau Flowchart merupakan serangkaian bagan-bagan yang
menggambarkan alir program. Pada diagram alir ini digambarkan urutan prosedur
dalam program Kupluk.
3.2. Perancangan Kupluk
Perancangan dilakukan untuk menggambarkan, merencanakan, dan membuat
sketsa atau pengaturan dari beberapa elemen yang terpisah ke dalam satu
kesatuan yang utuh dan berfungsi. Perancangan ini merupakan hasil transformasi
dari analisa ke dalam perancangan yang nantinya akan di implementasikan.
Hal penting yang menjadi perhatian pada perancangan adalah bahwa
rancangan yang dibuat diharapkan dapat digunakan dengan mudah oleh semua user.
Yang dimaksud semua user adalah bahwa tidak hanya seorang ahli saja yang
dapat menggunakan aplikasi ini, namun orang awam pun dapat menggunakannya.
Selain itu beberapa hal yang harus diperhatikan antara lain adalah kinerja
program yang baik dalam mengoperasikan aplikasi yang dibuat.
3.2.1.Diagram Kelas
Diagram kelas merupakan
diagram struktural yang memodelkan sekumpulan kelas, interface, kolaborasi dan
relasinya. Diagram kelas digambarkan dengan kotak, yang pada dasarnya terbagi
atas tiga bagian yaitu, Nama Kelas, Atribut, dan Operasi. Diagram kelas
digunakan untuk menggambarkan proses statik dari aplikasi Kupluk.
3.2.2.Perancangan Navigasi
Aplikasi Kupluk menggunakan
struktur navigasi Hierarchical Model. Dimana menu utama adalah pusat
navigasi yang merupakan penghubung ke semua fitur pada aplikasi.
Dari struktur
navigasi ini, perpindahan antar fitur yang tersedia dapat dilakukan melalui
menu. Karena android mendukung fitur layar sentuh kapasitif yang dapat menerima
input sentuhan dari jari, sehingga navigasi dapat dilakukan dengan menggunakan
sentuhan pada layar.
3.2.3.Perancangan Antar Muka (Interface)
Perancangan interface adalah bagian yang penting
dalam aplikasi, karena yang pertama kali dilihat ketika aplikasi dijalankan
adalah tampilan antar muka (interface) aplikasi.
3.2.3.1. Perancangan Antar Muka Menu
Keterangan Gambar:
- Teks dan Gambar
Akan dibuat dengan berisikan teks Jadwal dan
gambar bedug.
- Teks dan Gambar
Akan dibuat dengan berisikan teks Kiblat dan
gambar Ka’bah.
- Teks dan Gambar
Akan dibuat dengan berisikan teks Pengaturan dan
gambar gear.
- Teks dan Gambar
Akan dibuat dengan berisikan teks Tentang dan
gambar tanda tanya.
3.2.3.2. Perancangan Antar Muka Jadwal Shalat
Keterangan Gambar:
- Latar Belakang
Latar belakang ini akan dibuat berisikan
gambar berbentuk masjid.
- Teks
Merupakan
jadwal shalat yang akan ditampilkan berupa teks secara berurut dari subuh
hingga isya, dimana disebelah kanannya berisikan teks informasi jam shalat.
3.2.3.3. Perancangan Antar Muka Arah Kiblat
Keterangan Gambar:
- Latar Belakang
Pada latar belakang arah kiblat akan
dibuat berisikan gambar bernuasa islami yang disesuaikan dengan tampilan jadwal
Shalat.
- Kompas Kiblat
Merupakan tampilan dua dimensi yang akan
menujukkan arah kiblat.
3.2.3.4. Perancangan Antar Muka Pengaturan
Keterangan Gambar:
- Teks
Akan dibuat berisi teks yang menjelaskan kategori
pengaturan shalat
- Teks
Akan dibuat berisi teks pengaturan metode
perhitungan, yang selanjutnya akan menampilkan dialog daftar pilihan metode
perhitungan.
- Teks
Akan dibuat berisi teks pengaturan mazhab, yang
selanjutnya akan menampilkan dialog daftar dua mazhab.
- Teks
Akan dibuat berisi teks yang menjelaskan
kategori pengaturan pengingat.
- Teks
Akan dibuat berisi teks pengaturan
pengingat shalat, yang selanjutnya akan menampilkan pilihan untuk daftar shalat
5 waktu.
- Teks
Akan dibuat birisi teks pengaturan suara azan,
yang selanjutnya akan menampilkan dialog pilihan suara azan.
3.2.3.5. Perancangan Antar Muka Tentang
Tampilan antar muka tentang dibuat dengan tampilan layaknya tampilan web.
Sehingga dalam implementasi nantinya menggunakan kode program HTML. Hal ini
dilakukan untuk memudahkan pengguna dalam menghubungi pembuat. Adapun desain
perancangan muka tentang adalah sebagai berikut:
3.2.3.6. Perancangan Antar Muka Notifikasi
Keterangan Gambar:
- Gambar
Akan dibuat berupa berupa gambar dari icon
aplikasi.
- Teks
Akan dibuat berisi teks judul pemberitahuan
- Teks
Akan dibuat birisi
teks pemberitahuan waktu shalat telah tiba.
4. Implementasi
Implementasi merupakan tahap
pengembangan rancangan menjadi kode program. Pada awal bagian ini dijabarkan
spesifikasi perangkat keras dan lunak pada mana program diimplementasikan.
Bagian utama implementasi adalah penjabaran rancangan kelas menjadi kelas yang
ditulis dalam sintaks Bahasa Pemrograman Java.
Di samping itu disajikan juga tampilan Kupluk setelah diimplementasikan
pada telepon genggam HTC G1 (Dream).
4.1. Spesifikasi Perangkat Keras dan Lunak
Dalam menerapkan rancangan
yang telah dibuat, ada beberapa hal yang harus dibutuhkan. Perangkat keras dan
perangkat lunak merupakan 2 hal yang selalu dibutuhkan dalam
mengimplementasikan rancangan yang telah ada.
4.1.1.Spesifikasi Perangkat Keras
Dalam menerapkan dari
rancangan yang telah dijelaskan sebelumnya dibutuhkan beberapa perangkat keras
untuk menyajikan aplikasi ini. Adapun alat-alat yang dibutuhkan adalah:
- Handphone Berbasiskan Sistem Operasi Android
Handphone digunakan untuk menjalankan
program aplikasi yang telah dikembangkan. Adapun handphone yang digunakan
adalah HTC G1 (Dream) dengan spesifikasi sebagai berikut:
·
Sistem
Operasi : Android 1.6
·
CPU :
528 Mhz Qualcomm
·
Ruang Penyimpan : 256 MB (internal) dan 2 GB
(microSD)
·
Memory : 192 MB DDR SDRAM
·
Dimensi Layar : 320 x 480
·
Masukkan : Touch screen kapasitif, keyboard
QWERTY, trackball, volume controls, accelerometer.
·
Konektivitas : Wi-Fi (802.11b/g), Bluetooth 2.0,
ext USB, A-GPS, Quad band, HSDPA/HSUPA.
- Kabel data serial port
Fungsi dari kabel data ini adalah untuk
menghubungkan antara Komputer dengan Handphone.
- Satu unit PC dengan spesifkasi antara lain:
4.1.2.Spesifikasi Perangkat Lunak
Dalam menerapkan rancangan
yang telah dibuat, dibutuhkan beberapa software untuk membuat program
pengingat shalat yaitu:
1. Bahasa Pemrograman Java
Dalam
hal ini digunakan Java Development Kid (JDK) 1.6 dan Java Runtime
Environment (JRE).
2. Sistem Operasi
Untuk penggunaan sistem operasi dapat
digunakan Windows XP (32-bit) atau Vista (32 atau 64 bit), Mac OS X 10.4.8 atau
diatasnya, dan Linux.
3.
Integrated Development Environment (IDE) Eclipse
3.4 atau 3.5
Untuk
memudahkan dalam pengembangan aplikasi, maka digunakan IDE karena memiliki
beberapa fasilitas yang diperlukan dalam pembangunan perangkat lunak. Adapun
dalam pengembangan ini digunakan Eclipse v 3.4 atau 3.5 dikarenakan telah
mendukung Android Development Tools.
4.
Android Software Development Kit (Android SDK)
Android
SDK menyediakan development environment dengan semua komponen yang diperlukan. Antara
lain tools pengembangan, libraries, dokumentasi, dan contoh
aplikasi serta disertakan pula emulator untuk mensimulasikan aplikasi
berjalan pada perangkat.
5.
Android Development Tools (ADT)
Android
membuat kostum plugin untuk IDE Eclipse, sehingga dengan adanya ADT ini
memberikan kemudahan dalam pengembangan aplikasi, membuat tampilan antarmuka
aplikasi, menambahkan komponen yang diperlukan, men-debug aplikasi
dengan menggunakan perangkat SDK Android, dan bahkan membungkus aplikasi yang
telah dikembangkan untuk di distribusikan. Adapun ADT yang digunakan adalah ADT
0.9.5.
4.2. Penulisan Kode Program (Codding)
4.2.1.Pembuatan Tampilan Utama
Berdasarkan perancangan,
tampilan utama merupakan tampilan jadwal shalat yang terhubung dengan beberapa
kelas pendukung. Sehingga sebelum membuat kelas KuplukMain, perlu dibuat
terlebih dahulu pendukung kelas KuplukMain seperti, tampilan antarmuka, kelas
PerhitunganShalat, dan kelas FormatWaktu.
4.2.1.1. Pembuatan Tampilan Antarmuka Tampilan Utama
Pembuatan tampilan antarmuka
pada sistem Android di impelmentasikan dalam bentuk XML. Setiap elemen dalam
tampilan antarmuka perlu ditambahkan atribut pengenal, sehingga elemen tersebut
akan di generate dalam kelas Resource dan memudahkan untuk
digunakan pada kelas
4.2.1.2. Pembuatan Kelas FormatWaktu
Kelas FormatWaktu merupakan
kelas yang berfungsi untuk mengubah nilai yang dihasilkan dari kelas PerhitunganShalat.
Keluaran dari kelas ini adalah berupa jam, menit, dan detik. Adapun kode
programnya adalah sebagai berikut:
4.2.1.3. Pembuatan Kelas KuplukMain
Dikarenakan dalam pengembangan
aplikasi ini menggunakan plugin Android
Development Tools (ADT) sehingga
ketika pertama kali projek dibuat maka secara otomatis kelas KuplukMain telah
tersedia yang diperluas (extend) ke Activity.
Dari default kelas inilah
selanjutnya diinisialisasi atribut yang digunakan, resource yang telah dibuat
pada antarmuka, dan juga metode yang diperlukan. Adapun kode program KuplukMain
lengkapnya sebagai berikut:
4.2.2.Pembuatan Tampilan Arah Kiblat
Tampilan arah kiblat
4.2.2.1. Pembuatan Kelas KiblatView
Untuk memudahkan dalam membuat penunjuk arah kiblat yang dapat
menunjukkan arah yang benar secara realtime maka dibuat kostum komponen yang
nantinya akan digunakan pada tampilan antarmuka arah kiblat. Adapun kode
programnya adalah sebagai berikut:
package
com.amiral.kupluk;
import
android.content.Context;
import
android.content.res.Resources;
import
android.graphics.Canvas;
import
android.graphics.Paint;
import
android.util.AttributeSet;
import android.view.View;
public class KiblatView extends View{
private float busur;
private int lebar=240;
private int tinggi=240;
private Paint penandaGambar;
private Paint paintText;
private Paint gambarLingkaran;
private String northString;
private int textHeight;
/** Konstruktor */
public
KiblatView(Context context){
super(context);
initKiblatView();
}
public
KiblatView(Context context, AttributeSet attrs) {
super(context,
attrs);
// TODO Auto-generated
constructor stub
initKiblatView();
}
public
KiblatView(Context context, AttributeSet attrs, int defStyle){
super(context,attrs,defStyle);
initKiblatView();
}
protected void
initKiblatView() {
setFocusable(true);
gambarLingkaran = new Paint(Paint.ANTI_ALIAS_FLAG);
gambarLingkaran.setColor(R.color.background_color);
gambarLingkaran.setStrokeWidth(1);
gambarLingkaran.setStyle(Paint.Style.FILL_AND_STROKE);
Resources r = this.getResources();
northString =
r.getString(R.string.cardinal_north);
paintText = new Paint(Paint.ANTI_ALIAS_FLAG);
paintText.setColor(r.getColor(R.color.text_color));
textHeight = (int)paintText.measureText("yY");
penandaGambar = new Paint(Paint.ANTI_ALIAS_FLAG);
penandaGambar.setColor(r.getColor(R.color.marker_color));
}
@Override
protected void onMeasure(int
widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(lebar, tinggi);
}
/** untuk mengatur arah*/
public void setBearing(float _bearing) {
busur = _bearing;
}
/** mengambil arah */
public float getBusur() {
return busur;
}
@Override
protected void onDraw(Canvas
canvas) {
int px =
getMeasuredWidth() / 2;
int py =
getMeasuredHeight() / 2 ;
int radius = Math.min(px,
py);
// Membetuk latar
canvas.drawCircle(px, py, radius, gambarLingkaran);
canvas.save();
// Rotasi
perspektif
canvas.rotate(-busur, px, py);
int textWidth = (int)paintText.measureText("W");
int cardinalX =
px-textWidth/2;
int cardinalY =
py-radius+textHeight;
for (int i = 0; i <
24; i++) {
canvas.save();
canvas.translate(0, textHeight);
if (i % 6 == 0) {
String dirString = "";
switch (i) {
case(0) : {
dirString = northString;
int arrowY = 2*textHeight;
canvas.drawLine(px, arrowY, px-5, 3*textHeight, penandaGambar);
canvas.drawLine(px, arrowY, px+5, 3*textHeight, penandaGambar);
canvas.drawLine(px, py, px, arrowY, penandaGambar);
break;
}
}
canvas.drawText(dirString, cardinalX, cardinalY, paintText);
}
canvas.restore();
canvas.rotate(15, px, py);
}
canvas.restore();
}
}
4.2.2.2. Pembuatan Tampilan Antarmuka Arah Kiblat
Kode program:
<?xml version="1.0"
encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg_kiblat3"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/text"
/>
<!-- Untuk menampilkan kiblat
-->
<LinearLayout android:orientation="horizontal"
android:layout_height="wrap_content"
a ndroid:layout_width="wrap_content"
android:layout_gravity="center_horizontal|center_vertical"
android:paddingTop="142px"
android:paddingLeft="40px"
android:paddingBottom="5px">
<com.amiral.kupluk.KiblatView
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="fill|center" android:id="@+id/arahKiblat"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text"
android:layout_below="@id/arahKiblat"
android:paddingLeft="30dip"
/>
</RelativeLayout>
4.2.2.3. Pembuatan Kelas Kiblat
Kode Program:
package
com.amiral.kupluk;
import
com.amiral.kupluk.R;
import
android.app.Activity;
import
android.content.Context;
import
android.content.Intent;
import android.hardware.SensorListener;
import
android.hardware.SensorManager;
import
android.location.Criteria;
import
android.location.Location;
import
android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import
android.view.MenuInflater;
import
android.view.MenuItem;
import android.widget.TextView;
public class Kiblat extends Activity{
private float arahKiblat=0;
private float busur = 0;
private double lonMasjid;
private double latMasjid;
private KiblatView kiblatView;
private SensorManager sensorManager;
TextView text;
private LocationManager
locationManager;
// private final SensorListener sensorListener;
// private static boolean isTrackingOrientation
= false;
@Override
public void onCreate(Bundle
icicle){
super.onCreate(icicle);
setContentView(R.layout.kiblat);
//inisialisasi Lokasi
locationManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
//kriteria penggunaan lokasi
Criteria criteria= new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setBearingRequired(false);
criteria.setSpeedRequired(false);
criteria.setCostAllowed(true);
String provider = locationManager.getBestProvider(criteria, true);
Location location=locationManager.getLastKnownLocation(provider);
latMasjid=
location.getLatitude();
lonMasjid=
location.getLongitude();
float kiblat =(float)segitigaBola(lonMasjid,latMasjid);
setArahKiblat(kiblat);
kiblatView = (KiblatView) this.findViewById(R.id.arahKiblat);
text= (TextView) findViewById(R.id.text);
text.setText("Arah
Kiblat adalah: "+kiblat);
sensorManager =
(SensorManager)getSystemService(Context.SENSOR_SERVICE);
updatePerputaran(0,0);
Log.d("kupluk", "kiblat:
"+getArahKiblat());
Log.d("kupluk", "Latitude masjid: " + latMasjid +"Longitude
Masjid: "+ lonMasjid );
}
private final SensorListener
sensorListener = new SensorListener()
{
public void onSensorChanged(int sensor, float[] values) {
updatePerputaran(values[SensorManager.DATA_X],getArahKiblat());
}
public void onAccuracyChanged(int sensor, int accuracy) {}
};
private void
updatePerputaran(float _busur, float _arah){
busur=(float) (_busur+ (float)(360 - _arah));
if (kiblatView!=null){
kiblatView.setBearing(busur);
kiblatView.invalidate();
}
}
@Override
protected void onResume()
{
super.onResume();
sensorManager.registerListener(sensorListener, SensorManager.SENSOR_ORIENTATION, SensorManager.SENSOR_DELAY_FASTEST);
}
@Override
protected void onStop()
{
sensorManager.unregisterListener(sensorListener);
super.onStop();
}
/**
* Rumus ini untuk menghitung
arah kiblat dari utara.
* Perhitungan sesuai dengan
arah jarum jam.
* Jika nilai utara ditemukan
maka selanjutnya adalah dengan menambah arah
utara
* dengan hasil perhitungan.*/
public double segitigaBola(double lngMasjid, double latMasjid){
double
lngKabah=39.82616111;
double latKabah=21.42250833;
double
lKlM=(lngKabah-lngMasjid);
double sinLKLM= Math.sin(lKlM*2.0*Math.PI/360);
double cosLKLM= Math.cos(lKlM*2.0*Math.PI/360);
double sinLM = Math.sin(latMasjid *2.0 * Math.PI/360);
double cosLM = Math.cos(latMasjid
*2.0 * Math.PI/360);
double tanLK = Math.tan(latKabah*2*Math.PI/360);
double penyebut=
(cosLM*tanLK)-sinLM*cosLKLM;
double kiblat;
double arah;
kiblat = Math.atan2(sinLKLM, penyebut)*180/Math.PI;
arah= kiblat<0 ? kiblat+360 :
kiblat;
return arah;
}
//untuk
mendeklarasikan Menu
@Override
public boolean
onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater
inflater= getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
//Untuk mengeksekusi jika
pilihan menu dipilih
@Override
public boolean
onOptionsItemSelected(MenuItem item){
super.onOptionsItemSelected(item);
switch
(item.getItemId()) {
case R.id.jadwal_menu:
startActivity(new Intent(this, KuplukMain.class));
return true;
case R.id.kiblat_menu:
startActivity(new Intent(this, Kiblat.class));
return true;
case R.id.pengaturan_menu:
startActivity(new Intent(this, Pengaturan.class));
return true;
case R.id.tentang_menu:
startActivity(new Intent(this, Tentang.class));
return true;
}
return false;
}
public float getArahKiblat()
{
return arahKiblat;
}
public void setArahKiblat(float arahKiblat) {
this.arahKiblat = arahKiblat;
}
}
4.2.3.Pembuatan Tampilan Pengaturan
4.2.3.1. Pembuatan Tampilan Antarmuka Pengaturan
Kode programnya :
<?xml version="1.0"
encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="pengaturan_kupluk"
android:title="@string/pengaturan_judul">
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="pengaturan_shalat"
android:title="@string/pengaturan_kategori_shalat"
android:summary="@string/pengaturan_kategori_shalat_ket">
<ListPreference
android:key="pilihan_metode_perhitungan"
android:title="@string/pengaturan_perhitungan_shalat"
android:summary="@string/pengaturan_perhitungan_shalat_ket"
android:entries="@array/daftar_metode_perhitungan"
android:entryValues="@array/daftar_metode_perhitungan_nilai"
android:dialogTitle="@string/pengaturan_perhitungan_shalat_judul"
android:defaultValue="0">
</ListPreference>
<ListPreference
android:key="pilihan_mazhab"
android:title="@string/pengaturan_mazhab"
android:summary="@string/pengaturan_mazhab_ket"
android:entries="@array/daftar_mazhab"
android:entryValues="@array/daftar_mazhab_nilai"
android:dialogTitle="@string/pengaturan_mazhab_judul"
android:defaultValue="0">
</ListPreference>
</PreferenceCategory>
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="pengaturan_pengingat"
android:title="@string/pengaturan_kategori_pengingat"
android:summary="@string/pengaturan_kategori_pengingat_ket">
<PreferenceScreen
android:title="@string/pengaturan_pengingat"
android:summary="@string/pengaturan_pengingat_ket">
<CheckBoxPreference
android:key="set_zuhur"
android:title="Zuhur"/>
<CheckBoxPreference
android:key="set_ashar"
android:title="Ashar"/>
<CheckBoxPreference
android:key="set_maghrib"
android:title="Maghrib"/>
<CheckBoxPreference
android:key="set_isya"
android:title="Isya"/>
<CheckBoxPreference
android:key="set_subuh"
android:title="Subuh"/>
</PreferenceScreen>
<RingtonePreference
android:name="Azan
Preference"
android:summary="@string/pengaturan_azhan_ket"
android:title="@string/pengaturan_azhan"
android:key="pilihan_suarah_azhan"
/>
</PreferenceCategory>
</PreferenceScreen>
4.2.3.2. Pembuatan Kelas Pengaturan
Kode
programnya :
package com.amiral.kupluk;
import
android.content.Context;
import
android.content.Intent;
import
android.os.Bundle;
import
android.preference.PreferenceActivity;
import
android.preference.PreferenceManager;
import android.view.Menu;
import
android.view.MenuInflater;
import
android.view.MenuItem;
public class Pengaturan extends
PreferenceActivity{
private static final String PIL_METODE_PERHITUNGAN="pilihan_metode_perhitungan";
private static final String PIL_METODE_PERHITUNGAN_DEF="0";
private static final String PIL_MAZHAB="pilihan_mazhab";
private static final String PIl_MAZHAB_DEF="0";
private static final String PIL_ZUHUR = "set_zuhur";
private static final boolean PIL_ZUHUR_DEF = true;
private static final String PIL_ASHAR = "set_ashar";
private static final boolean PIL_ASHAR_DEF = true;
private static final String PIL_MAGHRIB="set_maghrib";
private static final boolean PIL_MAGHRIB_DEF=true;
private static final String PIL_ISYA= "set_isya";
private static final boolean PIL_ISYA_DEF=true;
private static final String PIL_SUBUH="set_subuh";
private static final boolean PIL_SUBUH_DEF=true;
@Override
protected void onCreate(Bundle
savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pengaturan);
}
//mengambil nilai
default dari settingan waktu shalat
public static boolean
getSetZuhur(Context context){
return
PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean(PIL_ZUHUR, PIL_ZUHUR_DEF);
}
public static boolean
getSetAshar(Context context){
return
PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean(PIL_ASHAR, PIL_ASHAR_DEF);
}
public static boolean
getSetMaghrib(Context context){
return
PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean(PIL_MAGHRIB, PIL_MAGHRIB_DEF);
}
public static boolean
getSetIsya(Context context){
return
PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean(PIL_ISYA, PIL_ISYA_DEF);
}
public static boolean
getSetSubuh(Context context){
return
PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean(PIL_SUBUH, PIL_SUBUH_DEF);
}
public static String
getMetodePerhitungan(Context context){
return
PreferenceManager.getDefaultSharedPreferences(context)
.getString(PIL_METODE_PERHITUNGAN, PIL_METODE_PERHITUNGAN_DEF);
}
public static String
getMazhab(Context context){
return
PreferenceManager.getDefaultSharedPreferences(context)
.getString(PIL_MAZHAB, PIl_MAZHAB_DEF);
}
//untuk
mendeklarasikan Menu
@Override
public boolean
onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater
inflater= getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
//Untuk mengeksekusi jika
pilihan menu dipilih
@Override
public boolean onOptionsItemSelected(MenuItem item){
super.onOptionsItemSelected(item);
switch
(item.getItemId()) {
case R.id.jadwal_menu:
startActivity(new Intent(this, KuplukMain.class));
return true;
case R.id.kiblat_menu:
startActivity(new Intent(this, Kiblat.class));
return true;
case R.id.pengaturan_menu:
startActivity(new Intent(this, Pengaturan.class));
return true;
case R.id.tentang_menu:
startActivity(new Intent(this, Tentang.class));
return true;
}
return false;
}
}
4.2.4.Pembuatan Tampilan Tentang
4.2.4.1. Pembuatan Tampilan Antarmuka Tentang
4.2.4.2. Pembuatan Kelas Antarmuka Tentang
4.3. Pengujian Kode
Pengujian dilakukan dalam dua
tahap utama, yaitu pengujian white box dan black box. Pengujian
white box dilakukan dengan menguji atribut dan method yang ada pada kelas-kelas
yang dibangun. Pengujian black box
dilakukan untuk menentukan apakah sistem yang dikembangkan dapat berjalan
sesuai dengan spesifikasi kebutuhan.
Berikut ini disajikan hasil
uji coba sistem
5. Kesimpulan dan Saran
Pada bab ini akan dijelaskan
kesimpulan dan saran dari uraian-uraian pada bab-bab sebelumnya.
5.1. Kesimpulan
Dari hasil pengembangan aplikasi pengingat shalat menggunakan global
positioning (GPS) berbasiskan Android dapat diambil beberapa kesimpulan,
yaitu:
- Aplikasi Pengingat Shalat dan Arah Kiblat (Kupluk) dapta dijadikan alternative acuan bagi umat muslim yang menggunakan perangkat Android agar lebih mudah dalam melaksanakan ibadah shalat.
- Siklus hidup aplikasi berbasis Android diatur oleh virtual machine sebagai proses foreground dan background.
- Android Development Kid (ADK) memungkinkan pemrogram mengelola resource untuk memaksimalkan penggunaan memory.
- Resource dikelola dengan cara terstruktur sehingga memudahkan program aplikasi memanggil atau memanfaatkan resource tersebut.
5.2. Saran
Saran yang dapat
diberikan Penulis atas penelitian ini adalah sebagai berikut:
1.
Perangkat bersistem Android saat ini relatif sedikit
dan mahal sehingga menjadikan Android belum terlalu diminati, khususnya di
Indonesia. Diharapkan dengan adanya aplikasi ini dapat memicu
loading...
owh
ReplyDelete