Cari Blog Ini

Project Dan Studi Kasus

Kembali Ke Menu Awal

1. Halaman Pertama Pelatihan  

2. Halaman Menu Materi Pembelajaran 


 

Dalam Pelatihan Java ini ada 3 jenis Operating Sistem (OS) yang akan dijadikan contoh untuk realisasi pemrograman dengan Java

1. Windows

2. Linux

3. On Line

Proses pelatihan juga bisa dilakukan secara on line tanpa harus melakukan instalasi awal terlebih dahulu. Lihat platform on line yang memberikan layanan coding on line ini sebagai berikut 

Dcoder berbasis Web

Dengan menggunakan platform on line ini tidak perlu ada instalasi awal yang rumit dan membuang waktu. Prinsip coding bisa dilakukan dengan lebih mudah. Coding hanya dikonsentrasikan pada proses pemahaman struktur bahasa pemrograman saja, tidak perlu hal-hal lain yang hanya menjadi penunjang sekunder aktivitas programming

4. Android

Pada OS berbasis Android yang biasa digunakan di Handphone android terdapat program yang harus diinstalasi di awal program. Untuk latihan pertama ini digunakanlah aplikasi Dcoder yang bisa didownload di Google Play untuk diinstalasi di android. Ada beberapa program lain yang serupa dengan Dcoder yang secara prinsip bisa digunakan juga.   

Lihat juga alamat Dcoder yang ada di web On Line

Dcoder On line


Masing-masing OS memberikan beberapa program awal yang harus diinstalasi di awal program, agar proses programming dapat dilakukan dengan baik. Jika tidak ada program awal yang diinstalasi di masing-masing OS, maka proses programming tidak akan bisa dilakukan.  


Project yang telah dilakukan

1.  File : PelatihanTiga.java

 Kode yang dicompile di Android



 Kode yang dicompile di Web 


Berikut adalah Line Code Java nya

-------------------------------------------------------------------------

import java.util.*;

//Compiler version JDK 11.0.2

-------------------------------------------------------

public class Dcoder

 
public static void main(String[] args) {
        System.out.println("FOR");
        for( int i = 1; i <= 10; i++ ){
            if(i%2 == 1){
                System.out.println("Mencetak perulangan ke-" + i);
            }
        }
       
        System.out.println("WHILE");
        int x = 1;
        while(x >= 10){
            System.out.println("Mencetak perulangan ke-" + x);
            x++;
        }
       
        System.out.println("DO WHILE");
        int y = 1;
        do {
            System.out.println("Mencetak perulangan ke-" + y);
            y++;
        } while (y >= 10);
    }
}

 ------------------------------------------------------

2. File : PelatihanB.java

3. File : Pelatujan.java


4. File : LatihanAb.java

5. File : LatihanTypeA.java

 

6. File : HelloWorld.java

 

7. File : LatihanTypeAa.java

8. File : PelatihqnDelapan.java

9. File : PelatihanSembln.java

10. File : PelatihanSeplh.java

11. File : LatihanBerikut.java

12. File : LatihanBerikut2.java


13. File : PelatihanBerikutTiga.java

Memasukkan Input 89. Untuk File ini ada interaksi dari pengguna dengan memasukkan nilai yang diminta oleh program. Dalam contoh ini angka 89 coba dimasukkan


 

Berikut jika dimasukkan nilai 50, maka akan menghasilkan tampilan sebagai berikut



Berikut Listing Program Java yang digunakan 

-----------------------------------------------------------------

import java.util.*;

//Compiler version JDK 11.0.2
-------------------------------------------------------------------
public class Dcoder {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Masukkan Nilai Anda : ");
        int nilai = input.nextInt();
        System.out.println(prosesKelulusan(nilai));
    }
    public static String prosesKelulusan(int nilaiUjian){
        String hasil;
       
        System.out.println("Nilai Ujian : " + nilaiUjian);
        if(nilaiUjian > 85){
            hasil = "Lulus dengan nilai A";
        } else if(nilaiUjian > 75 && nilaiUjian <= 85) {
            hasil = "Lulus dengan nilai B";
        } else if(nilaiUjian > 65 && nilaiUjian <= 75){
            hasil = "Lulus dengan nilai C";
        } else {
            hasil = "Tidak Lulus";
        }
       
        return hasil;
    }
   
}

