Advertisement
Damian96

DetailRequestActivity

Aug 16th, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.41 KB | None | 0 0
  1. package com.daperrazo.entregas.activities.client;
  2.  
  3.  
  4.  
  5. import androidx.appcompat.app.AppCompatActivity;
  6.  
  7. import android.content.Intent;
  8. import android.graphics.Color;
  9. import android.os.Bundle;
  10. import android.util.Log;
  11. import android.view.View;
  12. import android.widget.Button;
  13. import android.widget.TextView;
  14.  
  15. import com.daperrazo.entregas.R;
  16. import com.google.android.gms.maps.CameraUpdateFactory;
  17. import com.google.android.gms.maps.GoogleMap;
  18. import com.google.android.gms.maps.OnMapReadyCallback;
  19. import com.google.android.gms.maps.SupportMapFragment;
  20. import com.google.android.gms.maps.model.BitmapDescriptorFactory;
  21. import com.google.android.gms.maps.model.CameraPosition;
  22. import com.google.android.gms.maps.model.JointType;
  23. import com.google.android.gms.maps.model.LatLng;
  24. import com.google.android.gms.maps.model.MarkerOptions;
  25. import com.google.android.gms.maps.model.PolylineOptions;
  26. import com.google.android.gms.maps.model.SquareCap;
  27. import com.google.gson.JsonObject;
  28.  
  29. import com.daperrazo.entregas.includes.MyToolbar;
  30. import com.daperrazo.entregas.providers.GoogleApiProvider;
  31. import com.daperrazo.entregas.utils.DecodePoints;
  32.  
  33. import org.json.JSONArray;
  34. import org.json.JSONObject;
  35.  
  36. import java.util.List;
  37.  
  38. import de.hdodenhof.circleimageview.CircleImageView;
  39. import retrofit2.Call;
  40. import retrofit2.Callback;
  41. import retrofit2.Response;
  42.  
  43. public class DetailRequestActivity extends AppCompatActivity implements OnMapReadyCallback {
  44.  
  45.     private GoogleMap mMap;
  46.     private SupportMapFragment mMapFragment;
  47.  
  48.     private double mExtraOriginLat;
  49.     private double mExtraOriginLng;
  50.     private double mExtraDestinationLat;
  51.     private double mExtraDestinationLng;
  52.     private String mExtraOrigin;
  53.     private String mExtraDestination;
  54.  
  55.     private LatLng mOriginLatLng;
  56.     private LatLng mDestinationLatLng;
  57.  
  58.     private GoogleApiProvider mGoogleApiProvider;
  59.  
  60.     private List<LatLng> mPolylineList;
  61.     private PolylineOptions mPolylineOptions;
  62.  
  63.     private TextView mTextViewOrigin;
  64.     private TextView mTextViewDestination;
  65.     private TextView mTextViewTime;
  66.     private TextView mTextViewDistance;
  67.     private CircleImageView mCircleImageBack;
  68.  
  69.  
  70.     private Button mButtonRequest;
  71.  
  72.     @Override
  73.     protected void onCreate(Bundle savedInstanceState) {
  74.         super.onCreate(savedInstanceState);
  75.         setContentView(R.layout.activity_detail_request);
  76.         MyToolbar.show(this, "TUS DATOS", true);
  77.  
  78.         mMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
  79.         mMapFragment.getMapAsync(this);
  80.  
  81.         mExtraOriginLat = getIntent().getDoubleExtra("origin_lat", 0);
  82.         mExtraOriginLng = getIntent().getDoubleExtra("origin_lng", 0);
  83.         mExtraDestinationLat = getIntent().getDoubleExtra("destination_lat", 0);
  84.         mExtraDestinationLng = getIntent().getDoubleExtra("destination_lng", 0);
  85.         mExtraOrigin = getIntent().getStringExtra("origin");
  86.         mExtraDestination = getIntent().getStringExtra("destination");
  87.  
  88.         mOriginLatLng = new LatLng(mExtraOriginLat, mExtraOriginLng);
  89.         mDestinationLatLng = new LatLng(mExtraDestinationLat, mExtraDestinationLng);
  90.  
  91.         mGoogleApiProvider = new GoogleApiProvider(DetailRequestActivity.this);
  92.  
  93.         mTextViewOrigin = findViewById(R.id.textViewOrigin);
  94.         mTextViewDestination = findViewById(R.id.textViewDestination);
  95.         mTextViewTime = findViewById(R.id.textViewTime);
  96.         mTextViewDistance = findViewById(R.id.textViewDistance);
  97.         mButtonRequest = findViewById(R.id.btnRequestNow);
  98.         mCircleImageBack = findViewById(R.id.circleImageBack);
  99.  
  100.  
  101.         mTextViewOrigin.setText(mExtraOrigin);
  102.         mTextViewDestination.setText(mExtraDestination);
  103.  
  104.         mButtonRequest.setOnClickListener(new View.OnClickListener() {
  105.             @Override
  106.             public void onClick(View view) {
  107.                 goToRequestDriver();
  108.             }
  109.         });
  110.         mCircleImageBack.setOnClickListener(new View.OnClickListener() {
  111.             @Override
  112.             public void onClick(View view) {
  113.                 finish();
  114.             }
  115.         });
  116.  
  117.  
  118.     }
  119.  
  120.     private void goToRequestDriver() {
  121.         Intent intent = new Intent(DetailRequestActivity.this, RequestDriverActivity.class);
  122.         intent.putExtra("origin_lat", mOriginLatLng.latitude);
  123.         intent.putExtra("origin_lng", mOriginLatLng.longitude);
  124.         intent.putExtra("origin", mExtraOrigin);
  125.         intent.putExtra("destination", mExtraDestination);
  126.         intent.putExtra("destination_lat", mDestinationLatLng.latitude);
  127.         intent.putExtra("destination_lng", mDestinationLatLng.longitude);
  128.  
  129.         startActivity(intent);
  130.         finish();
  131.     }
  132.  
  133.  
  134.     private void drawRoute() {
  135.         mGoogleApiProvider.getDirections(mOriginLatLng, mDestinationLatLng).enqueue(new Callback<String>() {
  136.             @Override
  137.             public void onResponse(Call<String> call, Response<String> response) {
  138.                 try {
  139.  
  140.                     JSONObject jsonObject = new JSONObject(response.body());
  141.                     JSONArray jsonArray = jsonObject.getJSONArray("routes");
  142.                     JSONObject route = jsonArray.getJSONObject(0);
  143.                     JSONObject polylines = route.getJSONObject("overview_polyline");
  144.                     String points = polylines.getString("points");
  145.                     mPolylineList = DecodePoints.decodePoly(points);
  146.                     mPolylineOptions = new PolylineOptions();
  147.                     mPolylineOptions.color(Color.DKGRAY);
  148.                     mPolylineOptions.width(13f);
  149.                     mPolylineOptions.startCap(new SquareCap());
  150.                     mPolylineOptions.jointType(JointType.ROUND);
  151.                     mPolylineOptions.addAll(mPolylineList);
  152.                     mMap.addPolyline(mPolylineOptions);
  153.  
  154.                     JSONArray legs =  route.getJSONArray("legs");
  155.                     JSONObject leg = legs.getJSONObject(0);
  156.                     JSONObject distance = leg.getJSONObject("distance");
  157.                     JSONObject duration = leg.getJSONObject("duration");
  158.                     String distanceText = distance.getString("text");
  159.                     String durationText = duration.getString("text");
  160.                     mTextViewTime.setText(durationText);
  161.                     mTextViewDistance.setText(distanceText);
  162.  
  163.                 } catch(Exception e) {
  164.                     Log.d("Error", "Error encontrado " + e.getMessage());
  165.                 }
  166.             }
  167.  
  168.             @Override
  169.             public void onFailure(Call<String> call, Throwable t) {
  170.  
  171.             }
  172.         });
  173.     }
  174.  
  175.     @Override
  176.     public void onMapReady(GoogleMap googleMap) {
  177.         mMap = googleMap;
  178.         mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
  179.         mMap.getUiSettings().setZoomControlsEnabled(true);
  180.  
  181.         mMap.addMarker(new MarkerOptions().position(mOriginLatLng).title("Origen").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_pin_red)));
  182.         mMap.addMarker(new MarkerOptions().position(mDestinationLatLng).title("Destino").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_pin_blue)));
  183.  
  184.         mMap.animateCamera(CameraUpdateFactory.newCameraPosition(
  185.                 new CameraPosition.Builder()
  186.                         .target(mOriginLatLng)
  187.                         .zoom(15f)
  188.                         .build()
  189.         ));
  190.  
  191.         drawRoute();
  192.     }
  193. }
  194.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement