Tugas Akhir - RC

136
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 diinstall aplikasi-aplikasi yang diperlukan oleh pengguna. Dengan adanya aplikasi pengingat shalat dan arah kiblat atau yang diberi nama kupluk, diharapkan umat muslim yang menggunakan perangkat handphone berbasiskan sistem operasi android dapat terbantu untuk tetap melaksanakan ibadah tepat waktu dan sesuai dengan arah kiblat yang benar. i

description

tugas akhir

Transcript of Tugas Akhir - RC

I

Laporan Tugas Akhir

Muhammad Amiral

Institut Teknologi Indonesia

ABTRAKSIIbadah shalat lima waktu merupakan kewajiban yang harus senantiasa dikerjakan oleh umat muslim, setiap hari. Melaksanakan sesuai dengan waktu-waktu yang telah ditentukan serta menghadap kearah kiblat merupakan keutamaan dalam menunaikan ibadah wajib ini. Tentunya dalam era modern ini umat muslim tidak boleh menjadikan kesibukannya sebagai alasan untuk melalaikan perintah shalat. Oleh karenanya umat muslim perlu disiplin dalam membagi waktu. Pemanfaatan perangkat Handphone sebagai pendamping dalam melaksanakan kegiatan sehari-hari sudah sangat lumrah bagi sebagian orang. Hal ini dikarenakan beberapa Handphone sudah memiliki fungsi dan kemampuan lebih dari sekedar fungsi dasarnya. Android sebagai sistem operasi yang dapat ditanamkan pada perangkat handphone memiliki kemampuan untuk dapat diinstall aplikasi-aplikasi yang diperlukan oleh pengguna. Dengan adanya aplikasi pengingat shalat dan arah kiblat atau yang diberi nama kupluk, diharapkan umat muslim yang menggunakan perangkat handphone berbasiskan sistem operasi android dapat terbantu untuk tetap melaksanakan ibadah tepat waktu dan sesuai dengan arah kiblat yang benar.Keywords: Android, Aplikasi Pengingat Shalat dan Arah Kiblat, KuplukKATA PENGANTAR

Pertama-tama penulis panjatkan puji syukur atas kehadiran Allah S.W.T karena atas rahmt dan karunianyalah akhirnya laporan tugas akhir ini dapat penulis selesaikan. Tak lupa pula salawat dan salam penulis panjatkan kepada Nabi akhir zaman Muhammad S.A.W, karena berkat perjuangannyalah karunia Iman dan Islam senantiasa menjadi inspirasi bagi penulis.

Adapun maksud penulisan Laporan Tugas Akhir ini adalah sebagai gambaran terhadap apa yang penulis kerjakan pada Tugas Akhir. Selain itu juga laporan ini sebagai syarat untuk pelaksanaan mata kuliah Tugas Akhir dalam menyelesaikan program studi strata satu (S-1) di Institut Teknologi Indonesia.

Oleh karenanya, pada kesempatan ini penulis ingin mengucapkan banyak terima kasih kepada:

1. Ibu Dra. Endang RD, M.Kom selaku Ketua Program Studi Teknik Informatika.

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

3. Para Dosen penguji Tugas Akhir, telah menguji Tugas Akhir penulis dan memberikan masukkan untuk perbaikan laporan Tugas Akhir penulis.

4. Seluruh DOSEN PROGRAM STUDI TEKNIK INFORMATIKA ITI, terima kasih untuk bimbingan dan pengajarannya. Semoga ilmu yang penulis terima kelak bermanfaat untuk penulis.

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

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 : 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 Mahad 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.

Penulis mendoakan untuk semua pihak untuk semua pihak yang telah membantu penulis mendapatkan imbalan yang setimpal dan senantiasa di berkahi ramat berlimpah dari Allah S.W.T. Amin.

Semoga dengan terselesaikannya Tugas Akhir dan Laporannya ini dapat memberikan manfaat bagi penulis khususnya dan para pembaca pada umumnya. Penulis menyadari bahwa Tugas Akhir dan Laporan ini masih jauh dari kesempurnaan. Mengingat terbatasnya pengetahuan dan kemampuan penulis. Oleh karenanya penulis memohon maaf dan selalu terbuka untuk menerima kritik dan saran dari pembaca.

Tangerang, Maret 2010

Penulis

DAFTAR ISIiABTRAKSI

iiKATA PENGANTAR

vDAFTAR ISI

viiDAFTAR GAMBAR

viiiDAFTAR TABEL

11.Pendahuluan

11.1.Latar Belakang

21.2.Rumusan Masalah

21.3.Tujuan

31.4.Manfaat

31.5.Batasan Masalah

41.6.Metode Penelitian

41.7.Sistematika Penulisan Laporan

62.Landasan Teori

62.1.Shalat

62.1.1.Pengertian Shalat

72.1.2.Waktu Shalat - Shalat Fardhu

112.1.3.Menghitung Waktu Shalat

162.2.Kiblat

162.2.1.Pengertian Kiblat

172.2.2.Menentukan Arah Kiblat

172.2.2.1.Koordinat Posisi Geografis

192.2.2.2.Ilmu Ukur Segitiga Bola

212.2.2.3.Rumus Segitiga Bola

232.3.Android

232.3.1.Pengertian Android

232.3.2.Sejarah dan Perkembangan Android

252.3.3.Anatomi Android

252.3.3.1.Linux Kernel

262.3.3.2.Libraries

272.3.3.3.Android Runtime

282.3.3.4.Application Framework

282.3.3.5.Application Layer

292.3.4.Komponen Aplikasi

302.3.4.1.Activities

322.3.4.2.Services

322.3.4.3.Intents

332.3.4.4.Broadcast Receivers

332.3.4.5.Content Providers

332.3.5.Tipe Aplikasi Android

342.3.6.Siklus Hidup Aplikasi Android

362.3.7.Kelebihan Android

383.Analisis dan Perancangan

383.1.Analisis Kebutuhan Kupluk

393.1.1.Analisis Fungsional

393.1.2.Performansi Kupluk

403.1.3.Use Case Diagram

423.1.4.Diagram Alir (Flowchart)

433.2.Perancangan Kupluk

443.2.1.Diagram Kelas

483.2.2.Perancangan Navigasi

493.2.3.Perancangan Antar Muka (Interface)

503.2.3.1.Perancangan Antar Muka Menu

513.2.3.2.Perancangan Antar Muka Jadwal Shalat

523.2.3.3.Perancangan Antar Muka Arah Kiblat

533.2.3.4.Perancangan Antar Muka Pengaturan

543.2.3.5.Perancangan Antar Muka Tentang

553.2.3.6.Perancangan Antar Muka Notifikasi

564.Implementasi

564.1.Spesifikasi Perangkat Keras dan Lunak

564.1.1.Spesifikasi Perangkat Keras

574.1.2.Spesifikasi Perangkat Lunak

594.2.Penulisan Kode Program (Codding)

594.2.1.Pembuatan Tampilan Utama

594.2.1.1.Pembuatan Tampilan Antarmuka Tampilan Utama

624.2.1.2.Pembuatan Kelas PerhitunganShalat

664.2.1.3.Pembuatan Kelas FormatWaktu

674.2.1.4.Pembuatan Kelas KuplukMain

724.2.2.Pembuatan Tampilan Arah Kiblat

724.2.2.1.Pembuatan Kelas KiblatView

754.2.2.2.Pembuatan Tampilan Antarmuka Arah Kiblat

764.2.2.3.Pembuatan Kelas Kiblat

794.2.3.Pembuatan Tampilan Pengaturan

794.2.3.1.Pembuatan Tampilan Antarmuka Pengaturan

814.2.3.2.Pembuatan Kelas Pengaturan

834.2.4.Pembuatan Tampilan Tentang

834.2.4.1.Pembuatan Tampilan Antarmuka Tentang

834.2.4.2.Pembuatan Kelas Antarmuka Tentang

834.3.Pengujian Kode

925.Kesimpulan dan Saran

925.1.Kesimpulan

935.2.Saran

93DAFTAR PUSTAKA

DAFTAR GAMBAR18Gambar 2.1 Pembagian Bumi berdasarkan Bujur dan Lintang

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

25Gambar 2.3 Detail Anatomi Android

36Gambar 2.4 Prioritas aplikasi berdasarkan activity

41Gambar 3.1 Diagram Use Case

43Gambar 3.2 Diagram Alir Sistem

44Gambar 3.3 Diagram Kelas

49Gambar 3.4 Struktur Navigasi

50Gambar 3.5 Desain Layar Tampilan Menu Utama

