Anda di halaman 1dari 5

09 days 12:52:02 Kelas Online CODEPOLITAN Cukup Bayar Setengah Harga Selama Ramadhan KLAIM

PROMO

UPDATE ONLINE COURSE DISCUSSION BOOTCAMP

LOGIN / REGISTER JOIN MEMBERSHIP

Lebih terarah belajar coding melalui Kelas Online dan Interactive Coding LIHAT MATERI BELAJAR

Menampilkan Lokasi Saat Ini Dengan


Maps API Pada Android Studio
Ditulis oleh Nugroho Ardi Sutrisno, dipublikasi pada 07 Mar 2017 dalam kategori Tutorial

Untuk aplikasi android yang berbasis lokasi, memiliki fungsionalitas untuk mendeteksi lokasi
terkini pengguna menjadi salah satu fungsi yang harus dimiliki. Dengan memanfaatkan Google
Maps API, lokasi pengguna dapat diketahui dengan jaringan yang disediakan service provider
maupun wi yang terhubung dengan perangkat android pengguna.

Disini akan dijelaskan bagaimana cara membuat sebuah aplikasi android sederhana untuk melihat
lokasi terkini pengguna dengan memanfaatkan Google Maps API yang akan dibangun
menggunakan Android Studio. Sebelum memulai diperlukan aplikasi yang sebelumnya dibangun
di tutorial Menampilkan Peta Dengan Google Maps API Pada Android Studio.

Persiapan
Beberapa hal yang perlu disiapkan antara lain :

1. Android Studio.

2. Perangkat android untuk uji coba aplikasi yang akan dibuat, pastikan perangkat terhubung dengan internet dan aktifkan akses
lokasi.

3. Aplikasi android dengan Google Maps API yang sebelumnnya dibuat di tutorial Menampilkan Peta Dengan Google Maps API
Pada Android Studio.

Callback dan Variable Baru


Buka MapsActivity.java pada package java, tambahkan beberapa calback yang diperlukan, antara
lain:

1. GoogleApiClient.ConnectionCallbacks: Callback ini akan memiliki function 'public function onConnected()' yang akan dipanggil
saat perangkat terhubung dengan jaringan internet.

2. GoogleApiClient.OnConnectionFailedListener: Menyediakan callback saat klien dengan penyedia layanan gagal terhubung.

3. LocationListener: Callback ini diperlukan saat terjadi perubahan lokasi pengguna.


Masukan ketiga callback setelah OnMapReadyCallback hingga menjadi

tekan ALT+ENTER dan import class yang diperlukan, hingga menjadi

Klik kanan pada bagian dengan garis bawah merah lalu pilih "Generate", kemudian pilih
"Implement Method".

Pilih semua method lalu klik OK, lalu tambahkan beberapa variable baru yang nanti akan
digunakan dibawahnya. Variable tersebut antara lain :

GoogleApiClient mGoogleApiClient;
private LocationRequest mLocationRequest;
private Marker mCurrLocationMarker;
private Location mLastLocation;

onMapReady()
Fungsi ini dipanggil saat peta siap digunakan. Disini letak ditambahkannya marker, listener dan
atribut-atribut fungsional lainnya. Tambahkan kode berikut didalam onMapReady()

mMap = googleMap;

//Memulai Google Play Services


if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this,
android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
buildGoogleApiClient();
mMap.setMyLocationEnabled(true);
}
}
else {
buildGoogleApiClient();
mMap.setMyLocationEnabled(true);
}

buildGoogleApiClient()
Sekarang kita perlu menginisialisasi Google Play Services. Metode yang akan digunakan adalah
builder method (buildGoogleApiClient()). Setelahnya setMyLocationEnabled diperlukan untuk
mengaktifkan location layer yang memungkinkan perangkat untuk berinteraksi dengan lokasi
terkini pengguna.

Buat fungsi baru dengan nama function protected synchronized void buildGoogleApiClient()
dan tambahkan kode berikut:

mGoogleApiClient = new
GoogleApiClient.Builder(this).addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(LocationService

mGoogleApiClient.connect();

1. GoogleApiClient.Builder digunakan untuk kon gurasi klien.

2. .addConnectionCallbacks menyediakan callback yang diperlukan saat klien tengah terhubung atau terputus dari server.

3. .addOnConnectionFailedListener menyediakan callback yang diperlukan saat klien gagal terhubung dengan layanan.

4. .addApi menambahkan LocationServices API titik akhir Google Play Services.

5. mGoogleApiClient.connect() klien harus terhubung terlebih dahulu sebelum dapat melakukan sebuah operasi.

onConnected()
Dalam aplikasi yang berbasis lokasi, sangat perlu untuk memperbarui lokasi terkini secara berkala.
Dengan Location Provider yang memanfaatkan data lokasi dari GPS, sinyal cellular dan jaringan
Wi-Fi dapat dilakukan analisa lokasi dengan sangat akurat. Tambahkan kode berikut didalam
onConnected():

LocationRequest mLocationRequest = new LocationRequest();


mLocationRequest.setInterval(1000);
mLocationRequest.setFastestInterval(1000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
if (ContextCompat.checkSelfPermission(this,
android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
Jadi sekarang aplikasi berbasis lokasi ini telah dapat mengetahui kemungkinan lokasi terkini.
Selanjutnya perlu ditambahkan apa yang harus dilakukan saat lokasi pengguna berubah. Untuk itu
Google Maps API telah menyediakan fungsi onLocationChanged.

onLocationChanged()
Tambahkan kode berikut didalam onLocationChanged() :

mLastLocation = location;
if (mCurrLocationMarker != null) {
mCurrLocationMarker.remove();
}
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());

CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(latLng.latitude,


latLng.longitude)).zoom(16).build();

mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

//menghentikan pembaruan lokasi


if (mGoogleApiClient != null) {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
}

Selanjutnya diperlukan izin untuk mengakses lokasi terkini.

Permintaan Izin Akses Lokasi


Pada Android 6.0 Marshmallow, aplikasi tidak akan diberi izin apapun pada saat instalasi.
Melainkan aplikasi harus meminta izin satu per satu pada saat aplikasi berjalan. Jadi tambahkan
kode berikut:

public static final int MY_PERMISSIONS_REQUEST_LOCATION = 99;


public boolean checkLocationPermission(){
if (ContextCompat.checkSelfPermission(this,
android.Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
android.Manifest.permission.ACCESS_FINE_LOCATION)) {
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_LOCATION);
} else {
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_LOCATION);
}
return false;
} else {
return true;
}
}

Pada kode diatas checkSelfPermission harus menghasilkan PackageManager.PERMISSION_GRANTED,


sehingga apliksi dapat melanjutkan prosesnya. Jika aplikasi tidak mendapatkan izin, method ini
akan menghasilkan PERMISSION_DENIED, dan aplikasi akan meminta persetujuan izin dari
pengguna.

Respon Permintaan Akses Lokasi


Sebuah dialog box akan ditampilkan saat aplikasi meminta persetujuan dari pengguna. Saat
pengguna menanggapi, sistem yang menyangkut method onRequestPermissionsResult(),
memberikan aplikasi tanggapan dari pengguna. Aplikasi ini mengambil alih apabila persetujuan
telah diberikan. Tambahkan kode berikut:
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_LOCATION: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {

// Izin diberikan.
if (ContextCompat.checkSelfPermission(this,
android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {

if (mGoogleApiClient == null) {
buildGoogleApiClient();
}
mMap.setMyLocationEnabled(true);
}

} else {

// Izin ditolak.
Toast.makeText(this, "permission denied", Toast.LENGTH_LONG).show();
}
return;
}

Setalah semua proses pengkodean selesai seluruh script MapsActivity.java akan terlihat seperti
berikut :

package com.example.root.peta;

import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.view.View;
import android.widget.Toast;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com google android gms maps model LatLng;

Untuk uji coba aplikasi yang telah dibuat gunakan perangkat android yang terhubung ke android
studio dan memiliki koneksi internet serta aktifkan akses lokasi pada pengaturan perangkat
android. Jika uji coba berhasil maka akan muncul gambar seperti di bawah ini

Android google api map studio

Share on Facebook Share on Twitter


 

Gabung CodePolitan Membership


Ingin belajar coding secara online dengan lebih terarah? Gabung sekarang dalam program
Premium Membership di CodePolitan. Dapatkan ratusan modul belajar pemrograman
premium dalam beragam format dengan materi silabus lengkap dan tersusun rapi dari awal
hingga mahir.

LIHAT MATERI BELAJAR GABUNG MEMBERSHIP

Kirim Komentar

KIRIM KOMENTAR

Artikel Lainnya

Mengenal apa itu Memulai Bridgefy - Aplikasi Belajar Flutter Di


Laravel Airlock Menggunakan Here Chatting Tanpa Visual Studio Code :
Maps API JavaScript Internet Membuat kelas
DropdownButton

Mar 07, 2017 Mar 07, 2017 Mar 07, 2017 Mar 07, 2017

FEEDBACK TERMS & CONDITIONS PRIVACY POLICY HALL OF FAME     


MERCHANDISE

© 2020 CodePolitan. All rights reserved info@codepolitan.com