summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorTeddy <[email protected]>2013-08-25 21:05:00 +0800
committerTeddy <[email protected]>2013-08-25 21:05:00 +0800
commit263967cbb477983ae8680b431c1d93f102971c30 (patch)
treeffb7a63d5987ce6368caec1e07d2f5df0fb35986 /client
parent69a0eecd6a831127d04970c4c1b5749c641b8e5e (diff)
restructured the project
Diffstat (limited to 'client')
-rw-r--r--client/AndroidManifest.xml42
-rw-r--r--client/bin/AndroidManifest.xml42
-rw-r--r--client/bin/Piztor.apkbin0 -> 1009696 bytes
-rw-r--r--client/bin/classes.dexbin0 -> 654056 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/ActMgr.classbin0 -> 2650 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/ActStatus.classbin0 -> 328 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/AppMgr$ActivityStatus.classbin0 -> 1412 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/AppMgr.classbin0 -> 4546 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/BuildConfig.classbin0 -> 347 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/ClassCannotFind.classbin0 -> 329 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/EmptyStatus.classbin0 -> 471 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/GPSTracker$1.classbin0 -> 1190 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/GPSTracker$2.classbin0 -> 859 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/GPSTracker.classbin0 -> 5656 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/InitAct.classbin0 -> 1134 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Login$1.classbin0 -> 1209 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Login$2.classbin0 -> 872 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Login$LoginStatus.classbin0 -> 1698 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Login$StartStatus.classbin0 -> 653 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Login.classbin0 -> 2665 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Main$1.classbin0 -> 1451 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Main.classbin0 -> 1637 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/PiztorAct.classbin0 -> 2205 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/PiztorExcepiton.classbin0 -> 377 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/R$attr.classbin0 -> 343 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/R$dimen.classbin0 -> 464 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/R$drawable.classbin0 -> 1399 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/R$id.classbin0 -> 2291 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/R$layout.classbin0 -> 823 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/R$menu.classbin0 -> 479 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/R$string.classbin0 -> 937 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/R$style.classbin0 -> 434 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/R.classbin0 -> 683 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Req.classbin0 -> 493 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/ReqLocation.classbin0 -> 432 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/ReqLogin.classbin0 -> 509 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/ReqUpdate.classbin0 -> 499 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Res.classbin0 -> 388 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/ResLocation.classbin0 -> 650 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/ResLogin.classbin0 -> 376 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/ResUpdate.classbin0 -> 337 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Rlocation.classbin0 -> 469 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Setting.classbin0 -> 804 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/SocketClient.classbin0 -> 4196 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Tracker$GPSTask.classbin0 -> 1457 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Tracker.classbin0 -> 1332 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Transam$1.classbin0 -> 1064 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Transam$Timertk.classbin0 -> 1131 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Transam$thd.classbin0 -> 1643 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Transam$tmain.classbin0 -> 535 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/Transam.classbin0 -> 2807 bytes
-rw-r--r--client/bin/classes/com/macaroon/piztor/UserInfo.classbin0 -> 486 bytes
-rw-r--r--client/bin/dexedLibs/android-support-v4-7d1c360a45ec8a3e1ddee5ade49de497.jarbin0 -> 211326 bytes
-rw-r--r--client/bin/jarlist.cache3
-rw-r--r--client/bin/res/drawable-hdpi/ic_launcher.pngbin0 -> 5964 bytes
-rw-r--r--client/bin/res/drawable-mdpi/ic_launcher.pngbin0 -> 3112 bytes
-rw-r--r--client/bin/res/drawable-xhdpi/ic_launcher.pngbin0 -> 9355 bytes
-rw-r--r--client/bin/res/drawable-xxhdpi/ic_launcher.pngbin0 -> 17889 bytes
-rw-r--r--client/bin/res/drawable/bottom_img.pngbin0 -> 526288 bytes
-rw-r--r--client/bin/res/drawable/footbar_background.pngbin0 -> 22626 bytes
-rw-r--r--client/bin/res/drawable/footbar_checkin.pngbin0 -> 253 bytes
-rw-r--r--client/bin/res/drawable/footbar_checkin_1.pngbin0 -> 2958 bytes
-rw-r--r--client/bin/res/drawable/footbar_fetch.pngbin0 -> 1800 bytes
-rw-r--r--client/bin/res/drawable/footbar_fetch_1.pngbin0 -> 2744 bytes
-rw-r--r--client/bin/res/drawable/footbar_marker.pngbin0 -> 986 bytes
-rw-r--r--client/bin/res/drawable/footbar_marker_1.pngbin0 -> 2862 bytes
-rw-r--r--client/bin/res/drawable/footbar_search.pngbin0 -> 1327 bytes
-rw-r--r--client/bin/res/drawable/footbar_search_1.pngbin0 -> 3137 bytes
-rw-r--r--client/bin/res/drawable/footbar_select_bg.pngbin0 -> 8879 bytes
-rw-r--r--client/bin/res/drawable/footbar_settings.pngbin0 -> 1100 bytes
-rw-r--r--client/bin/res/drawable/footbar_settings_1.pngbin0 -> 3003 bytes
-rw-r--r--client/bin/res/drawable/footbar_unselect_bg.pngbin0 -> 119 bytes
-rw-r--r--client/bin/res/drawable/horizontal_line.pngbin0 -> 705 bytes
-rw-r--r--client/bin/res/drawable/navigation_back.pngbin0 -> 397 bytes
-rw-r--r--client/bin/res/drawable/navigation_back_1.pngbin0 -> 170 bytes
-rw-r--r--client/bin/res/drawable/title_logo.pngbin0 -> 116965 bytes
-rw-r--r--client/bin/res/drawable/topbar_background.pngbin0 -> 23541 bytes
-rw-r--r--client/bin/resources.ap_bin0 -> 781019 bytes
-rw-r--r--client/gen/com/macaroon/piztor/BuildConfig.java6
-rw-r--r--client/gen/com/macaroon/piztor/R.java164
-rw-r--r--client/ic_launcher-web.pngbin0 -> 130248 bytes
-rw-r--r--client/libs/android-support-v4.jarbin0 -> 556198 bytes
-rw-r--r--client/proguard-project.txt20
-rw-r--r--client/project.properties14
-rw-r--r--client/res/drawable-hdpi/ic_launcher.pngbin0 -> 6165 bytes
-rw-r--r--client/res/drawable-mdpi/ic_launcher.pngbin0 -> 3245 bytes
-rw-r--r--client/res/drawable-xhdpi/ic_launcher.pngbin0 -> 9545 bytes
-rw-r--r--client/res/drawable-xxhdpi/ic_launcher.pngbin0 -> 17793 bytes
-rw-r--r--client/res/drawable/bottom_img.pngbin0 -> 525331 bytes
-rw-r--r--client/res/drawable/footbar_background.pngbin0 -> 23943 bytes
-rw-r--r--client/res/drawable/footbar_btn_checkin_style.xml7
-rw-r--r--client/res/drawable/footbar_btn_fetch_style.xml6
-rw-r--r--client/res/drawable/footbar_btn_focus_style.xml6
-rw-r--r--client/res/drawable/footbar_btn_search_style.xml6
-rw-r--r--client/res/drawable/footbar_btn_settings_style.xml6
-rw-r--r--client/res/drawable/footbar_checkin.pngbin0 -> 468 bytes
-rw-r--r--client/res/drawable/footbar_checkin_1.pngbin0 -> 3371 bytes
-rw-r--r--client/res/drawable/footbar_fetch.pngbin0 -> 2541 bytes
-rw-r--r--client/res/drawable/footbar_fetch_1.pngbin0 -> 3093 bytes
-rw-r--r--client/res/drawable/footbar_marker.pngbin0 -> 1866 bytes
-rw-r--r--client/res/drawable/footbar_marker_1.pngbin0 -> 3288 bytes
-rw-r--r--client/res/drawable/footbar_search.pngbin0 -> 2127 bytes
-rw-r--r--client/res/drawable/footbar_search_1.pngbin0 -> 3589 bytes
-rw-r--r--client/res/drawable/footbar_select_bg.pngbin0 -> 8919 bytes
-rw-r--r--client/res/drawable/footbar_settings.pngbin0 -> 1372 bytes
-rw-r--r--client/res/drawable/footbar_settings_1.pngbin0 -> 3442 bytes
-rw-r--r--client/res/drawable/footbar_unselect_bg.pngbin0 -> 165 bytes
-rw-r--r--client/res/drawable/horizontal_line.pngbin0 -> 796 bytes
-rw-r--r--client/res/drawable/navigation_back.pngbin0 -> 1324 bytes
-rw-r--r--client/res/drawable/navigation_back_1.pngbin0 -> 401 bytes
-rw-r--r--client/res/drawable/title_logo.pngbin0 -> 1031640 bytes
-rw-r--r--client/res/drawable/topbar_background.pngbin0 -> 23763 bytes
-rw-r--r--client/res/layout/activity_gather.xml23
-rw-r--r--client/res/layout/activity_init.xml16
-rw-r--r--client/res/layout/activity_login.xml92
-rw-r--r--client/res/layout/activity_main.xml23
-rw-r--r--client/res/layout/activity_settings.xml149
-rw-r--r--client/res/layout/gather_footbar.xml133
-rw-r--r--client/res/layout/gather_timer.xml16
-rw-r--r--client/res/layout/login_bottom.xml13
-rw-r--r--client/res/layout/main_footbar.xml107
-rw-r--r--client/res/layout/main_headbar.xml29
-rw-r--r--client/res/layout/settings_headbar.xml29
-rw-r--r--client/res/menu/init.xml9
-rw-r--r--client/res/menu/login.xml9
-rw-r--r--client/res/menu/main.xml9
-rw-r--r--client/res/menu/setting.xml9
-rw-r--r--client/res/values-sw600dp/dimens.xml8
-rw-r--r--client/res/values-sw720dp-land/dimens.xml9
-rw-r--r--client/res/values-v11/styles.xml11
-rw-r--r--client/res/values-v14/styles.xml12
-rw-r--r--client/res/values/dimens.xml7
-rw-r--r--client/res/values/strings.xml21
-rw-r--r--client/res/values/styles.xml20
-rw-r--r--client/src/com/macaroon/piztor/ActMgr.java62
-rw-r--r--client/src/com/macaroon/piztor/AppMgr.java89
-rw-r--r--client/src/com/macaroon/piztor/GPSTracker.java241
-rw-r--r--client/src/com/macaroon/piztor/InitAct.java34
-rw-r--r--client/src/com/macaroon/piztor/Login.java104
-rw-r--r--client/src/com/macaroon/piztor/Main.java51
-rw-r--r--client/src/com/macaroon/piztor/PiztorAct.java60
-rw-r--r--client/src/com/macaroon/piztor/PiztorExcepiton.java10
-rw-r--r--client/src/com/macaroon/piztor/Req.java14
-rw-r--r--client/src/com/macaroon/piztor/ReqLocation.java14
-rw-r--r--client/src/com/macaroon/piztor/ReqLogin.java16
-rw-r--r--client/src/com/macaroon/piztor/ReqUpdate.java16
-rw-r--r--client/src/com/macaroon/piztor/Res.java11
-rw-r--r--client/src/com/macaroon/piztor/ResLocation.java18
-rw-r--r--client/src/com/macaroon/piztor/ResLogin.java15
-rw-r--r--client/src/com/macaroon/piztor/ResUpdate.java13
-rw-r--r--client/src/com/macaroon/piztor/Rlocation.java13
-rw-r--r--client/src/com/macaroon/piztor/Setting.java22
-rw-r--r--client/src/com/macaroon/piztor/Settings.java22
-rw-r--r--client/src/com/macaroon/piztor/SocketClient.java107
-rw-r--r--client/src/com/macaroon/piztor/Tracker.java68
-rw-r--r--client/src/com/macaroon/piztor/Transam.java139
-rw-r--r--client/src/com/macaroon/piztor/UserInfo.java7
157 files changed, 2222 insertions, 0 deletions
diff --git a/client/AndroidManifest.xml b/client/AndroidManifest.xml
new file mode 100644
index 0000000..b18d8e2
--- /dev/null
+++ b/client/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@android:style/Theme.Black.NoTitleBar" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/title_activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/title_activity_main" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Setting"
+ android:label="@string/title_activity_setting" >
+ </activity>
+ </application>
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+
+</manifest>
diff --git a/client/bin/AndroidManifest.xml b/client/bin/AndroidManifest.xml
new file mode 100644
index 0000000..b18d8e2
--- /dev/null
+++ b/client/bin/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@android:style/Theme.Black.NoTitleBar" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/title_activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/title_activity_main" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Setting"
+ android:label="@string/title_activity_setting" >
+ </activity>
+ </application>
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+
+</manifest>
diff --git a/client/bin/Piztor.apk b/client/bin/Piztor.apk
new file mode 100644
index 0000000..0f2501f
--- /dev/null
+++ b/client/bin/Piztor.apk
Binary files differ
diff --git a/client/bin/classes.dex b/client/bin/classes.dex
new file mode 100644
index 0000000..5380f3b
--- /dev/null
+++ b/client/bin/classes.dex
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/ActMgr.class b/client/bin/classes/com/macaroon/piztor/ActMgr.class
new file mode 100644
index 0000000..a219c2d
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/ActMgr.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/ActStatus.class b/client/bin/classes/com/macaroon/piztor/ActStatus.class
new file mode 100644
index 0000000..296a7d5
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/ActStatus.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/AppMgr$ActivityStatus.class b/client/bin/classes/com/macaroon/piztor/AppMgr$ActivityStatus.class
new file mode 100644
index 0000000..f11e546
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/AppMgr$ActivityStatus.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/AppMgr.class b/client/bin/classes/com/macaroon/piztor/AppMgr.class
new file mode 100644
index 0000000..61aa240
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/AppMgr.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/BuildConfig.class b/client/bin/classes/com/macaroon/piztor/BuildConfig.class
new file mode 100644
index 0000000..566eb01
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/BuildConfig.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/ClassCannotFind.class b/client/bin/classes/com/macaroon/piztor/ClassCannotFind.class
new file mode 100644
index 0000000..5483510
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/ClassCannotFind.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/EmptyStatus.class b/client/bin/classes/com/macaroon/piztor/EmptyStatus.class
new file mode 100644
index 0000000..8b48ad5
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/EmptyStatus.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/GPSTracker$1.class b/client/bin/classes/com/macaroon/piztor/GPSTracker$1.class
new file mode 100644
index 0000000..084d23b
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/GPSTracker$1.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/GPSTracker$2.class b/client/bin/classes/com/macaroon/piztor/GPSTracker$2.class
new file mode 100644
index 0000000..b646e44
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/GPSTracker$2.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/GPSTracker.class b/client/bin/classes/com/macaroon/piztor/GPSTracker.class
new file mode 100644
index 0000000..3ac1723
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/GPSTracker.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/InitAct.class b/client/bin/classes/com/macaroon/piztor/InitAct.class
new file mode 100644
index 0000000..d03ee93
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/InitAct.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Login$1.class b/client/bin/classes/com/macaroon/piztor/Login$1.class
new file mode 100644
index 0000000..f50ba38
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Login$1.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Login$2.class b/client/bin/classes/com/macaroon/piztor/Login$2.class
new file mode 100644
index 0000000..3f2fd55
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Login$2.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Login$LoginStatus.class b/client/bin/classes/com/macaroon/piztor/Login$LoginStatus.class
new file mode 100644
index 0000000..9541a88
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Login$LoginStatus.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Login$StartStatus.class b/client/bin/classes/com/macaroon/piztor/Login$StartStatus.class
new file mode 100644
index 0000000..b32b989
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Login$StartStatus.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Login.class b/client/bin/classes/com/macaroon/piztor/Login.class
new file mode 100644
index 0000000..ae6b3a2
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Login.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Main$1.class b/client/bin/classes/com/macaroon/piztor/Main$1.class
new file mode 100644
index 0000000..c726600
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Main$1.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Main.class b/client/bin/classes/com/macaroon/piztor/Main.class
new file mode 100644
index 0000000..f0515de
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Main.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/PiztorAct.class b/client/bin/classes/com/macaroon/piztor/PiztorAct.class
new file mode 100644
index 0000000..4a3fc81
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/PiztorAct.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/PiztorExcepiton.class b/client/bin/classes/com/macaroon/piztor/PiztorExcepiton.class
new file mode 100644
index 0000000..bfb599b
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/PiztorExcepiton.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/R$attr.class b/client/bin/classes/com/macaroon/piztor/R$attr.class
new file mode 100644
index 0000000..a95e1ab
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/R$attr.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/R$dimen.class b/client/bin/classes/com/macaroon/piztor/R$dimen.class
new file mode 100644
index 0000000..4bc657f
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/R$dimen.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/R$drawable.class b/client/bin/classes/com/macaroon/piztor/R$drawable.class
new file mode 100644
index 0000000..b31a626
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/R$drawable.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/R$id.class b/client/bin/classes/com/macaroon/piztor/R$id.class
new file mode 100644
index 0000000..e08c969
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/R$id.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/R$layout.class b/client/bin/classes/com/macaroon/piztor/R$layout.class
new file mode 100644
index 0000000..de25e3c
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/R$layout.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/R$menu.class b/client/bin/classes/com/macaroon/piztor/R$menu.class
new file mode 100644
index 0000000..7f7cacb
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/R$menu.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/R$string.class b/client/bin/classes/com/macaroon/piztor/R$string.class
new file mode 100644
index 0000000..65d1b80
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/R$string.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/R$style.class b/client/bin/classes/com/macaroon/piztor/R$style.class
new file mode 100644
index 0000000..052dd30
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/R$style.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/R.class b/client/bin/classes/com/macaroon/piztor/R.class
new file mode 100644
index 0000000..d173856
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/R.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Req.class b/client/bin/classes/com/macaroon/piztor/Req.class
new file mode 100644
index 0000000..1a5fcce
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Req.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/ReqLocation.class b/client/bin/classes/com/macaroon/piztor/ReqLocation.class
new file mode 100644
index 0000000..5b3836e
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/ReqLocation.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/ReqLogin.class b/client/bin/classes/com/macaroon/piztor/ReqLogin.class
new file mode 100644
index 0000000..8dd7e6c
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/ReqLogin.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/ReqUpdate.class b/client/bin/classes/com/macaroon/piztor/ReqUpdate.class
new file mode 100644
index 0000000..2ecc696
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/ReqUpdate.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Res.class b/client/bin/classes/com/macaroon/piztor/Res.class
new file mode 100644
index 0000000..8f468e8
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Res.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/ResLocation.class b/client/bin/classes/com/macaroon/piztor/ResLocation.class
new file mode 100644
index 0000000..31581a5
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/ResLocation.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/ResLogin.class b/client/bin/classes/com/macaroon/piztor/ResLogin.class
new file mode 100644
index 0000000..fff8e1a
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/ResLogin.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/ResUpdate.class b/client/bin/classes/com/macaroon/piztor/ResUpdate.class
new file mode 100644
index 0000000..5cb7c55
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/ResUpdate.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Rlocation.class b/client/bin/classes/com/macaroon/piztor/Rlocation.class
new file mode 100644
index 0000000..3a955e2
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Rlocation.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Setting.class b/client/bin/classes/com/macaroon/piztor/Setting.class
new file mode 100644
index 0000000..a5e0cd5
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Setting.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/SocketClient.class b/client/bin/classes/com/macaroon/piztor/SocketClient.class
new file mode 100644
index 0000000..2307639
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/SocketClient.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Tracker$GPSTask.class b/client/bin/classes/com/macaroon/piztor/Tracker$GPSTask.class
new file mode 100644
index 0000000..a69c317
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Tracker$GPSTask.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Tracker.class b/client/bin/classes/com/macaroon/piztor/Tracker.class
new file mode 100644
index 0000000..e8b12d2
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Tracker.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Transam$1.class b/client/bin/classes/com/macaroon/piztor/Transam$1.class
new file mode 100644
index 0000000..5a3b4b9
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Transam$1.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Transam$Timertk.class b/client/bin/classes/com/macaroon/piztor/Transam$Timertk.class
new file mode 100644
index 0000000..dcea553
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Transam$Timertk.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Transam$thd.class b/client/bin/classes/com/macaroon/piztor/Transam$thd.class
new file mode 100644
index 0000000..8f0523e
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Transam$thd.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Transam$tmain.class b/client/bin/classes/com/macaroon/piztor/Transam$tmain.class
new file mode 100644
index 0000000..080410b
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Transam$tmain.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/Transam.class b/client/bin/classes/com/macaroon/piztor/Transam.class
new file mode 100644
index 0000000..d9ea126
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/Transam.class
Binary files differ
diff --git a/client/bin/classes/com/macaroon/piztor/UserInfo.class b/client/bin/classes/com/macaroon/piztor/UserInfo.class
new file mode 100644
index 0000000..72b434a
--- /dev/null
+++ b/client/bin/classes/com/macaroon/piztor/UserInfo.class
Binary files differ
diff --git a/client/bin/dexedLibs/android-support-v4-7d1c360a45ec8a3e1ddee5ade49de497.jar b/client/bin/dexedLibs/android-support-v4-7d1c360a45ec8a3e1ddee5ade49de497.jar
new file mode 100644
index 0000000..ba5b46c
--- /dev/null
+++ b/client/bin/dexedLibs/android-support-v4-7d1c360a45ec8a3e1ddee5ade49de497.jar
Binary files differ
diff --git a/client/bin/jarlist.cache b/client/bin/jarlist.cache
new file mode 100644
index 0000000..0565465
--- /dev/null
+++ b/client/bin/jarlist.cache
@@ -0,0 +1,3 @@
+# cache for current jar dependency. DO NOT EDIT.
+# format is <lastModified> <length> <SHA-1> <path>
+# Encoding is UTF-8
diff --git a/client/bin/res/drawable-hdpi/ic_launcher.png b/client/bin/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..efa7c5f
--- /dev/null
+++ b/client/bin/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/client/bin/res/drawable-mdpi/ic_launcher.png b/client/bin/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..ec27f2e
--- /dev/null
+++ b/client/bin/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/client/bin/res/drawable-xhdpi/ic_launcher.png b/client/bin/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..92fc57d
--- /dev/null
+++ b/client/bin/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/client/bin/res/drawable-xxhdpi/ic_launcher.png b/client/bin/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..b6f8f4e
--- /dev/null
+++ b/client/bin/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/client/bin/res/drawable/bottom_img.png b/client/bin/res/drawable/bottom_img.png
new file mode 100644
index 0000000..ee34eb0
--- /dev/null
+++ b/client/bin/res/drawable/bottom_img.png
Binary files differ
diff --git a/client/bin/res/drawable/footbar_background.png b/client/bin/res/drawable/footbar_background.png
new file mode 100644
index 0000000..d0ad14f
--- /dev/null
+++ b/client/bin/res/drawable/footbar_background.png
Binary files differ
diff --git a/client/bin/res/drawable/footbar_checkin.png b/client/bin/res/drawable/footbar_checkin.png
new file mode 100644
index 0000000..9d9ccd0
--- /dev/null
+++ b/client/bin/res/drawable/footbar_checkin.png
Binary files differ
diff --git a/client/bin/res/drawable/footbar_checkin_1.png b/client/bin/res/drawable/footbar_checkin_1.png
new file mode 100644
index 0000000..a14f872
--- /dev/null
+++ b/client/bin/res/drawable/footbar_checkin_1.png
Binary files differ
diff --git a/client/bin/res/drawable/footbar_fetch.png b/client/bin/res/drawable/footbar_fetch.png
new file mode 100644
index 0000000..a5e9bd3
--- /dev/null
+++ b/client/bin/res/drawable/footbar_fetch.png
Binary files differ
diff --git a/client/bin/res/drawable/footbar_fetch_1.png b/client/bin/res/drawable/footbar_fetch_1.png
new file mode 100644
index 0000000..214b712
--- /dev/null
+++ b/client/bin/res/drawable/footbar_fetch_1.png
Binary files differ
diff --git a/client/bin/res/drawable/footbar_marker.png b/client/bin/res/drawable/footbar_marker.png
new file mode 100644
index 0000000..e408cf8
--- /dev/null
+++ b/client/bin/res/drawable/footbar_marker.png
Binary files differ
diff --git a/client/bin/res/drawable/footbar_marker_1.png b/client/bin/res/drawable/footbar_marker_1.png
new file mode 100644
index 0000000..1262bda
--- /dev/null
+++ b/client/bin/res/drawable/footbar_marker_1.png
Binary files differ
diff --git a/client/bin/res/drawable/footbar_search.png b/client/bin/res/drawable/footbar_search.png
new file mode 100644
index 0000000..1169b79
--- /dev/null
+++ b/client/bin/res/drawable/footbar_search.png
Binary files differ
diff --git a/client/bin/res/drawable/footbar_search_1.png b/client/bin/res/drawable/footbar_search_1.png
new file mode 100644
index 0000000..9dd9611
--- /dev/null
+++ b/client/bin/res/drawable/footbar_search_1.png
Binary files differ
diff --git a/client/bin/res/drawable/footbar_select_bg.png b/client/bin/res/drawable/footbar_select_bg.png
new file mode 100644
index 0000000..3de79d6
--- /dev/null
+++ b/client/bin/res/drawable/footbar_select_bg.png
Binary files differ
diff --git a/client/bin/res/drawable/footbar_settings.png b/client/bin/res/drawable/footbar_settings.png
new file mode 100644
index 0000000..040a673
--- /dev/null
+++ b/client/bin/res/drawable/footbar_settings.png
Binary files differ
diff --git a/client/bin/res/drawable/footbar_settings_1.png b/client/bin/res/drawable/footbar_settings_1.png
new file mode 100644
index 0000000..05db6fb
--- /dev/null
+++ b/client/bin/res/drawable/footbar_settings_1.png
Binary files differ
diff --git a/client/bin/res/drawable/footbar_unselect_bg.png b/client/bin/res/drawable/footbar_unselect_bg.png
new file mode 100644
index 0000000..fe14eb2
--- /dev/null
+++ b/client/bin/res/drawable/footbar_unselect_bg.png
Binary files differ
diff --git a/client/bin/res/drawable/horizontal_line.png b/client/bin/res/drawable/horizontal_line.png
new file mode 100644
index 0000000..e56695f
--- /dev/null
+++ b/client/bin/res/drawable/horizontal_line.png
Binary files differ
diff --git a/client/bin/res/drawable/navigation_back.png b/client/bin/res/drawable/navigation_back.png
new file mode 100644
index 0000000..901ba07
--- /dev/null
+++ b/client/bin/res/drawable/navigation_back.png
Binary files differ
diff --git a/client/bin/res/drawable/navigation_back_1.png b/client/bin/res/drawable/navigation_back_1.png
new file mode 100644
index 0000000..59f6260
--- /dev/null
+++ b/client/bin/res/drawable/navigation_back_1.png
Binary files differ
diff --git a/client/bin/res/drawable/title_logo.png b/client/bin/res/drawable/title_logo.png
new file mode 100644
index 0000000..d167c79
--- /dev/null
+++ b/client/bin/res/drawable/title_logo.png
Binary files differ
diff --git a/client/bin/res/drawable/topbar_background.png b/client/bin/res/drawable/topbar_background.png
new file mode 100644
index 0000000..851f92f
--- /dev/null
+++ b/client/bin/res/drawable/topbar_background.png
Binary files differ
diff --git a/client/bin/resources.ap_ b/client/bin/resources.ap_
new file mode 100644
index 0000000..4f91148
--- /dev/null
+++ b/client/bin/resources.ap_
Binary files differ
diff --git a/client/gen/com/macaroon/piztor/BuildConfig.java b/client/gen/com/macaroon/piztor/BuildConfig.java
new file mode 100644
index 0000000..833e650
--- /dev/null
+++ b/client/gen/com/macaroon/piztor/BuildConfig.java
@@ -0,0 +1,6 @@
+/** Automatically generated file. DO NOT MODIFY */
+package com.macaroon.piztor;
+
+public final class BuildConfig {
+ public final static boolean DEBUG = true;
+} \ No newline at end of file
diff --git a/client/gen/com/macaroon/piztor/R.java b/client/gen/com/macaroon/piztor/R.java
new file mode 100644
index 0000000..3d07e1d
--- /dev/null
+++ b/client/gen/com/macaroon/piztor/R.java
@@ -0,0 +1,164 @@
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found. It
+ * should not be modified by hand.
+ */
+
+package com.macaroon.piztor;
+
+public final class R {
+ public static final class attr {
+ }
+ public static final class dimen {
+ /** Default screen margins, per the Android Design guidelines.
+
+ Customize dimensions originally defined in res/values/dimens.xml (such as
+ screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+
+ */
+ public static final int activity_horizontal_margin=0x7f040000;
+ public static final int activity_vertical_margin=0x7f040001;
+ }
+ public static final class drawable {
+ public static final int bottom_img=0x7f020000;
+ public static final int footbar_background=0x7f020001;
+ public static final int footbar_btn_checkin_style=0x7f020002;
+ public static final int footbar_btn_fetch_style=0x7f020003;
+ public static final int footbar_btn_focus_style=0x7f020004;
+ public static final int footbar_btn_search_style=0x7f020005;
+ public static final int footbar_btn_settings_style=0x7f020006;
+ public static final int footbar_checkin=0x7f020007;
+ public static final int footbar_checkin_1=0x7f020008;
+ public static final int footbar_fetch=0x7f020009;
+ public static final int footbar_fetch_1=0x7f02000a;
+ public static final int footbar_marker=0x7f02000b;
+ public static final int footbar_marker_1=0x7f02000c;
+ public static final int footbar_search=0x7f02000d;
+ public static final int footbar_search_1=0x7f02000e;
+ public static final int footbar_select_bg=0x7f02000f;
+ public static final int footbar_settings=0x7f020010;
+ public static final int footbar_settings_1=0x7f020011;
+ public static final int footbar_unselect_bg=0x7f020012;
+ public static final int horizontal_line=0x7f020013;
+ public static final int ic_launcher=0x7f020014;
+ public static final int navigation_back=0x7f020015;
+ public static final int navigation_back_1=0x7f020016;
+ public static final int title_logo=0x7f020017;
+ public static final int topbar_background=0x7f020018;
+ }
+ public static final class id {
+ public static final int action_settings=0x7f08002c;
+ public static final int footbar_btn_checkin=0x7f08001f;
+ public static final int footbar_btn_checkin_layout=0x7f08001e;
+ public static final int footbar_btn_checkin_text=0x7f080020;
+ public static final int footbar_btn_fetch=0x7f08001c;
+ public static final int footbar_btn_fetch_layout=0x7f08001b;
+ public static final int footbar_btn_fetch_text=0x7f08001d;
+ public static final int footbar_btn_focus=0x7f080022;
+ public static final int footbar_btn_focus_layout=0x7f080021;
+ public static final int footbar_btn_focus_text=0x7f080023;
+ public static final int footbar_btn_search=0x7f080019;
+ public static final int footbar_btn_search_layout=0x7f080018;
+ public static final int footbar_btn_search_text=0x7f08001a;
+ public static final int footbar_btn_settings=0x7f080025;
+ public static final int footbar_btn_settings_layout=0x7f080024;
+ public static final int footbar_btn_settings_text=0x7f080027;
+ public static final int gather_footbar_layout=0x7f080001;
+ public static final int gather_timer=0x7f080026;
+ public static final int gather_timer_layout=0x7f080000;
+ public static final int headbar_appname=0x7f080029;
+ public static final int headbar_logo=0x7f080028;
+ public static final int login_btn_login=0x7f080007;
+ public static final int main_footbar_layout=0x7f080009;
+ public static final int main_headbar_img=0x7f080002;
+ public static final int main_headbar_layout=0x7f080008;
+ public static final int settings_GPSrefreshrate=0x7f08000c;
+ public static final int settings_GPSrefreshrate_text=0x7f08000b;
+ public static final int settings_btn_back=0x7f08002a;
+ public static final int settings_headbar_layout=0x7f08000a;
+ public static final int settings_headbar_text=0x7f08002b;
+ public static final int settings_seperator1=0x7f08000d;
+ public static final int settings_seperator2=0x7f080012;
+ public static final int settings_seperator3=0x7f080017;
+ public static final int settings_sex_layout=0x7f08000e;
+ public static final int settings_sex_text=0x7f08000f;
+ public static final int settings_show_female=0x7f080011;
+ public static final int settings_show_male=0x7f080010;
+ public static final int settings_team_all=0x7f080016;
+ public static final int settings_team_layout=0x7f080013;
+ public static final int settings_team_mine=0x7f080015;
+ public static final int settings_team_text=0x7f080014;
+ public static final int user_id=0x7f080004;
+ public static final int user_id_text=0x7f080003;
+ public static final int user_pass=0x7f080006;
+ public static final int user_pass_text=0x7f080005;
+ }
+ public static final class layout {
+ public static final int activity_gather=0x7f030000;
+ public static final int activity_init=0x7f030001;
+ public static final int activity_login=0x7f030002;
+ public static final int activity_main=0x7f030003;
+ public static final int activity_setting=0x7f030004;
+ public static final int activity_settings=0x7f030005;
+ public static final int gather_footbar=0x7f030006;
+ public static final int gather_timer=0x7f030007;
+ public static final int login_bottom=0x7f030008;
+ public static final int main_footbar=0x7f030009;
+ public static final int main_headbar=0x7f03000a;
+ public static final int settings_headbar=0x7f03000b;
+ }
+ public static final class menu {
+ public static final int init=0x7f070000;
+ public static final int login=0x7f070001;
+ public static final int main=0x7f070002;
+ public static final int setting=0x7f070003;
+ }
+ public static final class string {
+ public static final int action_settings=0x7f050001;
+ public static final int all=0x7f05000c;
+ public static final int app_name=0x7f050000;
+ public static final int checkin=0x7f050006;
+ public static final int female=0x7f05000a;
+ public static final int fetch=0x7f050005;
+ public static final int focus=0x7f050007;
+ public static final int hello_world=0x7f050002;
+ public static final int male=0x7f050009;
+ public static final int mine=0x7f05000d;
+ public static final int search=0x7f050004;
+ public static final int settings=0x7f050003;
+ public static final int show_sex=0x7f050008;
+ public static final int show_team=0x7f05000b;
+ public static final int title_activity_login=0x7f05000e;
+ public static final int title_activity_main=0x7f05000f;
+ public static final int title_activity_setting=0x7f050010;
+ }
+ public static final class style {
+ /**
+ Base application theme, dependent on API level. This theme is replaced
+ by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+
+
+ Theme customizations available in newer API levels can go in
+ res/values-vXX/styles.xml, while customizations related to
+ backward-compatibility can go here.
+
+
+ Base application theme for API 11+. This theme completely replaces
+ AppBaseTheme from res/values/styles.xml on API 11+ devices.
+
+ API 11 theme customizations can go here.
+
+ Base application theme for API 14+. This theme completely replaces
+ AppBaseTheme from BOTH res/values/styles.xml and
+ res/values-v11/styles.xml on API 14+ devices.
+
+ API 14 theme customizations can go here.
+ */
+ public static final int AppBaseTheme=0x7f060000;
+ /** Application theme.
+ All customizations that are NOT specific to a particular API-level can go here.
+ */
+ public static final int AppTheme=0x7f060001;
+ }
+}
diff --git a/client/ic_launcher-web.png b/client/ic_launcher-web.png
new file mode 100644
index 0000000..3cd0ac2
--- /dev/null
+++ b/client/ic_launcher-web.png
Binary files differ
diff --git a/client/libs/android-support-v4.jar b/client/libs/android-support-v4.jar
new file mode 100644
index 0000000..cf12d28
--- /dev/null
+++ b/client/libs/android-support-v4.jar
Binary files differ
diff --git a/client/proguard-project.txt b/client/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/client/proguard-project.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
diff --git a/client/project.properties b/client/project.properties
new file mode 100644
index 0000000..ce39f2d
--- /dev/null
+++ b/client/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-18
diff --git a/client/res/drawable-hdpi/ic_launcher.png b/client/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..ddc6c13
--- /dev/null
+++ b/client/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/client/res/drawable-mdpi/ic_launcher.png b/client/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..7b6698a
--- /dev/null
+++ b/client/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/client/res/drawable-xhdpi/ic_launcher.png b/client/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..20ea43a
--- /dev/null
+++ b/client/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/client/res/drawable-xxhdpi/ic_launcher.png b/client/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..e1ca5c2
--- /dev/null
+++ b/client/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/client/res/drawable/bottom_img.png b/client/res/drawable/bottom_img.png
new file mode 100644
index 0000000..2725ea8
--- /dev/null
+++ b/client/res/drawable/bottom_img.png
Binary files differ
diff --git a/client/res/drawable/footbar_background.png b/client/res/drawable/footbar_background.png
new file mode 100644
index 0000000..488e8f2
--- /dev/null
+++ b/client/res/drawable/footbar_background.png
Binary files differ
diff --git a/client/res/drawable/footbar_btn_checkin_style.xml b/client/res/drawable/footbar_btn_checkin_style.xml
new file mode 100644
index 0000000..6dbeb21
--- /dev/null
+++ b/client/res/drawable/footbar_btn_checkin_style.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <item android:state_pressed="true" android:drawable="@drawable/footbar_checkin_1"></item>
+ <item android:state_pressed="false" android:drawable="@drawable/footbar_checkin"></item>
+
+</selector>
diff --git a/client/res/drawable/footbar_btn_fetch_style.xml b/client/res/drawable/footbar_btn_fetch_style.xml
new file mode 100644
index 0000000..379d526
--- /dev/null
+++ b/client/res/drawable/footbar_btn_fetch_style.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <item android:state_pressed="true" android:drawable="@drawable/footbar_fetch_1"></item>
+ <item android:state_pressed="false" android:drawable="@drawable/footbar_fetch"></item>
+</selector>
diff --git a/client/res/drawable/footbar_btn_focus_style.xml b/client/res/drawable/footbar_btn_focus_style.xml
new file mode 100644
index 0000000..5932f2f
--- /dev/null
+++ b/client/res/drawable/footbar_btn_focus_style.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <item android:state_pressed="true" android:drawable="@drawable/footbar_marker_1"></item>
+ <item android:state_pressed="false" android:drawable="@drawable/footbar_marker"></item>
+</selector>
diff --git a/client/res/drawable/footbar_btn_search_style.xml b/client/res/drawable/footbar_btn_search_style.xml
new file mode 100644
index 0000000..ac786ef
--- /dev/null
+++ b/client/res/drawable/footbar_btn_search_style.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <item android:state_pressed="true" android:drawable="@drawable/footbar_search_1"></item>
+ <item android:state_pressed="false" android:drawable="@drawable/footbar_search"></item>
+</selector>
diff --git a/client/res/drawable/footbar_btn_settings_style.xml b/client/res/drawable/footbar_btn_settings_style.xml
new file mode 100644
index 0000000..fca6230
--- /dev/null
+++ b/client/res/drawable/footbar_btn_settings_style.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <item android:state_pressed="true" android:drawable="@drawable/footbar_settings_1"></item>
+ <item android:state_pressed="false" android:drawable="@drawable/footbar_settings"></item>
+</selector>
diff --git a/client/res/drawable/footbar_checkin.png b/client/res/drawable/footbar_checkin.png
new file mode 100644
index 0000000..90afba7
--- /dev/null
+++ b/client/res/drawable/footbar_checkin.png
Binary files differ
diff --git a/client/res/drawable/footbar_checkin_1.png b/client/res/drawable/footbar_checkin_1.png
new file mode 100644
index 0000000..a478d36
--- /dev/null
+++ b/client/res/drawable/footbar_checkin_1.png
Binary files differ
diff --git a/client/res/drawable/footbar_fetch.png b/client/res/drawable/footbar_fetch.png
new file mode 100644
index 0000000..32d24d2
--- /dev/null
+++ b/client/res/drawable/footbar_fetch.png
Binary files differ
diff --git a/client/res/drawable/footbar_fetch_1.png b/client/res/drawable/footbar_fetch_1.png
new file mode 100644
index 0000000..208094f
--- /dev/null
+++ b/client/res/drawable/footbar_fetch_1.png
Binary files differ
diff --git a/client/res/drawable/footbar_marker.png b/client/res/drawable/footbar_marker.png
new file mode 100644
index 0000000..3de909f
--- /dev/null
+++ b/client/res/drawable/footbar_marker.png
Binary files differ
diff --git a/client/res/drawable/footbar_marker_1.png b/client/res/drawable/footbar_marker_1.png
new file mode 100644
index 0000000..08c8715
--- /dev/null
+++ b/client/res/drawable/footbar_marker_1.png
Binary files differ
diff --git a/client/res/drawable/footbar_search.png b/client/res/drawable/footbar_search.png
new file mode 100644
index 0000000..3549f84
--- /dev/null
+++ b/client/res/drawable/footbar_search.png
Binary files differ
diff --git a/client/res/drawable/footbar_search_1.png b/client/res/drawable/footbar_search_1.png
new file mode 100644
index 0000000..1e6ac28
--- /dev/null
+++ b/client/res/drawable/footbar_search_1.png
Binary files differ
diff --git a/client/res/drawable/footbar_select_bg.png b/client/res/drawable/footbar_select_bg.png
new file mode 100644
index 0000000..9d7e5af
--- /dev/null
+++ b/client/res/drawable/footbar_select_bg.png
Binary files differ
diff --git a/client/res/drawable/footbar_settings.png b/client/res/drawable/footbar_settings.png
new file mode 100644
index 0000000..455bd0b
--- /dev/null
+++ b/client/res/drawable/footbar_settings.png
Binary files differ
diff --git a/client/res/drawable/footbar_settings_1.png b/client/res/drawable/footbar_settings_1.png
new file mode 100644
index 0000000..6b0a2ab
--- /dev/null
+++ b/client/res/drawable/footbar_settings_1.png
Binary files differ
diff --git a/client/res/drawable/footbar_unselect_bg.png b/client/res/drawable/footbar_unselect_bg.png
new file mode 100644
index 0000000..3e1e65e
--- /dev/null
+++ b/client/res/drawable/footbar_unselect_bg.png
Binary files differ
diff --git a/client/res/drawable/horizontal_line.png b/client/res/drawable/horizontal_line.png
new file mode 100644
index 0000000..ccd6aa2
--- /dev/null
+++ b/client/res/drawable/horizontal_line.png
Binary files differ
diff --git a/client/res/drawable/navigation_back.png b/client/res/drawable/navigation_back.png
new file mode 100644
index 0000000..3bdda98
--- /dev/null
+++ b/client/res/drawable/navigation_back.png
Binary files differ
diff --git a/client/res/drawable/navigation_back_1.png b/client/res/drawable/navigation_back_1.png
new file mode 100644
index 0000000..a20b4ef
--- /dev/null
+++ b/client/res/drawable/navigation_back_1.png
Binary files differ
diff --git a/client/res/drawable/title_logo.png b/client/res/drawable/title_logo.png
new file mode 100644
index 0000000..224040c
--- /dev/null
+++ b/client/res/drawable/title_logo.png
Binary files differ
diff --git a/client/res/drawable/topbar_background.png b/client/res/drawable/topbar_background.png
new file mode 100644
index 0000000..9f0291e
--- /dev/null
+++ b/client/res/drawable/topbar_background.png
Binary files differ
diff --git a/client/res/layout/activity_gather.xml b/client/res/layout/activity_gather.xml
new file mode 100644
index 0000000..f887cf0
--- /dev/null
+++ b/client/res/layout/activity_gather.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/white"
+ android:orientation="vertical">
+ <RelativeLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentTop="true"
+ android:id="@+id/gather_timer_layout"
+ >
+ <include layout="@layout/gather_timer"/>
+ </RelativeLayout>
+ <LinearLayout
+ android:id="@+id/gather_footbar_layout"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ >
+ <include layout="@layout/gather_footbar"></include>
+ </LinearLayout>
+</RelativeLayout>
diff --git a/client/res/layout/activity_init.xml b/client/res/layout/activity_init.xml
new file mode 100644
index 0000000..43e6253
--- /dev/null
+++ b/client/res/layout/activity_init.xml
@@ -0,0 +1,16 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingBottom="@dimen/activity_vertical_margin"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingTop="@dimen/activity_vertical_margin"
+ tools:context=".InitAct" >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/hello_world" />
+
+</RelativeLayout>
diff --git a/client/res/layout/activity_login.xml b/client/res/layout/activity_login.xml
new file mode 100644
index 0000000..cd2d34c
--- /dev/null
+++ b/client/res/layout/activity_login.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="fill_parent"
+ android:background="@android:color/black"
+ android:orientation="vertical">
+
+<LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/black"
+ android:gravity="center_horizontal"
+ android:orientation="vertical" >
+
+ <ImageView
+ android:id="@+id/main_headbar_img"
+ android:layout_width="180dp"
+ android:layout_height="240dp"
+ android:layout_gravity="center_horizontal"
+ android:src="@drawable/title_logo" />
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:layout_gravity="center">
+
+ <TableLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <TableRow
+ android:layout_marginBottom="15dp"
+ android:layout_marginTop="15dp">
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_id_text"
+ android:text="User ID"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_id"
+ android:textColor="@android:color/black"
+ android:singleLine="true"/>
+ <requestFocus/>
+ </TableRow>
+
+ <TableRow>
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_pass_text"
+ android:text="Password"
+ android:textColor="@android:color/black"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_pass"
+ android:password="true"
+ android:textColor="@android:color/black"
+ android:singleLine="true"/>
+ </TableRow>
+ </TableLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical"
+ >
+ <Button
+ android:id="@+id/login_btn_login"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:text="Login"
+ android:textColor="@android:color/white" />
+ </LinearLayout>
+
+</LinearLayout>
+</RelativeLayout>
diff --git a/client/res/layout/activity_main.xml b/client/res/layout/activity_main.xml
new file mode 100644
index 0000000..b2b61ac
--- /dev/null
+++ b/client/res/layout/activity_main.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/white"
+ android:orientation="vertical">
+ <RelativeLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentTop="true"
+ android:id="@+id/main_headbar_layout"
+ >
+ <include layout="@layout/main_headbar"/>
+ </RelativeLayout>
+ <LinearLayout
+ android:id="@+id/main_footbar_layout"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ >
+ <include layout="@layout/main_footbar"/>
+ </LinearLayout>
+</RelativeLayout>
diff --git a/client/res/layout/activity_settings.xml b/client/res/layout/activity_settings.xml
new file mode 100644
index 0000000..8ce051f
--- /dev/null
+++ b/client/res/layout/activity_settings.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:background="@drawable/topbar_background"
+ android:orientation="horizontal" >
+
+ <RelativeLayout
+ android:id="@+id/settings_headbar_layout"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentTop="true" >
+
+ <include layout="@layout/settings_headbar" />
+ </RelativeLayout>
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="match_parent"
+ android:layout_marginTop="48dip"
+ android:orientation="vertical" >
+
+ <TextView
+ android:id="@+id/settings_GPSrefreshrate_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="GPS refresh rate"
+ android:layout_gravity="center"
+ android:layout_marginTop="10dip"
+ android:textSize="20dip"
+ android:textColor="@android:color/white" />
+
+ <SeekBar
+ android:id="@+id/settings_GPSrefreshrate"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
+
+ <!-- LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ -->
+ <!-- TextView
+ android:id="@+id/GPS_min_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_marginLeft="10dip"
+ android:text="1s"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"/-->
+
+ <!--TextView
+ android:id="@+id/GPS_max_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:text="30s"
+ android:textColor="@android:color/white"
+ android:textSize="10dip" /-->
+
+ <!-- /LinearLayout --> <!-- end of gps text -->
+
+ <ImageView
+ android:id="@+id/settings_seperator1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:src="@drawable/horizontal_line" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/settings_sex_layout"
+ android:layout_marginTop="10dip">
+
+ <TextView
+ android:id="@+id/settings_sex_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="10dip"
+ android:textSize="20dip"
+ android:textColor="@android:color/white"
+ android:text="@string/show_sex" />
+
+ <CheckBox
+ android:id="@+id/settings_show_male"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/male"
+ android:textColor="@android:color/white"/>
+
+
+ <CheckBox
+ android:id="@+id/settings_show_female"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/female"
+ android:textColor="@android:color/white"/>
+
+ </LinearLayout>
+
+ <ImageView
+ android:id="@+id/settings_seperator2"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:src="@drawable/horizontal_line" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/settings_team_layout"
+ android:layout_marginTop="10dip">
+
+ <TextView
+ android:id="@+id/settings_team_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="10dip"
+ android:textSize="20dip"
+ android:textColor="@android:color/white"
+ android:text="@string/show_team" />
+
+ <RadioButton
+ android:id="@+id/settings_team_mine"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/mine"
+ android:textSize="20dip"
+ android:textColor="@android:color/white"/>
+
+ <RadioButton
+ android:id="@+id/settings_team_all"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/all"
+ android:textSize="20dip"
+ android:textColor="@android:color/white"/>
+
+ </LinearLayout>
+
+ <ImageView
+ android:id="@+id/settings_seperator3"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:src="@drawable/horizontal_line" />
+
+ </LinearLayout>
+ </RelativeLayout>
diff --git a/client/res/layout/gather_footbar.xml b/client/res/layout/gather_footbar.xml
new file mode 100644
index 0000000..e573032
--- /dev/null
+++ b/client/res/layout/gather_footbar.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="48dip"
+ android:orientation="horizontal"
+ android:background="@drawable/footbar_background" >
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_search_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_search"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_search_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_search_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/search"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_fetch_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_fetch"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_fetch_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_fetch_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/fetch"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_checkin_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:orientation="vertical">
+ <ImageButton
+ android:id="@+id/footbar_btn_checkin"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_checkin_style"
+ />
+ <TextView
+ android:id="@+id/footbar_btn_checkin_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/checkin"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_focus_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_focus"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_focus_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_focus_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/focus"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_settings_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_settings"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_settings_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_settings"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:text="@string/settings"/>
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/client/res/layout/gather_timer.xml b/client/res/layout/gather_timer.xml
new file mode 100644
index 0000000..3849f6b
--- /dev/null
+++ b/client/res/layout/gather_timer.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="48dip"
+ android:background="@android:color/black"
+ android:id="@+id/gather_timer_layout" >
+
+ <TextView
+ android:id="@+id/gather_timer"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerHorizontal="true"
+ android:textSize="40dip"
+ android:textColor="@android:color/white">
+ </TextView>
+</RelativeLayout>
diff --git a/client/res/layout/login_bottom.xml b/client/res/layout/login_bottom.xml
new file mode 100644
index 0000000..e268c39
--- /dev/null
+++ b/client/res/layout/login_bottom.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="200dip"
+ android:orientation="horizontal"
+ android:background="@drawable/footbar_background" >
+
+ <ImageView
+ android:layout_width="fill_parent"
+ android:layout_height="120dip"
+ android:src="@drawable/bottom_img"/>
+
+</LinearLayout>
diff --git a/client/res/layout/main_footbar.xml b/client/res/layout/main_footbar.xml
new file mode 100644
index 0000000..69760c0
--- /dev/null
+++ b/client/res/layout/main_footbar.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="48dip"
+ android:orientation="horizontal"
+ android:background="@drawable/footbar_background" >
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_search_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_search"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_search_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_search"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/search"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_fetch_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_fetch"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_fetch_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_fetch_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/fetch"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_focus_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_focus"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_focus_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_focus_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/focus"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_settings_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_settings"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_settings_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_settings_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:text="@string/settings"/>
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/client/res/layout/main_headbar.xml b/client/res/layout/main_headbar.xml
new file mode 100644
index 0000000..137e3a1
--- /dev/null
+++ b/client/res/layout/main_headbar.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="40dip"
+ android:background="@drawable/topbar_background"
+ android:id="@+id/main_headbar_layout" >
+
+ <ImageView
+ android:id="@+id/headbar_logo"
+ android:layout_width="34dip"
+ android:layout_height="34dip"
+ android:layout_alignParentLeft="true"
+ android:layout_centerVertical="true"
+ android:layout_marginLeft="5dip"
+ android:layout_alignParentTop="true"
+ android:background="@drawable/title_logo"/>
+
+ <TextView
+ android:id="@+id/headbar_appname"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerVertical="true"
+ android:layout_marginLeft="8dip"
+ android:textSize="26dip"
+ android:textColor="@android:color/white"
+ android:layout_toRightOf="@+id/headbar_logo"
+ android:text="@string/app_name" />
+
+</RelativeLayout>
diff --git a/client/res/layout/settings_headbar.xml b/client/res/layout/settings_headbar.xml
new file mode 100644
index 0000000..9065bdb
--- /dev/null
+++ b/client/res/layout/settings_headbar.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="48dip"
+ android:background="@drawable/topbar_background"
+ android:id="@+id/settings_headbar_layout" >
+
+ <ImageButton
+ android:id="@+id/settings_btn_back"
+ android:layout_width="40dip"
+ android:layout_height="40dip"
+ android:layout_marginLeft="5dip"
+ android:layout_alignParentLeft="true"
+ android:layout_centerVertical="true"
+ android:background="@drawable/navigation_back"/>
+
+ <TextView
+ android:id="@+id/settings_headbar_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="30dip"
+ android:textColor="@android:color/white"
+ android:layout_alignParentRight="true"
+ android:layout_centerVertical="true"
+ android:layout_marginRight="40dip"
+ android:text="@string/settings"/>
+
+
+</RelativeLayout>
diff --git a/client/res/menu/init.xml b/client/res/menu/init.xml
new file mode 100644
index 0000000..c002028
--- /dev/null
+++ b/client/res/menu/init.xml
@@ -0,0 +1,9 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <item
+ android:id="@+id/action_settings"
+ android:orderInCategory="100"
+ android:showAsAction="never"
+ android:title="@string/action_settings"/>
+
+</menu>
diff --git a/client/res/menu/login.xml b/client/res/menu/login.xml
new file mode 100644
index 0000000..c002028
--- /dev/null
+++ b/client/res/menu/login.xml
@@ -0,0 +1,9 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <item
+ android:id="@+id/action_settings"
+ android:orderInCategory="100"
+ android:showAsAction="never"
+ android:title="@string/action_settings"/>
+
+</menu>
diff --git a/client/res/menu/main.xml b/client/res/menu/main.xml
new file mode 100644
index 0000000..c002028
--- /dev/null
+++ b/client/res/menu/main.xml
@@ -0,0 +1,9 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <item
+ android:id="@+id/action_settings"
+ android:orderInCategory="100"
+ android:showAsAction="never"
+ android:title="@string/action_settings"/>
+
+</menu>
diff --git a/client/res/menu/setting.xml b/client/res/menu/setting.xml
new file mode 100644
index 0000000..c002028
--- /dev/null
+++ b/client/res/menu/setting.xml
@@ -0,0 +1,9 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <item
+ android:id="@+id/action_settings"
+ android:orderInCategory="100"
+ android:showAsAction="never"
+ android:title="@string/action_settings"/>
+
+</menu>
diff --git a/client/res/values-sw600dp/dimens.xml b/client/res/values-sw600dp/dimens.xml
new file mode 100644
index 0000000..44f01db
--- /dev/null
+++ b/client/res/values-sw600dp/dimens.xml
@@ -0,0 +1,8 @@
+<resources>
+
+ <!--
+ Customize dimensions originally defined in res/values/dimens.xml (such as
+ screen margins) for sw600dp devices (e.g. 7" tablets) here.
+ -->
+
+</resources>
diff --git a/client/res/values-sw720dp-land/dimens.xml b/client/res/values-sw720dp-land/dimens.xml
new file mode 100644
index 0000000..61e3fa8
--- /dev/null
+++ b/client/res/values-sw720dp-land/dimens.xml
@@ -0,0 +1,9 @@
+<resources>
+
+ <!--
+ Customize dimensions originally defined in res/values/dimens.xml (such as
+ screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+ -->
+ <dimen name="activity_horizontal_margin">128dp</dimen>
+
+</resources>
diff --git a/client/res/values-v11/styles.xml b/client/res/values-v11/styles.xml
new file mode 100644
index 0000000..3c02242
--- /dev/null
+++ b/client/res/values-v11/styles.xml
@@ -0,0 +1,11 @@
+<resources>
+
+ <!--
+ Base application theme for API 11+. This theme completely replaces
+ AppBaseTheme from res/values/styles.xml on API 11+ devices.
+ -->
+ <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
+ <!-- API 11 theme customizations can go here. -->
+ </style>
+
+</resources>
diff --git a/client/res/values-v14/styles.xml b/client/res/values-v14/styles.xml
new file mode 100644
index 0000000..a91fd03
--- /dev/null
+++ b/client/res/values-v14/styles.xml
@@ -0,0 +1,12 @@
+<resources>
+
+ <!--
+ Base application theme for API 14+. This theme completely replaces
+ AppBaseTheme from BOTH res/values/styles.xml and
+ res/values-v11/styles.xml on API 14+ devices.
+ -->
+ <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+ <!-- API 14 theme customizations can go here. -->
+ </style>
+
+</resources>
diff --git a/client/res/values/dimens.xml b/client/res/values/dimens.xml
new file mode 100644
index 0000000..55c1e59
--- /dev/null
+++ b/client/res/values/dimens.xml
@@ -0,0 +1,7 @@
+<resources>
+
+ <!-- Default screen margins, per the Android Design guidelines. -->
+ <dimen name="activity_horizontal_margin">16dp</dimen>
+ <dimen name="activity_vertical_margin">16dp</dimen>
+
+</resources>
diff --git a/client/res/values/strings.xml b/client/res/values/strings.xml
new file mode 100644
index 0000000..5a5ccc4
--- /dev/null
+++ b/client/res/values/strings.xml
@@ -0,0 +1,21 @@
+<resources>
+
+ <string name="app_name">piztor</string>
+ <string name="action_settings">Settings</string>
+ <string name="hello_world">Hello world!</string>
+ <string name="settings">Settings</string>
+ <string name="search">Search</string>
+ <string name="fetch">Fetch</string>
+ <string name="checkin">Checkin</string>
+ <string name="focus">Focus</string>
+ <string name="show_sex">Show sex: </string>
+ <string name="male">Male</string>
+ <string name="female">Female</string>
+ <string name="show_team">Show team: </string>
+ <string name="all">All</string>
+ <string name="mine">Mine</string>
+ <string name="title_activity_login">Login</string>
+ <string name="title_activity_main">Main</string>
+ <string name="title_activity_setting">Setting</string>
+
+</resources>
diff --git a/client/res/values/styles.xml b/client/res/values/styles.xml
new file mode 100644
index 0000000..6ce89c7
--- /dev/null
+++ b/client/res/values/styles.xml
@@ -0,0 +1,20 @@
+<resources>
+
+ <!--
+ Base application theme, dependent on API level. This theme is replaced
+ by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+ -->
+ <style name="AppBaseTheme" parent="android:Theme.Light">
+ <!--
+ Theme customizations available in newer API levels can go in
+ res/values-vXX/styles.xml, while customizations related to
+ backward-compatibility can go here.
+ -->
+ </style>
+
+ <!-- Application theme. -->
+ <style name="AppTheme" parent="AppBaseTheme">
+ <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+ </style>
+
+</resources>
diff --git a/client/src/com/macaroon/piztor/ActMgr.java b/client/src/com/macaroon/piztor/ActMgr.java
new file mode 100644
index 0000000..4df6bae
--- /dev/null
+++ b/client/src/com/macaroon/piztor/ActMgr.java
@@ -0,0 +1,62 @@
+package com.macaroon.piztor;
+
+import java.util.*;
+
+import android.annotation.SuppressLint;
+
+@SuppressLint("UseSparseArrays")
+public class ActMgr {
+ // event
+ PiztorAct act;
+ ActStatus nowStatus;
+ HashMap<ActStatus, HashMap<Integer, ActStatus>> mp;
+
+ ActMgr(PiztorAct act, ActStatus nowStatus, ActStatus[] r) {
+ this.act = act;
+ this.nowStatus = nowStatus;
+ mp = new HashMap<ActStatus, HashMap<Integer, ActStatus>>();
+ for (int i = 0; i < r.length; i++) {
+ mp.put(r[i], new HashMap<Integer, ActStatus>());
+ }
+ }
+
+ void trigger(int event) {
+ System.out.println(act.id + " : " + event);
+ if (mp.get(nowStatus).containsKey(event)) {
+ nowStatus.leave(event);
+ nowStatus = mp.get(nowStatus).get(event);
+ nowStatus.enter(event);
+ } else if (AppMgr.mp.get(act.getClass()).containsKey(event)) {
+ AppMgr.trigger(event);
+ }
+ }
+
+ void add(ActStatus a, int event, ActStatus b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, ActStatus> h = mp.get(a);
+ h.put(event, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, ActStatus> h = new HashMap<Integer, ActStatus>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+}
+
+abstract class ActStatus {
+ abstract void enter(int e);
+
+ abstract void leave(int e);
+}
+
+class EmptyStatus extends ActStatus {
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+}
diff --git a/client/src/com/macaroon/piztor/AppMgr.java b/client/src/com/macaroon/piztor/AppMgr.java
new file mode 100644
index 0000000..2e5e2b3
--- /dev/null
+++ b/client/src/com/macaroon/piztor/AppMgr.java
@@ -0,0 +1,89 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Tracker tracker = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+ final static int loginSuccess = 102;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+ tracker = new Tracker(nowAct.getApplicationContext(), fromGPS);
+ tTransam = new Thread(transam);
+ tTransam.start();
+ tGPS = new Thread(tracker);
+ tGPS.start();
+ System.out.println("!!!!!!");
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ addTransition(Login.class, loginSuccess, Main.class);
+ }
+
+}
diff --git a/client/src/com/macaroon/piztor/GPSTracker.java b/client/src/com/macaroon/piztor/GPSTracker.java
new file mode 100644
index 0000000..7e89d21
--- /dev/null
+++ b/client/src/com/macaroon/piztor/GPSTracker.java
@@ -0,0 +1,241 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 3; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public Location getLocation() {
+ try {
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+ return location;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/src/com/macaroon/piztor/InitAct.java b/client/src/com/macaroon/piztor/InitAct.java
new file mode 100644
index 0000000..d5a6059
--- /dev/null
+++ b/client/src/com/macaroon/piztor/InitAct.java
@@ -0,0 +1,34 @@
+package com.macaroon.piztor;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token == -1)
+ AppMgr.trigger(AppMgr.noToken);
+ else {
+ //TODO jump to main
+ }
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/src/com/macaroon/piztor/Login.java b/client/src/com/macaroon/piztor/Login.java
new file mode 100644
index 0000000..a931dae
--- /dev/null
+++ b/client/src/com/macaroon/piztor/Login.java
@@ -0,0 +1,104 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ System.out.println(m.what);
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ System.out.println(user + " : " + pass + "\n");
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ AppMgr.transam.setHandler(hand);
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/src/com/macaroon/piztor/Main.java b/client/src/com/macaroon/piztor/Main.java
new file mode 100644
index 0000000..0b24abd
--- /dev/null
+++ b/client/src/com/macaroon/piztor/Main.java
@@ -0,0 +1,51 @@
+package com.macaroon.piztor;
+
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/src/com/macaroon/piztor/PiztorAct.java b/client/src/com/macaroon/piztor/PiztorAct.java
new file mode 100644
index 0000000..ad12b17
--- /dev/null
+++ b/client/src/com/macaroon/piztor/PiztorAct.java
@@ -0,0 +1,60 @@
+package com.macaroon.piztor;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+public class PiztorAct extends Activity {
+ String id;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ System.out.println(id + " on create");
+ AppMgr.setStatus(AppMgr.ActivityStatus.create);
+ AppMgr.nowAct = this;
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ System.out.println(id + " on start");
+ AppMgr.setStatus(AppMgr.ActivityStatus.start);
+ AppMgr.nowAct = this;
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ System.out.println(id + " on stop");
+ AppMgr.setStatus(AppMgr.ActivityStatus.stop);
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ System.out.println(id + " on resume");
+ AppMgr.setStatus(AppMgr.ActivityStatus.resume);
+ AppMgr.nowAct = this;
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ System.out.println(id + " on pause");
+ AppMgr.setStatus(AppMgr.ActivityStatus.pause);
+ }
+
+ @Override
+ protected void onRestart() {
+ super.onRestart();
+ System.out.println(id + " on restart");
+ AppMgr.setStatus(AppMgr.ActivityStatus.restart);
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ System.out.println(id + " on destroy");
+ AppMgr.setStatus(AppMgr.ActivityStatus.destroy);
+ }
+
+}
diff --git a/client/src/com/macaroon/piztor/PiztorExcepiton.java b/client/src/com/macaroon/piztor/PiztorExcepiton.java
new file mode 100644
index 0000000..6d1861a
--- /dev/null
+++ b/client/src/com/macaroon/piztor/PiztorExcepiton.java
@@ -0,0 +1,10 @@
+package com.macaroon.piztor;
+
+class PiztorExcepiton extends Exception{
+ private static final long serialVersionUID = -7147530695009854988L;
+
+}
+
+class ClassCannotFind extends PiztorExcepiton {
+ //private class
+}
diff --git a/client/src/com/macaroon/piztor/Req.java b/client/src/com/macaroon/piztor/Req.java
new file mode 100644
index 0000000..32988b8
--- /dev/null
+++ b/client/src/com/macaroon/piztor/Req.java
@@ -0,0 +1,14 @@
+package com.macaroon.piztor;
+
+public class Req{
+ int type; //request type
+ int token; //authentciation
+ long time; //current time
+ long alive; //alive time
+ Req(int t,int k,long tm,long av){
+ type = t;
+ token = k;
+ time = tm;
+ alive = av;
+ }
+} \ No newline at end of file
diff --git a/client/src/com/macaroon/piztor/ReqLocation.java b/client/src/com/macaroon/piztor/ReqLocation.java
new file mode 100644
index 0000000..000f373
--- /dev/null
+++ b/client/src/com/macaroon/piztor/ReqLocation.java
@@ -0,0 +1,14 @@
+package com.macaroon.piztor;
+
+//--------------------------------------//
+// Ask Location //
+//--------------------------------------//
+
+public class ReqLocation extends Req{
+ int gid; //group id;
+
+ ReqLocation(int token,int groupid,long time,long alive){
+ super(3,token,time,alive); //for type 3
+ gid = groupid;
+ }
+} \ No newline at end of file
diff --git a/client/src/com/macaroon/piztor/ReqLogin.java b/client/src/com/macaroon/piztor/ReqLogin.java
new file mode 100644
index 0000000..294cae3
--- /dev/null
+++ b/client/src/com/macaroon/piztor/ReqLogin.java
@@ -0,0 +1,16 @@
+package com.macaroon.piztor;
+
+//--------------------------------------//
+// authentication //
+//--------------------------------------//
+
+public class ReqLogin extends Req{
+ String user; //username
+ String pass; //password
+
+ ReqLogin(String u,String p,long time,long alive){
+ super(0,0,time,alive); //for type 0
+ user = u;
+ pass = p;
+ }
+} \ No newline at end of file
diff --git a/client/src/com/macaroon/piztor/ReqUpdate.java b/client/src/com/macaroon/piztor/ReqUpdate.java
new file mode 100644
index 0000000..e4b1497
--- /dev/null
+++ b/client/src/com/macaroon/piztor/ReqUpdate.java
@@ -0,0 +1,16 @@
+package com.macaroon.piztor;
+
+//--------------------------------------//
+// Update Location //
+//--------------------------------------//
+
+public class ReqUpdate extends Req{
+ double lat; //latitude
+ double lot; //longitude
+
+ ReqUpdate(int token,double latitude,double longitude,long time,long alive){
+ super(2,token,time,alive); //for type 2
+ lat = latitude;
+ lot = longitude;
+ }
+} \ No newline at end of file
diff --git a/client/src/com/macaroon/piztor/Res.java b/client/src/com/macaroon/piztor/Res.java
new file mode 100644
index 0000000..98af108
--- /dev/null
+++ b/client/src/com/macaroon/piztor/Res.java
@@ -0,0 +1,11 @@
+package com.macaroon.piztor;
+
+public class Res{
+ int t;
+ int s;
+ Res(int type,int status){
+ t = type;
+ s = status;
+ }
+}
+
diff --git a/client/src/com/macaroon/piztor/ResLocation.java b/client/src/com/macaroon/piztor/ResLocation.java
new file mode 100644
index 0000000..eb90840
--- /dev/null
+++ b/client/src/com/macaroon/piztor/ResLocation.java
@@ -0,0 +1,18 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+//--------------------------------------//
+// Location Info //
+//--------------------------------------//
+
+public class ResLocation extends Res{
+ Vector<Rlocation> l; //vector for location info
+ int n; //number of location info
+
+ ResLocation(int num,Vector<Rlocation> locationvec){
+ super(3,255); //for type 3
+ l = locationvec;
+ n = num;
+ }
+} \ No newline at end of file
diff --git a/client/src/com/macaroon/piztor/ResLogin.java b/client/src/com/macaroon/piztor/ResLogin.java
new file mode 100644
index 0000000..5b597a4
--- /dev/null
+++ b/client/src/com/macaroon/piztor/ResLogin.java
@@ -0,0 +1,15 @@
+package com.macaroon.piztor;
+
+
+//--------------------------------------//
+// Respond to login //
+//--------------------------------------//
+
+public class ResLogin extends Res{
+ int t; //user token
+
+ ResLogin(int token,int status){
+ super(0,status); //for type 0
+ t = token;
+ }
+} \ No newline at end of file
diff --git a/client/src/com/macaroon/piztor/ResUpdate.java b/client/src/com/macaroon/piztor/ResUpdate.java
new file mode 100644
index 0000000..727eaa3
--- /dev/null
+++ b/client/src/com/macaroon/piztor/ResUpdate.java
@@ -0,0 +1,13 @@
+package com.macaroon.piztor;
+
+
+//--------------------------------------//
+// Respond to update location //
+//--------------------------------------//
+
+public class ResUpdate extends Res{
+
+ ResUpdate(int status){
+ super(2,status); //for type 2
+ }
+} \ No newline at end of file
diff --git a/client/src/com/macaroon/piztor/Rlocation.java b/client/src/com/macaroon/piztor/Rlocation.java
new file mode 100644
index 0000000..142cc9b
--- /dev/null
+++ b/client/src/com/macaroon/piztor/Rlocation.java
@@ -0,0 +1,13 @@
+package com.macaroon.piztor;
+
+class Rlocation{
+ int i; //id
+ double lat; //latitude
+ double lot; //longitude
+
+ Rlocation(int id,double latitude,double longitude){
+ i = id;
+ lat = latitude;
+ lot = longitude;
+ }
+} \ No newline at end of file
diff --git a/client/src/com/macaroon/piztor/Setting.java b/client/src/com/macaroon/piztor/Setting.java
new file mode 100644
index 0000000..610333f
--- /dev/null
+++ b/client/src/com/macaroon/piztor/Setting.java
@@ -0,0 +1,22 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class Setting extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_setting);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.setting, menu);
+ return true;
+ }
+
+}
diff --git a/client/src/com/macaroon/piztor/Settings.java b/client/src/com/macaroon/piztor/Settings.java
new file mode 100644
index 0000000..292a112
--- /dev/null
+++ b/client/src/com/macaroon/piztor/Settings.java
@@ -0,0 +1,22 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class Settings extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_settings);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.setting, menu);
+ return true;
+ }
+
+}
diff --git a/client/src/com/macaroon/piztor/SocketClient.java b/client/src/com/macaroon/piztor/SocketClient.java
new file mode 100644
index 0000000..18c19da
--- /dev/null
+++ b/client/src/com/macaroon/piztor/SocketClient.java
@@ -0,0 +1,107 @@
+package com.macaroon.piztor;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.util.Vector;
+
+import android.os.Handler;
+import android.os.Message;
+
+public class SocketClient {
+ static Socket client;
+
+ public SocketClient(String site, int port) throws UnknownHostException,
+ IOException {
+ try {
+ client = new Socket(site, port);
+ } catch (UnknownHostException e) {
+ throw e;
+ } catch (IOException e) {
+ throw e;
+ }
+ }
+
+ public void sendMsg(Req req,Handler recall) throws IOException {
+ try {
+ DataOutputStream out = new DataOutputStream(
+ client.getOutputStream());
+ int tmp = req.type;
+ out.writeByte(tmp);
+ switch (tmp) {
+ case 0:
+ ReqLogin rau = (ReqLogin) req;
+ String id = rau.user;
+ String pa = rau.pass;
+ out.writeBytes(id + "\0" + pa);
+ break;
+ case 2:
+ ReqUpdate rup = (ReqUpdate) req;
+ int tk2 = rup.token;
+ double slat = rup.lat;
+ double slot = rup.lot;
+ out.writeInt(tk2);
+ out.writeDouble(slat);
+ out.writeDouble(slot);
+ break;
+ case 3:
+ ReqLocation ras = (ReqLocation) req;
+ int tk3 = ras.token;
+ int gid = ras.gid;
+ out.writeInt(tk3);
+ out.writeInt(gid);
+ break;
+ }
+ out.flush();
+ client.shutdownOutput();
+ DataInputStream in = new DataInputStream(client.getInputStream());
+ Message msg = new Message();
+ int type = in.readUnsignedByte();
+ switch (type) {
+ case 0:
+ int id = in.readInt();
+ int status = in.readUnsignedByte();
+ ResLogin rchklogin = new ResLogin(id,status);
+ msg.obj = rchklogin;
+ msg.what = 0;
+ recall.sendMessage(msg);
+ break;
+ case 2:
+ int status1 = in.readUnsignedByte();
+ ResUpdate rchkupd = new ResUpdate(status1);
+ msg.obj = rchkupd;
+ msg.what = 1;
+ recall.sendMessage(msg);
+ break;
+ case 3:
+ int n = in.readInt();
+ Vector<Rlocation> tmpv = new Vector<Rlocation>();
+ for (int i = 1; i <= n; i++) {
+ int tid = in.readInt();
+ double lat = in.readDouble();
+ double lot = in.readDouble();
+ tmpv.add(new Rlocation(tid,lat,lot));
+ }
+ ResLocation rlocin = new ResLocation(n,tmpv);
+ msg.obj = rlocin;
+ msg.what = 3;
+ recall.sendMessage(msg);
+ break;
+ }
+
+ } catch (IOException e) {
+ throw e;
+ }
+ }
+
+ public void closeSocket() {
+ try {
+ client.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/client/src/com/macaroon/piztor/Tracker.java b/client/src/com/macaroon/piztor/Tracker.java
new file mode 100644
index 0000000..3c46136
--- /dev/null
+++ b/client/src/com/macaroon/piztor/Tracker.java
@@ -0,0 +1,68 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.location.Location;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ Location location = myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+
+// Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+// System.out.println("GPSTIME" + myTracker.location.getTime());
+// System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ message = new Message();
+ message.what = 0;
+ message.obj = location;
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message = new Message();
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/src/com/macaroon/piztor/Transam.java b/client/src/com/macaroon/piztor/Transam.java
new file mode 100644
index 0000000..3410502
--- /dev/null
+++ b/client/src/com/macaroon/piztor/Transam.java
@@ -0,0 +1,139 @@
+package com.macaroon.piztor;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.annotation.SuppressLint;
+import android.os.Handler;
+import android.os.Message;
+
+public class Transam implements Runnable {
+
+ public Timer timer;
+ public Timer mtimer;
+ public boolean running = false;
+ public boolean flag = true;
+ public int cnt = 4;
+ Res res;
+ Req req;
+ public int p; // port
+ public String i; // ip
+ Thread thread;
+ Handler core;
+ Handler recall; // recall
+ Queue<Req> reqtask; // request task
+
+ Transam(String ip, int port, Handler Recall) {
+ p = port;
+ i = ip;
+ recall = Recall;
+ reqtask = new LinkedList<Req>();
+ }
+
+ public void send(Req r) {
+ reqtask.offer(r);
+
+ }
+
+ public void setHandler(Handler Recall) {
+ recall = Recall;
+ reqtask.clear();
+ }
+
+ public void run() { // start the main timer
+ // TimerTask tmain = new Timertk();
+ // mtimer = new Timer();
+ // mtimer.schedule(tmain, 100, 100); //check the queue for every 100
+ // msec
+
+ while (true) {
+ if (running == false) {
+
+ if (!reqtask.isEmpty()) { // poll the head request
+ req = reqtask.poll();
+ if (req.time + req.alive < System.currentTimeMillis()) { // time
+ // out!
+ Message ret = new Message();
+ ret.obj = "Time out!";
+ ret.what = 100;
+ recall.sendMessage(ret);
+ } else { // run the request
+ final thd t = new thd();
+ flag = false;
+ thread = new Thread(t);
+ cnt = 4;
+ running = true;
+ thread.start();
+ timer = new Timer();
+ TimerTask task = new Timertk();
+ timer.schedule(task, 2000, 2000);
+ }
+ }
+ }
+ }
+ }
+
+ class tmain extends TimerTask {
+ public void run() {
+
+ }
+ };
+
+ class thd implements Runnable {
+ public void run() {
+ try {
+ SocketClient client = new SocketClient(i, p);
+ client.sendMsg(req, recall);
+ Message msg = new Message();
+ msg.what = 1;
+ handler.sendMessage(msg);
+ client.closeSocket();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ System.out.println("UnknownHostException");
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("IOException");
+ }
+
+ }
+ }
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 1:
+ flag = true;
+ break;
+ case 2:
+ final thd t = new thd();
+ thread = new Thread(t);
+ thread.start();
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ };
+
+ class Timertk extends TimerTask {
+ public void run() {
+ if (flag == false && cnt > 0) {
+ cnt--;
+ } else if (cnt == 0) {
+ Message msg = new Message();
+ msg.obj = "connecting failed";
+ msg.what = 101;
+ recall.sendMessage(msg);
+ timer.cancel();
+ } else if (flag == true) {
+ timer.cancel();
+ running = false;
+ }
+ }
+ };
+} \ No newline at end of file
diff --git a/client/src/com/macaroon/piztor/UserInfo.java b/client/src/com/macaroon/piztor/UserInfo.java
new file mode 100644
index 0000000..04be578
--- /dev/null
+++ b/client/src/com/macaroon/piztor/UserInfo.java
@@ -0,0 +1,7 @@
+package com.macaroon.piztor;
+
+public class UserInfo {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+}