51Gambar 3.6 Desain Layar Tampilan Jadwal Shalat

52Gambar 3.7 Desain Layar Tampilan Arah Kiblat

53Gambar 3.8 Desain Layar Tampilan Pengaturan

84Gambar 4.1 Antarmuka Jadwal Shalat

85Gambar 4.2 Antarmuka Menu Utama

86Gambar 4.3 Antarmuka Arah Kiblat

87Gambar 4.4 Antarmuka Pengaturan

88Gambar 4.5 Antarmuka Pengaturan Metode Perhitungan

89Gambar 4.6 Antarmuka Pengaturan Mazhab

90Gambar 4.7 Antarmuka Pengaturan Pengingat Waktu Shalat

91Gambar 4.8 Antarmuka Notifikasi Peringatan

DAFTAR TABEL14Tabel 2.1 Altitude Matahari Saat Subuh dan Isya

45Tabel 3.1 Kelas, Atribut dan Method

1.1. Latar BelakangPerkembangan teknologi semakin pesat dan cepat, khususnya teknologi informasi dan komunikasi. Hal ini membuat manusia bagaikan tak terpisah oleh jarak ruang dan waktu. Dengan perkembangan teknologi yang kian maju, manusia dapat membuat berbagai macam peralatan sebagai alat bantu dalam menjalankan berbagai aktivitas untuk mendukung produktifitas.

Dengan segala aktifitas yang kian padat menjadikan sebagian orang memiliki tingkat mobilitas yang tinggi. Terkadang hal yang tidak menjadi prioritas namun suatu kewajiban terlalaikan. Salah satunya kewajiban ibadah shalat fardhu lima waktu bagi umat Muslim yang kadang terlambat, terabaikan bahkan terlupakan. Salah satu faktor penyebabnya adalah terbatasnya informasi atau peringatan ketika telah datang waktu shalat. Misalkan ketika seseorang berada di suatu tempat atau daerah yang suara azan tidak terjangkau dari masjid terdekat atau suatu lokasi yang baru, maka ketika waktu shalat tiba ada kemungkinan orang tersebut tidak tahu.

Seiring dengan tingkat mobilitas yang tinggi, beberapa tahun terakhir tengah marak perangkat bergerak atau mobile device. Salah satu perangkat mobile yang paling pesat adalah Handphone dimana hampir setiap orang memilikinya. Handphone yang sedianya sebagai alat komunikasi, saat ini sudah lebih dari fungsi dasarnya. Berbagai macam fitur telah ditanamkan, seperti pengolah gambar dan video, pengolah dokumen dan lain sebagainya. Hal ini tak lepas dari penggunaan Sistem Operasi pada Handphone. Layaknya pada komputer, Handphone pun dapat di-install berbagai macam aplikasi yang diinginkan.

Android sebagai Sistem Operasi berbasis linux yang dapat digunakan di berbagai perangkat mobile. Android memiliki tujuan utama untuk memajukan inovasi piranti telepon bergerak agar pengguna mampu mengeksplorasi kemampuan dan menambah pengalaman lebih dibandingkan dengan platform mobile lainnya. Hingga saat ini Android terus berkembang, baik secara sistem maupun aplikasinya.

1.2. Rumusan MasalahBerdasarkan 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. TujuanTujuan 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. ManfaatManfaat dari pengembangan Aplikasi Pengingat Shalat dan Arah Kiblat ini adalah:

1. Membantu umat muslim khususnya pengguna Android yang memiliki 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 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 qiblat 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.

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. Merancang dan Mengimplementasi

Merancang dan mengimplementasi Aplikasi yang akan dikembangkan agar sesuai dengan yang diharapkan.

1.7. Sistematika Penulisan Laporan

Secara garis besar materi laporan Tugas Akhir ini terbagi dalam beberapa bab yang tersusun sebagai berikut:BAB I

PENDAHULUAN

Bab ini berisikan latar belakang, rumusan masalah, tujuan dan manfaat, batasan masalahh, metodologi dan sistematika penulisan laporan.

BAB IILANDASAN TEORIBab ini menguraikan tentang teori yang berhubungan dengan judul tugas akhir, seperti penentuan waktu shala berserta perhitungannya, penentuan arah kiblat sesuai dengan lokasi berada, dan hal-hal terkait mengenai android.BAB IIIANALISIS DAN PERANCANGAN APLIKASI PENGINGAT SHALATBab ini menjelaskan mengenai analisa aplikasi pengingat shalat dan perancangan yang dilakukan untuk membangun aplikasi.BAB 4IMPLEMENTASI APLIKASI PENGINGAT SHALAT Pada bab ini menjelaskan bentuk implementasi aplikasi beserta pengujiannya.BAB VKESIMPULAN DAN SARANPada bagian ini dijelaskan mengenai kesimpulan dan saran guna memperbaiki kelemahan yang terdapat pada aplikasi tersebut.

2. Landasan Teori

2.1. Shalat

2.1.1. Pengertian Shalat

Shalat menurut bahasa berarti doa. Menurut Istilah ahli fiqih berarti: Perbuatan (gerak), dan perkataan yang dimulai dengan takbir dan diakhiri dengan salam dengan syarat-syarat tertentu. Shalat merupakan ibadah yang paling fundamental dalam Islam. Khususnya Shalat Fardhu lima kali sehari semalam yang tak boleh ditinggalkan. [Tuntunan Shalat lengkap dan benar, Dra. Neni Nuraeni, M.Ag, Mutiara Media]

Menurut syariat Islam, praktik shalat harus sesuai dengan segala petunjuk tata cara Rasulullah SAW sebagai figur penyampai perintah Allah. Nabi Muhammad telah memberikan peringatan keras kepada orang yang suka meninggalkan shalat, diantaranya beliau bersabda: Perjanjian yang memisahkan kita dengan mereka adalah Shalat. Barang siapa yang meninggalkan shalat, berarti dia telah kafir, Hadist riwayat Imam Ahmad dan Tirmidzi.

2.1.2. Waktu Shalat - Shalat Fardhu

Untuk pelaksanaan ibadah shalat, semuanya diatur dan tertuang dalam Kitab Suci Al-Qur'an dan Hadist Nabi Muhammad SAW. Mengenai waktu shalat fardhu nabi bersabda dalam sebuah hadist sebagai berikut:

