## PENGEMBANGAN APLIKASI PENENTU POSISI BULAN (RUKYATDROID) BERBASISKAN SMARTPHONE ANDROID
Oleh : Bangun Wijayanto, S.T., M.Cs.
Program Studi Teknik Informatika Fakultas Sains dan Teknik Universitas Jenderal Soedirman, Purwokerto, Indonesia Bangun.wijayanto@gmail.com

## ABSTRAK
Posisi  Bulan  terhadap  bumi  merupakan  hal  yang  menarik  untuk  diamati sejak zaman dahulu. Penentuan awal bulan qamariyah dilakukan didasarkan pada posisi  bulan.  Pada  kenyataannya  banyak  masyarakat  yang  belum  memahami bagaimana  menghitung  posisi  bulan  berdasarkan  tempat  pengamatan  serta seringkali  salah  arah  ketika  melakukan  pengamatan  posisi  bulan.  Penelitian  ini berusaha  menghadirkan  perangkat  lunak  RukyatDroid  sebagai  alat  bantu menghitung dan menunujukan  posisi bulan berbasiskan android. Perangkat lunak yang  dibuat  memanfaatkan  sensor  pada  smartphone  untuk  mempermudah  dalam membantu menunjukan posisi bulan. Dengan perangkat lunak yang berjalan pada platform  mobile  (telepon  selular)  diharapkan  semua  masyarakat  dapat menggunakan  perangkat  lunak  tersebut  secara  murah,  sehingga  dapat  dihasilkan teknologi  tepat  guna  untuk  membantu  menunujukan  posisi  bulan  berdasarkan lokasi pengamat.
Kata Kunci: Android, Posisi bulan, RukyatDroid, sensor, smartphone

## A. PENDAHULUAN
Perangkat  keras komunikasi  dalam hal  ini smartphone sudah sangat umum dimiliki  oleh  masyarakat,  penyebaran  perangkat  tersebut  dipengaruhi  oleh semakin  murahnya  harga  smartphone.  Saat  ini  smartphone  berbasiskan  Android sudah bisa didapatkan dengan harga kurang dari 1 juta rupiah (Wijayanto, 2011). Sebagai  sistem  operasi  perangkat  mobile  yang  didukung  oleh  berbagai  macam vendor/pabrikan  android  memiliki  jumlah  pengguna  yang    terus  meningkat. Peningkatan  jumlah  pengguna  system  operasi  android  serta  perkembangan perangkat  keras  tersebut  tidak  diimbangi  dengan  produktifitas  dan  efektifitas penggunaan  smartphone  tersebut  di  masyarakat.  Perangkat  canggih  dengan
sejumlah  sensor  yang  terdapat  didalamnya  tersebut  biasanya  hanya  digunakan untuk komunikasi dan berkirim sms (short message services) saja.
Posisi  bulan  digunakan  dalam  berbagai  keperluan  diantaranya  untuk menentukan  awal  bulan  hijriah  atau  penentuan  berbagai  keperluan  yang menyandarkan pada pengamatan dan posisi bulan terhadap bumi. Masyarakat saat ini  banyak  yang  belum  mengerti  bagaimana  cara  menghitung  posisi  bulan  pada saat  akan  mengamati  bulan,  sehingga  bisa  terjadi  salah  arah  didalam  mengamati bulan atau bahkan tidak mengetahui sama sekali posisi  bulan terhadap pengamat pada suatu waktu.
Perhitungan yang rumit dalam menentukan posisi bulan serta peralatan yang tidak lengkap seringkali menjadi kendala bagi masyarakat yang ingin mengetahui posisi  bulan  berdasarkan  lokasi  pengamat  pada  waktu  tertentu.  Saat  ini  terdapat teleskop  berpenggerak  yang  dapat  secara  otomatis  bergerak  menuju  posisi  bulan pada  waktu  dan  lokasi  pengamat,  tetapi  harga  teleskop  tersebut  relative  mahal serta tidak mudah dibawa secara mobile dari satu tempat ke tempat lainnya.
Penelitian  ini  berusaha  menghadirkan  alat  bantu  dalam  menghitung  dan mengarahkan pengamat ke posisi bulan berdasarkan waktu serta lokasi pengamat dengan memanfaatkan smartphone berbasis android.  Diharapkan dengan  aplikasi yang telah dikembangkan tersebut penentuan posisi dapat lebih mudah dilakukan.

