SHARE
TWEET

nullpointer

a guest Mar 29th, 2013 74 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
Pastebin PRO Autumn Special!
Get 40% OFF on Pastebin PRO accounts!
Top