Dari Jabir bin Abdullah meriwayatkan " Malaikat Jibril datang kepada Nabi SAW lalu berkata: "Marilah shalat". Lalu ia melakukan shalat zhuhur di waktu matahari telah condong (tergelincir). Kemudian Jibril datang kepada Nabi di waktu Asar lalu berkata: "Marilah shalat". Lalu ia shalat Asar di waktu bayangan tiap-tiap sesuatu jadi sama panjangnya dengan keadaan dirinya. Kemudian Jibril datang kepada Nabi S.A.W di waktu maghrib lalu berkata: "Marilah shalat" lalu ia shalat Maghrib di waktu matahari telah masuk (terbenam). Kemudian Jibril datang kepada Nabi S.A.W di waktu Isya lalu berkata: "Marilah shalat". Lalu ia shalat Isya lalu berkata; "Marilah shalat". Lalu ia shalat Isya di waktu telah hilang tanda merah di tempat matahari terbenam. Kemudian Jibril datang kepada Nabi S.A.W di waktu fajar lalu berkata: "Marilah shalat" Lalu ia shalat Fajar (subuh) di waktu fajar telah terbit. Kemudian Jibril datang kepada Nabi S.A.W pada esok harinya lagi di waktu zuhur lalu berkata: "Marilah shalat". Lalu ia shalat zuhur, di waktu bayangan tiap-tiap sesuatu itu jadi sama panjangnya dengan keadaan dirinya. Kemudian Jibril datang kepada Nabi S.A.W di waktu Asar lalu berkata: "Marilah shalat". Lalu ia shalat di waktu Asar, di waktu bayangan tiap-tiap sesuatu itu jadi dua kali panjang daripada dirinya. Kemudian Jibril datang kepada Nabi S.A.W di waktu maghrib yang sama waktunya dengan kemarin, lalu ia shalat maghrib. Kemudian jibril datang kepada Nabi S.A.W di waktu Isya, sehabis tengah malam, lalu berkata: "marilah shalat". Lalu ia shalat Isya. Kemudian Jibril datang kepada Nabi pada waktu telah terang cuaca (sebelum terbit matahari). Lalu berkata: "Marilah shalat". Lalu ia shalat fajar. Kemudian Jibril berkata: Antara dua waktu itulah waktu bagi tiap-tiap shalat." (Hadist Riwayat: Ahmad, Tirmidzi, Nasa'i, Ibnu Hibban dan Hakim)

Hadits di atas memberikan penjelasan mengenai awal dan akhir waktu shalat, yaitu berdasarkan pergerakkan matahari, baik di atas ufuk (horison) maupun dampak pergerakkan matahari di bawah ufuk. Efek pergerakkan matahari diantaranya adalah berubahnya panjang bayangan benda, terbit dan terbenamnya matahari, munculnya mega merah di waktu fajar dan berakhirnya mega merah di malam hari. [Dr. Rinto Anugraha, Eramuslim, 21 Oktober 2009. http://www.eramuslim.com/syariah/ilmu-hisab/waktu-waktu-shalat.htm]

Dapat diambil kesimpulan berdasarkan hadits Rasulullah mengenai waktu shalat adalah sebagai berikut:

1. Zhuhur

Waktu zhuhur dimulai saat pertengahan hari, yaitu ketika matahari melewati garis meridian (lingkaran besar langit yang menghubungkan utara dan selatan). Saat melewati garis meridian, ada tiga kemungkinan azimuth matahari (dihitung dari arah utara). Pertama, azimuth matahari = 0 derajat, yaitu ketika matahari melewati garis meridian, posisinya di belahan langit utara. Kedua, azimuth 180 derajat, ketika posisinya di belahan langit selatan. Ketiga, azimuthnya tidak dapat ditentukan, ketika posisinya benar-benar tepat di zenith (atas kepala) atau ketinggiannya tepat 90 derajat. Waktu zhuhur berakhir saat datangnya waktu shalat ashar.

2. Ashar

Berdasarkan hadits di atas, ada dua pendapat mengenai kapan datangnya waktu shalat ashar. Ini berkaitan dengan bayangan benda yang ditegakkan di atas tanah. Menurut mazhab Hanafi, waktu shalat Ashar adalah ketika panjang bayangan sama dengan dua kali tinggi benda (ditambah panjang bayangan saat Zhuhur). Panjang bayangan pada waktu Zhuhur yang merupakan panjang bayangan minimum ini perlu diperhitungkan, karena sangat mungkin panjang bayangan saat Zhuhur itu lebih panjang dari tinggi benda itu sendiri seperti tempat yang memiliki lintang tinggi. Jika bayangan saat Ashar = Sa, bayangan saat Zhuhur = Sz dan tinggi benda= h, maka secara sederhana dapat ditulis Sa = h + Sz menurut mazhab Syafi'i dan Sa = 2 * h + Sz menurut mazhab Hanafi. Untuk waktu Ashar berakhir saat datangnya waktu shalat maghrib.

3. Maghrib

Waktu shalat maghrib dimulai saat matahari terbenam (sunset). Ketika matahari terbenam dimana posisinya di bawah ufuk, langit tidak langsung gelap. Hal ini disebabkan adanya atmosfer bumi yang membiaskan cahaya matahari. Karena itu, matahari harus tenggelam hingga belasan derajat di bawah ufuk supaya tidak ada lagi cahaya matahari yang dapat dibiaskan sehingga langit menjadi gelap. Waktu shalat maghrib berakhir saat datangnya waktu shalat Isya'.

4. Isya'

Waktu shalat Isya' dimulai saat langit gelap, atau berakhirnya mega merah (astronomical twilight) di langit barat. Waktu Isya' berakhir saat datangnya waktu shubuh.

5. Shubuh

Waktu shubuh dimulai ketika munculnya fajar (shidiq) atau cahaya secara merata di langit timur. Meskipun saat itu matahari masih belasan derajat di bawah ufuk, namun akibat pembiasan atmosfer cahaya matahari dapat dibiaskan sehingga langit tidak lagi gelap. Beberapa catatan mengenai penentuan waktu Isya' dan Shubuh disajikan pada catatan di bawah. Waktu shubuh berakhir saat matahari terbit.

Sebelum manusia menemukan ilmu hisab/perhitungan falak/astronomi, pada zaman Rasulullah waktu shalat yang telah disebutkan ditentukan berdasarkan observasi terhadap gejala alam dengan melihat langsung matahari. Lalu berkembang dengan dibuatnya jam Surya atau Jam Matahari serta Jam Istiwa atau sering disebut Tongkat Istiwa dengan kaidah bayangan matahari.

2.1.3. Menghitung Waktu Shalat

Seiring dengan perkembangan ilmu pengetahuan para ahli astronomi berusaha membuat rumus waktu shalat berdasarkan konsep posisi matahari disuatu daerah, dengan melihat berdasarkan geografis dan ketinggian suatu tempat di permukaan bumi. Sehingga dengan adanya rumusan matematika ini dapat ditentukan posisi matahari tanpa harus melihat secara langsung dimana matahari berada. Untuk menentukan waktu lima shalat wajib di suatu tempat pada tanggal tertentu, ada beberapa parameter yang mesti diketahui:

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

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

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

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

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

JD = 1720994,5 + INT(365,25 * Y) + INT(30,6001(M + 1)) + B + D

Ket:

INT : Lambang nilai integer (bilangan bulat)

Jika M>2, maka M dan Y tidak berubah.

Jika M = 1 atau M = 2, maka M +12 dan Y dikurangi 1

B = 2 + INT (A/4) A; dimana A = INT (Y/100)

Nilai JD berlaku untuk pukul 12.00 UT atau saat tengah hari di Greenwich. Untuk JD yang digunakan dalam perhitungan yaitu JD lokasi tempat yang ingin ditentukan waktu shalat. Diperoleh dari JD pukul 12.00 UT waktu Greenwich dikurangi dengan Z/24, dimana Z adalah zona waktu lokal tersebut.

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

Delta = 0,37877 + 23,264 * sin(57,297 * T 79,547) + 0,3812 * sin(2 * 57,297 * T 82, 682) + 0,17132 * sin(3 * 57,297 * T 59,722)

Ket:

T adalah Sudut tanggal, dengan rumus, T = 2 * PI * (JD 2451545) / 365,25

7. Equation of Time (ET). Equation of Time untuk satu tanggal dapat dihitung, dengan rumus:

ET = (- (1789 + 237 * U) * sin(L0) (7146 62 * U) * cos(L0) + (9934 14 * U) * sin(2 * L0) (29 + 5 * U) * cos(2 * L0) + (74 + 10 * U) * sin(3 * L0) + (320 4 * U) * cos(3 * L0) 212 * sin(4 * L0))/1000

Ket:

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

U = (JD 2451545)/36525.

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

Tabel 2.1 Altitude Matahari Saat Subuh dan IsyaOrganisasiSudut SubuhSudut IsyaRegional

Indonesia20 derajat18 derajatIndonesia

Universitas Sience Islam, Karaci18 derajat18 derajatPakistan, Bangladessh, India, Afghanistan, sebaian Eropa

Amerika Utara15 derajat15 derajatSebagian Amerika Serikat, Kanada, Sebagian Inggris

Liga Muslim Dunia18 derajat17 derajatEropa, sebagian Amerika

Komite Umm Al-Qura18.5 derajatSemenanjung Arab

Mesir19.5 derajat17.5 derajatAfrika, 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. 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/60c. 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. Kiblat2.2.1. Pengertian KiblatKiblat berasal dari bahasa Arab Qiblah adalah arah yang merujuk ke suatu tempat dimana bangunan Ka'bah di Masjidil Haram, Makkah, Arab Saudi. Ka'bah juga sering disebut dengan Baitullah (Rumah Allah). Menghadap arah kiblat merupakan suatu masalah yang penting dalam syariat Islam. Menurut hukum syariat, menghadap ke arah kiblat diartikan sebagai seluruh tubuh atau badan seseorang menghadap ke arah Ka'bah yang terletak di Makkah yang merupakan pusat tumpuan umat Islam bagi menyempurnakan ibadah-ibadah tertentu.

Pada awalnya, kiblat mengarah ke Baitul Maqdis atau Masjidil Aqsa Jerusalem di Palestina, namun pada tahun 624 M ketika Nabi Muhammad SAW hijrah ke Madinah, arah Kiblat berpindah ke arah Ka'bah di Makkah hingga kini atas petunjuk wahyu dari Allah SWT. Menghadap ke arah kiblat menjadi syarat sah bagi umat Islam yang hendak menunaikan shalat baik shalat fardhu lima waktu sehari semalam atau shalat-shalat sunat yang lain. Kaidah dalam menentukan arah kiblat memerlukan suatu ilmu khusus yang harus dipelajari atau sekurang-kurangnya meyakini arah yang dibenarkan sesuai dengan syariat. [http://rukyatulhilal.org/]2.2.2. Menentukan Arah Kiblat

2.2.2.1. Koordinat Posisi Geografis

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

Setiap titik di permukaan bumi dapat dinyatakan dalam duat koordinat, yaitu bujur (longitude) dan lintang (latitude). Semua titik yang memiliki bujur nol terletak pada garis meridian Greenwich (setengah lingkaran besar yang menghubungkan kutub utara dan selatan dan melewati Greenwich). Sementara itu semua titik yang memiliki lintang nol terletak pada garis ekuator (khatulistiwa). Bujur timur terletak di sebelah timur Greenwich, sedangkan bujur barat terletak di sebelah barat Greenwich. Sesuai kesepakatan umum, bujur timur bernilai positif, sedangkan bujur barat bernilai negatif. Sementara itu semua titik yang terletak di sebelah utara ekuator disebut lintang utara, demikian juga untuk titik di selatan ekuator disebut lintang selatan. Lintang utara bernilai positif, sedangkan lintang selatan bernilai negatif. [Dr. Rinto Anugraha, SEGITIGA BOLA DAN ARAH KIBLAT, 13/04/09]

Gambar 2.1 Pembagian Bumi berdasarkan Bujur dan Lintang2.2.2.2. Ilmu Ukur Segitiga Bola

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

Sebagaimana yang sudah disepakati secara umum bahwa yang disebut arah adalah jarak terpendek berupa garis lurus ke suatu tempat, sehingga Kiblat juga menunjukkan arah terpendek dari suatu lokasi ke Ka'bah. Karena bentuk bumi yang bulat, jarak ini membentuk busur besar sepanjang permukaan bumi. Lokasi Ka'bah berdasarkan pengukuran menggunakan Global Positioning System (GPS) maupun menggunakan software Google Earth secara astronomi berada di 21 25' 21.04 Lintang Utara dan 39 50' 34.04.

Perhitungan dan pengukuran arah qiblat dilakukan dengan derajat sudut dari titik kutub Utara, dengan menggunakan alat bantu mesin hitung atau kalkulator. Adapun untuk menghitung arah kiblat, ada 3 buah variabel yang diperlukan, yaitu:

1. Lokasi Ka'bah (Mekah)

2. Lokasi yang akan ditentukan arah kiblatnya.

3. Kutub utara

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

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

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

cos(b) = cos(a) cos(c) + sin(a) sin(c) cos(B)

cos(c) = cos(a) cos(b) + sin(a) sin(b) cos (C)

EMBED Equation.3 Dengan menggabungkan ketiga rumus di atas, diperoleh rumus sebagai berikut:

Sesuai yang telah ditetapkan sebelumnya, C = Ba Bb, a = 90 Lb, b = 90 La, serta mengingat cos (90 x) = sin(x), sin (90 x) = cos(x) dan cot (90 x) = tan(x), maka rumus diatas menjadi:

Sehingga sudut B adalah:

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

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

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

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

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

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

2.3.1. Pengertian AndroidAndroid adalah kumpulan perangkat lunak yang ditujukan bagi perangkat bergerak mencakup sistem operasi, middleware, dan aplikasi kunci. Android Standart Development Kid (SDK) menyediakan perlengkapan dan Application Programming Interface (API) yang diperlukan untuk mengembangkan aplikasi pada platform Android menggunakan bahasa pemrograman Java.[developer.android.com]Android dikembangkan oleh Google bersama Open Handset Allience (OHA) yaitu aliansi perangkat selular terbuka yang terdiri dari 47 perusahaan Hardware, Software dan perusahaan telekomunikasi ditujukan untuk mengembangkan standar terbuka bagi perangkat selular. 2.3.2. Sejarah dan Perkembangan Android

Pada mulanya terdapat berbagai macam sistem operasi pada perangkat selular, diantaranya sistem operasi Symbian, Microsoft Windsos Mobile, Mobile Linux, iPhone, dan sistem operasi lainnya. Namun diantara sistem operasi yang ada belum mendukung standar dan penerbitan API yang dapat dimanfaatkan secara keseluruhan dan dengan biaya yang murah. Kemudian Google ikut berkecimpung didalamnya dengan platform Android, yang menjanjikan keterbukaan, keterjangkauan, open source, dan framework berkualitas.Pada tahun 2005, Google mengakuisisi perusahaan Android Inc. untuk memulai pengembangan platform android. Dimana terlibat dalam pengembangan ini Andy Rubin, Rich Miner, Nick Sears, dan Chris White. Pada pertengahan 2007 sekelompok pemimpin industri bersama-sama membentuk aliansi perangkat selular terbuka, Open Handset Alliance (OHA). Bagian dari tujuan aliansi ini adalah berinovasi dengan cepat dan menanggapi kebutuhan konsumen dengan lebih baik, dengan produk awalnya adalah platform Android. Dimana Android dirancang untuk melayani kebutuhan operator telekomunikasi, manufaktur handset, dan pengembang aplikasi. OHA berkomitmen untuk membuat android open source dengan lisensi Apache versi 2.0. [Sayed Y. Hashimi and Satya Komatineni, Pro Android, Apress, USA 2009]Android pertama kali diluncurkan pada 5 November 2007, dan smartphone pertama yang menggunakan sistem operasi android dikeluarkan oleh T-Mobile dengan sebutan G1 pada bulan September 2008. Hingga saat ini android telah merilis beberapa versi android untuk menyempurnakan versi sebelumnya. Selain berdasarkan penomoran, pada setiap versi android terdapat kode nama berdasarkan nama-nama kue. Hingga saat ini sudah terdapat beberapa versi yang telah diluncurkan, diantaranya: versi 1.5 dirilis pada 30 April 2009 diberi nama Cupcake, versi 1.6 dirilis pada 15 September 2009 diberi nama Donut, dan versi terakhir 2.0 dirilis pada 26 Oktober 2009 diberi nama clair.2.3.3. Anatomi Android

Dalam paket sistem operasi android tediri dari beberapa unsur seperti tampak pada gambar 2.3. Secara sederhana arsitektur android merupakan sebuah kernel Linux dan sekumpulan pustaka C / C++ dalam suatu framework yang menyediakan dan mengatur alur proses aplikasi.[Google IO, Android Anatomy and Physiology]

Gambar 2.3 Detail Anatomi Android2.3.3.1. Linux KernelAndroid dibangun di atas kernel Linux 2.6. Namun secara keseluruhan android bukanlah linux, karena dalam android tidak terdapat paket standar yang dimiliki oleh linux lainnya. Linux merupakan sistem operasi terbuka yang handal dalam manajemen memori dan proses. Oleh karenanya pada android hanya terdapat beberapa servis yang diperlukan seperti keamanan, manajemen memori, manajemen proses, jaringan dan driver. Kernel linux menyediakan driver layar, kamera, keypad, WiFi, Flash Memory, audio, dan IPC (Interprocess Communication) untuk mengatur aplikasi dan lubang keamanan.

2.3.3.2. Libraries

Android menggunakan beberapa paket pustaka yang terdapat pada C/C++ dengan standar Berkeley Software Distribution (BSD) hanya setengah dari yang aslinya untuk tertanam pada kernel Linux. Beberapa pustaka diantaranya: Media Library untuk memutar dan merekam berbagai macam format audio dan video. Surface Manager untuk mengatur hak akses layer dari berbagai aplikasi. Graphic Library termasuk didalamnya SGL dan OpenGL, untuk tampilan 2D dan 3D. SQLite untuk mengatur relasi database yang digunakan pada aplikasi. SSl dan WebKit untuk browser dan keamanan internet.Pustaka-pustaka tersebut bukanlah aplikasi yang berjalan sendiri, namun hanya dapat digunakan oleh program yang berada di level atasnya. Sejak versi Android 1.5, pengembang dapat membuat dan menggunakan pustaka sendiri menggunakan Native Development Toolkit (NDK).2.3.3.3. Android RuntimePada android tertanam paket pustaka inti yang menyediakan sebagian besar fungsi android. Inilah yang membedakan Android dibandingkan dengan sistem operasi lain yang juga mengimplementasikan Linux. Android Runtime merupakan mesin virtual yang membuat aplikasi android menjadi lebih tangguh dengan paket pustaka yang telah ada. Dalam Android Runtime terdapat 2 bagian utama, diantaranya: Pustaka Inti, android dikembangkan melalui bahasa pemrograman Java, tapi Android Runtime bukanlah mesin virtual Java. Pustaka inti android menyediakan hampir semua fungsi yang terdapat pada pustaka Java serta beberapa pustaka khusus android.

Mesin Virtual Dalvik, Dalvik merupakan sebuah mesin virtual yang dikembangkan oleh Dan Bornstein yang terinspirasi dari nama sebuah perkampungan yang berada di Iceland. Dalvik hanyalah interpreter mesin virtual yang mengeksekusi file dalam format Dalvik Executable (*.dex). Dengan format ini Dalvik akan mengoptimalkan efisiensi penyimpanan dan pengalamatan memori pada file yang dieksekusi. Dalvik berjalan di atas kernel Linux 2.6, dengan fungsi dasar seperti threading dan manajemen memori yang terbatas. [Nicolas Gramlich, Andbook, anddev.org]2.3.3.4. Application Framework

Kerangka aplikasi menyediakan kelas-kelas yang dapat digunakan untuk mengembangkan aplikasi android. Selain itu, juga menyediakan abstraksi generik untuk mengakses perangkat, serta mengatur tampilan user interface dan sumber daya aplikasi. Bagian terpenting dalam kerangka aplikasi android adalah sebagai berikut [Hello Android 2nd Edition]:1. Activity Manager, berfungsi untuk mengontrol siklus hidup aplikasi dan menjaga keadaan Backstack untuk navigasi penggunaan.

2. Content Providers, berfungsi untuk merangkum data yang memungkinkan digunakan oleh aplikasi lainnya, seperti daftar nama.3. Resuource Manager, untuk mengatur sumber daya yang ada dalam program. Serta menyediakan akses sumber daya diluar kode program, seperti karakter, grafik, dan file layout.4. Location Manager, berfungsi untuk memberikan informasi detail mengenai lokasi perangkat android berada.5. Notification Manager, mencakup berbagai macam peringatan seperti, pesan masuk, janji, dan lain sebagainya yang akan ditampilkan pada status bar.2.3.3.5. Application Layer

Puncak dari diagram arsitektur android adalah lapisan aplikasi dan widget. Lapisan aplikasi merupakan lapisan yang paling tampak pada pengguna ketika menjalankan program. Pengguna hanya akan melihat program ketika digunakan tanpa mengetahui proses yang terjadi dibalik lapisan aplikasi. Lapisan ini berjalan dalam Android runtime dengan menggunakan kelas dan service yang tersedia pada framework aplikasi.Lapisan aplikasi android sangat berbeda dibandingkan dengan sistem operasi lainnya. Pada android semua aplikasi, baik aplikasi inti (native) maupun aplikasi pihak ketiga berjalan diatas lapisan aplikasi dengan menggunakan pustaka API (Application Programming Interface) yang sama.2.3.4. Komponen Aplikasi

Fitur penting android adalah bahwa satu aplikasi dapat menggunakan elemen dari aplikasi lain (untuk aplikasi yang memungkinkan). Sebagai contoh, sebuah aplikasi memerlukan fitur scroller dan aplikasi lain telah mengembangkan fitur scroller yang baik dan memungkinkan aplikasi lain menggunakannya. Maka pengembang tidak perlu lagi mengembangkan hal serupa untuk aplikasinya, cukup menggunakan scroller yang telah ada [developer.android.com].Agar fitur tersebut dapat bekerja, sistem harus dapat menjalankan aplikasi ketika setiap bagian aplikasi itu dibutuhkan, dan pemanggilan objek java untuk bagian itu. Oleh karenanya android berbeda dari sistem-sistem lain, Android tidak memiliki satu tampilan utama program seperti fungsi main() pada aplikasi lain. Sebaliknya, aplikasi memiliki komponen penting yang memungkinkan sistem untuk memanggil dan menjalankan ketika dibutuhkan.2.3.4.1. Activities

Activity merupakan bagian yang paling penting dalam sebuah aplikasi, karena Activity menyajikan tampilan visual program yang sedang digunakan oleh pengguna. Setiap Activity dideklarasikan dalam sebuah kelas yang bertugas untuk menampilkan antarmuka pengguna yang terdiri dari Views dan respon terhadap Event. Setiap aplikasi memiliki sebuah activity atau lebih. Biasanya pasti akan ada activity yang pertama kali tampil ketika aplikasi dijalankan. Perpindahan antara activity dengan activity lainnya diatur melalui sistem, dengan memanfaatkan activity stack. Keadaan suatu activity ditentukan oleh posisinya dalam tumpukan acitivity, LIFO (Last In First Out) dari semua aplikasi yang sedang berjalan. Bila suatu activity baru dimulai, activity yang sebelumnya digunakan maka akan dipindahkan ketumpukan paling atas. Jika pengguna ingin menggunakan activity sebelumnya, cukup menekan tombol Back, atau menutup activity yang sedang digunakan, maka activity yang berada diatas akan aktif kembali. Memory Manager android menggunakan tumpukkan ini untuk menentukan prioritas aplikasi berdasarkan activity, memutuskan untuk mengakhiri suatu aplikasi dan mengambil sumber daya dari aplikasi tersebut.Ketika activity diambil dan disimpan dalam tumpukkan activity terdapat 4 kemungkinan kondisi transisi yang akan terjadi [Reto Meier, Profesional Android Application Development, Wiley Publishing, Canada, 2009]:

1) Active, setiap activity yang berada ditumpukan paling atas, maka dia akan terlihat, terfokus, dan menerima masukkan dari pengguna. Android akan berusaha untuk membuat activity aplikasi ini untuk untuk tetap hidup dengan segala cara, bahkan akan menghentikan activity yang berada dibawah tumpukkannya jika diperlukan. Ketika activity sedang aktif, maka yang lainnya akan dihentikan sementara.2) Paused, dalam beberapa kasus activity akan terlihat tapi tidak terfokus pada kondisi inilah disebut paused. Keadaan ini terjadi jika activity transparan dan tidak fullscreen pada layar. Ketika activity dalam keadaan paused, dia terlihat active namun tidak dapat menerima masukkan dari pengguna. Dalam kasus ekstrim, android akan menghentikan activity dalam keadaan paused ini, untuk menunjang sumber daya bagi activity yang sedang aktif.3) Stopped, ketika sebuah activity tidak terlihat, maka itulah yang disebut stopped. Activity akan tetap berada dalam memori dengan semua keadaan dan informasi yang ada. Namun akan menjadi kandidat utama untuk dieksekusi oleh sistem ketika membutuhkan sumberdaya lebih. Oleh karenanya ketika suatu activity dalam kondisi stopped maka perlu disimpan data dan kondisi antarmuka saat itu. Karena ketika activity telah keluar atau ditutup, maka dia akan menjadi inactive.4) Inactive, kondisi ketika activity telah dihentikan dan sebelum dijalankan. Inactive activity telah ditiadakan dari tumpukan activity sehingga perlu restart ulang agar dapat tampil dan digunakan kembali.Kondisi transisi ini sepenuhnya ditangani oleh manajer memori android. Android akan memulai menutup aplikasi yang mengandung activity inactive, kemudian stopped activity, dan dalam kasus luar biasa paused activity juga akan di tutup.2.3.4.2. Services

Suatu service tidak memiliki tampilan antarmuka, melainkan berjalan di background untuk waktu yang tidak terbatas. Komponen service diproses tidak terlihat, memperbarui sumber data dan menampilkan notifikasi. Service digunakan untuk melakukan pengolahan data yang perlu terus diproses, bahkan ketika Activity tidak aktif atau tidak tampak.2.3.4.3. Intents

Intens merupakan sebuah mekanisme untuk menggambarkan tindakan tertentu, seperti memilih foto, menampilkan halaman web, dan lain sebagainya. Intents tidak selalu dimulai dengan menjalankan aplikasi, namun juga digunakan oleh sistem untuk memberitahukan ke aplikasi bila terjadi suatu hal, misal pesan masuk. Intents dapat eksplisit atau implisit, contohnya jika suatu aplikasi ingin menampilkan URL, sistem akan menentukan komponen apa yang dibutuhkan oleh Intents tersebut.2.3.4.4. Broadcast Receivers

Broadcast Receivers merupakan komponen yang sebenarnya tidak melakukan apa-apa kecuali menerima dan bereaksi menyampaikan pemberitahuan. Sebagian besar Broadcast berasal dari sistem misalnya, Batre sudah hampir habis, informasi zona waktu telah berubah, atau pengguna telah merubah bahasa default pada perangkat. Sama halnya dengan service, Broadcast Receivers tidak menampilkan antarmuka pengguna. Namun, Broadcast Receivers dapat menggunakan Notification Manager untuk memberitahukan sesuatu kepada pengguna.2.3.4.5. Content Providers

Content Providers digunakan untuk mengelola dan berbagi database. Data dapat disimpan dalam file sistem, dalam database SQLite, atau dengan cara lain yang pada prinsipnya sama. Dengan adanya Content Provider memungkinkan antar aplikasi untuk saling berbagi data. Komponen ini sangat berguna ketika sebuah aplikasi membutuhkan data dari aplikasi lain, sehingga mudah dalam penerapannya.2.3.5. Tipe Aplikasi Android

Terdapat tiga kategori aplikasi pada android [Reto Meier, Profesional Android Application Development, Wiley Publishing, Canada, 2009]:1. Foreground ActivityAplikasi yang hanya dapat dijalankan jika tampil pada layar dan tetap efektif walaupun tidak terlihat. Aplikasi dengan tipe ini pasti mempertimbangkan siklus hidup activity, sehingga perpindahan antar activity dapat berlangsung dengan lancar. 2. Background ServiceAplikasi 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 ActivityAplikasi yang masih membutuhkan beberapa masukkan dari pengguna, namun sebagian sangat efektif jika dijalankan di background dan jika diperlukan akan memberi tahu pengguna tentang kondisi tertentu. Contohnya pemutar musik.Untuk aplikasi yang kompleks akan sulit untuk menentukan kategori aplikasi tersebut apalagi aplikasi memiliki ciri-ciri dari semua kategori. Oleh karenanya perlu pertimbangan bagaimana aplikasi tersebut digunakan dan menentukan kategori aplikasi yang sesuai.2.3.6. Siklus Hidup Aplikasi Android

