• Jadilah orang yang sesederhana mungkin yang kamu bisa
  • Jadilah orang yang sesederhana mungkin yang kamu bisa
  • Jadilah orang yang sesederhana mungkin yang kamu bisa
  • Jadilah orang yang sesederhana mungkin yang kamu bisa

Search

Loading...

Tutorial Membuat Aplikasi Arah Kiblat Sederhana | Tutorial Android

Untuk tutorial kali ini kita akan mencoba membuat aplikasi arah kiblat sederhana untuk android. Yang sebenarnya sudah saya gunakan dibeberapa aplikasi. Tapi untuk yang cuman aplikasi arah kiblat aja kebetulan barusan saya upload ke Google Play, linknya ada disini : Simple Qibla Locator.

Bagaimana cara membuatnya? Silahkan ikuti step by step tutorialnya :

1. Buat projek baru dengan nama 'SimpleQiblaLocator' atau terserah teman-teman.
2. Buat kode program pada 'MainActivity.java' dan jangan lupa masukkan background di folder res -> Drawable : bg_kiblat3.png karena kebetulan pada projek ini background-nya saya namain seperti itu di kodingannya.

import android.app.Activity;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.content.Context;
import android.content.pm.LabeledIntent;
import android.content.res.Resources;
import android.graphics.*;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.Config;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;

public class Kiblat extends Activity {

    private static final String TAG = "Compass";
   
    private SensorManager mSensorManager;
    private Sensor mSensor;
    private SampleView kiblat;
    private float[] mValues;
    private double lonMosque;
       private double latMosque;
       private LocationManager lm;
    private LocationListener locListenD;

    //for finding north direction
    private final SensorEventListener mListener = new SensorEventListener() {
        public void onSensorChanged(SensorEvent event) {
            if (Config.DEBUG) Log.d(TAG,
                     "sensorChanged (" + event.values[0] + ", " + event.values[1] + ", " + event.values[2] + ")");
            mValues = event.values;
            if (kiblat != null) {
                kiblat.invalidate();
            }
        }

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

       @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
        mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
        kiblat = new SampleView(this);
        setContentView(kiblat);
       
        // for calling the gps
        LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        Location loc = lm.getLastKnownLocation("gps");
       
     // ask the Location Manager to send us location updates
        locListenD = new DispLocListener();
        lm.requestLocationUpdates("gps", 30000L, 10.0f, locListenD);
       
        locListenD = new DispLocListener();
        lm.requestLocationUpdates("gps", 30000L, 10.0f, locListenD);       
       }     
  
       //finding kabah location
    private double QiblaCount(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 denominator= (cosLM*tanLK)-sinLM*cosLKLM;
             
              double Qibla;
              double direction;
             
              Qibla = Math.atan2(sinLKLM, denominator)*180/Math.PI;
              direction= Qibla<0 ? Qibla+360 : Qibla;
              return direction;
      
       }

    //resume location update when we are resume
       @Override
    protected void onResume()
    {
        if (Config.DEBUG) Log.d(TAG, "onResume");
        super.onResume();

        mSensorManager.registerListener(mListener, mSensor,
                SensorManager.SENSOR_DELAY_GAME);
    }

       //stop location update when we are stop
    @Override
    protected void onStop()
    {
        if (Config.DEBUG) Log.d(TAG, "onStop");
        mSensorManager.unregisterListener(mListener);
        super.onStop();
    }

    private class SampleView extends View {
        private Paint   mPaint = new Paint();
        private Path    mPath = new Path();
        private boolean mAnimate;
             

        public SampleView(Context context) {
            super(context);

            // Construct a wedge-shaped path
            mPath.moveTo(0, -100);
            mPath.lineTo(20, 120);
            mPath.lineTo(0, 100);
            mPath.lineTo(-20, 120);
            mPath.close();
        }

        //make an arrow for pointing direction
       
        protected void onDraw(Canvas canvas) {
            Paint paint = mPaint;
           
            this.setBackgroundResource(R.drawable.bg_kiblat3);
           
            paint.setAntiAlias(true);
            paint.setColor(Color.RED);
            paint.setStyle(Paint.Style.FILL_AND_STROKE);

            int w = canvas.getWidth();
            int h = canvas.getHeight();
            int cx = w / 2;
            int cy = h / 2;
           float Qibla=(float) QiblaCount(lonMosque,latMosque);
         //   float Qiblat = mValues [0] + Qibla;
            canvas.translate(cx, cy);
            if (mValues != null) {
                canvas.rotate(-(mValues[0]+ Qibla));
            }
            canvas.drawPath(mPath, mPaint);
        }

        @Override
        protected void onAttachedToWindow() {
            mAnimate = true;
            if (Config.DEBUG) Log.d(TAG, "onAttachedToWindow. mAnimate=" + mAnimate);
            super.onAttachedToWindow();
        }

