From 9857e040158d527765660073ca535a5a3a78b2cc Mon Sep 17 00:00:00 2001 From: unknown <leo112071@gmail.com> Date: Wed, 21 Feb 2018 23:28:56 +0700 Subject: [PATCH] Integrate jogging with database --- .../leo/fitnessdiy/HIstoryActivity.java | 1 + .../leo/fitnessdiy/JoggingActivity.java | 81 +++++++++++++++++-- .../example/leo/fitnessdiy/model/Jogging.java | 48 ++++++++--- .../example/leo/fitnessdiy/routes/api.java | 8 ++ app/src/main/res/layout/activity_jogging.xml | 22 ++++- 5 files changed, 139 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/example/leo/fitnessdiy/HIstoryActivity.java b/app/src/main/java/com/example/leo/fitnessdiy/HIstoryActivity.java index b778c48..4c314cf 100644 --- a/app/src/main/java/com/example/leo/fitnessdiy/HIstoryActivity.java +++ b/app/src/main/java/com/example/leo/fitnessdiy/HIstoryActivity.java @@ -13,6 +13,7 @@ import android.widget.TextView; import com.example.leo.fitnessdiy.Adapter.RecyclerViewAdapter; import com.example.leo.fitnessdiy.Utilities.NetworkUtils; import com.example.leo.fitnessdiy.model.History; +import com.example.leo.fitnessdiy.model.Jogging; import com.example.leo.fitnessdiy.routes.api; diff --git a/app/src/main/java/com/example/leo/fitnessdiy/JoggingActivity.java b/app/src/main/java/com/example/leo/fitnessdiy/JoggingActivity.java index 6bf4f5c..0350792 100644 --- a/app/src/main/java/com/example/leo/fitnessdiy/JoggingActivity.java +++ b/app/src/main/java/com/example/leo/fitnessdiy/JoggingActivity.java @@ -10,7 +10,9 @@ import android.location.Address; import android.location.Geocoder; import android.location.Location; import android.location.LocationManager; +import android.os.AsyncTask; import android.os.Build; +import android.os.StrictMode; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.ActivityCompat; @@ -26,6 +28,9 @@ import android.widget.FrameLayout; import android.widget.TextView; import android.widget.Toast; +import com.example.leo.fitnessdiy.Utilities.NetworkUtils; +import com.example.leo.fitnessdiy.model.Jogging; +import com.example.leo.fitnessdiy.routes.api; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.FusedLocationProviderClient; @@ -54,7 +59,11 @@ import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.text.SimpleDateFormat; import java.util.Arrays; +import java.util.Calendar; import java.util.List; import java.util.Locale; @@ -94,13 +103,18 @@ public class JoggingActivity extends FragmentActivity implements OnMapReadyCallb private String[] mLikelyPlaceAddresses; private String[] mLikelyPlaceAttributions; private LatLng[] mLikelyPlaceLatLngs; - private TextView infoJogging; + private TextView infoJoggingStart; + private TextView infoJoggingEnd; private Button mButton; + private String startTime; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - + if (android.os.Build.VERSION.SDK_INT > 9) { + StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); + StrictMode.setThreadPolicy(policy); + } // save instance state if (savedInstanceState != null) { mLastKnownLocation = savedInstanceState.getParcelable(KEY_LOCATION); @@ -120,7 +134,9 @@ public class JoggingActivity extends FragmentActivity implements OnMapReadyCallb .findFragmentById(R.id.map); mapFragment.getMapAsync(this); - infoJogging = (TextView) findViewById(R.id.tv_info); + infoJoggingStart = (TextView) findViewById(R.id.tv_info_start); + + infoJoggingEnd = (TextView) findViewById(R.id.tv_info_end); mButton = (Button) findViewById(R.id.control_button); } @@ -197,8 +213,8 @@ public class JoggingActivity extends FragmentActivity implements OnMapReadyCallb mLastKnownLocation = task.getResult(); LatLng position = new LatLng(mLastKnownLocation.getLatitude(), mLastKnownLocation.getLongitude()); - mMap.addMarker( - new MarkerOptions().position(position).title("Your Position")); +// mMap.addMarker( +// new MarkerOptions().position(position).title("Your Position")); mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(position, DEFAULT_ZOOM)); } else { @@ -424,7 +440,7 @@ public class JoggingActivity extends FragmentActivity implements OnMapReadyCallb return loc; } public void startJogging(View view) { - infoJogging.setText(getCurrentLocation()); + infoJoggingStart.setText(getCurrentLocation()); mButton.setText("STOP"); mButton.setOnClickListener(new View.OnClickListener() { @Override @@ -433,10 +449,12 @@ public class JoggingActivity extends FragmentActivity implements OnMapReadyCallb } }); mButton.setBackgroundColor(Color.parseColor("#FF0000")); + startTime = new SimpleDateFormat("HH:mm:ss") + .format(Calendar.getInstance().getTime()); } public void stopJogging(View view) { - infoJogging.append("\n" + getCurrentLocation()); + infoJoggingEnd.setText("\n" + getCurrentLocation()); mButton.setText("START"); mButton.setOnClickListener(new View.OnClickListener() { @Override @@ -445,5 +463,54 @@ public class JoggingActivity extends FragmentActivity implements OnMapReadyCallb } }); mButton.setBackgroundColor(Color.parseColor("#4CFF00")); + + // TODO : Distance itung berapa langkah + float distance = 1000; + Calendar c = Calendar.getInstance(); + Jogging jogging = new Jogging( + new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()), + startTime, + new SimpleDateFormat("HH:mm:ss").format(c.getTime()), + distance, + infoJoggingStart.getText().toString(), + infoJoggingEnd.getText().toString() + ); + // TODO : id_user sesuai id user yang login + int id_user = 1; + try { + String url = api.newJoggingHistory( + id_user, + jogging.getDate(), + jogging.getStart(), + jogging.getEnd(), + jogging.getDistance(), + jogging.getStartingPoint(), + jogging.getEndPoint() + ); + Log.d(TAG, url); + String response = NetworkUtils.getResponseFromHttpUrl( + new URL(url) + ); + JSONObject jsonObject = new JSONObject(response); + if (jsonObject.getString("error") == null) { + Log.d(TAG, "Inserting new record successful"); + } else { + Log.e(TAG, jsonObject.getString("error")); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (JSONException e) { + e.printStackTrace(); + } } + +// private class AddNewJogging extends AsyncTask<Void, Void, Void> { +// +// @Override +// protected Void doInBackground(Void... voids) { +// +// } +// } } diff --git a/app/src/main/java/com/example/leo/fitnessdiy/model/Jogging.java b/app/src/main/java/com/example/leo/fitnessdiy/model/Jogging.java index cd3fa4c..d48e53c 100644 --- a/app/src/main/java/com/example/leo/fitnessdiy/model/Jogging.java +++ b/app/src/main/java/com/example/leo/fitnessdiy/model/Jogging.java @@ -5,10 +5,46 @@ package com.example.leo.fitnessdiy.model; */ public class Jogging { + private String date; + private String start; + private String end; + private float distance; private String startingPoint; private String endPoint; - private float distance; - private float duration; + + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } + + public String getStart() { + return start; + } + + public void setStart(String start) { + this.start = start; + } + + public String getEnd() { + return end; + } + + public void setEnd(String end) { + this.end = end; + } + + public Jogging(String date, String start, String end, float distance, String startingPoint, String endPoint) { + + this.date = date; + this.start = start; + this.end = end; + this.distance = distance; + this.startingPoint = startingPoint; + this.endPoint = endPoint; + } public String getStartingPoint() { return startingPoint; @@ -33,12 +69,4 @@ public class Jogging { public void setDistance(float distance) { this.distance = distance; } - - public float getDuration() { - return duration; - } - - public void setDuration(float duration) { - this.duration = duration; - } } diff --git a/app/src/main/java/com/example/leo/fitnessdiy/routes/api.java b/app/src/main/java/com/example/leo/fitnessdiy/routes/api.java index bc37633..3a8cd6a 100644 --- a/app/src/main/java/com/example/leo/fitnessdiy/routes/api.java +++ b/app/src/main/java/com/example/leo/fitnessdiy/routes/api.java @@ -12,4 +12,12 @@ public class api { public static final String HISTORY_URL = BASE_URL + "history.php?user="; public static final String USERS_URL = BASE_URL + "users.php?user="; + + public static final String newJoggingHistory(int id_user, String date, + String start, String end, float distance, + String sPoint, String ePoint) { + return BASE_URL + "new_jogging_history.php?user=" + id_user + + "&date="+date+"&start="+start+"&end="+end+"&distance="+distance+"&spoint="+ + sPoint+"&epoint=" + ePoint; + } } diff --git a/app/src/main/res/layout/activity_jogging.xml b/app/src/main/res/layout/activity_jogging.xml index f275aa3..8e64945 100644 --- a/app/src/main/res/layout/activity_jogging.xml +++ b/app/src/main/res/layout/activity_jogging.xml @@ -15,10 +15,6 @@ android:layout_height="match_parent" tools:context="com.example.leo.fitnessdiy.JoggingActivity" /> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_info"/> <Button android:id="@+id/control_button" @@ -35,4 +31,22 @@ android:textColor="#ffffff" android:background="#4cff00"/> + <android.support.v7.widget.CardView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:id="@+id/tv_info" + android:layout_gravity="top" + android:layout_marginLeft="16dp" + android:layout_marginRight="16dp" + android:layout_marginTop="16dp"> + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:id="@+id/tv_info_start"/> + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:id="@+id/tv_info_end"/> + </android.support.v7.widget.CardView> + </FrameLayout> \ No newline at end of file -- GitLab