Siklus hidup aplikasi android dikelola oleh sistem, berdasarkan kebutuhan pengguna, sumberdaya yang tersedia, dan sebagainya. Misalnya Pengguna ingin menjalankan browser web, pada akhirnya sistem yang akan menentukan menjalankan aplikasi. Sistem sangat berperan dalam menentukan apakah aplikasi dijalankan, dihentikan sementara, atau dihentikan sama sekali. Jika pengguna ketika itu sedang menjalankan sebuah Activity, maka sistem akan memberikan perioritas utama untuk aplikasi yang tersebut. Sebaliknya, jika suatu Activity tidak terlihat dan sistem membutuhkan sumber daya yang lebih, maka Activity yang prioritas rendah akan ditutup. [Sayed . Y. Hashimi and Satya Komatineni, Pro Android, Apress, USA 2009]Android menjalankan setiap aplikasi dalam proses secara terpisah, yang masing-masing memliki mesin virtual pengolah sendiri, dengan ini melindungi penggunaan memori pada aplikasi. Selain itu juga android dapat mengontrol aplikasi mana yang layak menjadi prioritas utama. Karenanya android sangat sensitive dengan siklus hidup aplikasi dan komponen-komponennya. Perlu adanya penanganan terhadap setiap kondisi agar aplikasi menjadi stabil. Gambar 2.4 menunjukkan prioritas dari aplikasi.

Gambar 2.4 Prioritas aplikasi berdasarkan activity2.3.7. Kelebihan Android

Sudah banyak platform untuk perangkat selular saat ini, termasuk didalamnya Symbian, iPhone, Windows Mobile, BlackBerry, Java Mobile Edition, Linux Mobile (LiM0), dan banyak lagi. Namun ada beberapa hal yang menjadi kelebihan Android. Walaupun beberapa fitur-fitur yang ada telah muncul sebelumnya pada platform lain, Android adalah yang pertama menggabungkan hal seperti berikut [Ed Burnette, Hello Android 2nd Edition, usa 2009]: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 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.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 FungsionalAnalisis fungsional merupakan paparan mengenai fitur-fitur yang akan dimasukkan ke dalam Kupluk. Fitur-fitur tersebut antara lain sebagai berikut:

1. Mampu menampilkan jadwal waktu shalat yang sesuai dengan lokasi dimana pengguna berada.

2. Mampu menampilkan arah kiblat secara otomatis dan realtime berdasarkan posisi pengguna dengan bantuan acelometer.3. Terdapat pilihan pengaturan metode perhitungan waktu shalat sesuai yang diinginkan pengguna.

4. Terdapat dua pilihan pengaturan penentuan waktu shalat Ashar berdasarkan mazhab yang dianut pengguna.5. Terdapat pilihan pengaturan reminder yang berfungsi untuk mengingatkan waktu shalat.3.1.2. Performansi Kupluk

Kupluk merupakan aplikasi yang berjalan di lingkungan sistem operasi android. Terdapat beberapa keterbatasan yang ditemui pada perangkat berbasiskan android. Sehingga perlu diperhatikan guna menjadi acuan dalam pengembangan Kupluk, diantaranya:

Sumber daya memori yang terbatas, hingga saat ini perangkat android yang banyak beredar memiliki kapasistas memori terbatas. Adapun yang tertinggi saat ini 512 Mb. Sumber daya baterai yang secara efektif hanya mampu bertahan selama kurang lebih 6 jam, dengan penggunaan secara terus-menerus dan kurang lebih 200 jam dalam keadaan standby.

Tampilan antar muka aplikasi sangat berpengaruh terhadap waktu tunggu hingga aplikasi benar-benar siap digunakan, semakin banyak komponen yang digunakan akan semakin lama pula waktu tunggu yang dibutuhkan.Dari keterbatasan-keterbatasan pada perangkat, maka diusulkan beberapa alternatif untuk meningkatkan performa aplikasi dengan keterbatasan yang ada, diantaranya:

a. Merancang aplikasi dengan penggunaan memori seefektif mungkin, sehingga tidak menganggu siklus operasi android dan aplikasi lain.

b. Merancang aplikasi dengan pemanfaatan sumber daya seefisien mungkin namun tidak mengurangi fungsi dan performa aplikasi.c. Merancang aplikasi dengan antar muka yang sederhana namun tetap menarik dan ramah bagi pengguna.3.1.3. Use Case DiagramUse 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.

Gambar 3.1 Diagram Use CasePada diagram di atas terdiri dari 2 aktor dan 4 use case. Di dalam diagram ini terdapat sebuah extend yang digunakan untuk menunjukkan bahwa satu use case merupakan tambahan fungsional dari use case lain jika kondisi tertentu terpenuhi. Alur ini dimulai dari ketika user memulai menjalankan program Kupluk, GPS akan menyampaikan informasi mengenai nilai altitude, longitude, dan alitude lokasi perangkat saat itu. Dari informasi inilah akan diolah oleh aplikasi sehingga menampilkan jadwal shalat kepada user saat itu. Ketika pengguna melakukan pengaturan untuk pengingat waktu shalat, maka aplikasi akan secara otomatis memberikan penanda berupa alarm atau pemberitahuan ketika waktu shalat telah tiba. Ketika pengguna menjalankan use case arah kiblat, maka GPS memberikan informasi kepada sistem tentang nilai latitude dan longitude user berada. Dari data ini akan diolah aplikasi yang selanjutnya dengan bantuan sensor dari acelometer, aplikasi menunjukkan arah kiblat yang sesuai dengan lokasi user.3.1.4. Diagram Alir (Flowchart)

Diagram Alir atau Flowchart merupakan serangkaian bagan-bagan yang menggambarkan alir program. Pada diagram alir ini digambarkan urutan prosedur dalam program Kupluk.

Gambar 3.2 Diagram Alir Sistem3.2. Perancangan KuplukPerancangan dilakukan untuk menggambarkan, merencanakan, dan membuat sketsa atau pengaturan dari beberapa elemen yang terpisah ke dalam satu kesatuan yang utuh dan berfungsi. Perancangan ini merupakan hasil transformasi dari analisa ke dalam perancangan yang nantinya akan di implementasikan.

Hal penting yang menjadi perhatian pada perancangan adalah bahwa rancangan yang dibuat diharapkan dapat digunakan dengan mudah oleh semua user. Yang dimaksud semua user adalah bahwa tidak hanya seorang ahli saja yang dapat menggunakan aplikasi ini, namun orang awam pun dapat menggunakannya. Selain itu beberapa hal yang harus diperhatikan antara lain adalah kinerja program yang baik dalam mengoperasikan aplikasi yang dibuat.

3.2.1. Diagram Kelas

Diagram kelas merupakan diagram struktural yang memodelkan sekumpulan kelas, interface, kolaborasi dan relasinya. Diagram kelas digambarkan dengan kotak, yang pada dasarnya terbagi atas tiga bagian yaitu, Nama Kelas, Atribut, dan Operasi. Diagram kelas digunakan untuk menggambarkan proses statik dari aplikasi Kupluk.

