<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
- <uses-sdk android:minSdkVersion="3" />
+ <uses-sdk android:minSdkVersion="4" />
</manifest>
\ No newline at end of file
package net.kazhik.android.tokyorunners;\r
\r
+import java.text.SimpleDateFormat;\r
import java.util.ArrayList;\r
+import java.util.Date;\r
import java.util.List;\r
\r
import android.content.Context;\r
\r
private class SplitPoints extends ItemizedOverlay<OverlayItem> {\r
\r
- private ArrayList<OverlayItem> m_waypoints = new ArrayList<OverlayItem>();\r
+ private ArrayList<OverlayItem> m_splitpoints = new ArrayList<OverlayItem>();\r
\r
public SplitPoints(Drawable defaultMarker) {\r
super(boundCenterBottom(defaultMarker));\r
}\r
\r
- public void addWayPoint(OverlayItem overlay) {\r
- m_waypoints.add(overlay);\r
+ public void addSplitpoint(OverlayItem overlay) {\r
+ m_splitpoints.add(overlay);\r
populate();\r
}\r
@Override\r
protected OverlayItem createItem(int idx) {\r
- return m_waypoints.get(idx);\r
+ return m_splitpoints.get(idx);\r
}\r
\r
@Override\r
public int size() {\r
- return m_waypoints.size();\r
+ return m_splitpoints.size();\r
}\r
\r
+ /*\r
@Override\r
protected boolean onTap(int i) {\r
-/*\r
if (m_waypoints.size() > 0) {\r
Toast.makeText(MapMode.this,\r
m_waypoints.get(i).getSnippet(), Toast.LENGTH_LONG).show();\r
}\r
-*/\r
return(true);\r
}\r
+*/\r
}\r
\r
@Override\r
\r
m_gestureDetector = new GestureDetector(this, this);\r
\r
-\r
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);\r
\r
String strGpsFreq = prefs.getString("gps_frequency", "0");\r
m_locMgr = (LocationManager)getSystemService(Context.LOCATION_SERVICE);\r
m_locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, gps_freq * 1000, 1, this);\r
// m_locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);\r
-\r
-\r
\r
MapView m = (MapView)findViewById(R.id.mapview);\r
m.setBuiltInZoomControls(true);\r
myLocationOverlay.enableMyLocation();\r
\r
m_mapOverlays.add(myLocationOverlay);\r
-// m_mapOverlays.add(m_overlayWaypoints);\r
+// m_mapOverlays.add(m_overlaySplitpoints);\r
\r
/*\r
GeoPoint gp = new GeoPoint(35692134, 139815652);\r
GeoPoint gp = new GeoPoint((int)(location.getLatitude()*1E6),\r
(int)(location.getLongitude()*1E6));\r
m_controller.animateTo(gp);\r
- \r
- \r
+ \r
/*\r
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");\r
String snippet = "[" + m_userName + "]" + formatter.format(new Date());\r
OverlayItem ovItem = new OverlayItem(gp, "", snippet);\r
- m_overlayWaypoints.addWayPoint(ovItem);\r
- */\r
+ m_overlaySplitpoints.addSplitpoint(ovItem);\r
+ */\r
\r
if (m_prevPoint != null) {\r
RunningRoute route = new RunningRoute(m_prevPoint, gp);\r
import android.widget.AdapterView.OnItemClickListener;
public class RunningHistory extends ListActivity implements OnItemClickListener {
- SimpleDateFormat m_startTimeFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+ SimpleDateFormat m_startTimeFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Uri uri = Uri.parse(
"content://net.kazhik.android.tokyorunners.runningrecordprovider/runningrecords");
- String[] columns = {"start_time", "distance"};
- String sortOrder = "current_time desc";
+ String[] columns = {"start_datetime", "distance"};
+ String sortOrder = "current_datetime desc";
Cursor cursor = managedQuery(uri, columns, null, null, sortOrder);
if (cursor == null) {
Intent returnData = new Intent();
try {
- Date startTime = m_startTimeFormatter.parse(historyArray.getItem(position));
+ String[] splitStr = historyArray.getItem(position).split(" ");
+ String dateStr = splitStr[0] + " " + splitStr[1];
+ Date startTime = m_startTimeFormatter.parse(dateStr);
returnData.putExtra("startTime", startTime.getTime());
setResult(RESULT_OK, returnData);
} catch (ParseException e) {
Record rec = (Record)it.next();\r
\r
ContentValues values = new ContentValues();\r
- values.put("start_time", startTime);\r
- values.put("current_time", rec.getTime());\r
+ values.put("start_datetime", startTime / 1000 * 1000);\r
+ values.put("current_datetime", rec.getTime() / 1000 * 1000);\r
values.put("point_name", rec.getName());\r
if (rec.hasLocation()) {\r
if (prevLocation != null) {\r
public void onCreate(SQLiteDatabase db) {\r
db.execSQL("CREATE TABLE running_record ("\r
+ BaseColumns._ID + " INTEGER PRIMARY KEY,"\r
- + "start_time INTEGER,"\r
- + "current_time INTEGER,"\r
+ + "start_datetime INTEGER,"\r
+ + "current_datetime INTEGER,"\r
+ "point_name TEXT,"\r
+ "distance INTEGER,"\r
+ "latitude INTEGER,"\r
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
-import android.content.ContentResolver;
-import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.widget.ListView;
import android.widget.TextView;
+
public class TokyoRunners extends Activity implements
- LocationListener, GestureDetector.OnGestureListener {
+ LocationListener, GestureDetector.OnDoubleTapListener, GestureDetector.OnGestureListener {
private SharedPreferences m_prefs;
private LocationManager m_locMgr;
m_runningRecord = new RunningRecord(getContentResolver());
-
Button btnStartStop = (Button)findViewById(R.id.button_start_stop);
btnStartStop.setOnClickListener(new StartStopButton());
Uri uri = Uri.parse(
"content://net.kazhik.android.tokyorunners.runningrecordprovider/runningrecords");
- String[] columns = {"current_time", "distance", "latitude", "longitude"};
- String selection = "start_time = ?";
+ String[] columns = {"current_datetime", "distance", "latitude", "longitude"};
+ String selection = "start_datetime = ?";
String[] selectionArgs = {Long.toString(startTime)};
- String sortOrder = "current_time desc";
- Cursor cursor = managedQuery(uri, columns, null, null, sortOrder);
+ String sortOrder = "current_datetime desc";
+ Cursor cursor = managedQuery(uri, columns, selection, selectionArgs, sortOrder);
if (cursor == null) {
return;
}
+
+ reset();
+ ListView listLaptime = (ListView)findViewById(R.id.lap_history);
+ ArrayAdapter<String> lapHistory = (ArrayAdapter<String>)listLaptime.getAdapter();
+
ArrayList<String> history = new ArrayList<String>();
long currentTime = 0;
float distance = 0;
int latitude = 0;
int longitude = 0;
+ long prevTime = startTime;
+
+ TextView elapsedTimeView = (TextView)findViewById(R.id.elapsed_time);
+ TextView lapTimeView = (TextView)findViewById(R.id.lap_time);
+ TextView distanceView = (TextView)findViewById(R.id.distance);
+
while (cursor.moveToNext()) {
- currentTime = cursor.getLong(0);
- if (cursor.getCount() > 1) {
- distance = (float)cursor.getLong(1);
- latitude = cursor.getInt(2);
- longitude = cursor.getInt(3);
- }
+ currentTime = cursor.getLong(cursor.getColumnIndex("current_datetime"));
+ distance = (float)cursor.getLong(cursor.getColumnIndex("distance"));
+ latitude = cursor.getInt(cursor.getColumnIndex("latitude"));
+ longitude = cursor.getInt(cursor.getColumnIndex("longitude"));
- Log.d(this.getClass().getName(),
- "currentTime: " + (new Date(currentTime)).toLocaleString() +
- "; distance: " + distance +
- "; latitude: " + latitude +
- "; longitude: " + longitude);
+ // Elapsed Time
+ elapsedTimeView.setText("");
+ // Latest Laptime
+ lapTimeView.setText("");
+ // Laptime History
+ m_runningRecord.addRecord(new Date(currentTime), null, "");
+ int historyCount = lapHistory.getCount() + 1;
+ String strLaptime = "laptime " + historyCount + ": "
+ + DateUtils.formatElapsedTime(currentTime - prevTime / 1000);
+ lapHistory.insert(strLaptime, 0);
+
+ prevTime = currentTime;
}
+ // Distance
+ distanceView.setText(Float.toString(distance));
}
case Constants.MENU_HISTORY:
intent = new Intent(this, RunningHistory.class);
intent.setAction(Intent.ACTION_VIEW);
-// intent.putExtra("files", fileList());
startActivityForResult(intent, Constants.REQUEST_CODE_HISTORY);
break;
case Constants.MENU_MAP:
TextView distanceView = (TextView)findViewById(R.id.distance);
distanceView.setText(Float.toString(distance_km));
-
}
}
private void start() {
m_startTime = System.currentTimeMillis();
- long startTime = SystemClock.elapsedRealtime();
- m_elapsedTime.setBase(startTime);
- m_lapTime.setBase(startTime);
+ reset();
m_elapsedTime.start();
m_lapTime.start();
m_running = true;
}
private void stop() {
+ lap();
+
m_elapsedTime.stop();
m_lapTime.stop();
Log.d(this.getClass().getName(), "onSingleTapUp():" );
return false;
}
+
+ public boolean onDoubleTap(MotionEvent arg0) {
+ Log.d(this.getClass().getName(), "onDoubleTap():" );
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean onDoubleTapEvent(MotionEvent arg0) {
+ Log.d(this.getClass().getName(), "onDoubleTapEvent():" );
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean onSingleTapConfirmed(MotionEvent arg0) {
+ // TODO Auto-generated method stub
+ return false;
+ }
}
\ No newline at end of file