Advertisement
Guest User

nullpointer

a guest
Mar 29th, 2013
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.21 KB | None | 0 0
  1. package id.amikom.jogjabankfinder.activity;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. import org.json.JSONObject;
  6.  
  7. import com.google.android.gms.common.ConnectionResult;
  8. import com.google.android.gms.common.GooglePlayServicesUtil;
  9. import com.google.android.gms.maps.CameraUpdateFactory;
  10. import com.google.android.gms.maps.GoogleMap;
  11. import com.google.android.gms.maps.MapFragment;
  12. import com.google.android.gms.maps.SupportMapFragment;
  13. import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;
  14. import com.google.android.gms.maps.model.BitmapDescriptorFactory;
  15. import com.google.android.gms.maps.model.LatLng;
  16. import com.google.android.gms.maps.model.Marker;
  17. import com.google.android.gms.maps.model.MarkerOptions;
  18.  
  19. import id.amikom.jogjabankfinder.GPSHelper;
  20. import id.amikom.jogjabankfinder.JSONHelper;
  21. import id.amikom.jogjabankfinder.R;
  22. import id.amikom.jogjabankfinder.Utils;
  23. import id.amikom.jogjabankfinder.entity.Bank;
  24. import android.location.Location;
  25. import android.location.LocationListener;
  26. import android.location.LocationManager;
  27. import android.os.AsyncTask;
  28. import android.os.Build;
  29. import android.os.Bundle;
  30. import android.annotation.TargetApi;
  31. import android.app.ProgressDialog;
  32. import android.content.Context;
  33. import android.content.Intent;
  34. import android.support.v4.app.FragmentActivity;
  35. import android.support.v4.app.FragmentManager;
  36. import android.view.KeyEvent;
  37. import android.view.View;
  38. import android.widget.AdapterView;
  39. import android.widget.ArrayAdapter;
  40. import android.widget.Spinner;
  41. import android.widget.Toast;
  42. import android.widget.AdapterView.OnItemSelectedListener;
  43.  
  44. @TargetApi(Build.VERSION_CODES.HONEYCOMB)
  45. public class PetaLokasi extends FragmentActivity implements OnItemSelectedListener, OnInfoWindowClickListener,
  46.         LocationListener
  47. {
  48.     private GoogleMap           map;
  49.     private GPSHelper           gps;
  50.     private LocationManager     locManager;
  51.     private Location            location;
  52.     private JSONHelper          json;
  53.     private LatLng              myLocation;
  54.     private Context             context;
  55.  
  56.     private ArrayList<Bank>     listBank;
  57.     private Marker              markerMyLocation;
  58.     private final int           ZOOM    = 14;
  59.  
  60.     private ProgressDialog      pDialog;
  61.  
  62.     private Spinner             spLokasiBank;
  63.     private ArrayList<String>   listBankSpinner;
  64.  
  65.     @Override
  66.     protected void onCreate(Bundle savedInstanceState)
  67.     {
  68.         super.onCreate(savedInstanceState);
  69.         setContentView(R.layout.activity_bank_location);
  70.  
  71.         spLokasiBank = (Spinner) findViewById(R.id.spinnerBank);
  72.         spLokasiBank.setOnItemSelectedListener(this);
  73.         locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
  74.  
  75.         context = this;
  76.  
  77.         json = new JSONHelper();
  78.  
  79.         new AsycnTaskBank().execute();
  80.  
  81.         setupGPS();
  82.  
  83.         setupMapIfNeeded();
  84.  
  85.     }
  86.  
  87.     private void setupGPS()
  88.     {
  89.         gps = new GPSHelper(context, locManager, this);
  90.         location = gps.getLocation();
  91.  
  92.         if (location != null)
  93.         {
  94.             myLocation = new LatLng(location.getLatitude(),
  95.                     location.getLongitude());
  96.             onLocationChanged(location);
  97.         }
  98.     }
  99.  
  100.     private void setupMapIfNeeded()
  101.     {
  102.  
  103.         if (map == null)
  104.         {
  105.             // map = ((SupportMapFragment)
  106.             // getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
  107.  
  108.             if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB)
  109.             {
  110.                 // jika dibawah honeycomb
  111.                 Utils.TRACE("API " + Build.VERSION.SDK_INT);
  112.                 FragmentManager fragmentManager = getSupportFragmentManager();
  113.                 SupportMapFragment supportMapFragment = (SupportMapFragment) fragmentManager.findFragmentById(R.id.map);
  114.                 map = supportMapFragment.getMap();
  115.  
  116.             } else
  117.             {
  118.                 Utils.TRACE("API " + Build.VERSION.SDK_INT);
  119.                 android.app.FragmentManager fragmentManager = getFragmentManager();
  120.                 MapFragment mapFragment = (MapFragment) fragmentManager.findFragmentById(R.id.map);
  121.                 map = mapFragment.getMap();
  122.  
  123.             }
  124.         }
  125.  
  126.         setupMap();
  127.     }
  128.  
  129.     private void setupMap()
  130.     {
  131.         map.setOnInfoWindowClickListener(this);
  132.  
  133.         if (myLocation != null)
  134.         {
  135.             markerMyLocation = map.addMarker(new MarkerOptions()
  136.                     .position(myLocation)
  137.                     .title("Posisi anda")
  138.                     .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
  139.  
  140.             map.moveCamera(CameraUpdateFactory.newLatLngZoom(myLocation, 14));
  141.  
  142.         }
  143.  
  144.     }
  145.  
  146.     @Override
  147.     public boolean onKeyDown(int keyCode, KeyEvent event)
  148.     {
  149.         // TODO Auto-generated method stub
  150.         if (keyCode == KeyEvent.KEYCODE_BACK)
  151.         {
  152.             startActivity(new Intent(PetaLokasi.this, MenuUtama.class));
  153.             finish();
  154.         }
  155.         return super.onKeyDown(keyCode, event);
  156.     }
  157.  
  158.     public void tampilSpinner()
  159.     {
  160.         // TODO Auto-generated method stub
  161.         ArrayAdapter<String> bankAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,
  162.                 listBankSpinner);
  163.         bankAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  164.  
  165.         spLokasiBank.setAdapter(bankAdapter);
  166.  
  167.     }
  168.  
  169.     @Override
  170.     public void onItemSelected(AdapterView<?> arg0, View arg1, int loc, long arg3)
  171.     {
  172.         // TODO Auto-generated method stub
  173.  
  174.         if (loc != 0)
  175.         {
  176.             tampilBank(loc);
  177.         }
  178.  
  179.     }
  180.  
  181.     private void tampilBank(int i)
  182.     {
  183.         i -= 1;
  184.         double lat = listBank.get(i).getLat();
  185.         double lng = listBank.get(i).getLng();
  186.         // String title = listBank.get(i).getName();
  187.  
  188.         // if (markerBank != null)
  189.         // {
  190.         // markerBank.remove();
  191.         // }
  192.         //
  193.         // markerBank = map.addMarker(new MarkerOptions()
  194.         // .position(new LatLng(lat, lng))
  195.         // .title(title));
  196.         map.animateCamera((CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng),
  197.                 ZOOM)));
  198.  
  199.     }
  200.  
  201.     @Override
  202.     public void onInfoWindowClick(Marker marker)
  203.     {
  204.         // TODO Auto-generated method stub
  205.  
  206.         Bundle bundle = new Bundle();
  207.  
  208.         bundle.putString("to", marker.getTitle());
  209.         bundle.putDouble("start_lat", myLocation.latitude);
  210.         bundle.putDouble("start_lng", myLocation.longitude);
  211.         bundle.putDouble("end_lat", marker.getPosition().latitude);
  212.         bundle.putDouble("end_lng", marker.getPosition().longitude);
  213.  
  214.         Intent i = new Intent(PetaLokasi.this,
  215.                 Navigasi.class);
  216.         i.putExtras(bundle);
  217.         startActivity(i);
  218.         finish();
  219.     }
  220.  
  221.     @Override
  222.     public void onLocationChanged(Location location)
  223.     {
  224.         // TODO Auto-generated method stub
  225.         Toast.makeText(this, "Lokasi berubah", Toast.LENGTH_SHORT).show();
  226.  
  227.         if (markerMyLocation != null)
  228.         {
  229.             markerMyLocation.remove();
  230.             markerMyLocation = map.addMarker(new MarkerOptions()
  231.                     .position(new LatLng(location.getLatitude(),
  232.                             location.getLongitude()))
  233.                     .title("Posisi anda")
  234.                     .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
  235.             map.animateCamera(CameraUpdateFactory.newLatLngZoom(new
  236.                     LatLng(location.getLatitude(), location.getLongitude()),
  237.                     14));
  238.  
  239.         }
  240.     }
  241.  
  242.     @Override
  243.     public void onProviderDisabled(String provider)
  244.     {
  245.         // TODO Auto-generated method stub
  246.  
  247.     }
  248.  
  249.     @Override
  250.     public void onProviderEnabled(String provider)
  251.     {
  252.         // TODO Auto-generated method stub
  253.  
  254.     }
  255.  
  256.     @Override
  257.     public void onStatusChanged(String provider, int status, Bundle extras)
  258.     {
  259.         // TODO Auto-generated method stub
  260.  
  261.     }
  262.  
  263.     @Override
  264.     protected void onResume()
  265.     {
  266.         // TODO Auto-generated method stub
  267.         super.onResume();
  268.  
  269.         int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
  270.         if (resultCode == ConnectionResult.SUCCESS)
  271.         {
  272.             Utils.TRACE("Google service ada");
  273.         } else
  274.         {
  275.             GooglePlayServicesUtil.getErrorDialog(resultCode, this, 1);
  276.         }
  277.     }
  278.  
  279.     @Override
  280.     protected void onPause()
  281.     {
  282.         // TODO Auto-generated method stub
  283.         super.onPause();
  284.     }
  285.  
  286.     @Override
  287.     protected void onStart()
  288.     {
  289.         // TODO Auto-generated method stub
  290.         super.onStart();
  291.         // gps.checkGPS();
  292.     }
  293.  
  294.     @Override
  295.     protected void onStop()
  296.     {
  297.         // TODO Auto-generated method stub
  298.         super.onStop();
  299.         // locManager.removeUpdates(this);
  300.         gps.stopGPS();
  301.     }
  302.  
  303.     private class AsycnTaskBank extends AsyncTask<Void, Void, Void>
  304.     {
  305.  
  306.         @Override
  307.         protected Void doInBackground(Void... params)
  308.         {
  309.             // TODO Auto-generated method stub
  310.             String URL = "http://jogjabankfinder.tk/lokasibank.php";
  311.  
  312.             JSONObject jObj = json.getJSONFromUrl(URL);
  313.             listBank = json.getAllBankLocation(jObj);
  314.  
  315.             return null;
  316.         }
  317.  
  318.         @Override
  319.         protected void onPostExecute(Void result)
  320.         {
  321.             // TODO Auto-generated method stub
  322.  
  323.             pDialog.dismiss();
  324.             runOnUiThread(new Runnable()
  325.             {
  326.  
  327.                 @Override
  328.                 public void run()
  329.                 {
  330.                     // TODO Auto-generated method stub
  331.                     listBankSpinner = new ArrayList<String>();
  332.                     listBankSpinner.add("Daftar Bank");
  333.  
  334.                     for (int i = 0; i < listBank.size(); i++)
  335.                     {
  336.                         listBankSpinner.add(listBank.get(i).getName());
  337.  
  338.                         map.addMarker(new MarkerOptions()
  339.                                 .position(new LatLng(listBank.get(i).getLat(), listBank.get(i)
  340.                                         .getLng()))
  341.                                 .title(listBank.get(i).getName())
  342.                                 .snippet(listBank.get(i).getDesc()));
  343.                     }
  344.  
  345.                 }
  346.             });
  347.  
  348.             tampilSpinner();
  349.             super.onPostExecute(result);
  350.         }
  351.  
  352.         @Override
  353.         protected void onPreExecute()
  354.         {
  355.             // TODO Auto-generated method stub
  356.             super.onPreExecute();
  357.  
  358.             pDialog = new ProgressDialog(PetaLokasi.this);
  359.             pDialog.setMessage("Loading....");
  360.             pDialog.setCancelable(true);
  361.             pDialog.show();
  362.         }
  363.  
  364.     }
  365.  
  366.     @Override
  367.     public void onNothingSelected(AdapterView<?> arg0)
  368.     {
  369.         // TODO Auto-generated method stub
  370.  
  371.     }
  372. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement