Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.acer.app_kampus;
- import android.*;
- import android.app.ProgressDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.graphics.Color;
- import android.net.ConnectivityManager;
- import android.net.NetworkInfo;
- import android.net.wifi.WifiManager;
- import android.provider.Settings;
- import android.support.annotation.Nullable;
- import android.support.v4.app.ActivityCompat;
- import android.support.v4.app.Fragment;
- import android.support.v4.app.FragmentTransaction;
- import android.support.v7.app.AlertDialog;
- import android.os.Bundle;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemSelectedListener;
- import android.widget.ArrayAdapter;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Spinner;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.acer.app_kampus.koneksi.config;
- import com.acer.app_kampus.modules.DirectionFinder;
- import com.acer.app_kampus.modules.DirectionFinderListener;
- import com.acer.app_kampus.modules.GPSTracker;
- import com.acer.app_kampus.modules.Route;
- import com.android.volley.RequestQueue;
- import com.android.volley.Response;
- import com.android.volley.VolleyError;
- import com.android.volley.toolbox.JsonArrayRequest;
- import com.android.volley.toolbox.JsonObjectRequest;
- import com.android.volley.toolbox.StringRequest;
- import com.android.volley.toolbox.Volley;
- import com.google.android.gms.common.ConnectionResult;
- import com.google.android.gms.common.api.GoogleApiClient;
- import com.google.android.gms.maps.CameraUpdateFactory;
- import com.google.android.gms.maps.GoogleMap;
- import com.google.android.gms.maps.MapFragment;
- import com.google.android.gms.maps.OnMapReadyCallback;
- import com.google.android.gms.maps.model.BitmapDescriptorFactory;
- import com.google.android.gms.maps.model.Marker;
- import com.google.android.gms.maps.model.MarkerOptions;
- import com.google.android.gms.maps.model.Polyline;
- import com.google.android.gms.maps.model.PolylineOptions;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.io.UnsupportedEncodingException;
- import java.util.ArrayList;
- import java.util.List;
- public class cari_kampus extends Fragment implements OnMapReadyCallback, DirectionFinderListener,GoogleApiClient.OnConnectionFailedListener, GoogleApiClient.ConnectionCallbacks{
- private GoogleMap mMap;
- private Button btnFindPath;
- private EditText etOrigin;
- private Spinner etDestination;
- private List<Marker> originMarkers = new ArrayList<>();
- private List<Marker> destinationMarkers = new ArrayList<>();
- private List<Polyline> polylinePaths = new ArrayList<>();
- private ProgressDialog progressDialog;
- private ArrayList<String> kampus;
- private JSONArray result;
- RequestQueue RequestQueue;
- GPSTracker gpsx;
- private WifiManager wfm;
- private ConnectivityManager cntm;
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View v = inflater.inflate(R.layout.activity_cari_kampus,container,false);
- MapFragment mFragmentMap = MapFragment.newInstance();
- android.app.FragmentTransaction mTranscation = getActivity().getFragmentManager().beginTransaction();
- mTranscation.add(R.id.map,mFragmentMap);
- mTranscation.commit();
- mFragmentMap.getMapAsync(this);
- kampus = new ArrayList<String>();
- String list[] = {"Universitas Negeri Malang (UM)","Universitas Islam Negeri Maulana Malik Ibrahim (UIN)",
- "Universitas Brawijaya (UB)","Universitas Muhammadiyah Malang (UMM)","Universitas Merdeka Malang (Unmer)",
- "UPBJJ Universitas Terbuka Malang","Universitas Gajayana (Uniga)","Universitas Islam Malang (Unisma)",
- "Universitas Kanjuruhan Malang (Unikama)","Universitas Wisnuwardhana (Unidha)","Universitas Widyagama (UWG)",
- "Universitas Ma Chung","Universitas Kristen Cipta Wacana (UKCW)","Universitas Katolik Widya Karya",
- "Universitas Tribhuwana Tunggadewi (Unitri)",};
- RequestQueue = Volley.newRequestQueue(getActivity());
- btnFindPath = (Button) v.findViewById(R.id.btnFindPath);
- etOrigin = (EditText) v.findViewById(R.id.etOrigin);
- etDestination = (Spinner) v.findViewById(R.id.etDestination);
- ArrayAdapter<String> AdapterList = new ArrayAdapter<String>(getContext(),
- android.R.layout.simple_spinner_dropdown_item,list);
- etDestination.setAdapter(AdapterList);
- if(!network()){
- createNetErrorDialog();
- }
- else{
- LocationToAddress();
- }
- btnFindPath.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- sendRequest();
- }
- });
- //getData();
- return v;
- }
- private void getData(){
- //Creating a string request
- StringRequest stringRequest = new StringRequest(config.SPINER,
- new Response.Listener<String>() {
- @Override
- public void onResponse(String response) {
- JSONObject j = null;
- try {
- //Parsing the fetched Json String to JSON Object
- j = new JSONObject(response);
- //Storing the Array of JSON String to our JSON Array
- result = j.getJSONArray(config.JSON_ARRAY);
- //Calling method getStudents to get the students from the JSON Array
- getStudents(result);
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- },
- new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- }
- });
- //Creating a request queue
- RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
- //Adding request to the queue
- requestQueue.add(stringRequest);
- }
- private void getStudents(JSONArray j){
- //Traversing through all the items in the json array
- for(int i=0;i<j.length();i++){
- try {
- //Getting json object
- JSONObject json = j.getJSONObject(i);
- //Adding the name of the student to array list
- kampus.add(json.getString(config.KEY_NAMA_KAMPUS));
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- //Setting adapter to show the items in the spinner
- etDestination.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, kampus));
- }
- private void sendRequest() {
- String origin = etOrigin.getText().toString();
- String destination = etDestination.getSelectedItem().toString();
- if (origin.isEmpty()) {
- Toast.makeText(getActivity(), "Please enter origin address!", Toast.LENGTH_SHORT).show();
- return;
- }
- if (destination.isEmpty()) {
- Toast.makeText(getActivity(), "Please enter destination address!", Toast.LENGTH_SHORT).show();
- return;
- }
- try {
- new DirectionFinder(this, origin, destination).execute();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onMapReady(GoogleMap googleMap) {
- mMap = googleMap;
- if (ActivityCompat.checkSelfPermission(getActivity(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- // TODO: Consider calling
- return;
- }
- mMap.setMyLocationEnabled(true);
- }
- @Override
- public void onDirectionFinderStart() {
- progressDialog = ProgressDialog.show(getActivity(), "Please wait.",
- "Finding direction..!", true);
- if (originMarkers != null) {
- for (Marker marker : originMarkers) {
- marker.remove();
- }
- }
- if (destinationMarkers != null) {
- for (Marker marker : destinationMarkers) {
- marker.remove();
- }
- }
- if (polylinePaths != null) {
- for (Polyline polyline:polylinePaths ) {
- polyline.remove();
- }
- }
- }
- @Override
- public void onDirectionFinderSuccess(List<Route> routes) {
- progressDialog.dismiss();
- polylinePaths = new ArrayList<>();
- originMarkers = new ArrayList<>();
- destinationMarkers = new ArrayList<>();
- for (Route route : routes) {
- mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(route.startLocation, 16));
- ((TextView) getActivity().findViewById(R.id.tvDuration)).setText(route.duration.text);
- ((TextView) getActivity().findViewById(R.id.tvDistance)).setText(route.distance.text);
- originMarkers.add(mMap.addMarker(new MarkerOptions()
- .icon(BitmapDescriptorFactory.fromResource(R.drawable.start_blue))
- .title(route.startAddress)
- .position(route.startLocation)));
- destinationMarkers.add(mMap.addMarker(new MarkerOptions()
- .icon(BitmapDescriptorFactory.fromResource(R.drawable.end_green))
- .title(route.endAddress)
- .position(route.endLocation)));
- PolylineOptions polylineOptions = new PolylineOptions().
- geodesic(true).
- color(Color.BLUE).
- width(10);
- for (int i = 0; i < route.points.size(); i++)
- polylineOptions.add(route.points.get(i));
- polylinePaths.add(mMap.addPolyline(polylineOptions));
- }
- }
- @Override
- public void onConnected(Bundle bundle) {
- }
- @Override
- public void onConnectionSuspended(int i) {
- }
- @Override
- public void onConnectionFailed(ConnectionResult connectionResult) {
- }
- public boolean network() {
- //Get the wifi service of device
- wfm = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
- //Get the Mobile Dtata service of device
- cntm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
- final NetworkInfo nInfo = cntm.getActiveNetworkInfo();
- if ((wfm.isWifiEnabled()) || (nInfo != null && nInfo.isConnected())) {
- return true;
- }
- else{
- return false;
- }
- }
- protected void createNetErrorDialog() {
- AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
- builder.setMessage("You need a network connection to use this application. Please turn on mobile network or Wi-Fi in Settings.")
- .setTitle("Unable to connect")
- .setCancelable(false)
- .setPositiveButton("Enable",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- Intent i = new Intent(Settings.ACTION_SETTINGS);
- //startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
- startActivity(i);
- //finish();
- }
- }
- ) .setNegativeButton("Cancel",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- getActivity().finish();
- }
- }
- )
- ;
- AlertDialog alert = builder.create();
- alert.show();
- }
- public void LocationToAddress(){
- //
- gpsx = new GPSTracker(cari_kampus.this.getActivity());
- double lat = gpsx.getLatitude();
- double longt = gpsx.getLongitude();
- final String lattadd = String.valueOf(lat);
- final String logtadd = String.valueOf(longt);
- // JsonObjectRequest request = new JsonObjectRequest("https://maps.googleapis.com/maps/api/geocode/json?latlng=23.781522,"90.3704991&key=AIzaSyBma_A78YGbZwGav3SR3vSGoAXka8FGFzQ", new Response.Listener<JSONObject>() {
- JsonObjectRequest request = new JsonObjectRequest("https://maps.googleapis.com/maps/api/geocode/json?latlng="+lattadd+","+logtadd+"&key=AIzaSyBma_A78YGbZwGav3SR3vSGoAXka8FGFzQ", new Response.Listener<JSONObject>() {
- @Override
- public void onResponse(JSONObject response) {
- try {
- String getaddress = response.getJSONArray("results").getJSONObject(0).getString("formatted_address");
- etOrigin.setText(getaddress);
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- }
- });
- RequestQueue.add(request);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement