package edu.toronto.whimper;
import java.util.ArrayList;
import java.util.List;
import edu.toronto.whimper.DataProcessor.DBAdapter;
import edu.toronto.whimper.DataProcessor.DBManager;
import edu.toronto.whimper.GeneralObjects.NoiseSample;
import edu.toronto.whimper.GeneralObjects.Range;
import edu.toronto.whimper.MapObjects.MapItemizedOverlay;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
public class NoiseMap extends MapActivity {
private MapView mapView;
private MapController mc;
//private GeoPoint p;
private List<Overlay> mapOverlays;
private Drawable drawable;
private MapItemizedOverlay itemizedoverlay;
private DBAdapter db;
private ArrayList<NoiseSample> allSamples;
private ArrayList<NoiseSample> rangeSamples;
private ImageButton btnHome;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.noisemap);
setButtonsWidth();
//get the mapView
mapView = (MapView) findViewById(R.id.mapview);
//by default set the map mode
//mapView.setSatellite(true);
mapView.setStreetView(true);
mapView.setBuiltInZoomControls(true);
//getting the overlays list
mapOverlays = mapView.getOverlays();
drawable = this.getResources().getDrawable(R.drawable.map_marker);
itemizedoverlay = new MapItemizedOverlay(drawable, this);
db = new DBAdapter(this);
//set markers
setAllRecordedSamplesMarkers();
//showByLocation(Double.parseDouble("43.65367"), Double.parseDouble("-79.391022"));
mapOverlays.add(itemizedoverlay);
//mapView.invalidate();
//go home button
btnHome = (ImageButton)findViewById(R.id.home);
btnHome.setOnClickListener(homeBtnListener);
}
@Override
protected boolean isRouteDisplayed()
{
return false;
}
private void setAllRecordedSamplesMarkers()
{
allSamples = DBManager.getAllNoiseSamples(db);
if(allSamples.size() > 0)
{
for (NoiseSample sample : allSamples)
{
int latE6 = (int)(sample.getLocation().getLatitude()* 1E6);
int longE6 = (int)(sample.getLocation().getLongitude()* 1E6);
GeoPoint p = new GeoPoint(latE6, longE6);
showMarker(p);
}
}
else
{
Toast.makeText( getApplicationContext(), "There are no sound samples recorded", Toast.LENGTH_LONG).show();
}
}
private void setRecordedSamplesMarkersByHour(Range range, boolean night)
{
rangeSamples = DBManager.getNoiseSampleByRange(allSamples, range, night);
}
@SuppressWarnings("unused")
private void showByLocation(double lat, double lng)
{
mc = mapView.getController();
GeoPoint p = new GeoPoint(
(int) (lat * 1E6),
(int) (lng * 1E6));
//mc.animateTo(p);
//mc.setZoom(17);
showMarker(p);
}
private void showMarker(GeoPoint p)
{
//adding this location to the overlay array
OverlayItem overlayitem = new OverlayItem(p, "Location: ", Integer.toString(p.getLatitudeE6())+" , "+ Integer.toString(p.getLatitudeE6()));
itemizedoverlay.addOverlay(overlayitem);
}
private OnClickListener homeBtnListener = new OnClickListener()
{
public void onClick(View v)
{
Intent myIntent = new Intent(v.getContext(), Main.class);
startActivityForResult(myIntent, 0);
}
};
private void setButtonsWidth()
{
//getting the metrics
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
//int h = metrics.heightPixels;
int w = metrics.widthPixels;
//setting the width of the buttons
Button btnOne = (Button) findViewById(R.id.btnOne);
btnOne.setWidth(w/4);
Button btnTwo = (Button) findViewById(R.id.btnTwo);
btnTwo.setWidth(w/4);
Button btnThree = (Button) findViewById(R.id.btnThree);
btnThree.setWidth(w/4);
Button btnFour = (Button) findViewById(R.id.btnFour);
btnFour.setWidth(w/4);
}
}
|