## B. TINJAUAN PUSTAKA
1. Sistem Operasi android
Sistem  Operasi  android  tersusun  atas  elemen-elemen  seperti digambarkan pada gambar 1.
Gambar 1. Elemen penyusun Android (Meier, 2009)
a. Kernel  Linux  adalah  layanan  inti  (termasuk  didalamnya  driver  hardware, manajemen proses dan memory, keamanan, network dan manajemen daya) yang  dikerjakan  oleh  kernel  Linux  2.6.  Kernel  juga  menyediakan  lapisan abstraksi (abstraction layer) antara hardware dan elemen lainnya.
b. Pustaka (Libraries) berjalan pada bagian paling atas dari kernel, termasuk didalamnya berbagai macam pustaka inti seperti:
1) Pustaka  (library)  media  adalah  pustaka  yang  digunakan  untuk memainkan audio dan video
2) Surface manager untuk menyediakan manajemen display
3) Pustaka  grafik  (Graphics  libraries)  yang  ternasuk  didalamnya  SGL dan  OpenGL untuk grafis 2D dan 3D.
4) SQLite untuk layanan basisdata
5) SSL dan WebKit  untuk  web browser dan keamanan internet(  Internet security) terintegrasi.
c. Android  Runtime  merupakan  mesin  yang  akan  menjalankan  tiap-tiap aplikasi yanga ada. Android run time tersusun atas 2 elemen yakni:
1) Pustaka inti (Core Library): Pengembangan android dilakukan dengan menggunakan  java,  sedangkan  Dalvik  bukanlah  JVM.  Pustaka  inti android  (core  android  libraries)  menyediakan  sebagian  besar fungsionalitas yang tersedia pada pustaka inti Java .
2) Dalvik  Virtual  Machine  :  Dalvik  adalah  virtual  machine    yang  telah dioptimalisasi  agar  perangkat  dapat  menjalankan  berbagai  tugas dengan efisien. Dalvik bergantung pada kernel  Linux untuk threading dan low-level memory management.
d. Application  framework  menyediakan  class-class  yang  dapat  digunakan ketika  membuat  aplikasi  android.  Application  framework  juga menyediakan  abstraksi  generik  dari  perangkat  keras  dan  mengelola antarmuka serta resource dari aplikasi.
e. Application  Layer  aplikasi  baik  aplikasi  native  maupun  aplikasi  pihak ketiga  berada  pada  lapisan  ini  dan  menggunakan  pustaka  (libraries)  API yang sama. (Meir, 2009).

## 2. Algoritma Meeus
Algoritma  Meeus  ini  mengambil  kerangka  acuan  geosentrik  (pusat bumi). Artinya, posisi bulan yang dalam hal ini diwakili oleh titik pusat bulan diukur dari titik pusat bumi.
Dalam  perhitungan  posisi  bulan  (bujur  ekliptika,  lintang  ekliptika  dan jarak  bumi-bulan)  pada  waktu  tertentu  waktu  lokal  (misalnya  WIB) dikonversi ke waktu dalam UT (atau GMT). Selanjutnya waktu dalam UT ini dikonversi  menjadi  Julian  Day  (JD).  Agar  menjadi  JDE  (Julian  Day Ephemeris)  dimana  waktu  dinyatakan  dalam  TD,  maka  JD  harus  ditambah dengan  Delta_T.  Selanjutnya  JDE  diubah  menjadi  T  yang  dirumuskan  T  = (JDE  –  2451545)/36525.  Besaran  T  tidak  lain  adalah  banyaknya  abad (century) dihitung sejak tanggal 1 Januari 2000 pukul 12 siang TD.
Dari besaran T inilah, akan dihitung banyak besaran yang lain. Pertama, dihitung lima buah sudut (L’, D, M, M’ dan F) bersatuan derajat. Selanjutnya dihitung  tiga  jenis  sudut  argumen  A1,  A2  dan  A3.  Tidak  lupa  dihitung  pula faktor  E  yang  ada  hubungannya  dengan  eksentrisitas  orbit  bumi  mengitari matahari.
Selanjutnya,  koreksi  bujur  ekliptika  dapat  dihitung  berdasarkan penjumlahan  dari  suku-suku  A*SIN(K1*D  +  K2*M  +  K3*M’  +  K4*F).
Setelah  koreksi  bujur  ekliptika  bulan,  koreksi  lintang  ekliptika  bulan  dan koreksi jarak bumi-bulan dihitung, diperoleh posisi bulan menurut algoritma Meeus sebagai berikut.
a. Bujur  ekliptika  bulan  sejati  (true  longitude)  bersatuan  derajat  =  L’  +
Koreksi bujur ekliptika.
b. Lintang  ekliptika  bulan  (beta)  bersatuan  derajat  =  Koreksi  lintang ekliptika.
c. Jarak bumi-bulan bersatuan km = 385000,56 + Koreksi jarak.
d. Sudut Paralaks bulan (Phi) = ASIN(6378,14/Jarak bumi-bulan)
Pada  rumus  bujur  bulan  di  atas,  perlu  juga  dihitung  faktor  nutasi  atau faktor  osilasi  sumbu  rotasi  bumi  di  sekitar  sumbu  rata-rata  rotasi  bumi. Proyeksi dari faktor nutasi ke bidang ekliptika menghasilkan nutasi bujur dan nutasi  kemiringan  sumbu  rotasi  bumi.  Jika  nutasi  bujur  ditambahkan  pada bujur bulan sejati (true longitude), hasilnya adalah bujur bulan yang nampak (apparent longitude) (Nuh, 2009).

