Lokasi (Bagian 2A: Google Location API: Instalasi + Lokasi Terakhir)

Update 6 Oktober 2015, penting!

Tutorial terbaru yang mengambil lokasi terakhir menggunakan Google Play Service Location API dengan Android Studio (gradle) sudah tersedia: http://indonesiaberkicau.com/pengambilan-lokasi-terakhir-di-android-dengan-google-play-services-location-api-android-studiogradle/

End Update.

 

 

Instalasi Google Play Service

Dibandingkan Android Location API yang dibahas sebelumnya, kelebihan Google Location API adalah lebih hemat energi dan lokasi dapat diperoleh langsung karena proses mendapatkan lokasi dilakukan melalui Google Play Service yang berjalan di background. Berbagai app yang membutuhkan lokasi juga dapat menggunakan service secara bersama-sama sehingga secara keseluruhan akan menghemat batere. Kelemahan utamanya, app jadi bergantung pada layanan Google.

Google Location API dapat dijalankan di Android versi 2.3 ke atas, tetapi jika menggunakan AVD harus menggunakan minimal versi 4.2.2. Untuk memanfaatkan Google location, pertama yang harus dinstall (jika belum) adalah Google Play Service.

Jalankan SDK Manager (jika lewat Eclipse: Window –> Android SDK Manager) lalu install komponen tersebut (gambar bawah).
loc_2_1

Setelah berhasil, lihat lokasi Android SDK di kiri atas

loc_2_2

lalu copy library yang berada di android SDK tersebut:
/extras/google/google_play_services/libproject/google-play-services_lib/
ke lokasi bebas asalkan bukan di direktori workspace dan sdk. Sekarang impor library tersebut di workspace Ecplise dengan menu File –> Import, Android –> Existing Android Code into Workspace (gambar bawah)

loc_2_3

Pilih direktori library yang sudah kita copy, setelah muncul dialog (gambar bawah), check “copy projects into workspace” lalu tekan finish.

loc_2_4

Google-play-service_lib akan masuk ke workspace dan muncul dibagian project explorer (gambar bawah)

loc_2_5

Mengambil Lokasi Terakhir
Sekarang kita akan buat app untuk mengambil koordinat terakhir. Buat project baru, tambahkan Google Play Service lib ini sebagai library. Pada project explorer, klik kanan lalu pilih properperties. Pilih Android, lalu add (gambar bawah).

loc_2_6

Setelah add di-klik akan muncul seperti gambar bawah. Pilihlah google-play-service_lib

loc_2_7

Lalu pada file AndroidManifest.xml tambahkan elemen berikut di dalam elemen <application>

<meta-data android:name="com.google.android.gms.version"
           android:value="@integer/google_play_services_version" />

Jangan lupa tambahkan permission ditambahkan di dalam elemen <manifest>

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

Selanjutnya buat activity yang mengimplement ConnectionCallbacks untuk dua method: onConnected yang dipanggil setelah terhubung dengan googleplay service dan onDisconnected saat terputus.

Selain itu activity juga perlu mengimpelement OnConnectionFailedListener yang menangani jika hubungan dengan googleplay service gagal dilakukan. Berikut kode lengkapnya, penanganan kesalahan jika terjadi kegagalan hubungan dengan Google Play Service belum ditangani (nanti akan dibahas kemudian). Jika program ini dijalankan maka akan langsung ditampilkan lokasi terakhir. Untuk mendapatkan lokasi secara terus menerus dan penanganan kesalahan akan dibahas pada posting berikutnya.


package edu.upi.cs.yudiwbs.cobagooglelocation;

import android.location.Location;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.widget.Toast;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesClient;
import com.google.android.gms.location.LocationClient;

//implements ConnectionCallBacks dan OnConnectionFailedListener
public class CobaGoogleLocation extends FragmentActivity implements
GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener {

	//client untuk mendapatkan lokasi
	LocationClient mLocationClient;

	//lokasi terakhir
	Location mCurrentLocation;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_coba_google_location);
		mLocationClient = new LocationClient(this, this, this);
	}

    //Dipanggil saat Activity  visible.

    @Override
    protected void onStart() {
        super.onStart();
        // Connect the client.
        mLocationClient.connect();

    }

    /*
     * dipanggil saat activity tidak terlihat
     */

    @Override
    protected void onStop() {
        // disconnect dengan client
        mLocationClient.disconnect();
        super.onStop();
    }

	@Override
	public void onConnected(Bundle arg0) {
		//method ini dipanggil saat sudah terhubung dgn client
		Toast.makeText(this, "Terhubung", Toast.LENGTH_SHORT).show();

		//akses terhadap lokasi
		//hanya boleh dipanggil saat sudah connected
		mCurrentLocation = mLocationClient.getLastLocation();
		Toast.makeText(this, "Lat: "+mCurrentLocation.getLatitude()+
        		             " Long:"+mCurrentLocation.getLongitude(),
		                     Toast.LENGTH_LONG).show();
	}

	@Override
	public void onDisconnected() {
		// dipanggil saat sudah tidak terhubung
		Toast.makeText(this, "Disconnected", Toast.LENGTH_SHORT).show();
	}

	@Override
	public void onConnectionFailed(ConnectionResult arg0) {
		// sekarang tampilkan pesan dulu
		// nanti ada mekanisme resolve
		Toast.makeText(this, "Koneksi gagal.",
        Toast.LENGTH_SHORT).show();

	}
}

Berlanjut ke bagian 2B: Mengambil lokasi secara reguler dan penanganan error

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.