        @Override
        protected void onDetachedFromWindow() {
            mAnimate = false;
            if (Config.DEBUG) Log.d(TAG, "onDetachedFromWindow. mAnimate=" + mAnimate);
            super.onDetachedFromWindow();
        }
   
            }
   
    private class DispLocListener implements LocationListener {
       public void onLocationChanged(Location loc) {
       // update TextViews
        latMosque = loc.getLatitude();
        lonMosque = loc.getLongitude();
       }
      
       public void onProviderDisabled(String provider) {
       }
      
       public void onProviderEnabled(String provider) {
       }
      
       public void onStatusChanged(String provider, int status, Bundle extras) {
       }
    }
}


3. Jangan lupa tambahin Permission di AndroidManifest.xml

   <uses-permission android:name="android.permission.ACCESS_LOCATION" />
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
   <uses-permission android:name="android.permission.READ_PHONE_STATE" />
   <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

   <uses-permission android:name="android.permission.INTERNET" />

4. RUN dan lihat hasilnya





Related Post



21 comments:

  1. đồng tâm
    game mu
    cho thuê nhà trọ
    cho thuê phòng trọ
    nhac san cuc manh
    số điện thoại tư vấn pháp luật miễn phí
    văn phòng luật
    tổng đài tư vấn pháp luật
    dịch vụ thành lập công ty trọn gói


    Cơ mặt hắn khẽ co lại, cắn răng nói:
    - Nếu như tính toán của ta thành công, trong hơn ngàn người của Thiên Ngoại Lâu hiện tại, những kẻ có khả năng còn sống sót quyết không quá một trăm người! Mà những người này chính là nền tảng để Thiên Ngoại Lâu chúng ta bước lên thời kỳ đỉnh cao huy hoàng!

    - Phế vật giữ lại làm cái gì, kẻ tầm thường cũng không cần!
    Ô Vân Lương chậm rãi bước hai bước, thanh âm trầm thấp như sấm chớp giao kích khiến người ta khiếp sợ:
    - Thậm chí kể cả chính Ô Vân Lương ta, vào thời điểm cần phải hy sinh cũng sẽ hy sinh!

    - Sự xuống dốc của một môn phái, lý do không phải là bị khắp nơi chèn ép, mà là do tranh chấp nội bộ trong tông môn gây mất đoàn kết. Điểm này, Thiên Ngoại Lâu chúng ta chính là một ví dụ điển hình.
    Ô Vân Lương nặng nề nói:
    - Vậy nên môn phái muốn quật khởi được phải từ trong gió tanh mưa máu mà thoát ra! Dục hỏa trùng sinh!

    Mạnh Siêu Nhiên thở dài.

    ReplyDelete
  2. mbuatnya pake aplikasi apa gan?

    ReplyDelete
    Replies
    1. Bisa pake Eclipse dan android SDK atau pake Android studio

      Delete
  3. Very nice article :-)

    FREE Create, Upload dan Publish APK ke Google Play Store GRATIS via SantriPlay
    visit: gontorpedia.com/SantriPlay

    ReplyDelete
  4. kalau ditambah ditampilkan hasil getlongitude dan getlatitude sama hasil perhitungan trigonometrinya gimana ya ? terimakasih.

    ReplyDelete
  5. Artikel yang sangat Berkualitas dan bermanfaat.. Update terus ya dan salam sukses Gan!
    Kunjungi website kami ya di www.agenpoker.biz

    Agen Poker
    Agen Poker Online
    Bandar Domino Online
    Judi Poker
    Agen Capsa Susun Online
    Agen Poker Domino

    ReplyDelete
  6. Di situ kodinganya sudah bnr gan? Kok saya coba error ya?

    ReplyDelete
  7. kenapa ya disini terdapat error

    // for calling the gps
    LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    Location loc = lm.getLastKnownLocation("gps");

    // ask the Location Manager to send us location updates
    locListenD = new DispLocListener();
    lm.requestLocationUpdates("gps", 30000L, 10.0f, locListenD);

    locListenD = new DispLocListener();
    lm.requestLocationUpdates("gps", 30000L, 10.0f, locListenD);

    ReplyDelete
  8. kalau ditambah ditampilkan lokasi, seperti kota semarang, bandung, dll gimana ya ?

    ReplyDelete

  9. I am always searching online for articles that can help me. There is obviously a lot to know about this. I think you made some good points in Features also.
    Poker online terpecaya
    bandar poker
    domino online
    judi poker
    Agen poker online
    poker online
    agen poker
    judi poker
    Buat twinpoker88.com
    Poker online terpecaya
    bandar poker
    domino online
    judi poker
    Agen poker online
    poker online

    ReplyDelete
  10. Ayo bergabung bersama kami hanya di sbobetpk dan dapatkan bonusnya!!!
    klik di sini Agen Poker

    ReplyDelete

Copyright © 2015 priawadi.com All Rights Reserved.