## C. DESAIN SISTEM
Sistem  yang  dibuat  berjalan  pada  platform  android  dengan memanfaatkan  sensor  sensor  yang  terdapat  pada  smartphone.  Sensor  sensor yang digunakan diantaranya :
1. GPS  (Global  Positioning  System)  digunakan  untuk  menentukan  posisi pengamat
2. ORIENTATION :  Digunakan untuk  menentukan arah pengamat terhadap posisi bulan
3. ACCELEROMETER:  Digunakan  untuk  menentukan  sudut  ketinggian posisi bulan terhadap pengamat.
Gambar 2. Menunjukan desain dari system yang dibuat
Gambar 2. Desain sistem RukyatDroid
Pengembangan aplikasi dilakukan dengan IDE (integrated Development  Environment)  Eclipse.  Aplikasi  berjalan  pada  android  platform 2.3 – 4. Gambar 3 memeperlihatkan  struktur dari class yang digunakan dalam pengembangan aplikasi.
Gambar 3. Class Penyusun aplikasi RukyatDroid
MainActivity  adalah  kelas  yang  berisi  bagian  utama  dari  program. Class ini melakukan perhitungan terhadap posisi bulan dengan memanfaatkan class model
Bulan.java, Matahari.java, Nutasi.java serta class Posisibulan.java.
Perhitungan posisi bulan dilakukan menggunakan posisi pengamat yang didapatkan  dari  GPS  maupun  Network.  Perhitungan  Posisi  bulan  tersebut mengikuti  algoritma  meeus  yang    diimplementasikan  pada  class Posisibulan.java.
Class Compass.java adalah class yang memanfaatkan hasil perhitungan MainActivity.java. Hasil perhitungan MainActivity.java selanjutnya digunakan sebagai pedoman untuk menentukan letak visual posisi bulan pada tampilan  kamera  dengan  menggunakan  sensor  accelerometer  serta  serta orientation. Untuk menggunakan  sensor Orientation pada kode android harus ditambahkan kode seperti pada gambar 4.
Gambar 4. Kode penggunaan sensor Orientation
Sensor  orientational  digunakan  untuk  menentukan  arah  mataangin ketika  pengguna  ingin  mengetahui  posisi  bulan.  Sensor  ini  bekerja  dengan menentukan  arah  utara-selatan  arah  mata  angin  dengan  mengeluarkan  nilai derajat arah (azimuth) tertentu terhadap arah utara (0 derajat).
Untuk  dapat  mengetahui  ketinggian  bulan  dari  pengamat  digunakan sensor  accelerometer.  Gambar  5  memperlihatkan  kode  untuk  menggunakan sensor  accelerometer.  Sensor  ini  bekerja  dengan  cara  mengeluarkan  nilai  x,  y dan z berdasarkan posisi smartphone terhadap gravitasi tanah.
Gambar 5. Kode penggunaan sensor Orientation
mSensorManager .registerListener( this , mSensorManager .getDefaultSensor(Sensor. TYPE_ACCELEROMETER ), SensorManager. SENSOR_DELAY_FASTEST );
SensorManager .registerListener( this , mSensorManager .getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager. SENSOR_DELAY_GAME );
Kimberly Tuck dalam Tilt Sensing Using Linear Accelerometers(Tuck, 2007)  menuliskan  untuk  menghitung  derajat  dari  3  koordinat  (x,y,z)  dapat dilakukan dengan menggunakan rumus
g AZ AY AX 1 2 2 2   
Selanjutnya  dari  persamaan  tersebut  dapat  dihitung  sudut  dari kemiringan  smart  phone.  Gambar  6  memperlihatkan  realisasi  dari  algoritma untuk melakukan perhitungan sudut.
Gambar 6. Method menghitung sudut berdasarkan 3 sumbu
Gambar  7  memperlihatkan  ilustrasi  penggunaan  tiga  sumbu  untuk memperkirakan sudut.
Gambar 7. Ilustrasi perhitungan sudut dari 3 sumbu [4]
Dari  hasil  perhitungan  posisi  bulan,  nilai  derajat  arah  dari  sensor  serta nilai  derajat  ketinggian  dari  sensor  maka  selanjutnya  dapat  dibuat  interface (antarmuka)  untuk  melakukan  pencarian  posisi  bulan.  Gambar  8 memperlihatkan  antarmuka  pencarian  posisi  bulan  yang  terintegrasi  dengan sensor accelerometer serta orientational.
public double getSudut( double x, double y, double z){ double a=z/(Math. pow ((Math. pow (y,2) + Math. pow (z,2)+Math. pow (x,2)),0.5)); return Math. acos (a)*180/Math. PI ; }
Gambar 8. Antarmuka pencarian bulan
Pada  antarmuka  gambar  8,  terdapat  beberapa  parameter  yakni altitude atau ketinggian bulan, arah menunjukan arah dari posisi bulan. Untuk mencari posisi bulan pengguna cukup mengarahkan kearah mata angina (utara, selatan, timur, barat) sesuai  dengan nilai  yang ditunjukan, apabila posisi  telah tepat  smartphone  akan  mengeluarkan  bunyi  beep.  Selanjutnya  untuk  mencari ketinggian  bulan,  pengguna  cukup  mengarahkan  ponsel  kearah  atas  sesuai dengan tinggi yang ditunjukan dalam aplikasi tersebut.
Demo  lengkap  dari  penggunaan  RukyatDroid  dapat  diaksespada  alamat http://www.youtube.com/watch?v=xy_MZge5_yo