Gambar 3.3 Diagram KelasTabel 3.1 Kelas, Atribut dan MethodNONama ClassAtributMethod

1Kupluk Main- tahun: int

- bulan : int

- hari : int

- zonaWaktu: float

- lokasi: LocationManger

- metod: String

- mazhab : int

- sudutIsya : int

- sudutSubuh: int

- shalat: PerhitunganShalat

- service: KuplukService- onCreate()

- onResume()

- onCreateOptionMenu()

- onOptionItemSelected()

2Kiblat- 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()

3Tentang- webView : WebView- onCreate()

- ambilResource()

- ubahKeString()

- onCreateOptionMenu()

- onOptionItemSelected()

4Pengaturana. PIL_SUBUH: String

b. PIL_SUBUH_DEF: boolean

c. PIL_ZUHUR : String

d. PIL_ZUHUR_DEF : boolean

e. PIL_ASHAR : String

f. PIL_ASHAR_DEF : boolean

g. PIL_MAGHRIB : String

h. PIL_MAGHRIB_DEF : boolean

i. PIL_ISYA : String

j. PIL_ISYA_DEF : boolean

k. PIL_METODE_PERHITUNGAN : String

l. PIL_METODE_PERHITUNGAN_DEF : String

m. PIL_MAZHAB : String

n. PIL_MAZHAB_DEF : String- onCreate()

- getSetSubuh()

- getSetZuhur()

- getSetAshar()

- getSetMaghrib()

- getSetIsya()

- getSetMetodePerhitungan()

- getSetMazhab()

- onCreateOptionMenu()

- onOptionItemSelected()

5PerhitunganShalat- 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()

- setMazhab()

- getMazhab()

- getWaktuSubuh()

- getWaktuZuhur()

- getWaktuAshar()

- getWaktuMaghrib()

- getWaktuIsya()

6KiblatView- busur: float

- lebar: int

- tinggi: int

- gambarLingkarang: Paint

- penandaGambar : Paint

- paintText : Paint- KiblatView()

- initKiblatView()

- onMesuare()

- onDraw()

- setBusur()

- getBusur()

7FormatWaktu- jam : int

- menit : int

- detik : int- FormatWaktu()

- getJam

- setJam()

- setMenit()

- getMenit()

- setDetik()

- getDetik()

8KuplukService- timer : Timer

- notifikasi : NotificationManager

- idNotifikasi : int

- onBind()

- onCreate()

- onDestroy()

- checkAlarm()

- showNotifikasi()

- startService()

- shutdownService()

3.2.2. Perancangan Navigasi

Aplikasi Kupluk menggunakan struktur navigasi Hierarchical Model. Dimana menu utama adalah pusat navigasi yang merupakan penghubung ke semua fitur pada aplikasi.

Gambar 3.4 Struktur NavigasiDari struktur navigasi ini, perpindahan antar fitur yang tersedia dapat dilakukan melalui menu. Karena android mendukung fitur layar sentuh kapasitif yang dapat menerima input sentuhan dari jari, sehingga navigasi dapat dilakukan dengan menggunakan sentuhan pada layar.3.2.3. Perancangan Antar Muka (Interface)

Perancangan interface adalah bagian yang penting dalam aplikasi, karena yang pertama kali dilihat ketika aplikasi dijalankan adalah tampilan antar muka (interface) aplikasi.3.2.3.1. Perancangan Antar Muka Menu

Gambar 3.5 Desain Layar Tampilan Menu UtamaKeterangan 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 Kabah.

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.3.2.3.2. Perancangan Antar Muka Jadwal Shalat

Gambar 3.6 Desain Layar Tampilan Jadwal ShalatKeterangan 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.3.2.3.3. Perancangan Antar Muka Arah Kiblat

Gambar 3.7 Desain Layar Tampilan Arah KiblatKeterangan Gambar:

1. Latar BelakangPada latar belakang arah kiblat akan dibuat berisikan gambar bernuasa islami yang disesuaikan dengan tampilan jadwal Shalat.2. Kompas KiblatMerupakan tampilan dua dimensi yang akan menujukkan arah kiblat.3.2.3.4. Perancangan Antar Muka Pengaturan

Gambar 3.8 Desain Layar Tampilan PengaturanKeterangan 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. TeksAkan dibuat berisi teks pengaturan mazhab, yang selanjutnya akan menampilkan dialog daftar dua mazhab.

4. TeksAkan dibuat berisi teks yang menjelaskan kategori pengaturan pengingat.

5. TeksAkan dibuat berisi teks pengaturan pengingat shalat, yang selanjutnya akan menampilkan pilihan untuk daftar shalat 5 waktu.

6. Teks

Akan dibuat birisi teks pengaturan suara azan, yang selanjutnya akan menampilkan dialog pilihan suara azan.3.2.3.5. Perancangan Antar Muka Tentang

Tampilan antar muka tentang dibuat dengan tampilan layaknya tampilan web. Sehingga dalam implementasi nantinya menggunakan kode program HTML. Hal ini dilakukan untuk memudahkan pengguna dalam menghubungi pembuat. Adapun desain perancangan muka tentang adalah sebagai berikut:3.2.3.6. Perancangan Antar Muka Notifikasi

Keterangan Gambar:

1. Gambar

Akan dibuat berupa berupa gambar dari icon aplikasi.

2. Teks

Akan dibuat berisi teks judul pemberitahuan3. Teks

Akan dibuat birisi teks pemberitahuan waktu shalat telah tiba.4. Implementasi

Implementasi merupakan tahap pengembangan rancangan menjadi kode program. Pada awal bagian ini dijabarkan spesifikasi perangkat keras dan lunak pada mana program diimplementasikan. Bagian utama implementasi adalah penjabaran rancangan kelas menjadi kelas yang ditulis dalam sintaks Bahasa Pemrograman Java. Di samping itu disajikan juga tampilan Kupluk setelah diimplementasikan pada telepon genggam HTC G1 (Dream).

4.1. Spesifikasi Perangkat Keras dan Lunak

Dalam menerapkan rancangan yang telah dibuat, ada beberapa hal yang harus dibutuhkan. Perangkat keras dan perangkat lunak merupakan 2 hal yang selalu dibutuhkan dalam mengimplementasikan rancangan yang telah ada.

4.1.1. Spesifikasi Perangkat Keras

Dalam menerapkan dari rancangan yang telah dijelaskan sebelumnya dibutuhkan beberapa perangkat keras untuk menyajikan aplikasi ini. Adapun alat-alat yang dibutuhkan adalah:

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

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:

4.1.2. Spesifikasi Perangkat Lunak

Dalam menerapkan rancangan yang telah dibuat, dibutuhkan beberapa software untuk membuat program pengingat shalat yaitu:

1. Bahasa Pemrograman Java

Dalam hal ini digunakan Java Development Kid (JDK) 1.6 dan Java Runtime Environment (JRE).2. Sistem Operasi

Untuk penggunaan sistem operasi dapat digunakan Windows XP (32-bit) atau Vista (32 atau 64 bit), Mac OS X 10.4.8 atau diatasnya, dan Linux.

3. Integrated Development Environment (IDE) Eclipse 3.4 atau 3.5

Untuk memudahkan dalam pengembangan aplikasi, maka digunakan IDE karena memiliki beberapa fasilitas yang diperlukan dalam pembangunan perangkat lunak. Adapun dalam pengembangan ini digunakan Eclipse v 3.4 atau 3.5 dikarenakan telah mendukung Android Development Tools.4. Android Software Development Kit (Android SDK)Android SDK menyediakan development environment dengan semua komponen yang diperlukan. Antara lain tools pengembangan, libraries, dokumentasi, dan contoh aplikasi serta disertakan pula emulator untuk mensimulasikan aplikasi berjalan pada perangkat.5. Android Development Tools (ADT)Android membuat kostum plugin untuk IDE Eclipse, sehingga dengan adanya ADT ini memberikan kemudahan dalam pengembangan aplikasi, membuat tampilan antarmuka aplikasi, menambahkan komponen yang diperlukan, men-debug aplikasi dengan menggunakan perangkat SDK Android, dan bahkan membungkus aplikasi yang telah dikembangkan untuk di distribusikan. Adapun ADT yang digunakan adalah ADT 0.9.5.4.2. Penulisan Kode Program (Codding)

4.2.1. Pembuatan Tampilan Utama

Berdasarkan perancangan, tampilan utama merupakan tampilan jadwal shalat yang terhubung dengan beberapa kelas pendukung. Sehingga sebelum membuat kelas KuplukMain, perlu dibuat terlebih dahulu pendukung kelas KuplukMain seperti, tampilan antarmuka, kelas PerhitunganShalat, dan kelas FormatWaktu.

4.2.1.1. Pembuatan Tampilan Antarmuka Tampilan Utama

Pembuatan tampilan antarmuka pada sistem Android di impelmentasikan dalam bentuk XML. Setiap elemen dalam tampilan antarmuka perlu ditambahkan atribut pengenal, sehingga elemen tersebut akan di generate dalam kelas Resource dan memudahkan untuk digunakan pada kelas yang memerlukan. Adapun kode antarmuka tampilan utama adalah sebagai berikut:

4.2.1.2. Pembuatan Kelas PerhitunganShalat

Kelas PerhitunganShalat merupakan kelas yang berfungsi untuk memproses perhitungan waktu shalat. 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;

//Konstruktorpublic 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);

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() {

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;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;

}}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;

}}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.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. */

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) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 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 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 variabelshalat= 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= newFormatWaktu(shalat.getWaktuZuhur());FormatWaktu ashar= newFormatWaktu(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 getPreferences(MODE_WORLD_READABLE).edit().putInt("jamSubuh", subuh.getJam()); getPreferences(MODE_WORLD_READABLE).edit().putInt("menitSubuh", subuh.getMenit()); sharedPreferences = getSharedPreferences("jadwal", 0);SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putInt("jamSubuh", subuh.getJam()); editor.putInt("menitSubuh", subuh.getMenit()); editor.putInt("jamZuhur", zuhur.getJam()); editor.putInt("menitZuhur", zuhur.getMenit()); editor.commit(); // Inisiasi service Intent svc = new Intent(this, KuplukService.class);

startService(svc); }

@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 KiblatTampilan arah kiblat 4.2.2.1. Pembuatan Kelas KiblatView

Untuk memudahkan dalam membuat penunjuk arah kiblat yang dapat menunjukkan arah yang benar secara realtime maka dibuat kostum komponen yang nantinya akan digunakan pada tampilan antarmuka arah kiblat. Adapun kode programnya adalah sebagai berikut:

package com.amiral.kupluk;import android.content.Context;import android.content.res.Resources;import android.graphics.Canvas;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;public class KiblatView extends View{

private float busur;

private int lebar=240;

private int tinggi=240;

private Paint penandaGambar;

private Paint paintText;

private Paint gambarLingkaran;

private String northString;

private int textHeight;

/** Konstruktor */

public KiblatView(Context context){

super(context);

initKiblatView();

}

public KiblatView(Context context, AttributeSet attrs) {

super(context, attrs);

// TODO Auto-generated constructor stub

initKiblatView();

}

public KiblatView(Context context, AttributeSet attrs, int defStyle){

super(context,attrs,defStyle);

initKiblatView();

}

protected void initKiblatView() {

setFocusable(true);

gambarLingkaran = new Paint(Paint.ANTI_ALIAS_FLAG);

gambarLingkaran.setColor(R.color.background_color);

gambarLingkaran.setStrokeWidth(1);

gambarLingkaran.setStyle(Paint.Style.FILL_AND_STROKE);

Resources r = this.getResources();

northString = r.getString(R.string.cardinal_north);

paintText = new Paint(Paint.ANTI_ALIAS_FLAG);

paintText.setColor(r.getColor(R.color.text_color));

textHeight = (int)paintText.measureText("yY");

penandaGambar = new Paint(Paint.ANTI_ALIAS_FLAG);

penandaGambar.setColor(r.getColor(R.color.marker_color));

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

setMeasuredDimension(lebar, tinggi);

}

/** untuk mengatur arah*/

public void setBearing(float _bearing) {

busur = _bearing;

}

/** mengambil arah */

public float getBusur() {

return busur;

}

@Override

protected void onDraw(Canvas canvas) {

int px = getMeasuredWidth() / 2;

int py = getMeasuredHeight() / 2 ;

int radius = Math.min(px, py);

// Membetuk latar

canvas.drawCircle(px, py, radius, gambarLingkaran);

canvas.save();

// Rotasi perspektif

canvas.rotate(-busur, px, py);

int textWidth = (int)paintText.measureText("W");

int cardinalX = px-textWidth/2;

int cardinalY = py-radius+textHeight;

for (int i = 0; i < 24; i++) {

canvas.save();

canvas.translate(0, textHeight);

if (i % 6 == 0) {

String dirString = "";

switch (i) {

case(0) : {

dirString = northString; int arrowY = 2*textHeight;canvas.drawLine(px, arrowY, px-5, 3*textHeight, penandaGambar);canvas.drawLine(px, arrowY, px+5, 3*textHeight, penandaGambar);canvas.drawLine(px, py, px, arrowY, penandaGambar); break;

}

}canvas.drawText(dirString, cardinalX, cardinalY, paintText);

}

canvas.restore();

canvas.rotate(15, px, py);

}

canvas.restore();

}}

4.2.2.2. Pembuatan Tampilan Antarmuka Arah Kiblat

Kode program:

4.2.2.3. Pembuatan Kelas Kiblat

Kode Program:

package com.amiral.kupluk;import com.amiral.kupluk.R;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.hardware.SensorListener;import android.hardware.SensorManager;import android.location.Criteria;import android.location.Location;import android.location.LocationManager;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.widget.TextView;public class Kiblat extends Activity{

private float arahKiblat=0;

private float busur = 0;

private double lonMasjid;

private double latMasjid;

private KiblatView kiblatView;

private SensorManager sensorManager;

TextView text;

private LocationManager locationManager;//private final SensorListener sensorListener;//private static boolean isTrackingOrientation = false;

@Override

public void onCreate(Bundle icicle){

super.onCreate(icicle);

setContentView(R.layout.kiblat);

//inisialisasi Lokasi locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //kriteria penggunaan lokasi Criteria criteria= new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_COARSE); criteria.setPowerRequirement(Criteria.POWER_LOW); criteria.setBearingRequired(false); criteria.setSpeedRequired(false); criteria.setCostAllowed(true);String provider = locationManager.getBestProvider(criteria, true);Location location=locationManager.getLastKnownLocation(provider);

latMasjid= location.getLatitude();

lonMasjid= location.getLongitude();

float kiblat =(float)segitigaBola(lonMasjid,latMasjid);

setArahKiblat(kiblat);kiblatView = (KiblatView) this.findViewById(R.id.arahKiblat);

text= (TextView) findViewById(R.id.text);

text.setText("Arah Kiblat adalah: "+kiblat);

sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);

updatePerputaran(0,0);

Log.d("kupluk", "kiblat: "+getArahKiblat());Log.d("kupluk", "Latitude masjid: " + latMasjid +"Longitude Masjid: "+ lonMasjid );

}

private final SensorListener sensorListener = new SensorListener() {

public void onSensorChanged(int sensor, float[] values) {

updatePerputaran(values[SensorManager.DATA_X],getArahKiblat());

}

public void onAccuracyChanged(int sensor, int accuracy) {}

};

private void updatePerputaran(float _busur, float _arah){

busur=(float) (_busur+ (float)(360 - _arah));

if (kiblatView!=null){

kiblatView.setBearing(busur);

kiblatView.invalidate();

}

}

@Override

protected void onResume()

{

super.onResume();

sensorManager.registerListener(sensorListener, SensorManager.SENSOR_ORIENTATION, SensorManager.SENSOR_DELAY_FASTEST);

}

@Override

protected void onStop()

{

sensorManager.unregisterListener(sensorListener);

super.onStop();

}

/**

* Rumus ini untuk menghitung arah kiblat dari utara.

* Perhitungan sesuai dengan arah jarum jam.

* Jika nilai utara ditemukan maka selanjutnya adalah dengan menambah arah utara

* dengan hasil perhitungan.*/

public double segitigaBola(double lngMasjid, double latMasjid){

double lngKabah=39.82616111;

double latKabah=21.42250833;

double lKlM=(lngKabah-lngMasjid);

double sinLKLM= Math.sin(lKlM*2.0*Math.PI/360);

double cosLKLM= Math.cos(lKlM*2.0*Math.PI/360);double sinLM = Math.sin(latMasjid *2.0 * Math.PI/360);double cosLM = Math.cos(latMasjid *2.0 * Math.PI/360);

double tanLK = Math.tan(latKabah*2*Math.PI/360);

double penyebut= (cosLM*tanLK)-sinLM*cosLKLM;

double kiblat;

double arah;kiblat = Math.atan2(sinLKLM, penyebut)*180/Math.PI;

arah= kiblat