Jumat, 15 Maret 2013

Source Android - Get Data RSS BMKG Untuk Aplikasi Pemantau Gempa

Ane dapet kasus dari kantor, disuruh buat aplikasi pemantau gempa dengan berbasis android. awal nya bingung, setelah ane cari -cari arikel. dapet juga dari temen dunia maya gedelumbung yang sebelumNya sudah membuat aplikasi ini dengan memanfaatkan data dari BMKG.

Silahkan Liat aja dulu scriptnya dibawah ini.

package dlmbg.pckg.info.bmkg;

import java.util.ArrayList;
import java.util.HashMap;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class InfoBmkgActivity extends ListActivity {

 static final String URL = "http://data.bmkg.go.id/gempaterkini.xml";
 static final String KEY_ITEM = "gempa";
 static final String KEY_ID = "Tanggal";
 static final String KEY_TANGGAL = "Tanggal";
 static final String KEY_JAM = "Jam";
 static final String KEY_POINT = "point";
 static final String KEY_KOORDINAT = "coordinates";
 static final String KEY_LINTANG = "lintang";
 static final String KEY_BUJUR = "bujur";
 static final String KEY_KEKUATAN_GEMPA = "Magnitude";
 static final String KEY_KEDALAMAN = "Kedalaman";
 static final String KEY_WILAYAH = "Wilayah";
 private ProgressDialog pDialog;
 ArrayList> menuItems = new ArrayList>();

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  new AmbilData().execute();
 }

    class AmbilData extends AsyncTask {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(InfoBmkgActivity.this);
            pDialog.setMessage("Sabar gan, masih ngambil data neh...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        protected String doInBackground(String... args) {

      XMLParser parser = new XMLParser();
      String xml = parser.getXmlFromUrl(URL);
      Document doc = parser.getDomElement(xml);

      NodeList nl = doc.getElementsByTagName(KEY_ITEM);
      for (int i = 0; i < nl.getLength(); i++) {

             HashMap map = new HashMap();

       Element e = (Element) nl.item(i);

       String koordinat = parser.getValue(e, KEY_KOORDINAT);
       String[] koor = koordinat.split(",");

       map.put(KEY_ID, parser.getValue(e, KEY_ID));
       map.put(KEY_TANGGAL, parser.getValue(e, KEY_TANGGAL));
       map.put(KEY_JAM, parser.getValue(e, KEY_JAM));
       map.put(KEY_LINTANG, "Garis Lintang : "+koor[1]);
       map.put(KEY_BUJUR, "Garis Bujur : "+ koor[0]);
       map.put(KEY_KEKUATAN_GEMPA, "Kekuatan Gempa : "+parser.getValue(e, KEY_KEKUATAN_GEMPA));
       map.put(KEY_KEDALAMAN, "Kedalaman : "+ parser.getValue(e, KEY_KEDALAMAN));
       map.put(KEY_WILAYAH, "Wilayah : "+parser.getValue(e, KEY_WILAYAH));

       menuItems.add(map);
      }
   return null;
        }

        protected void onPostExecute(String file_url) {
            pDialog.dismiss();
            runOnUiThread(new Runnable() {
                public void run() {

              ListAdapter adapter = new SimpleAdapter(InfoBmkgActivity.this, menuItems,
                R.layout.daftar_item,
                new String[] { KEY_TANGGAL, KEY_JAM, KEY_LINTANG, KEY_BUJUR, KEY_KEKUATAN_GEMPA, KEY_KEDALAMAN, KEY_WILAYAH },
                new int[] {R.id.tanggal, R.id.jam, R.id.lintang, R.id.bujur,R.id.kekuatan,R.id.kedalaman,R.id.wilayah });

              setListAdapter(adapter);

              ListView lv = getListView();

              lv.setOnItemClickListener(new OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView parent, View view,
                                int position, long id) {
                            String lintang = ((TextView) view.findViewById(R.id.lintang)).getText().toString();
                            String bujur = ((TextView) view.findViewById(R.id.bujur)).getText().toString();
                            String tanggal = ((TextView) view.findViewById(R.id.tanggal)).getText().toString();
                            String jam = ((TextView) view.findViewById(R.id.jam)).getText().toString();
                            String kekuatan = ((TextView) view.findViewById(R.id.kekuatan)).getText().toString();
                            String kedalaman = ((TextView) view.findViewById(R.id.kedalaman)).getText().toString();
                            String wilayah = ((TextView) view.findViewById(R.id.wilayah)).getText().toString();

                            Intent i = null;
                i = new Intent(InfoBmkgActivity.this, PetaGempaActivity.class);

                            Bundle b = new Bundle();
                b.putString("lintang", lintang);
                b.putString("bujur", bujur);
                b.putString("tanggal", tanggal);
                b.putString("jam", jam);
                b.putString("kekuatan", kekuatan);
                b.putString("kedalaman", kedalaman);
                b.putString("wilayah", wilayah);
                i.putExtras(b);

                            startActivity(i);
                        }
                    });
                }
            });

        }
    }
}


Langsung Aja gan untuk lebih lengkapnya dan mengerti silahkan di pelajari dan di
DOWNLOAD APLIKASINYA

0 komentar: