Amiral Charner French Aviso (Sloop) 1932 Blueprints Marine national
Muhammad Amiral Tugas Akhir
Transcript of Muhammad Amiral Tugas Akhir
Aplikasi Pengingat Shalat dan Arah Kiblat Menggunakan Global
Positioning System (GPS) Berbasis Android 1.6
TUGAS AKHIR
Oleh:
Muhammad Amiral
115.06.0034
PROGRAM STUDI TEKNIK INFORMATIKA
INSTITUT TEKNOLOGI INDONESIA
2010
TUGAS AKHIR:
Aplikasi Pengingat Shalat dan Arah Kiblat Menggunakan Global
Positioning System (GPS) Berbasis Android 1.6
Laporan Tugas Akhir ini disusun sebagai salah satu syarat Untuk memperoleh gelar Sarjana Teknik Pada Program Studi Teknik Informatika
Institut Teknologi Indonesia
Oleh:
Muhammad Amiral
115.06.0034
PROGRAM STUDI TEKNIK INFORMATIKA
INSTITUT TEKNOLOGI INDONESIA
2010
LEMBAR PENGESAHAN
Judul Tugas Akhir :
Aplikasi Pengingat Shalat dan Arah Kiblat
Menggunakan Global Positioning System (GPS)
Berbasis Android 1.6
Nama : Muhammad Amiral
NRP : 115.06.0034
TUGAS AKHIR INI TELAH DIPERIKSA DAN DISETUJUI
Serpong, __ Maret 2010
Mengetahui,
Dra. Endang RD, M.Kom
Yustina Sri Suharini, MT
Ketua Program Studi Pembimbing Tugas Akhir
Tugas Akhir ini ku persembahkan kepada Wanita Super dalam hidupku, Mama.
Senantiasa berupaya untuk dapat terus memberi kepada anak-anaknya, agar
selalu menjadi yang terbaik.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
ABTRAKSI
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 diinstal aplikasi-aplikasi yang diperlukan oleh pengguna. Pada tugas akhir ini dikembangkan 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
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
KATA PENGANTAR
Pertama-tama penulis panjatkan puji syukur atas kehadiran Allah S.W.T
karena atas rahmat dan karunia-Nyalah akhirnya laporan tugas akhir ini dapat
penulis selesaikan. Tak lupa pula shalawat 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:
1. 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.
2. Ibu Dra. Endang RD, M.Kom selaku Ketua Program Studi Teknik
Informatika.
3. 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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
4. Para Dosen penguji Tugas Akhir, Ibu Dra. Endang R.D M.Kom, Bapak,
Budi Prasetyo, MT, dan Bapak Sunarto, telah menguji Tugas Akhir
penulis dan memberikan masukkan untuk perbaikan laporan Tugas Akhir
penulis.
5. Seluruh DOSEN PROGRAM STUDI TEKNIK INFORMATIKA ITI,
terima kasih untuk bimbingan dan pengajarannya. Semoga ilmu yang
penulis terima kelak bermanfaat untuk penulis.
6. Keluarga yang selalu mengasihi, adik-adik, bibi, paman dan saudara
lainnya yang tak bisa disebutkan satu-satu.
7. Seseorang yang menjadi impian penulis, yang selalu mengingatkan,
menambahkan dukungan, semangat, dan kasih sayang. Oki Oktaviani.
8. Teman-teman Teknik Informatika angkatan 2006 khususnya Aktifis-aktifis
himpunan periode 2008-2009 dan penghuni Perumahan Serpong City
Paradise Block. G : 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.
9. Seluruh Mahasiswa Teknik Informatika 2004, 2005, 2007 dan 2008.
10. Teman-teman alumni Ma’had Al-Zaytun khususnya angkatan kedua
(Persada), terima kasih atas motivasinya.
11. 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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Penulis mendoakan untuk semua pihak yang telah membantu penulis
mendapatkan imbalan yang setimpal dan senantiasa di berkahi rahmat 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.
Serpong, Maret 2010
Penulis
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
DAFTAR ISI
ABTRAKSI .......................................................................................................... i
KATA PENGANTAR ......................................................................................... ii
DAFTAR ISI ....................................................................................................... v
DAFTAR GAMBAR .......................................................................................... ix
DAFTAR TABEL .............................................................................................. xi
BAB I Pendahuluan ......................................................................................... 1
1.1. Latar Belakang ..................................................................................... 1
1.2. Rumusan Masalah ................................................................................ 2
1.3. Tujuan.................................................................................................. 2
1.4. Manfaat ................................................................................................ 2
1.5. Batasan Masalah................................................................................... 3
1.6. Metode Penelitian................................................................................. 3
1.7. Sistematika Penulisan Laporan ............................................................. 4
BAB II Landasan Teori..................................................................................... 6
2.1. Shalat ................................................................................................... 6
2.1.1. Pengertian Shalat .......................................................................... 6
2.1.2. Waktu Shalat - Shalat Fardhu........................................................ 6
2.1.3. Menghitung Waktu Shalat........................................................... 10
2.2. Kiblat ................................................................................................. 15
2.2.1. Pengertian Kiblat ........................................................................ 15
2.2.2. Menentukan Arah Kiblat............................................................. 16
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
2.2.2.1. Koordinat Posisi Geografis.................................................. 16
2.2.2.2. Ilmu Ukur Segitiga Bola...................................................... 17
2.2.2.3. Rumus Segitiga Bola........................................................... 19
2.3. Android .............................................................................................. 22
2.3.1. Pengertian Android ..................................................................... 22
2.3.2. Sejarah dan Perkembangan Android............................................ 22
2.3.3. Anatomi Android ........................................................................ 23
2.3.3.1. Linux Kernel....................................................................... 24
2.3.3.2. Libraries.............................................................................. 25
2.3.3.3. Android Runtime ................................................................ 25
2.3.3.4. Application Framework....................................................... 26
2.3.3.5. Application Layer ............................................................... 27
2.3.4. Komponen Aplikasi .................................................................... 27
2.3.4.1. Activities............................................................................. 28
2.3.4.2. Services .............................................................................. 30
2.3.4.3. Intents ................................................................................. 30
2.3.4.4. Broadcast Receivers ............................................................ 31
2.3.4.5. Content Providers................................................................ 31
2.3.5. Tipe Aplikasi Android ................................................................ 31
2.3.6. Siklus Hidup Aplikasi Android ................................................... 32
2.3.7. Kelebihan Android...................................................................... 34
BAB III Analisis dan Perancangan ................................................................... 36
3.1. Analisis Kebutuhan Kupluk ................................................................ 36
3.1.1. Analisis Fungsional .................................................................... 36
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
3.1.2. Performansi Kupluk.................................................................... 37
3.1.3. Use Case Diagram ...................................................................... 38
3.1.4. Diagram Alir (Flowchart) ........................................................... 40
3.2. Perancangan Kupluk........................................................................... 41
3.2.1. Diagram Kelas ............................................................................ 42
3.2.2. Sequence Diagram...................................................................... 44
3.2.3. Perancangan Navigasi................................................................. 45
3.2.4. Perancangan Antar Muka (Interface) .......................................... 46
3.2.4.1. Perancangan Antar Muka Menu .......................................... 47
3.2.4.2. Perancangan Antar Muka Jadwal Shalat .............................. 48
3.2.4.3. Perancangan Antar Muka Arah Kiblat ................................. 49
3.2.4.4. Perancangan Antar Muka Pengaturan.................................. 50
3.2.4.5. Perancangan Antar Muka Tentang....................................... 51
BAB IV Implementasi ...................................................................................... 54
4.1. Spesifikasi Perangkat Keras dan Lunak .............................................. 54
4.1.1. Spesifikasi Perangkat Keras ........................................................ 54
4.1.2. Spesifikasi Perangkat Lunak ....................................................... 55
4.2. Penulisan Kode Program (Codding).................................................... 57
4.2.1. Pembuatan Tampilan Utama ....................................................... 57
4.2.1.1. Pembuatan Tampilan Antarmuka Tampilan Utama.............. 57
4.2.1.2. Pembuatan Kelas PerhitunganShalat.................................... 60
4.2.1.3. Pembuatan Kelas FormatWaktu .......................................... 64
4.2.1.4. Pembuatan Kelas KuplukMain ............................................ 65
4.2.2. Pembuatan Tampilan Arah Kiblat ............................................... 69
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
[email protected] viii
4.2.2.1. Pembuatan Kelas KiblatView.............................................. 70
4.2.2.2. Pembuatan Tampilan Antarmuka Arah Kiblat ..................... 72
4.2.2.3. Pembuatan Kelas Kiblat ...................................................... 73
4.2.3. Pembuatan Tampilan Pengaturan ................................................ 77
4.2.3.1. Pembuatan Tampilan Antarmuka Pengaturan ...................... 77
4.2.3.2. Pembuatan Kelas Pengaturan .............................................. 79
4.2.4. Pembuatan Tampilan Tentang..................................................... 81
4.2.4.1. Pembuatan Tampilan Antarmuka Tentang........................... 81
4.2.4.2. Pembuatan Kelas Antarmuka Tentang................................. 83
4.3. Pengujian ........................................................................................... 85
4.3.1. Pengujian Black Box Fitur Jadwal Shalat .................................... 91
4.3.2. Pengujian Black Box Arah Kiblat ................................................ 94
4.4. Distribusi............................................................................................ 98
BAB V Kesimpulan dan Saran ...................................................................... 100
5.1. Kesimpulan ...................................................................................... 100
5.2. Saran ................................................................................................ 101
DAFTAR PUSTAKA ...................................................................................... 102
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
DAFTAR GAMBAR
Gambar 2.1 Pembagian Bumi Berdasarkan Bujur dan Lintang ........................... 17
Gambar 2.2 Segitiga Bola ABC yang menghubungkan titik A (Ka'bah), titik B
(Lokasi), dan titik C (Kutub Utara) .................................................................... 18
Gambar 2.3 Segitiga Bola .................................................................................. 20
Gambar 2.4 Detail Anatomi Android.................................................................. 24
Gambar 2.5 Prioritas Aplikasi Berdasarkan Activity ........................................... 33
Gambar 3.1 Diagram Use Case .......................................................................... 39
Gambar 3.2 Diagram Alir Sistem....................................................................... 41
Gambar 3.3 Diagram Kelas dan Relasi Antar Kelas ........................................... 42
Gambar 3.4 Diagram Sequence .......................................................................... 45
Gambar 3.5 Struktur Navigasi............................................................................ 46
Gambar 3.6 Desain Layar Tampilan Menu Utama.............................................. 47
Gambar 3.7 Desain Layar Tampilan Jadwal Shalat............................................. 48
Gambar 3.8 Desain Layar Tampilan Arah Kiblat................................................ 49
Gambar 3.9 Desain Layar Tampilan Pengaturan................................................. 50
Gambar 3.10 Desain Layar Tampilan Antarmuka Tentang ................................. 52
Gambar 4.1 Antarmuka Jadwal Shalat................................................................ 85
Gambar 4.2 Antarmuka Menu Utama................................................................. 86
Gambar 4.3 Antarmuka Arah Kiblat................................................................... 86
Gambar 4.4 Antarmuka Pengaturan.................................................................... 87
Gambar 4.5 Antarmuka Pengaturan Menu Utama .............................................. 87
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 4.6 Antarmuka Pengaturan Mazhab ...................................................... 88
Gambar 4.7 Antarmuka Pengaturan Pengingat Waktu Shalat ............................. 88
Gambar 4.8 Antarmuka Pengaturan Mode Pengingat ......................................... 89
Gambar 4.9 Antarmuka Notifikasi Peringatan .................................................... 89
Gambar 4.10 Antarmuka Tentang ...................................................................... 90
Gambar 4.11 Antarmuka Tentang (2)................................................................. 90
Gambar 4.12 Jadwal Shalat Kupluk (16/02/2010) .............................................. 91
Gambar 4.13 Jadwal Shalat PKPU (16/02/2010) ................................................ 92
Gambar 4.14 Jadwal Shalat RHI Bulan Februari ................................................ 93
Gambar 4.15 Arah Kiblat Kupluk ...................................................................... 94
Gambar 4.16 Arah Kiblat RHI ........................................................................... 95
Gambar 4.17 Perangkat diputar 90 o ................................................................... 96
Gambar 4.18 Perangkat diputar 180 o ................................................................. 96
Gambar 4.19 Perangkat diputar 270 o ................................................................. 97
Gambar 4.20 Perangkat diputar 360 o ................................................................. 97
Gambar 4.21 Android Market ............................................................................ 99
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
DAFTAR TABEL
Tabel 2.1 Altitude Matahari Saat Subuh dan Isya ..................................... 14
Tabel 3.1 Kelas, Atribut dan Method........................................................ 42
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
BAB 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
BAB I
PENDAHULUAN
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
penggunaan Sistem Operasi pada Handphone. Layaknya pada komputer,
Handphone pun dapat di instal 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:
1. Membantu umat muslim khususnya pengguna Android yang memiliki
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
tingkat mobilitas tinggi untuk senantiasa tahu waktu shalat dan arah kiblat.
2. Membantu umat muslim untuk senantiasa melaksanakan ibadah shalat
tepat waktu dan arah kiblat yang tepat.
3. Meningkatkan pemahaman tentang struktur dan sistem kerja dalam
pengembangan aplikasi 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:
1. Sistem pewaktuan shalat hanya dapat digunakan pada sistem operasi
Android dengan memanfaatkan Global Positioning System (GPS).
2. Penunjukkan arah kiblat sesuai dengan arah kiblat diman lokasi user
berada.
3. 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:
1. Metode Pengumpulan Data (Data Gathering)
Mencari dan mengumpulkan data-data yang dibutuhkan dan berkaitan
dengan pembuatan Aplikasi Pewaktuan Shalat.
2. Metode Wawancara
Dilakukan terhadap ahli pewaktuan shalat dan arah kiblat.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
3. 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.
4. Analisa Sistem
Menganalisa kebutuhan sistem dan mengidentifikasi kebutuhan informasi
berdasarkan hasil pengamatan dan wawancara serta studi pustaka yang
telah dilakukan. Alat bantu analisis sistem yang digunakan pada sistem ini
adalah Use Case Diagram dan Class Diagram.
5. 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 masalah, metodologi dan sistematika penulisan
laporan.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
BAB II LANDASAN TEORI
Bab ini menguraikan tentang teori yang berhubungan dengan judul
tugas akhir, seperti penentuan waktu shalat 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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
BAB 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. [1]
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:
BAB II
LANDASAN TEORI
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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. [10]
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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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'.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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[13].
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
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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 [8]:
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 ....(1)
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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) ............(2)
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:
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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 ……….(3)
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 [12].
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Tabel 2.1 Altitude Matahari Saat Subuh dan Isya
Organisasi Sudut Subuh Sudut Isya Regional
Indonesia 20 derajat 18 derajat Indonesia
Universitas Sience
Islam, Karaci
18 derajat 18 derajat Pakistan, Bangladessh,
India, Afghanistan,
sebaian Eropa
Amerika Utara 15 derajat 15 derajat Sebagian Amerika
Serikat, Kanada,
Sebagian Inggris
Liga Muslim Dunia 18 derajat 17 derajat Eropa, sebagian
Amerika
Komite Umm Al-Qura 18.5 derajat 18.5 Semenanjung Arab
Mesir 19.5 derajat 17.5 derajat Afrika, Siria, Iraq,
Libanon, Malaysia,
Sebagian Amerika
9. 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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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. [13]
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
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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. [9]
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 [9].
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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)
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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:
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 2.3 Segitiga Bola
cos(b) = cos(a) cos(c) + sin(a) sin(c) cos(B) ……………………………………(4)
cos(c) = cos(a) cos(b) + sin(a) sin(b) cos (C) ...…………………………………(5)
)sin(
)sin(
)sin(
)sin(
)sin(
)sin(
C
c
B
b
A
a== ………………………………………….………….(6)
Dengan menggabungkan ketiga rumus di atas (4, 5, 6), diperoleh rumus sebagai
berikut:
)cos()cos()cot()sin(
)sin()tan(
Caba
CB
−= ………………………………………….(7)
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:
)cos()sin()tan()cos(
)sin()tan(
BbBaLbLaLb
BbBaB
−−
−= ……………………………....(8)
Sehingga sudut B adalah: ( ))tan(arctan BB =
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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.[7]
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
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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. [5]
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.[11]
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 2.4 Detail Anatomi Android
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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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. [14]
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 [2]:
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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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.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 [7].
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Ketika activity diambil dan disimpan dalam tumpukkan activity terdapat 4
kemungkinan kondisi transisi yang akan terjadi [4]:
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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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 [4] :
1. Foreground Activity
Aplikasi yang hanya dapat dijalankan jika tampil pada layar dan tetap
efektif walaupun tidak terlihat. Aplikasi dengan tipe ini pasti
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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.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
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
terlihat dan sistem membutuhkan sumber daya yang lebih, maka Activity yang
prioritas rendah akan ditutup. [5]
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.
Gambar 2.5 Prioritas Aplikasi Berdasarkan Activity
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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 [2]:
1. 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.
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
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
BAB 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 real position
berdasarkan posisi pengguna dengan bantuan acelometer.
3. Terdapat pilihan pengaturan metode perhitungan waktu shalat sesuai yang
diinginkan pengguna.
BAB III
ANALISIS DAN PERANCANGAN
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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.
6. Terdapat pilihan pengaturan mode pengingat yang berfungsi untuk
mengatur bentuk pengingat yang diinginkan oleh pengguna.
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:
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
o Merancang aplikasi dengan penggunaan memori seefektif mungkin,
sehingga tidak menganggu siklus operasi Android dan aplikasi lain.
o Merancang aplikasi dengan pemanfaatan sumber daya seefisien mungkin
namun tidak mengurangi fungsi dan performa aplikasi.
o 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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 3.1 Diagram Use Case
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 latitude lokasi perangkat saat itu. Dari informasi inilah akan diolah oleh
aplikasi sehingga menampilkan jadwal shalat kepada user saat itu. Ketika
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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 dan posisi 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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 3.2 Diagram Alir Sistem
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
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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.
Gambar 3.3 Diagram Kelas dan Relasi Antar Kelas
Tabel 3.1 Kelas, Atribut dan Method
NO Nama Class Atribut Method
1 Kupluk Main
- tahun : int - bulan : int - hari : int - zonaWaktu : float - lokasi : LocationManger - metode : String - mazhab : int - sudutIsya : int
- onCreate() - onResume() - onCreateOptionMenu() - onOptionItemSelected()
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
- sudutSubuh : int - shalat : PerhitunganShalat - service : KuplukService
2 Kiblat
- latMasjid : float - lonMasjid : float - busur : float - arahKiblat : float - kiblatView : KiblatView - sensorListener: SensorListener - sensorManager : SensorManager - lokasi : LocationManager
- onCreate() - onResume() - onStop() - setArahKiblat() - getArahKiblat() - segitigaBola() - updatePerputaran() - onCreateOptionMenu() - onOptionItemSelected()
3 Tentang - webView : WebView
- onCreate() - ambilResource() - ubahKeString() - onCreateOptionMenu() - onOptionItemSelected()
4 Pengaturan
1. PIL_SUBUH: String 2. PIL_SUBUH_DEF:
boolean 3. PIL_ZUHUR : String 4. PIL_ZUHUR_DEF :
boolean 5. PIL_ASHAR : String 6. PIL_ASHAR_DEF :
boolean 7. PIL_MAGHRIB : String 8. PIL_MAGHRIB_DEF :
boolean 9. PIL_ISYA : String 10. PIL_ISYA_DEF : boolean 11. PIL_METODE_PERHITU
NGAN : String 12. PIL_METODE_PERHITU
NGAN_DEF : String 13. PIL_MAZHAB : String 14. PIL_MAZHAB_DEF :
String
- onCreate() - getSetSubuh() - getSetZuhur() - getSetAshar() - getSetMaghrib() - getSetIsya() - getSetMetodePerhitungan() - getSetMazhab() - onCreateOptionMenu() - onOptionItemSelected()
5 PerhitunganShalat
- longitudeLokasi: double - latitudeLokasi: double - altitudeLokasi: double - zonaWaktuLokasi : float - sudutIsya : double - sudutSubuh : double - equtionTime : double - delta : double - jdLokasi : double - mazhab : int - waktuSubuh : float - waktuZuhur : float - waktuAshar : float - waktuMaghrib : float - waktuIsya : float
- PerhitunganShalat() - setLongitudeLokasi() - getLongitudeLokasi() - setLatitudeLokasi() - getLatitudeLokasi() - setAltitudeLokasi() - getAltitudeLokasi() - setZonaWaktuLokasi() - getZonaWaktuLokasi() - setSudutIsya() - getSudutIsya() - setSudutSubuh() - getSudutSubuh() - setEqutionTime() - getEqutionTime() - setDelta() - getDelta() - setJDLokasi() - getJDLokasi()
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
- setMazhab() - getMazhab() - getWaktuSubuh() - getWaktuZuhur() - getWaktuAshar() - getWaktuMaghrib() - getWaktuIsya()
6 KiblatView
- busur : float - lebar : int - tinggi : int - gambarLingkarang : Paint - penandaGambar : Paint - paintText : Paint
- KiblatView() - initKiblatView() - onMesuare() - onDraw() - setBusur() - getBusur()
7 FormatWaktu - jam : int - menit : int - detik : int
- FormatWaktu() - getJam - setJam() - setMenit() - getMenit() - setDetik() - getDetik()
8 KuplukService
- timer : Timer - notifikasi : NotificationManager - idNotifikasi : int - JADWAL : String - jSubuh : int -mSubuh : int -jZuhur : int -mZuhur : int -jAshar : int -mAshar : int -jMaghrib : int -mMaghrib : int -jIsya : int -mIsya :int
- onBind() - onCreate() - onDestroy() - checkAlarm() - showNotifikasi() - startService() - shutdownService()
3.2.2. Sequence Diagram
Sequence Diagram menggambarkan interaksi antar objek di dalam dan
disekitar sistem (termasuk pengguna, display, dan sebagainya) berupa message
yang digambarkan terhadap waktu. Sequence diagram terdiri atas dimensi vertikal
(waktu) dan dimensi horizontal (objek-objek yang terkait).
Pada sequence diagram ini menggambarkan skenario atau rangkaian
langkah-langkah yang dilakukan pada sistem sebagai respon dari sebuah event
untuk menghasilkan output tertentu.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 3.4 Diagram Sequence
3.2.3. Perancangan Navigasi
Aplikasi Kupluk menggunakan struktur navigasi Hierarchical Model.
Dimana menu utama adalah pusat navigasi yang merupakan penghubung ke
semua fitur pada aplikasi.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 3.5 Struktur Navigasi
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.4. 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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
3.2.4.1. Perancangan Antar Muka Menu
Gambar 3.6 Desain Layar Tampilan Menu Utama
Keterangan Gambar:
1. Teks dan Gambar
Akan dibuat dengan berisikan teks Jadwal dan gambar bedug.
2. Teks dan Gambar
Akan dibuat dengan berisikan teks Kiblat dan gambar Ka’bah.
3. Teks dan Gambar
Akan dibuat dengan berisikan teks Pengaturan dan gambar gear.
4. Teks dan Gambar
Akan dibuat dengan berisikan teks Tentang dan gambar tanda tanya.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
3.2.4.2. Perancangan Antar Muka Jadwal Shalat
Gambar 3.7 Desain Layar Tampilan Jadwal Shalat
Keterangan Gambar:
1. Latar Belakang
Latar belakang ini akan dibuat berisikan gambar berbentuk masjid.
2. Teks
Merupakan jadwal shalat yang akan ditampilkan berupa teks secara
berurut dari subuh hingga isya, dimana disebelah kanannya berisikan teks
informasi jam shalat.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
3.2.4.3. Perancangan Antar Muka Arah Kiblat
Gambar 3.8 Desain Layar Tampilan Arah Kiblat
Keterangan Gambar:
1. Latar Belakang
Pada latar belakang arah kiblat akan dibuat berisikan gambar bernuasa
islami yang disesuaikan dengan tampilan jadwal Shalat.
2. Kompas Kiblat
Merupakan tampilan dua dimensi yang akan menujukkan arah kiblat.
3. Teks
Akan dibuat berisi teks besar derajat sudut arah kiblat dari arah utara.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
3.2.4.4. Perancangan Antar Muka Pengaturan
Gambar 3.9 Desain Layar Tampilan Pengaturan
Keterangan Gambar:
1. Teks
Akan dibuat berisi teks yang menjelaskan kategori pengaturan shalat
2. Teks
Akan dibuat berisi teks pengaturan metode perhitungan, yang selanjutnya
akan menampilkan dialog daftar pilihan metode perhitungan.
3. Teks
Akan dibuat berisi teks pengaturan mazhab, yang selanjutnya akan
menampilkan dialog daftar dua mazhab.
4. Teks
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Akan dibuat berisi teks yang menjelaskan kategori pengaturan pengingat.
5. Teks
Akan dibuat berisi teks pengaturan pengingat shalat, yang selanjutnya
akan menampilkan pilihan untuk daftar shalat 5 waktu.
6. Teks
Akan dibuat birisi teks pengaturan mode pengingat waktu shalat, yang
selanjutnya akan menampilkan dialog pilihan mode pengingat yaitu suara
azan, getar, dan lampu.
3.2.4.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
pengembang. Adapun desain perancangan muka tentang adalah sebagai berikut:
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 3.10 Desain Layar Tampilan Antarmuka Tentang
Keterangan Gambar:
1. Teks
Akan dibuat berupa berupa teks penjelasan mengenai hal tentang Kupluk
dan filosofinya.
2. Gambar
Akan dibuat berisi icon gambar Kupluk.
3. Teks
Akan dibuat birisi teks informasi mengenai fitur-fitur yang tersedia pada
aplikasi.
4. Teks
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Akan dibuat berisi teks ucapan terima kasih terhadap pihak-pihak yang
ikut terlibat dalam pengembangan aplikasi.
5. Teks
Akan dibuat berisi teks informasi umum mengenai pengembang, alamat
sistus dan dukungan email langsung kepada pengembang.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
BAB 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 dua 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:
1. 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
BAB IV
IMPLEMENTASI
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
• 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.
2. Kabel data serial port
Fungsi dari kabel data ini adalah untuk menghubungkan antara Komputer
dengan Handphone.
3. Satu unit PC dengan spesifkasi antara lain:
• Prosesor : Pentium IV
• Memori : 1 Gb
• Ruang Penyimpan : 80 Gb
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
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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 yang memerlukan. Adapun kode
antarmuka tampilan utama adalah sebagai berikut:
<?xml version= "1.0" encoding= "utf-8" ?> <RelativeLayout xmlns:Android= "http://schemas.Android.com/apk/res/Android" Android:layout_width= "fill_parent" Android:layout_height= "fill_parent" Android:background= "@drawable/latar" > <TextView Android:id= "@+id/label_judul" Android:text= "Jadwal Shalat" Android:layout_width= "fill_parent" Android:layout_height= "wrap_content" Android:textSize= "20sp" Android:textStyle= "bold" Android:textColor= "#ffffffff" Android:gravity= "center" Android:paddingTop= "136dip" /> <TextView Android:id= "@+id/label_subuh" Android:text= "Subuh" Android:layout_width= "wrap_content"
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Android:layout_height= "wrap_content" Android:textSize= "15sp" Android:textStyle= "bold" Android:textColor= "#ffffffff" Android:paddingLeft= "50dip" Android:layout_below= "@id/label_judul" Android:paddingTop= "30dip" /> <TextView Android:id= "@+id/label_zuhur" Android:text= "Zuhur" Android:layout_width= "wrap_content" Android:layout_height= "wrap_content" Android:textSize= "15sp" Android:textStyle= "bold" Android:textColor= "#ffffffff" Android:paddingLeft= "50dip" Android:layout_below= "@id/label_subuh" Android:paddingTop= "20dip" /> <TextView Android:id= "@+id/label_ashar" Android:text= "Ashar" Android:layout_width= "wrap_content" Android:layout_height= "wrap_content" Android:textSize= "15sp" Android:textStyle= "bold" Android:textColor= "#ffffffff" Android:paddingLeft= "50dip" Android:layout_below= "@id/label_zuhur" Android:paddingTop= "20dip" /> <TextView Android:id= "@+id/label_maghrib" Android:text= "Magrib" Android:layout_width= "wrap_content" Android:layout_height= "wrap_content" Android:textSize= "15sp" Android:textStyle= "bold" Android:textColor= "#ffffffff" Android:paddingLeft= "50dip" Android:layout_below= "@id/label_ashar" Android:paddingTop= "20dip" /> <TextView Android:id= "@+id/label_isya" Android:text= "Isya" Android:layout_width= "wrap_content" Android:layout_height= "wrap_content" Android:textSize= "15sp" Android:textStyle= "bold" Android:textColor= "#ffffffff" Android:paddingLeft= "50dip" Android:layout_below= "@id/label_maghrib" Android:paddingTop= "20dip" /> <TextView Android:id= "@+id/label_subuh_jam" Android:layout_width= "wrap_content"
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Android:layout_height= "wrap_content" Android:textSize= "15sp" Android:textStyle= "bold" Android:textColor= "#ffffffcc" Android:paddingRight= "50dip" Android:paddingLeft= "210dip" Android:layout_below= "@id/label_judul" Android:paddingTop= "30dip" /> <TextView Android:id= "@+id/label_zuhur_jam" Android:layout_width= "wrap_content" Android:layout_height= "wrap_content" Android:textSize= "15sp" Android:textStyle= "bold" Android:textColor= "#ffffffcc" Android:paddingLeft= "210dip" Android:layout_below= "@id/label_subuh_jam" Android:paddingTop= "20dip" /> <TextView Android:id= "@+id/label_ashar_jam" Android:layout_width= "wrap_content" Android:layout_height= "wrap_content" Android:textSize= "15sp" Android:textStyle= "bold" Android:textColor= "#ffffffcc" Android:paddingLeft= "210dip" Android:layout_below= "@id/label_zuhur_jam" Android:paddingTop= "20dip" /> <TextView Android:id= "@+id/label_maghrib_jam" Android:layout_width= "wrap_content" Android:layout_height= "wrap_content" Android:textSize= "15sp" Android:textStyle= "bold" Android:textColor= "#ffffffcc" Android:paddingLeft= "210dip" Android:layout_below= "@id/label_ashar_jam" Android:paddingTop= "20dip" /> <TextView Android:id= "@+id/label_isya_jam" Android:layout_width= "wrap_content" Android:layout_height= "wrap_content" Android:textSize= "15sp" Android:textStyle= "bold" Android:textColor= "#ffffffcc" Android:paddingLeft= "210dip" Android:layout_below= "@id/label_maghrib_jam" Android:paddingTop= "20dip" /> <TextView Android:id= "@+id/coba" Android:layout_width= "wrap_content" Android:layout_height= "wrap_content" Android:textSize= "15sp" Android:paddingLeft= "210dip"
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Android:layout_below= "@id/label_isya" Android:paddingTop= "20dip" />
</RelativeLayout>
4.2.1.2. Pembuatan Kelas PerhitunganShalat
Kelas PerhitunganShalat merupakan kelas yang berfungsi untuk memproses
perhitungan waktu shalat dan merupakan iplementasi terhadap rumus-rumus pada
yang telah dijabarkan pada bab landasan teori. Keluaran dari kelas
PerhitunganShalat ini adalah nilai 5 waktu shalat. Adapun kode program
berdasarkan perancangan adalah sebagai berikut:
package com.amiral.Kupluk.service; import Android.util.Log; public class PerhitunganShalat { private float waktuZuhur ; private float waktuAshar ; private float waktuMaghrib ; private float waktuIsya ; private float waktuSubuh ; private double latitudeLokasi; private double longitudLokasi; private double altitudeLokasi; private double zonaWaktuLokasi; private double jdLokasi; private double sudutSubuh; private double sudutIsya; private double delta; private double ET; private int mazhab; //Konstruktor
public PerhitunganShalat( double latitudeLokasi, double longitudeLokasi, double altitudeLokasi, double zonaWaktu, int tanggal, int bulan, int tahun) {
// TODO Auto-generated constructor stub setLatitudeLokasi(latitudeLokasi); setLongitudLokasi(longitudeLokasi); setAltitudeLokasi(altitudeLokasi);
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
setZonaWaktuLokasi(zonaWaktu); setJdLokasi(tanggal, bulan, tahun); } public float getWaktuZuhur() { setET(getJdLokasi());
return waktuZuhur = ( float ) (12+getZonaWaktuLokasi() - getLongitudLokasi()/15 - getET()/60);
} public float getWaktuAshar() {
setDelta(getJdLokasi()); (getWaktuZuhur()+(12/Math. PI )*Math. acos ((Math. sin (Math. atan (1/(getMazhab()+ Math. tan (Math. abs (getLatitudeLokasi()-getDelta())))))-Math. sin (getDelta())*Math. sin (getLatitudeLokasi()))
/(Math. cos (getDelta())*Math. cos (getLatitudeLokasi())))); } public float getWaktuMaghrib() { setDelta(getJdLokasi());
return waktuMaghrib = ( float ) (getWaktuZuhur()+(12/Math. PI )*Math. acos ((Math. sin ((-0.8333-0.0347*Math. pow(getAltitudeLokasi(), 0.5))*Math. PI /180)-Math. sin (getDelta())*Math. sin (getLatitudeLokasi()))/(Math. cos (getDelta())*Math. cos (getLatitudeLokasi()))));
} public float getWaktuIsya() { setDelta(getJdLokasi());
return waktuIsya = ( float ) (getWaktuZuhur()+(12/Math. PI )*Math. acos ((Math. sin ((-1*getSudutIsya())*Math. PI /180)-Math. sin (getDelta())*Math. sin (getLatitudeLokasi()))/(Math. cos (getDelta())*Math. cos (getLatitudeLokasi()))));
} public float getWaktuSubuh() { setDelta(getJdLokasi());
return waktuSubuh = ( float ) (getWaktuZuhur()-(12/Math. PI )*Math. acos ((Math. sin ((-1*getSudutSubuh())*Math. PI /180)-Math. sin (getDelta())*Math. sin (getLatitudeLokasi()))/(Math. cos (getDelta())*Math. cos (getLatitudeLokasi()))));
} public double getLatitudeLokasi() { return latitudeLokasi; } public void setLatitudeLokasi( double latitudeLokasi) { this .latitudeLokasi = latitudeLokasi*Math. PI /180; } public double getLongitudLokasi() {
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
return longitudLokasi; } public void setLongitudLokasi( double longitudLokasi) { this .longitudLokasi = longitudLokasi; } public double getAltitudeLokasi() { return altitudeLokasi; } public void setAltitudeLokasi( double altitudeLokasi) { this .altitudeLokasi = altitudeLokasi; } public double getZonaWaktuLokasi() { return zonaWaktuLokasi; }
public void setZonaWaktuLokasi( double zonaWaktuLokasi) { this .zonaWaktuLokasi = zonaWaktuLokasi; } public double getSudutSubuh() { return sudutSubuh; } public void setSudutSubuh( double sudutSubuh) { this .sudutSubuh = sudutSubuh; } public double getSudutIsya() { return sudutIsya; } public void setSudutIsya( double sudutIsya) { this .sudutIsya = sudutIsya; } public double getJdLokasi() { return jdLokasi; } public void setJdLokasi( int tanggal, int bulan, int tahun) { int M = bulan < 3 ? bulan+12:bulan; int Y = bulan < 3 ? tahun-1: tahun; int A= Y/100; int B= 2 + ( int )(A/4) - A;
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
double JDgreenWicht = 1720994.5 + ( int )(365.25 * Y) + ( int )(30.60001 * (M+1)) + B + tanggal + 0.5; Log. d("shalat", "JDG= "+JDgreenWicht+"zona= "+getZonaWaktuLokasi());
double zona=getZonaWaktuLokasi(); double JDlokasi = JDgreenWicht - zona/24; this .jdLokasi = JDlokasi; } public double getDelta() { return delta; } public void setDelta( double jdLks) {
double sudutTanggal = 2 * Math. PI * (jdLks - 2451545) / 365.25; double dlt = 0.37877 + 23.264 * Math. sin ((57.297 * sudutTanggal - 79.547) * Math. PI /180) + 0.3812 * Math. sin ((2 * 57.297 * sudutTanggal - 82.682) * Math. PI /180) + 0.17132 * Math. sin (( 3 * 57.297 * sudutTanggal - 59.722)* Math. PI /180);
this .delta=dlt*Math. PI /180; } public double getET() { return ET; } public void setET( double jdLks) { double U = (jdLks - 2451545)/36525;
double L0 = (280.46607 + 36000.7698 * U) * Math. PI /180; double eT = (-1 * (1789+237*U) * Math. sin (L0) - (7146-62*U) * Math. cos (L0) +(9934-14*U) * Math. sin (2*L0) - (29+5*U) * Math. cos (2*L0) + (74+10*U)*Math. sin (3*L0) + (320-4*U)*Math. cos (3*L0) - 212*Math. sin (4*L0))/1000;
ET = eT; } public int getMazhab() { return mazhab; } public void setMazhab( int mazhab) { this .mazhab = mazhab; } }
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
4.2.1.3. 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:
package com.amiral.Kupluk.service; public class FormatWaktu { private int jam; private int menit; private int detik; //Konstruktor public FormatWaktu( float waktu) { setJam(waktu); setMenit(waktu); setDetik(waktu); } public int getJam() { return jam; } public void setJam( float waktu) { int jam=( int ) waktu; this .jam = jam; } public int getMenit() { return menit; } public void setMenit( float waktu) { int menit=( int ) ((waktu-getJam())*60); this .menit = menit; } public int getDetik() { return detik; } public void setDetik( float waktu) {
int detik=( int ) ((((waktu-getJam())*60)-getMenit())*60);
this .detik = detik; }
}
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
4.2.1.4. 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.
import Android.app.Activity; import Android.os.Bundle; public class KuplukMain extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout. main ); } }
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:
package com.amiral.kupluk; import java.util.Calendar; import com.amiral.kupluk.service.FormatWaktu; import com.amiral.kupluk.service.PerhitunganShalat; import android.app.Activity; import android.app.NotificationManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; 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 KuplukMain extends Activity { /** Called when the activity is first created. */ public static final String JADWAL="jadwal"; public static final String JAM_SUBUH="jamSubuh";
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
public static final String MENIT_SUBUH="menitSubuh"; public static int NOTIF_ID = 100; private int hari; private int bulan; private int tahun; private double zonaWaktu; public String metode=""; private float sudutSubuh; private float sudutIsya; private int mazhab; // private PerhitunganShalat shalat; LocationManager locationManager; KuplukService updateService = null; Location location; PerhitunganShalat shalat; FormatWaktu subuh; FormatWaktu zuhur; FormatWaktu ashar; FormatWaktu maghrib; FormatWaktu isya; SharedPreferences sharedPreferences; @Override public void onCreate(Bundle savedInstanceState) { Intent svc = new Intent(this, KuplukService.class); stopService(svc); super.onCreate(savedInstanceState); setContentView(R.layout.main); NotificationManager mgr= (NotificationManager)getSystemService(NOTIFICATION_SERVICE); mgr.cancel(NOTIF_ID); // Mengambil text View di layout TextView waktuSubuh= (TextView) findViewById(R.id.label_subuh_jam); TextView waktuZuhur= (TextView) findViewById(R.id.label_zuhur_jam); TextView waktuAshar= (TextView) findViewById(R.id.label_ashar_jam); TextView waktuMaghrib= (TextView) findViewById(R.id.label_maghrib_jam); TextView waktuIsya= (TextView) findViewById(R.id.label_isya_jam); //inisialisasi tanggal sekarang final Calendar c= Calendar.getInstance(); hari=c.get(Calendar.DAY_OF_MONTH); bulan=c.get(Calendar.MONTH)+1; tahun=c.get(Calendar.YEAR); zonaWaktu=Variabel.getZonaWaktu(); //inisialisasi Lokasi locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //kriteria penggunaan lokasi
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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=locationManager.getLastKnownLocation(provider); /** * Untuk mengambil nilai metode yang telah ditentukan oleh user * @params metode merupakan tempenat menyimpan sementara */ metode=Pengaturan.getMetodePerhitungan(this); char a= metode.charAt(0); switch (a) { case '0':{ sudutSubuh=20; sudutIsya=18; }break; case '1':{ sudutSubuh=18; sudutIsya=18; } break; case '2':{ sudutSubuh=15; sudutIsya=15; }break; case '3':{ sudutSubuh=17; sudutIsya=18; }break; case '4':{ sudutSubuh=18; sudutIsya=(float) 18.5; }break; case '5':{ sudutSubuh=(float) 17.5; sudutIsya=(float) 19.5; }break; } /** * Untuk mengambil nilai mazhab yang sudah ditentukan oleh user */ String mzb = Pengaturan.getMazhab(this); char m = mzb.charAt(0); mazhab = m == '0'? 1 : 2 ; //Menghitung variabel // shalat = new PerhitunganShalat(-6.166666667, 106.85, 50, zonaWaktu, hari, bulan, tahun);
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
shalat= new PerhitunganShalat(location.getLatitude(), location.getLongitude(), location.getAltitude(), zonaWaktu, hari, bulan, tahun); shalat.setSudutSubuh(sudutSubuh); shalat.setSudutIsya(sudutIsya); shalat.setMazhab(mazhab); //Untuk mengkonfersi hasil perhitungan dalam format jam. FormatWaktu subuh=new FormatWaktu(shalat.getWaktuSubuh()); FormatWaktu zuhur= new FormatWaktu(shalat.getWaktuZuhur()); FormatWaktu ashar= new FormatWaktu(shalat.getWaktuAshar()); FormatWaktu maghrib=new FormatWaktu(shalat.getWaktuMaghrib()); FormatWaktu isya=new FormatWaktu(shalat.getWaktuIsya()); waktuIsya.setText(""+isya.getJam()+":"+isya.getMenit()+":"+isya.getDetik()); waktuMaghrib.setText(""+maghrib.getJam()+":"+maghrib.getMenit()+":"+maghrib.getDetik()); waktuSubuh.setText(""+subuh.getJam()+":"+subuh.getMenit()+":"+subuh.getDetik()); waktuZuhur.setText(""+zuhur.getJam()+":"+zuhur.getMenit()+":"+zuhur.getDetik()); waktuAshar.setText(""+ashar.getJam()+":"+ashar.getMenit()+":"+ashar.getDetik()); //untuk menyimpan waktu shalat agar dapat dipanggil di KuplukService SharedPreferences jadwal = getSharedPreferences(JADWAL, 0); SharedPreferences.Editor editor= jadwal.edit(); editor.clear(); editor.putInt("jSubuh", subuh.getJam()); editor.putInt("mSubuh", subuh.getMenit()); editor.putInt("jZuhur", zuhur.getJam()); editor.putInt("mZuhur", zuhur.getMenit()); editor.putInt("jAshar", ashar.getJam()); editor.putInt("mAshar", ashar.getMenit()); editor.putInt("jMaghrib", maghrib.getJam()); editor.putInt("mMaghrib",maghrib.getMenit()); editor.putInt("jIsya", isya.getJam()); editor.putInt("mIsya", isya.getMenit()); editor.commit(); //cek keluaran Log.d("kupluk", "sudut subuh: "+shalat.getSudutSubuh()); Log.d("kupluk", "sudut isya: "+shalat.getSudutIsya()); Log.d("kupluk", "metode: "+metode); Log.d("kupluk", "mazhab: "+mazhab); Log.d("kupluk", "zonawaktu: "+zonaWaktu); Log.d("kupluk", "Jd LOkasi: " + shalat.getJdLokasi()); Log.d("kupluk", "Delta: "+shalat.getDelta()); Log.d("kupluk", "ET: "+shalat.getET()); Log.d("k", "subuh= "+shalat.getWaktuSubuh()); Log.d("kupluk", "zuhur= "+shalat.getWaktuZuhur()); Log.d("kupluk", "Ashar= "+shalat.getWaktuAshar()); Log.d("kupluk", "maghrib= "+shalat.getWaktuMaghrib()); Log.d("k", "isya= "+shalat.getWaktuIsya()); // Inisiasi service startService(svc);
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
} @Override public void onResume(){ super.onResume(); metode=Pengaturan.getMetodePerhitungan(this); NotificationManager mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); mNM.cancel(KuplukService.NOTIF_ID); } //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.2. Pembuatan Tampilan Arah Kiblat
Tampilan Arah Kiblat dibuat dengan menggunakan kelas KiblatView
sebagai kostum komponen untuk penunjuk arah, yang selanjutnya akan digunakan
pada tampilan antarmuka Arah Kiblat. Dari tampilan antarmuka Arah Kiblat
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
diatur pergerakkan busur penunjuk arah melalui kelas Kiblat dengan menggunkan
sensor.
4.2.2.1. Pembuatan Kelas KiblatView
Demi memudahkan dalam membuat penunjuk arah kiblat yang dapat
menunjukkan arah secara benar dan real position 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){
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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;
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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
Tampilan antarmuka Arah Kiblat menggunakan kostum komponen
KiblatView. Komponen KiblatView diberi nama atribut pengenal yang
selanjutnya akan dipanggil pada kelas Kiblat. Adapun Kode programnya adalah
sebagai berikut:
<?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
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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
Kelas Kiblat merupakan kelas yang akan melakukan penunjukkan arah
kiblat sencara real position dengan menerima setiap perubahan sensor terhadap
posisi handphone yang selanjutnya akan dilakukan perhitungan terhadap arah
kiblat yang sesuai berdasarkan lokasi. Hasil perhitungan arah kiblat akan
diimplementasikan pada tampilan antarmuka Arah Kiblat. Adapun Kode
programnya adalah sebagai berikut:
package com.amiral.Kupluk;
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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();
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
* 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() {
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
return arahKiblat; } public void setArahKiblat( float arahKiblat) { this .arahKiblat = arahKiblat; } }
4.2.3. Pembuatan Tampilan Pengaturan
Tampilan pengaturan merupakan tampilan yang akan menyediakan pilihan
bagi user untuk melakukan perubahan terhadap beberapa ketentuan yang
diinginkan.
4.2.3.1. Pembuatan Tampilan Antarmuka Pengaturan
Tampilan antarmuka Pengaturan juga berbeda dibandingkan tampilan
lainnya, dikarenakan pada aplikasi Kupluk ini menggunakan tampilan antarmuka
pengaturan khusus yang disediakan oleh Android. Hal ini dilakukan guna
memudahkan dalam menampilkan setiap pilihan-pilihan pengaturan dan
memudahkan dalam penyimpanan setiap perubahan pengaturan tersebut. Adapun
kode programnya adalah sebagai berikut :
<?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"
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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> <ListPreference android:key= "pilihan_mode_pengingat" android:title= "@string/pengaturan_mode_pengingat" android:summary= "@string/pengaturan_mode_pengingat_ket" android:entries= "@array/daftar_mode_pengingat" android:entryValues= "@array/daftar_mode_pengingat_nilai" android:dialogTitle= "@string/pengaturan_mode_pengingat_judul" android:defaultValue= "0" > </ListPreference> </PreferenceCategory> </PreferenceScreen>
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
4.2.3.2. Pembuatan Kelas Pengaturan
Kelas Pengaturan berfungsi untuk mengambil nilai pilihan-pilihan
pengaturan yang diinginkan oleh pengguna. Dari kelas Pengaturan inilah nilai
yang tersimpan tersebut dapat digunakan oleh kelas Activity lainnya seperti kelas
KuplukMain dan KuplukService.Adapun kode programnya adalah sebagai
berikut:
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; private static final String PIL_MODE_PENGINGAT= "pilihan_mode_pengingat"; private static final String PIL_MODE_PENGINGAT_DEF="0"; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pengaturan); }
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
//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); } public static String getMode(Context context){ return PreferenceManager.getDefaultSharedPreferences(context) .getString(PIL_MODE_PENGINGAT, PIL_MODE_PENGINGAT_DEF); } //untuk mendeklarasikan Menu @Override public boolean onCreateOptionsMenu(Menu menu){ super.onCreateOptionsMenu(menu); MenuInflater inflater= getMenuInflater(); inflater.inflate(R.menu.menu, menu);
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
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
Berdasarkan perancangan, tampilan antarmuka Tentang akan ditampilkan
dengan format web. Sehingga dalam tampilan antarmuka Tentang berbeda dari
tampilan antarmuka lainnya yang berformat xml melainkan menggunakan format
HTML. Adapun kode antarmuka tentang adalah sebagai berikut:
<html>
<head>
<style type="text/css">
body{
background-color: #DDDDDD;
color: black;
}
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
</style>
</head>
<body>
<h2>Kupluk <img src="file:///Android_asset/icon.png" align="right"/></h2>
Kupluk adalah Aplikasi Pengingat Shalat dan Arah Kiblat. "Kupluk" merupakan istilah
di sebagian orang Jawa untuk nama lain peci, kopiah songkok atau kethu. Kupluk
digunakan sebagai penutup kepala, karena bentuknya yang simple sehingga sering
dipakai ketika shalat dan dianggap sebagai identitas muslim. Dengan semangat yang
sama, aplikasi ini bertujuan untuk memberitahukan jadwal shalat dan arah kiblat bagi
umat muslim.<br>
<h4>Fitur</h4>
<ul>
<li>Jadwal Waktu Shalat</li>
<li>Penunjuk Arah Kiblat</li>
<li>Pengingat waktu shalat</li>
<li>Pengaturan methode perhitungan dan Mazhab</li>
<li>Pengaturan suara azhan</li>
</ul>
<h4>Terima Kasih:</h4>
<ul>
<li>DR. Rito Anugraha atas metode perhitungan shalat dan arah kiblatnya.
</li>
<li><a href="http://echodock.blogspot.com/">Eko Anggit</a> Atas desain UI
nya. <br>
</li>
<li>Civitas Akademika Informatika ITI</a> atas dukungannya.<br>
</li>
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
</ul>
<h4>Informasi:</h4>
Pengembang: <a href="http://www.4miral.com">Muhammad Amiral</a><br>
Website: <a href="http://www.4miral.com/Kupluk">www.4miral.com/Kupluk</a><br>
Dukungan: <a href="mailto:[email protected]">e-mail ke saya</a><br>
</body>
</html>
4.2.4.2. Pembuatan Kelas Antarmuka Tentang
Kelas Tentang berfungsi untuk mengambil dan menyajikan tampilan
antarmuka Tentang. Adapun kode programnya adalah sebagai berikut:
package com.amiral.Kupluk; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import Android.app.Activity; import Android.content.Intent; import Android.content.res.Resources; import Android.os.Bundle; import Android.view.Menu; import Android.view.MenuInflater; import Android.view.MenuItem; import Android.webkit.WebView; public class Tentang extends Activity{ WebView webview; @Override public void onCreate(Bundle bundle){ super .onCreate(bundle); setContentView(R.layout. tentang ); webview = (WebView) findViewById(R.id. tentang_Kupluk ); String content = ambilResource (getResources(),R.raw. info ); String mimeType = "text/html"; String encoding = "UTF-8"; webview.loadDataWithBaseURL("file:///Android_asset", content, mimeType, encoding, null );
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
} public static String ambilResource(Resources resources, int resId) { InputStream rawResource = resources.openRawResource(resId); String content = ubahKeString (rawResource); try {rawResource.close();} catch (IOException e) {} return content; } private static String ubahKeString(InputStream in) { String l; BufferedReader r = new BufferedReader( new InputStreamReader(in)); StringBuilder s = new StringBuilder(); try { while ((l = r.readLine()) != null ) { s.append(l + "\n"); } } catch (IOException e) {} return s.toString(); } //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 ; }}
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
4.3. Pengujian
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 ini dilakukan pada proses
pengembangan.
Pengujian black box dilakukan dengan cara Acceptance Testing yaitu untuk
menguji apakah sistem yang dikembangkan sesuai dengan apa yang tertuang
dalam spesifikasi fungsional sistem. Berikut ini disajikan hasil implementasi
sistem:
Gambar 4.1 Antarmuka Jadwal Shalat
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 4.2 Antarmuka Menu Utama
Gambar 4.3 Antarmuka Arah Kiblat
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 4.4 Antarmuka Pengaturan
Gambar 4.5 Antarmuka Pengaturan Menu Utama
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 4.6 Antarmuka Pengaturan Mazhab
Gambar 4.7 Antarmuka Pengaturan Pengingat Waktu Shalat
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 4.8 Antarmuka Pengaturan Mode Pengingat
Gambar 4.9 Antarmuka Notifikasi Peringatan
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 4.10 Antarmuka Tentang
Gambar 4.11 Antarmuka Tentang (2)
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
4.3.1. Pengujian Black Box Fitur Jadwal Shalat
Pengujian ini dilakukan untuk memeriksa keabasahan waktu shalat yang
ditampilkan apakah sesuai dengan waktu sebenarnya dengan membandingkan
pada sumber yang terpercaya. Pada pengujian ini membandingkan jadwal shalat
pada Kupluk dengan jadwal shalat yang terdapat pada situs PKPU (Pos Keadilan
Peduli Umat) [15], dan Situs Rukyatul Hilal Indonesia [17] dengan lokasi
Tangerang, pada tanggal 16 Februari 2010.
Gambar 4.12 Jadwal Shalat Kupluk (16/02/2010)
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 4.13 Jadwal Shalat PKPU (16/02/2010)
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 4.14 Jadwal Shalat RHI Bulan Februari
Berdasarkan hasil pengujian di atas, didapatkan bahwa waktu shalat yang
ditampilkan pada Kupluk sangat mendekati jadwal shalat pada situs PKPU dan
hanya memiliki perbedaan dalam detik. Sementara pada jadwal shalat yang
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
tedapat pada situs RHI, jadwal shalat yang ditampilkan memiliki perbedaan waktu
beberapa menit. Perbedaan ini mungkin disebabkan dalam penentuan nilai
variabel koordinat Lintang, Bujur, dan Ketinggian lokasi suatu wilayah yang
berbeda.
4.3.2. Pengujian Black Box Arah Kiblat
Pengujian ini dilakukan untuk memeriksa apakah sudut arah kiblat sesuai
dengan derajat arah kiblat dan dapat ditampilkan secara real position berubah-
ubah jika posisi perangkat berubah. Pada pengujian sudut Arah Kiblat dilakukan
dengan membandingkan nilai sudut yang ditampilkan oleh aplikasi Kupluk
dengan nilai Arah Kiblat pada situs Rukyatul Hilal Indonesia [18] di kota
Tangerang.
Gambar 4.15 Arah Kiblat Kupluk
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 4.16 Arah Kiblat RHI
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 4.17 Perangkat diputar 90 o
Gambar 4.18 Perangkat diputar 180 o
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 4.19 Perangkat diputar 270 o
Gambar 4.20 Perangkat diputar 360 o
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Berdasarkan hasil pengujian yang ditampilkan pada gambar di atas. Sudut
arah kiblat yang tampil pada aplikasi Kupluk dan situs RHI memiliki kesamaan
nilai, dimana aplikasi Kupluk sebesar 295,19574 derajat dan situs RHI sebesar
295,19. Sehingga dapat disimpulkan nilai sudut arah kiblat aplikasi Kupluk
menampilkan nilai yang lebih akurat karena berdasarkan lokasi yang sebenarnya
yang diterima dari GPS. Dalam pengujian penunjuk arah kiblat secara real
position yang tampak pada gambar, yaitu dengan memutar perangkat sebesar 90o,
180 o, 270 o, dan 360 o ,busur panah tetap menunjukkan lokasi kiblat tanpa
terpengaruh perputaran perangkat.
4.4. Distribusi
Dalam memudahkan pengembang dan pengguna perangkat Android, Google
menyediakan toko software online bagi aplikasi-aplikasi Android yang diberi
nama Android Market. Dengan adanya aplikasi Android Market yang di instal
pada perangkat Android memungkinkan pengguna mencari dan men-download
aplikasi yang telah dikembangkan oleh Pengembang aplikasi Android.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
Gambar 4.21 Android Market
Hasil akhir dari aplikasi ini adalah file paket instalasi Android yaitu
Kupluk.apk. File ini dapat di distribusikan melalui layanan Android Market,
sehingga setiap pengguna Android dapat meng-instal langsung melalui market.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
BAB 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:
1. Aplikasi Pengingat Shalat dan Arah Kiblat (Kupluk) dapat dijadikan
alternatif acuan bagi umat muslim yang menggunakan perangkat Android
agar lebih mudah dalam melaksanakan ibadah shalat.
2. Pemanfaatan Teknologi juga dapat di terapkan dalam pelaksanaan ibadah
Shalat.
3. Pengembangan aplikasi pada Sistem Operasi Android harus senantiasa
memperhatikan siklus hidup aplikasi tersebut, walaupun diatur oleh virtual
machine sebagai proses foreground dan background.
4. Memanfaatkan tools yang tepat menjadikan pengembangan aplikasi
Android menjadi lebih mudah serta Aplikasi yang dikembangkan lebih
tangguh.
5. 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 penggunaan
perangkat berbasiskan sistem operasi Android.
BAB V
KESIMPULAN DAN SARAN
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
5.2. Saran
Saran yang dapat diberikan Penulis atas penelitian ini adalah sebagai
berikut:
1. Penggunaan fitur arah kiblat hendaknya digunakan tidak berdekatan
dengan benda yang memiliki medan magnetik.
2. Penambahan fitur pada aplikasi sangat disarankan, seperti tampilan widget
untuk memudahkan pengguna melihat jadwal shalat tanpa harus membuka
program.
3. Hingga saat ini Android terus mengalami perkembangan, hal ini di
imbangi dengan peningkatan kemampuan pada perangkat Android. Maka
diharapkan aplikasi ini dapat di-upgrade mengikuti versi selanjutnya,
sehingga dapat berjalan pada sistem operasi di atas 1.6.
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
DAFTAR PUSTAKA
Buku Teks:
[1] Dra. Neni Nuraeni M.Ag, 2008, Tuntunan Shalat Lengkap dan Benar,
Mutiara Media.
[2] Ed Burnette, 2009, Hello Android 2nd Edition, Pragmatic Bookshelf.
[3] Mark L. Murphy, 2009, Beginning Android, Apress Inc.
[4] Retto Meier, 2009, Professional Android Application Development, Wiley
Publising Inc.
[5] Sayed Y. Hashimi and Satya Komatineni, 2009, Pro Android, Apress Inc.
Karya Ilmiah:
[6] M. Arif Khairiansyah, 2006, Tugas Akhir Aplikasi Pengingat Sholat
Berbasis Windows Mobile, Teknik Informatika Institut Teknologi
Indonesia.
Situs Web:
[7] Android Developers, Android Documentation, Download 19 November
2009, http://developer.Android.com/guide/topics/data/data-storage.html
[8] Dr. Rinto Anugraha, Cara Menghitung Waktu Shalat, Download 21
Oktober 2009, http://www.eramuslim.com/syariah/ilmu-hisab/cara-
menghitung-waktu-shalat.htm
Laporan Tugas Akhir Muhammad Amiral Institut Teknologi Indonesia
[9] Dr. Rinto Anugraha, Segitiga Bola dan Arah Kiblat, Download 21
Oktober 2009, http://www.eramuslim.com/syariah/ilmu-hisab/segitiga-
bola-dan-arah-kiblat.htm
[10] Dr. Rinto Anugraha, Waktu-Waktu Shalat, Download 21 Oktober 2009,
http://www.eramuslim.com/syariah/ilmu-hisab/waktu-waktu-shalat.htm
[11] Google IO, Android Anatomy and Physiology, Download 26 Oktober
2009, http://sites.google.com/site/io/anatomy--physiology-of-an-Android
[12] Islamic Finder, Prayer Calculation Methods, Download 4 Januari 2010,
http://www.islamicfinder.org/HelpPrayCal.html
[13] Mutoha Arkanuddin, Menentukan Waktu Shalat, Download 15 Desember
2009, http://rukyatulhilal.org/waktu-shalat/index.html
[14] Nicolas Gramlich, Andbook : Android Programming, Download 10
Oktober 2009, http://andbook.anddev.org/
[15] Pos Keadilan Peduli Umat, Jadwal Shalat, Download 16 Februari 2010,
http://www.pkpu.or.id/adzan.lite.php?id=275
[16] Rukyatul Hilal Indonesia, Menentukan Arah Kiblat, Download 28
Desember 2009, http://rukyatulhilal.org/arah-kiblat/index.html
[17] Rukyatul Hilal Indonesia, Jadwal Shalat, Download 16 Februari 2010,
http://rukyatulhilal.org/jadwal-shalat/index.html
[18] Rukyatul Hilal Indonesia, Pencarian Arah Kiblat Presisi, Download 16
Februari 2010, http://rukyatulhilal.org/qiblalocator/index.html