## D. PENGUJIAN
Aplikasi  yang  telah  dibuat  kemudian  dilakukan  pengujian.  Pengujian dilakukan  dengan  melakukan  perhitungan  posisi  bulan  terhadap  pengamat  dan mengamati  bulan  secara  langsung  dengan  aplikasi  RukyatDroid.  Gambar  9 menunjukan  tampilan awal dari RukyatDroid pada saat berjalan.
Gambar 9. Tampilan memilih posisi pengamat
Pada  Tampilan  awal  gambar  9  tersebut  pengguna  dapat  memilih  metode penentuan lokasi pengamat. GPS menggunakan satelit dengan waktu yang relative lebih  lama  dalam  menentukan  posisi  pengamat  akan  tetapi  lebih  akurat, sedangkan  Network  menggunakan  jaringan  seluler  disekitar  untuk  menentukan posisi  pengamat,  menggunakan  network  relative  lebih  cepat  dalam  menentukan posisi pengamat tetapi tidak seakurat menggunakan GPS.
Setelah Posisi GPS diketahui selanjutnya system akan menghitung posisi bulan berdasarkan posisi pengamat. Gambar 10 memperlihatkan hasil analisa system terhadap posisi pengamat.
Gambar 10. Analisa Sistem terhadap posisi pengamat
Setelah  posisi  pengamat  dianalisa  dan  didapatkan  koordinat  bulan  dari posisi  pengamat,  selanjutnya  dilakukan  pencarian  bulan  secara  langsung  dengan bantuan  sensor  yang  terdapat  pada  smartphone  tersebut.  Gambar  11 memperlihatkan pencarian dari posisi  bulan pada  waktu  dan koordinat  pengamat tertentu.
Gambar 11. Pengamatan terhadap bulan
RukyatDroid  juga  dilengkapi  dengan  fitur  zoom  in  untuk  memperbesar objek  pada  saat  pengamat  mengamati  dan  fitur  negative  picture  untuk menegatifkan  image  kamera  sehingga  memepermudah  pencarian  benda-benda yang relative kecil di langit.
Gambar  12  memperlihatkan  fitur    zoom  in  serta  negative  picture  yang terdapat pada RukyatDroid.
Gambar 12. Fitur negative image dan zoom

## E. KESIMPULAN
Dari  hasil  penujian  yang  dilakukan  dapat  disimpulkan  bahwa  RukyatDroid mampu menunjukan posisi bulan pada waktu serta posisi tertentu.
Posisi  Bulan  yang  ditunjukan  oleh  RukyatDroid  dapat  mempermudah  bagi orang  yang  ingin  mencari  posisi  bulan  pada  suatu  waktu  cukup  dengan menggunakan smartphone. Diperlukan penelitian lanjutan untuk mengintegrasikan RukyatDroid dengan teleskop otomatis.

## DAFTAR PUSTAKA
Meier, Reto. (2009). Professional Android™ Application Development.
Indianapolis : Wiley Publishing, Inc.
Nuh, Muhammad (2009). Menentukan Posisi Bulan diakses pada 1 Desember 2012 dari http://www.eramuslim.com/peradaban/ilmu-hisab/posisi-bulan-
2.htm
Tuck, Kimberly (2007). Tilt Sensing Using Linear Accelerometers . Freescale Semiconductor Application Note. Arizona: Freescale Semiconductor Wijayanto, Bangun (2011). Perancangan dan Implementasi Perangkat Lunak
Cash  Register  Berbasiskan  Android  PAD  untuk  Usaha  Mikro  Pedesaan . Seminar Nasional Teknologi Berkelanjutan, 50-54.