package com.chicagoandroid.w180; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.view.View; import android.webkit.WebView; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class Main extends Activity { private DatabaseHelper db; private LocationListener listener = new LocationListener() { @Override public void onLocationChanged(Location location) { LocationMark mark = new LocationMark(location.getLatitude(), location.getLongitude()); Toast.makeText(getApplicationContext(), mark.toString(), Toast.LENGTH_LONG).show(); db.insert(mark); updateListView(); openWebView(mark.getMapUrl()); } @Override public void onProviderDisabled(String arg0) { Toast.makeText(getApplicationContext(), "LocationListener onProviderDisabled", Toast.LENGTH_SHORT).show(); } @Override public void onProviderEnabled(String arg0) { Toast.makeText(getApplicationContext(), "LocationListener onProviderEnabled", Toast.LENGTH_SHORT).show(); } @Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) { Toast.makeText(getApplicationContext(), "LocationListener onStatusChanged", Toast.LENGTH_SHORT).show(); } }; private List<LocationMark> marks = new ArrayList<LocationMark>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); db = new DatabaseHelper(this); startLocationManager(); updateListView(); } private void openWebView(String url) { WebView webview = (WebView) findViewById(R.id.web_view); webview.getSettings().setJavaScriptEnabled(true); webview.loadUrl(url); } private void startLocationManager() { LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); String gps = LocationManager.GPS_PROVIDER; float minDistance = 1; // meters long minTime = 1000 * 10; // miliseconds, 1000 = 1s locationManager.requestLocationUpdates(gps, minTime, minDistance, listener); } private void updateListView() { ArrayAdapter<String> listItems = new ArrayAdapter<String>(this, R.layout.list_item); marks = db.selectAll(); Toast.makeText(getApplicationContext(), "fetched " + marks.size() + " from the database", Toast.LENGTH_LONG).show(); for (LocationMark mark : marks) { listItems.add(mark.toString()); } openWebView(marks.get(0).getMapUrl()); ListView listView = (ListView) findViewById(R.id.android_list_view); listView.setAdapter(listItems); listView.setTextFilterEnabled(true); listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); openWebView(marks.get(position).getMapUrl()); } }); } }
|