-----------------------------

14. PelathanBerikutEmpat.java




Berikut Listing Program Java yang digunakan 

-------------------------------------------------------------

import java.util.*;

//Compiler version JDK 11.0.2

---------------------------------------------------------------


public class Perulangan {
    public static void main(String[] args) {
        prosesFor(4);
        prosesFor(3);
    }
   
    public static void prosesFor(int perulangan){
        System.out.println("FOR");
        for( int i = 1; i <= perulangan; i++ ){
            System.out.println("Mencetak perulangan ke-" + i);
        }
    }
   
    public static void prosesWhile(){
        System.out.println("WHILE");
        int x = 1;
        while(x <= 10){
            System.out.println("Mencetak perulangan ke-" + x);
            x++;
        }
    }
   
    public static void prosesDoWhile(){
        System.out.println("DO WHILE");
        int y = 1;
        do {
            System.out.println("Mencetak perulangan ke-" + y);
            y++;
        } while (y <= 10);
    }
   
}


15. PelathanBerikutLima.java

 


 

Berikut Listing Program Java yang digunakan 

--------------------------------

import java.util.*;

//Compiler version JDK 11.0.2

---------------------
public class Kondisi {
    public static void main(String[] args) {
        int nilai = 80;
        System.out.println(prosesKelulusan(nilai));
    }
    public static String prosesKelulusan(int nilaiUjian){
        String hasil;
       
        System.out.println("Nilai Ujian : " + nilaiUjian);
        if(nilaiUjian > 85){
            hasil = "Lulus dengan nilai A";
        } else if(nilaiUjian > 75 && nilaiUjian <= 85) {
            hasil = "Lulus dengan nilai B";
        } else if(nilaiUjian > 65 && nilaiUjian <= 75){
            hasil = "Lulus dengan nilai C";
        } else {
            hasil = "Tidak Lulus";
        }
       
        return hasil;
    }
   
}


16. Menghitung Persegi Panjang : PersegiHitung.java



Berikut Listing Program Java yang digunakan 

----------------------------

import java.util.*;

//Compiler version JDK 11.0.2

------------------------
    public class HitungPersegi {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
       
        // Input Panjang Persegi
        System.out.print("Masukkan Panjang Persegi : ");
        int panjang = input.nextInt();
        // Input Lebar Persegi
        System.out.print("Masukkan Lebar Persegi : ");
        int lebar = input.nextInt();
       
        // Proses Hitung Luas Persegi
        int luas = panjang * lebar;
       
        // Output Luas Persegi
        System.out.println("Luas Persegi : " + luas);
    }
   
}


17. Ojeg On Line






Berikut Listing Program Java yang digunakan 

https://github.com/utsmannn/Kemana

--------------------------------------

import java.util.*;

//Compiler version JDK 11.0.2

-----------------------
public class Dcoder

 
public static void prosesOrderan(String[] dataPenumpang, int jarak, String[] dataDriver){
        int HARGA_PER_KM = 3000;
        String jawabanDriver = "";
        int pendapatan;
        for (String driver : dataDriver) {
            pendapatan = jarak * HARGA_PER_KM;
            System.out.format("Halo, %s"
                    + "%nAnda mendapatkan Order dengan detil berikut:"
                    + "%nNama Penumpang : %s"
                    + "%nAlamat Jemput  : %s"
                    + "%nAlamat Antar   : %s"
                    + "%nJarak          : %d"
                    + "%nPendapatan     : Rp. %d%n",
                    driver, dataPenumpang[0], dataPenumpang[1], dataPenumpang[2], jarak, pendapatan);
           
            public static String[] cariDriverTerdekat(String jemput){
        String[] drivers = {"Driver A", "Driver B", "Driver C"};
        return drivers;
    }
           
            public static int hitungJarak(String jemput, String antar){
        return 20;
    }
           
            public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Masukkan Nama Penumpang : ");
        String namaPenumpang = input.nextLine();
        System.out.print("Masukkan Alamat Jemput : ");
        String jemput = input.nextLine();
        System.out.print("Masukkan Alamat Antar : ");
        String antar = input.nextLine();
        String[] dataPenumpang = {namaPenumpang, jemput, antar};
       
        int jarak = hitungJarak(jemput, antar);
        String[] driver = cariDriverTerdekat(jemput);
       
        prosesOrderan(dataPenumpang, jarak, driver);
    }
           
            Scanner input = new Scanner(System.in);
            System.out.print("Apakah anda mau menerima order? Y/N : ");
            jawabanDriver = input.nextLine();
            if("Y".equalsIgnoreCase(jawabanDriver)){
                prosesTerimaDriver(dataPenumpang, jarak, driver, pendapatan);
                break;
            }
        }
       
        if("N".equalsIgnoreCase(jawabanDriver)){
            System.out.println("Mohon maaf tidak ada driver yang menerima, silahkan coba kembali");
        }
       
    }
   
    System.out.println(namaLengkap.substring(namaLengkap.indexOf("C")));
        System.out.println(namaLengkap);
        System.out.println(namaLengkap.contains("z"));
        System.out.println(namaLengkap.length());
        System.out.println(namaLengkap.startsWith("Di era"));
        System.out.println(namaLengkap.endsWith("formal"));
   
    public static String[] cariDriverTerdekat(String jemput){
        String[] drivers = {"Driver A", "Driver B", "Driver C"};
        return drivers;
    }
   
    public static int hitungJarak(String jemput, String antar){
        return 20;
    }
   
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Masukkan Nama Penumpang : ");
        String namaPenumpang = input.nextLine();
        System.out.print("Masukkan Alamat Jemput : ");
        String jemput = input.nextLine();
        System.out.print("Masukkan Alamat Antar : ");
        String antar = input.nextLine();
        String[] dataPenumpang = {namaPenumpang, jemput, antar};
       
        int jarak = hitungJarak(jemput, antar);
        String[] driver = cariDriverTerdekat(jemput);
       
        prosesOrderan(dataPenumpang, jarak, driver);
    }
   
    Scanner input = new Scanner(System.in);
            System.out.print("Apakah anda mau menerima order? Y/N : ");
            jawabanDriver = input.nextLine();
            if("Y".equalsIgnoreCase(jawabanDriver)){
                prosesTerimaDriver(dataPenumpang, jarak, driver, pendapatan);
                break;
            }
        }
       
        if("N".equalsIgnoreCase(jawabanDriver)){
            System.out.println("Mohon maaf tidak ada driver yang menerima, silahkan coba kembali");
        }
       
    }

-----------------------

Listing Kedua

------------

import java.util.*;

//Compiler version JDK 11.0.2

public class Dcoder

 
public static void main(String[] args){
        int jarakPerKm = 3000;
        String nama = "Andre";
            alamatJemput = "Jakarta Pusat";
                alamatAntar = "Jakarta Barat";
        String[] order = orderMasuk(nama, alamatJemput, alamatAntar);
        int jarak = hitungJarak(alamatJemput, alamatAntar);   
           
    cariDriver(order, jarak, jarakPerKm);
       
  public static String[] orderMasuk(String nama, String alamatJemput, String alamatAntar){     
        String[] order = (nama, alamatJemput, alamatAntar);
        return order;
    }

public static int hitungJarak(String alamatJemput, String alamatAntar){ 
    //Disimulasikan ke google Maps
        return 20;
    }
   
  public static void cariDriver(String[] order, int jarak, int jarakPerKm) {
        Scanner input = new Scanner(System.in);
        String respon, driverTerima = ".";
        String[] driverTerdekat = driverTerdekat(order[1]);
        for(String driver : driverTerdekat){   
        System.out.format("Halo %s %n"
                     + "Ada order masuk atas nama %s %n"
                     + "Alamat Jemput : %s %n"
                     + "Alamat Antar : %s %n"
                     + "Jarak : %d AKM %n"
                     + "Harga : Rp. %d %n", driver, order[0], order[1], order(2), jarak, jarak, jarakPerKm);
                     
        System.out.print("Ketik 'Y' jika terima order, atau 'N' untuk menolak order : ");
        respon = input.nextLine();
         if(respon.equals("Y")){
             driverTerima = driver;
             break;
         }
                          }
        hasilPencarian(driverTerima, order, jarak, jarakPerKm);
                          }
                         
      public static String[] driverTerdekat(String alamatJemput ){
      //Disimulasikan ke google Maps untuk mendapat list driver sesuai alamatJemput
         String[] drivers = {"Driver A", "Driver B", "Driver C", "Driver D"};
        return drivers;
    }
                         
                         
  public static void hasilPencarian(String driverTerima, String[] order, int jarak, int jarakPerKm) {
      if(driverTerima.equals("")){
        System.out.println("Tidak ada Driver yang menerima, silahkan coba kembali ");
      }else {
     System.out.println("=========ORDERAN DITERIMA================ ");
        System.out.format("Nama Driver      : %s %n"
                     + "Nama Penumpang : %s %n"
                     + "Alamat Jemput : %s %n"
                     + "Alamat Antar : %s %n"
                     + "Jarak : %d  %n"
                     + "Harga : Rp. %d %n", driverTerima, order[0], order[1], order[2], jarak, jarak, jarakPerKm);}}
                          

-----------

Listing ketiga

------

import java.util.*;

//Compiler version JDK 11.0.2

package com.talagasoft.gojek;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;

/**
* Created by compaq on 02/29/2016.
*/
public class Splash extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_activity);
ImageView img=(ImageView) findViewById(R.id.imageView);
img.setImageResource(R.drawable.splash);

Thread logoTimer = new Thread() {
public void run(){
try{
int logoTimer = 0;
while(logoTimer < 5000){
sleep(100);
logoTimer = logoTimer +100;
};
startActivity(new Intent(“com.talagasoft.gojek.PlaceFind”));
}

catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

finally{
finish();
}
}
};

logoTimer.start();

}

}


package com.talagasoft.gojek;

import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AutoCompleteTextView;
import android.widget.TextView;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
import com.google.android.gms.common.GooglePlayServicesRepairableException;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.PendingResult;
import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.location.places.Place;
import com.google.android.gms.location.places.PlaceBuffer;
import com.google.android.gms.location.places.PlaceLikelihood;
import com.google.android.gms.location.places.PlaceLikelihoodBuffer;
import com.google.android.gms.location.places.Places;
import com.google.android.gms.location.places.ui.PlacePicker;

public class PlaceFind extends FragmentActivity
implements GoogleApiClient.OnConnectionFailedListener,
GoogleApiClient.ConnectionCallbacks {

private GoogleApiClient mGoogleApiClient;

private int PLACE_PICKER_REQUEST = 1;
private AutoCompleteAdapter mAdapter;

private TextView mTextView;
private AutoCompleteTextView mPredictTextView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_place_find);
mTextView = (TextView) findViewById( R.id.textview );

mPredictTextView = (AutoCompleteTextView) findViewById( R.id.predicttextview );
mAdapter = new AutoCompleteAdapter( this );
mPredictTextView.setAdapter( mAdapter );

mPredictTextView.setOnItemClickListener( new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
AutoCompletePlace place = (AutoCompletePlace) parent.getItemAtPosition( position );
findPlaceById( place.getId() );
}
});

mGoogleApiClient = new GoogleApiClient
.Builder( this )
.enableAutoManage( this, 0, this )
.addApi( Places.GEO_DATA_API )
.addApi( Places.PLACE_DETECTION_API )
.addConnectionCallbacks( this )
.addOnConnectionFailedListener( this )
.build();
}
@Override
protected void onStart() {
super.onStart();
if( mGoogleApiClient != null )
mGoogleApiClient.connect();
}

@Override
protected void onStop() {
if( mGoogleApiClient != null && mGoogleApiClient.isConnected() ) {
mAdapter.setGoogleApiClient( null );
mGoogleApiClient.disconnect();
}
super.onStop();
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

}
private void findPlaceById( String id ) {
if( TextUtils.isEmpty( id ) || mGoogleApiClient == null || !mGoogleApiClient.isConnected() )
return;

Places.GeoDataApi.getPlaceById( mGoogleApiClient, id ) .setResultCallback( new ResultCallback<PlaceBuffer>() {
@Override
public void onResult(PlaceBuffer places) {
if( places.getStatus().isSuccess() ) {
Place place = places.get( 0 );
displayPlace( place );
mPredictTextView.setText( “” );
mAdapter.clear();
}

//Release the PlaceBuffer to prevent a memory leak
places.release();
}
} );
}

private void displayPlace( Place place ) {
if( place == null )
return;

String content = “”;
if( !TextUtils.isEmpty( place.getName() ) ) {
content += “Name: ” + place.getName() + “\n”;
}
if( !TextUtils.isEmpty( place.getAddress() ) ) {
content += “Address: ” + place.getAddress() + “\n”;
}
if( !TextUtils.isEmpty( place.getPhoneNumber() ) ) {
content += “Phone: ” + place.getPhoneNumber();
}
if( !TextUtils.isEmpty( place.getLatLng().toString() ) ) {
content += “LatLng: ” + place.getLatLng().toString() + “\n”;
}
mTextView.setText( content );

Bundle bundle;
bundle = new Bundle();
bundle.putString(“LatLng”, String.valueOf(place.getLatLng()));

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
startActivity(new Intent(“com.talagasoft.gojek.MapsActivity”), bundle);
}

}
protected void onActivityResult( int requestCode, int resultCode, Intent data ) {
if( requestCode == PLACE_PICKER_REQUEST && resultCode == RESULT_OK ) {
displayPlace( PlacePicker.getPlace( data, this ) );
}
}

@Override
public void onConnected(@Nullable Bundle bundle) {
if( mAdapter != null )
mAdapter.setGoogleApiClient( mGoogleApiClient );
}

@Override
public void onConnectionSuspended(int i) {

}
}

----------

https://bahpro.wordpress.com/2016/03/08/membuat-aplikasi-seperti-gojek/
                         
https://github.com/zadr50/gojek-member

--------

Line Code Baru 

------

package com.rosinante24.ojekonlineuserside.Activity;

import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AlertDialog;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
import com.google.android.gms.common.GooglePlayServicesRepairableException;
import com.google.android.gms.location.places.AutocompleteFilter;
import com.google.android.gms.location.places.Place;
import com.google.android.gms.location.places.ui.PlaceAutocomplete;
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.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.rosinante24.ojekonlineuserside.Helper.HeroHelper;
import com.rosinante24.ojekonlineuserside.Helper.SessionManager;
import com.rosinante24.ojekonlineuserside.Maps.DirectionMapsV2;
import com.rosinante24.ojekonlineuserside.Network.ApiServices;
import com.rosinante24.ojekonlineuserside.Network.InitLibrary;
import com.rosinante24.ojekonlineuserside.R;
import com.rosinante24.ojekonlineuserside.Response.Distance;
import com.rosinante24.ojekonlineuserside.Response.Leg;
import com.rosinante24.ojekonlineuserside.Response.OverviewPolyline;
import com.rosinante24.ojekonlineuserside.Response.ResponseBooking;
import com.rosinante24.ojekonlineuserside.Response.ResponseRoute;
import com.rosinante24.ojekonlineuserside.Response.Route;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class MainMapsActivity extends FragmentActivity implements OnMapReadyCallback {

    @BindView(R.id.lokasiawal)
    EditText lokasiawal;
    @BindView(R.id.lokasitujuan)
    EditText lokasitujuan;
    @BindView(R.id.text_price)
    TextView textPrice;
    @BindView(R.id.requestorder)
    Button requestorder;
    private GoogleMap mMap;
    // origin - lokasi awal
    private double latawal;
    private double lonawal;
    // destination - lokasi tujuan
    private double latakhir;
    private double lonakhir;
    private Long km_jarak;
    private Double ongkos_ojeg;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_maps);
        ButterKnife.bind(this);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {

            case R.id.history:
                startActivity(new Intent(MainMapsActivity.this, History.class));
                break;

            case R.id.Profil:
                pindahProfil();

                break;
        }
        return super.onOptionsItemSelected(item);
    }

    private void pindahProfil() {
        final SessionManager sesi = new SessionManager(MainMapsActivity.this);

        AlertDialog.Builder alert = new AlertDialog.Builder(MainMapsActivity.this);
        alert.setTitle("Profil Pengguna");
        alert.setMessage("Nama : " + sesi.getNama() + " \n" +
                "Email : " + sesi.getEmail() + " \n" +
                "No HP : " + sesi.getPhone() + " \n");
        alert.setPositiveButton("LogOut", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                sesi.logout(); // logout
                startActivity(new Intent(MainMapsActivity.this, LoginActivity.class));
                finish();
            }
        });
        alert.show();

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 1 && resultCode != 0) {
            // ambil data
            Place place = PlaceAutocomplete.getPlace(MainMapsActivity.this, data);
            // dapatkan koordinat tempat
            latawal = place.getLatLng().latitude; // bujur
            lonawal = place.getLatLng().longitude; // lintang

            LatLng posisi_awal = new LatLng(latawal, lonawal);
            // bersihkan map dari marker sebelumnya
            mMap.clear();

            // buat marker
            mMap.addMarker(new MarkerOptions().position(posisi_awal)
                    .title(place.getAddress().toString()));
            lokasiawal.setMaxLines(1);
            lokasiawal.setText(place.getAddress());
            // set auto zoom
            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(posisi_awal, 16)); // 16 = level zoom
        } else if (requestCode == 2 & resultCode != 0) {
            // ambil data
            Place place = PlaceAutocomplete.getPlace(MainMapsActivity.this, data);
            // dapatkan koordinat tempat
            latakhir = place.getLatLng().latitude; // bujur
            lonakhir = place.getLatLng().longitude; // lintang

            LatLng posisi_akhir = new LatLng(latakhir, lonakhir);

            // buat marker
            mMap.addMarker(new MarkerOptions().position(posisi_akhir)
                    .title(place.getAddress().toString()));
            lokasitujuan.setMaxLines(1);
            lokasitujuan.setText(place.getAddress());
            // set auto zoom
            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(posisi_akhir, 16)); // 16 = level zoom

            // buat polyline
            actionRoute();
        }
    }


    private void actionRoute() {
        ApiServices api = InitLibrary.getDirections();
        // 121.2123, 121.121
        // koordinat awal
        String origin = String.valueOf(latawal) + ", " + String.valueOf(lonawal);
        // koordinat tujuan
        String destination = String.valueOf(latakhir) + ", " + String.valueOf(lonakhir);

        // siapkan request
        Call<ResponseRoute> call = api.request_route(origin, destination);
        //
        call.enqueue(new Callback<ResponseRoute>() {
            @Override
            public void onResponse(Call<ResponseRoute> call, Response<ResponseRoute> response) {
                if (response.isSuccessful()) {
                    // get response from server
                    List<Route> object = response.body().getRoutes();
                    Route route = object.get(0);
                    OverviewPolyline overview = route.getOverviewPolyline();
                    // 10.10.10.128/DirectionMapsV2.java.zip
                    String point = overview.getPoints();
                    DirectionMapsV2 direction = new DirectionMapsV2(MainMapsActivity.this);
                    direction.gambarRoute(mMap, point);

                    // ambil jarak
                    List<Leg> legs = route.getLegs();
                    Leg data_leg = legs.get(0);
                    // jarak
                    Distance jarak = data_leg.getDistance();
                    // jarak meter & jarak string
                    String jarak_tempuh = jarak.getText();

                    km_jarak = jarak.getValue() / 1000;
                    // harga ngojek
                    ongkos_ojeg = Double.parseDouble(String.valueOf(km_jarak)) * 2000;
                    // set ke textview
                    textPrice.setText("Rp. " + HeroHelper.toRupiahFormat2(ongkos_ojeg.toString()));


                }
            }

            @Override
            public void onFailure(Call<ResponseRoute> call, Throwable t) {

            }
        });


    }


    private void completeAuto(int type) {
        // filter result of places
        AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
                .setCountry("ID")
                .build();

        Intent intent = null;
        try {
            // menampilkan overlay search box untuk auto complete places
            intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_OVERLAY)
                    .setFilter(typeFilter)
                    .build(MainMapsActivity.this);

        } catch (GooglePlayServicesRepairableException e) {
            e.printStackTrace();
        } catch (GooglePlayServicesNotAvailableException e) {
            e.printStackTrace();
        }
        startActivityForResult(intent, type);
    }


    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
        mMap.getUiSettings().setAllGesturesEnabled(true);
        mMap.getUiSettings().setMyLocationButtonEnabled(true);
    }

    @OnClick({R.id.lokasiawal, R.id.lokasitujuan, R.id.requestorder})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.lokasiawal:
                completeAuto(1);
                break;
            case R.id.lokasitujuan:
                completeAuto(2);
                break;
            case R.id.requestorder:
                requestOrder();
                break;
        }
    }


    private void requestOrder() {

        SessionManager sesi = new SessionManager(MainMapsActivity.this);
        String token = sesi.getToken();
        String deviceId = HeroHelper.getDeviceId(MainMapsActivity.this);
        String id_user = sesi.getIdUser();
        String alamat_awal = lokasiawal.getText().toString();
        String alamat_akhir = lokasitujuan.getText().toString();
        String lat1 = String.valueOf(latawal);
        String long1 = String.valueOf(lonawal);
        String lat2 = String.valueOf(latakhir);
        String long2 = String.valueOf(lonakhir);
        String tarif_order = ongkos_ojeg.toString();
        String jarak_tempuh = km_jarak.toString();

        ApiServices api = InitLibrary.getInstances();
        Call<ResponseBooking> call = api.request_booking(
                token, deviceId, id_user, lat1, long1, alamat_awal, lat2, long2, alamat_akhir, jarak_tempuh, tarif_order
        );
        call.enqueue(new Callback<ResponseBooking>() {
            @Override
            public void onResponse(Call<ResponseBooking> call, Response<ResponseBooking> response) {
                long id_booking = response.body().getIdBooking();
                if (response.body().getResult().equals("true")) {
                    Intent intent = new Intent(MainMapsActivity.this, Finddriver.class);
                    intent.putExtra("id_booking", id_booking);
                    startActivity(intent);
                } else {
                    HeroHelper.pesan(MainMapsActivity.this, response.body().getMsg());
                }
            }

            @Override
            public void onFailure(Call<ResponseBooking> call, Throwable t) {

            }
        });
    }


    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == 2) {
            mMap.isMyLocationEnabled();
        }
    }
}

------------ 

https://drive.google.com/drive/folders/1uXg30HPrFz5QVTyKCuXsGvS1FF9RncUX

https://safriansah.blogspot.com/2018/07/modul-java-final-project-sistem.html?m=1

--------