Showing posts with label Tutorial Android. Show all posts
Showing posts with label Tutorial Android. Show all posts

Thursday, May 1, 2014

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.

importandroid.app.Activity;
import android.location.Criteria;
importandroid.location.Location;
importandroid.location.LocationListener;
importandroid.location.LocationManager;
import android.os.Bundle;
importandroid.content.Context;
import android.content.pm.LabeledIntent;
import android.content.res.Resources;
import android.graphics.*;
importandroid.hardware.Sensor;
importandroid.hardware.SensorEvent;
importandroid.hardware.SensorEventListener;
importandroid.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 = newSensorEventListener() {
        public voidonSensorChanged(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 voidonAccuracyChanged(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 kabahlocation
    private double QiblaCount(double lngMasjid, double latMasjid) {
       doublelngKabah=39.82616111;
              doublelatKabah=21.42250833;
              doublelKlM=(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 voidonDetachedFromWindow() {
            mAnimate = false;
            if (Config.DEBUG) Log.d(TAG, "onDetachedFromWindow. mAnimate=" + mAnimate);
            super.onDetachedFromWindow();
        }
   
            }
   
    private class DispLocListener implements LocationListener {
       public voidonLocationChanged(Location loc) {
       // update TextViews
        latMosque = loc.getLatitude();
        lonMosque = loc.getLongitude();
       }
      
       public voidonProviderDisabled(String provider) {
       }
      
       public voidonProviderEnabled(String provider) {
       }
      
       public voidonStatusChanged(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





Cara Membuat Keystore atau File APK sebelum Upload Aplikasi ke Google Play | Tutorial Android

Hallo temen-temen, sepertinya sudah lama sekali saya tidak membuat tutorial-tutorial di blog ini. Apa kabarnya nih kalian? Sehat-sehat saja kan?

Sudah lama juga saya tidak pernah mencoba membuat aplikasi di Android. Nah kebetulan ada beberapa sample aplikasi yang belum saya coba upload ke Market Android. Oyya, kalau mau mengunjungi Market saya dan teman-teman Coffee-Dev terutama Android dan Windows Phone bisa kalian kunjungi kesini :

  1. Market Android
  2. Market Windows Phone

Nahh kebetulan tadi saya mencoba upload sample aplikasi yang lama ke Google Play. Tapi ternyata hampir lupa kalau harus bikin Keystore sebelum upload aplikasinya ke Market. Akhirnya saya buatlah tutorial ini, selain bisa mengingatkan saya juga sebagai penambah pengunjung ke blog ini. Lumayan ada bahan postingan kan :D

Setelah capek-capek membuat aplikasi. Langkah terakhir adalah untuk upload aplikasi yang kita buat ke Market Android (Google Play) supaya aplikasi yang kita buat bisa dinikmatin oleh banyak orang. Tapi sebelum upload APK-nya ke Market kita harus membuat Keystore dahulu. Keystore itu sejenis tanda-tangan digital pembuat aplikasi. Kalau tidak ditanda-tangani maka aplikasi kita tidak akan bisa di Upload ke Android Market.

Untuk lebih jelasnya silahkan ikuti langkah-langkah berikut :

1. Klik kanan pada projek, lalu pilih Android Tools, lalu Export Signed Application Package.


2. Selanjutnya akan muncul tampilan seperti dibawah. Lalu Next >


3. Pada langkah selanjutnya kita diminta membuat file Keystore. Karena belum pernah membuat Keystore maka pilih Create new Keystore. Isi semua inputan (untuk lokasinya terserah temen-temen), lalu pilih tombil Next >



4. Setelah itu kita disuruh membuat key. Isi semua inputan dan masukkan identitas teman-teman (Terserah mau identitas lengkap atau tidak). lalu pilih tombil Next >



5. Terakhir kita tinggal memilih lokasi file APK yang sudah di tanda-tangani. Setelah selesai lalu klik tombol Finish. (Abaikan peringatan Warning dibawah, itu terjadi karena saya sudah membuat file APK dilokasi yang sama sebelumnya)


SELESAI!! Kita tinggal meng-upload file APK tadi ke market kita tanpa ada masalah lagi.
Selamat mencoba dan Semoga Bermanfaat :)


Sunday, April 27, 2014

Membuat Listview dengan Gambar | Tutorial Android

Berikut adalah 'tutorial membuat listview dengan gambar'. Adapun tahap-tahapnya sebagai berikut :

1. Buat projek baru dengan nama 'ListImage'. Selanjutnya masukkan gambar anjing, kambing, kucing, kuda, naga pada folder res -> drawable.
2. Buat kode program pada 'activity_main.xml'

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"   
    android:orientation="vertical"
     >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
       
   <ListView
       android:id="@+id/lv"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       ></ListView>


</LinearLayout>


3. Buat layout XML baru dengan nama 'layout_isi_lv.xml'. File -> new -> other -> Android XML Layout File -> beri nama file 'layout_isi_lv.xml'. Lalu buat kode program pada 'layout_isi_lv.xml'

<?xml version="1.0"encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
   
    <ImageView
        android:id="@+id/imV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_launcher"
        />
   
    <TextView
        android:id="@+id/tv_nama"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/imV"
        android:text="TextView"
        android:textColor="#fffd7f"
        android:textSize="10pt"
        />
   
    <TextView
        android:id="@+id/tv_ltn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tv_nama"
        android:layout_below="@+id/tv_nama"
        android:text="TextView"
        android:textColor="#02808f"
        />


</RelativeLayout>

4. Buat kode program pada 'MainActivity.java'

import android.os.Bundle;
import android.app.Activity;
import java.util.ArrayList;
import java.util.HashMap;
import android.widget.ListView;
import android.widget.ListAdapter;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {

      protected ListView lv;
      protected ListAdapter adapter;
      SimpleAdapter Adapter;
      HashMap<String, String> map;
      ArrayList<HashMap<String, String>> mylist;
      String[] Pil;
      String[] Ltn;
      String[] Gbr;
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        lv = (ListView) findViewById(R.id.lv);
       
        Pil = new String[] {"Anjing", "Kambing", "Kucing", "Kuda", "Naga"};
        Ltn = new String[] {"Anjing Jinak", "Kambing Hutan", "Kucing-Kucingan", "Kuda-kudaan", "Naga Bonar"};
        Gbr = new String[] {Integer.toString(R.drawable.anjing),
                                    Integer.toString(R.drawable.kambing),
                                    Integer.toString(R.drawable.kucing),
                                    Integer.toString(R.drawable.kuda),
                                    Integer.toString(R.drawable.naga) };
       
        mylist = newArrayList<HashMap<String,String>>();
       
        for (int i = 0; i < Pil.length; i++){
            map = new HashMap<String, String>();
            map.put("list", Pil[i]);
            map.put("latin", Ltn[i]);
            map.put("gbr", Gbr[i]);
            mylist.add(map);             
        }
       
        Adapter = new SimpleAdapter(this, mylist, R.layout.layout_isi_lv,
                  new String[] {"list", "latin", "gbr"}, new int[] {R.id.tv_nama, R.id.tv_ltn, R.id.imV});
        lv.setAdapter(Adapter);
    }

}

5. RUN dan lihat hasilnya