franssen00
New Member
Okayyyy, so in my code at the moment today's date is being read into the webservice url using the following snippet of code:\[code\]Calendar c = Calendar.getInstance();System.out.println("Current time => " + c.getTime());SimpleDateFormat df = new SimpleDateFormat("dd/MM");String formattedDate = df.format(c.getTime());\[/code\]I want it to automatically be todays date but I also want the user to be able to select a different date from the DatePicker and find the sunrise/sunset values for that particular date.I'm guessing this is simple and I'm just being a bit dim so any help would be appreciated, here is my code:\[code\]package richgrundy.learnphotography;import java.io.IOException;import java.io.InputStream;import java.io.StringReader;import java.text.SimpleDateFormat;import java.util.Calendar;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.protocol.BasicHttpContext;import org.apache.http.protocol.HttpContext;import org.w3c.dom.Document;import org.xml.sax.InputSource;import android.app.Activity;import android.app.FragmentTransaction;import android.content.Context;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Spinner;import android.widget.TextView;public class SunriseSunset extends Activity implements OnClickListener { public Button getLocation; public Button setLocationJapan; public TextView LongCoord; public TextView LatCoord; public double longitude; public double latitude; public LocationManager lm; public Spinner Locationspinner; public DateDialogFragment frag; public Button date; public Calendar now; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sunrisesunset); //Setting onClickListener for Calculate Sunrise/Sunset Button findViewById(R.id.CalculateSunriseSunset).setOnClickListener(this); //Sets up LocationManager to enable GPS data to be accessed. lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, new MyLocationListener()); //Declares Latitude and Longitude TextViews LatCoord = (TextView) findViewById(R.id.LatCoord); LongCoord = (TextView) findViewById(R.id.LongCoord); //Declares for Location Spinner/Dropdown addListenerOnSpinnerItemSelection(); //Date shit now = Calendar.getInstance(); date = (Button)findViewById(R.id.date_button); date.setText(String.valueOf(now.get(Calendar.DAY_OF_MONTH)+1)+"-"+String.valueOf(now.get(Calendar.MONTH))+"-"+String.valueOf(now.get(Calendar.YEAR))); date.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showDialog(); } }); } // More date shit public void showDialog() { FragmentTransaction ft = getFragmentManager().beginTransaction(); //get the fragment frag = DateDialogFragment.newInstance(this, new DateDialogFragmentListener(){ public void updateChangedDate(int year, int month, int day){ date.setText(String.valueOf(day)+"-"+String.valueOf(month+1)+"-"+String.valueOf(year)); now.set(year, month, day); } }, now); frag.show(ft, "DateDialogFragment"); } public interface DateDialogFragmentListener{ //this interface is a listener between the Date Dialog fragment and the activity to update the buttons date public void updateChangedDate(int year, int month, int day); } public void addListenerOnSpinnerItemSelection() { Locationspinner = (Spinner) findViewById(R.id.Locationspinner); Locationspinner .setOnItemSelectedListener(new CustomOnItemSelectedListener( this)); } public void setLocationFrance() { // TODO Auto-generated method stub LatCoord.setText("65.4112"); LongCoord.setText("85.8337"); } public void setLocationIndia() { // TODO Auto-generated method stub LatCoord.setText("21.4112"); LongCoord.setText("105.8337"); } public void setLocationJapan() { // TODO Auto-generated method stub LatCoord.setText("21.4112"); LongCoord.setText("15.8337"); } protected void showCurrentLocation() { // TODO Auto-generated method stub // This is called to find current location based on GPS data and sends // this to LongCoord and LatCoord TextViews Location location = lm .getLastKnownLocation(LocationManager.GPS_PROVIDER); latitude = location.getLatitude(); longitude = location.getLongitude(); LongCoord.setText(Double.toString(longitude)); LatCoord.setText(Double.toString(latitude)); } @Override public void onClick(View arg0) { Button b = (Button) findViewById(R.id.CalculateSunriseSunset); b.setClickable(false); new LongRunningGetIO().execute(); } private class LongRunningGetIO extends AsyncTask<Void, Void, String> { protected String getASCIIContentFromEntity(HttpEntity entity) throws IllegalStateException, IOException { InputStream in = entity.getContent(); StringBuffer out = new StringBuffer(); int n = 1; while (n > 0) { byte[] b = new byte[4096]; n = in.read(b); if (n > 0) out.append(new String(b, 0, n)); } return out.toString(); } @Override protected String doInBackground(Void... params) { HttpClient httpClient = new DefaultHttpClient(); HttpContext localContext = new BasicHttpContext(); // Finds todays date and adds that into the URL Calendar c = Calendar.getInstance(); System.out.println("Current time => " + c.getTime()); SimpleDateFormat df = new SimpleDateFormat("dd/MM"); String formattedDate = df.format(c.getTime()); String finalURL = "http://www.earthtools.org/sun/" + LatCoord.getText().toString().trim() + "/" + LongCoord.getText().toString().trim() + "/" + formattedDate + "/99/0"; HttpGet httpGet = new HttpGet(finalURL); String text = null; try { HttpResponse response = httpClient.execute(httpGet, localContext); HttpEntity entity = response.getEntity(); text = getASCIIContentFromEntity(entity); } catch (Exception e) { return e.getLocalizedMessage(); } return text; } protected void onPostExecute(String results) { if (results != null) { try { DocumentBuilderFactory dbFactory = DocumentBuilderFactory .newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); InputSource s = new InputSource(new StringReader(results)); Document doc = dBuilder.parse(s); doc.getDocumentElement().normalize(); TextView tvSunrise = (TextView) findViewById(R.id.Sunrise); TextView tvSunset = (TextView) findViewById(R.id.Sunset); tvSunrise.setText(doc.getElementsByTagName("sunrise").item(0).getTextContent()); tvSunset.setText(doc.getElementsByTagName("sunset").item(0).getTextContent()); } catch (Exception e) { e.printStackTrace(); } } Button b = (Button) findViewById(R.id.CalculateSunriseSunset); b.setClickable(true); } } class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } }}\[/code\]DateFragmentDialog:\[code\]package richgrundy.learnphotography;import java.util.Calendar;import richgrundy.learnphotography.SunriseSunset.DateDialogFragmentListener;import android.app.DatePickerDialog;import android.app.Dialog;import android.app.DialogFragment;import android.content.Context;import android.os.Bundle;import android.widget.DatePicker;public class DateDialogFragment extends DialogFragment { public static String TAG = "DateDialogFragment"; static Context mContext; //I guess hold the context that called it. Needed when making a DatePickerDialog. I guess its needed when conncting the fragment with the context static int mYear; static int mMonth; static int mDay; static DateDialogFragmentListener mListener; public static DateDialogFragment newInstance(Context context, DateDialogFragmentListener listener, Calendar now) { DateDialogFragment dialog = new DateDialogFragment(); mContext = context; mListener = listener; mYear = now.get(Calendar.YEAR); mMonth = now.get(Calendar.MONTH); mDay = now.get(Calendar.DAY_OF_MONTH); return dialog; } public Dialog onCreateDialog(Bundle savedInstanceState) { return new DatePickerDialog(mContext, mDateSetListener, mYear, mMonth, mDay); } private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDay = dayOfMonth; mListener.updateChangedDate(year, monthOfYear, dayOfMonth); } };}\[/code\]And just in case you want it here is the layout:\[code\]<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/fabricc" androidrientation="vertical" androidaddingBottom="@dimen/activity_vertical_margin" androidaddingLeft="@dimen/activity_horizontal_margin" androidaddingRight="@dimen/activity_horizontal_margin" androidaddingTop="@dimen/activity_vertical_margin" tools:context=".SunriseSunset" > <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" androidadding="10dp" android:text="Date:" android:textAppearance="?android:attr/textAppearanceMedium" /> <Button android:id="@+id/date_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="03-18-2012" androidnClick="clickMe"/> </LinearLayout> <LinearLayout android:id="@+id/LinearLayout04" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" androidadding="10dp" android:text="Location:" android:textAppearance="?android:attr/textAppearanceMedium" /> <Spinner android:id="@+id/Locationspinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:entries="@array/location_array" androidadding="10dp" /> </LinearLayout> <LinearLayout android:id="@+id/LinearLayout343" android:layout_width="fill_parent" android:layout_height="wrap_content" androidrientation="horizontal" android:weightSum="4" > <TextView android:id="@+id/textView23" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="2" androidadding="10dp" android:text="Coordinates:" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/LatCoord" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" androidadding="10dp" /> <TextView android:id="@+id/LongCoord" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" androidadding="10dp" /> </LinearLayout> <Button android:id="@+id/CalculateSunriseSunset" style="@style/sub_menu" android:background="@drawable/blue_menu_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" androidadding="5dp" android:text="Calculate Sunrise/Sunset Time" /> <LinearLayout android:id="@+id/LinearLayoutasdsd" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView122" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" androidadding="10dp" android:text="Sunrise:" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/Sunrise" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="00:00:00" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout> <LinearLayout android:id="@+id/LinearLayoutasdsad" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView133" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" androidadding="10dp" android:text="Sunset:" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/Sunset" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="00:00:00" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout></LinearLayout>\[/code\]Like I said any help would be massively appreciated =)