From 74cf36e607ac29335442bf8cc8127e0392bdcb20 Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Thu, 13 Sep 2012 13:54:06 -0700 Subject: [PATCH] Add a menu item to start/stop gps. --- MyTracks/res/drawable-hdpi/menu_start_gps.png | Bin 0 -> 1784 bytes MyTracks/res/drawable-hdpi/menu_stop_gps.png | Bin 0 -> 1627 bytes MyTracks/res/drawable-mdpi/menu_start_gps.png | Bin 0 -> 1409 bytes MyTracks/res/drawable-mdpi/menu_stop_gps.png | Bin 0 -> 1312 bytes .../res/drawable-xhdpi/menu_start_gps.png | Bin 0 -> 2204 bytes MyTracks/res/drawable-xhdpi/menu_stop_gps.png | Bin 0 -> 1977 bytes MyTracks/res/menu/track_list.xml | 5 + MyTracks/res/values/strings.xml | 12 ++ .../apps/mytracks/TrackListActivity.java | 143 +++++++++++++++++- 9 files changed, 158 insertions(+), 2 deletions(-) create mode 100644 MyTracks/res/drawable-hdpi/menu_start_gps.png create mode 100644 MyTracks/res/drawable-hdpi/menu_stop_gps.png create mode 100644 MyTracks/res/drawable-mdpi/menu_start_gps.png create mode 100644 MyTracks/res/drawable-mdpi/menu_stop_gps.png create mode 100644 MyTracks/res/drawable-xhdpi/menu_start_gps.png create mode 100644 MyTracks/res/drawable-xhdpi/menu_stop_gps.png diff --git a/MyTracks/res/drawable-hdpi/menu_start_gps.png b/MyTracks/res/drawable-hdpi/menu_start_gps.png new file mode 100644 index 0000000000000000000000000000000000000000..d7fae7e988bbaa7f6d6f51e27738e00f7818b1fa GIT binary patch literal 1784 zcmaJ?Yfuwc6b?j!Xrd^Hh$uV3qKHX$dBqKcM-oufPzWg~Y9%BK1la7dS;#}BfLaHn zRTKe>wkirLD$Y2HE%5;kYDE~pS3yS+5Mg`)RVrhVZcwy8N_S@W-h1YJ-}%nt&gMph zFJnz{nnI(|SYgX0GHM0Q?_>t`jjd68b3?brQ0ZND>$DcsiYqtMlSwL?RD@VVDPc@;p5`lm|y^(2xo}N27HeXOJLT zC85SiHKqZ~jEZ@-zI1l22=9I=ArPBX*MbXdRT2h95 z(fgmoTDbv7crrwbr4vf3aS5*GP`E%$APN#AJZ!aHtQ&_ZC6p zSP7;~M-dG+ZNe+_)%k}Lq_BEtL1>0Z4+Wno{ z4@U1eL`J&QTgOfce(rK`){0HQxsXE^vz_>P>yv$RUWT{q-MN=*FP9vxjOCxs&)IoR zv?Sz(%>7 zR)5W+8XIS87@u>?fLax8DeC|y8`G>lQj3)12up z!Hi7=0sbOBw6%Xg2r$mKj$XZ@+B`2t#W2yu9l7!i(e#Y$+i`xZeU^LTM8p9`Gb7d@ zu&LjW?a^U?SxaqZ#?6_P$qen~me(&nWl>X`>GX!Rjvj-i0L(Mlpude<5QCYO@WY43 z7kdunFF=x?$KTJIWIdmrR_e(dnpbvGa-7*qE8BnZlI2SgAQD-%zm2@N2ubNHtFab! zIP}u0YvCQfb=A|e=f!<>d9wwtmi}tiIcAP4VAUC`*j`@0e%-4X&8o=9Q)O|^M{4Kp z?y0taaBSpohdZL{>pim3?z;Xb|IRe`;`zI}her=oG`qwPt}Q{0g_k;sjmz7hYEkap zg9q}ad!#=P3f$Z1u&V$m%^WId0Fi3#lIyHLZp_WtedB0pdKO^?=~Mx`xQ}7h0-YN@xoW*XoejJ{|VG$kL9kxU+AN zx8I|xcPH(V`HLBjt&ej5l%G&IvcpXl>*<#3wmDmqUb={tKb|gnc43Vlm!v-|8x&o! zz!{RljQDHiwNo0eD%;uL=HacUwW(Vwv4$-7`qz(g9-EH+-5OxK!bB_esq3hj|xe%#kn|HMPQy{6O_i+#18y9^iY!ZsiO`J1iTDTb!1!)a9>Pu3i5z8Zb; z4cDo2Ahuxo+Nna$6dhb^`^3$$vb&;w+fA?Xg7^EQP4-o{S@{cCzwLSU!KFWP;7qCA y({c+pr7@6S<#$#-QgJCc=x){t3xqQ|$&t3>*3c2#xpyMX|Dv#vaLH*=T+Tl*{jMtj literal 0 HcmV?d00001 diff --git a/MyTracks/res/drawable-hdpi/menu_stop_gps.png b/MyTracks/res/drawable-hdpi/menu_stop_gps.png new file mode 100644 index 0000000000000000000000000000000000000000..15244402c3bfc9363978693540f34f2961453e66 GIT binary patch literal 1627 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi;)!fzDz|h>($-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OVZUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnv1? zG!Lpb1-DzwaO%|uIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1z);J~H$iTpK*3-o? zq~g|_nf4jMfg^Po#?G0ewT*3&%f{rT-p-=AJjd?0>I(++2)sCjf%j#ozK6YtNcE%deVvz zt+*-f?cyH=xjR^MN*VV#-`;)HG*GPkNYxdk4Z$&j;;!i;${*Zo#P_?XcD+BqZ>P=C z>BI7^OZm}?8*00bhJFlva&*(#qe9cXI43_&KeEEY?O(pQYTbJ^rPYs`PjpQ;-M>BL zfM#Lv9ETHK5kjrAuDldvKgzIsa$!x}9nt(~%?E8KI%F;WIPFo2^(tMo#ea_2bHNai z??-Yn_G?W_}n~?IW}q1oO&&}$QuWHded*rN#RXrziF`BxAE7pYcmArZ?t_A zbUMF^(aAG4N;b6#GgcoF=sRy|aq#&D+apoeSY@8I#4_DpoOOLo;R!e0l)nEd zzN(cDOHTaX#LSqQGyD4ki=;_5Pp-OY?w;7dS=d>m;8-{7QpMRs*4@WA?ez2>@6mLY z>wdX_X_CuApWOGK-UaAO?eE-o{`&#VFAg>bE0Z5I?NF_fwYqoOdH4BSau@kk6Q0iB zQ>|YY)bf+>9<%)IWpDm{+CP1P!tM*|amyGt*sdx&DHFC#HHw} zs~1j-P3l>__-ytIiEW$pygRSoS;BTREw`65=iKHtW5(Aag|71=ZZ&<*%n@}qJ+SRj z>#}=OKW%%#Z?J#9oBk-4JE1@^!H=pEUc-M;OVTkqNs-}o)v z!FzP2qkE&e)neBLE7^$bEX&h1lgiI9oVWRHh4HS-wjq<`UW&|ow`Uu|1Gx@69A^FEhT?M6BsOS&Dc=5=|~u;xc7ARb6Mw<&;$T}2W|EM literal 0 HcmV?d00001 diff --git a/MyTracks/res/drawable-mdpi/menu_start_gps.png b/MyTracks/res/drawable-mdpi/menu_start_gps.png new file mode 100644 index 0000000000000000000000000000000000000000..9d1f4403a931ada4c33f5fab6123e5869c913804 GIT binary patch literal 1409 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi;#m&XQ(Amh;$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1PCvUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dR=1d2 z7#ld@HV>*d1*==YdQEV;MIY!GeNfaQMKw$an0`P^c)|s8;7LC<518JIfC>Bek$Ykc z42+*WT^vIyZoQel+n>o%;F#rsQ{DVgCIY%VT)kpWN@80)lDBNxa5O49xx4p&!_>8N zxx%*HkWl`?W!KcXZHB}OfphOCy`Q9eZujGNPq=PAnf~VNxpREGt&O{vXmp)F{p@?? z9X39T(ggM=b0s*eN)qI1sE&$m&fqgi_cyPQsBsO$y@sXGly5loZ%`i^W=D!m+*6CGK@7IHvwg6@mc zSJoD+Te$D0;EKQ^mSYF3GJ@ooA`Onew=Q6l`ZMjIp>j&|^sCndQw|7waBZ@%U^o5X zku~Kg>t2!PX+75rxDU&$_;e_9e~rA$0rB!BC+k|06<-r{1ycWsY{OZ~jAYF#(gZ}r-4r>|^` z>A9nETKbLh*2~7ZF9Rj2P literal 0 HcmV?d00001 diff --git a/MyTracks/res/drawable-mdpi/menu_stop_gps.png b/MyTracks/res/drawable-mdpi/menu_stop_gps.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4fb081e0986f4670deeebb6fb939043423499a GIT binary patch literal 1312 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi;&A`CY$jQvq$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1POzUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnv1= zG!Lpb1-DyFaq86vIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1zb_(je$-uxk$HGDa14WKkuk;i?qnfD`bg|Vjeo@=GU4~L?wniVlb<#dz(=CtPk=cS5xtd*g z&Il!H%{%YCZxY|t^82+{&0l!hojhIrd|q``ea-omA8YNWF6mt=v@MXSQ20i3)*ObH zGdOh)dk1M7Fv@>enyzjvxPD=yQO*ISGfn~zB=a8foco&hfb&VBeAojvy$6o>pDpC@ zF5qM@NEbErIM5^%<1Bmaz?Tn(zrv>HpH$m+_6hfeCgl?mKhmGvzI0>Xzr<*PJCl-U zwCPrCzO#;J&WpC3*Bh*I9VOo_%-9)vw?ZoV-E;9WUhNCl8oRT6d)FSh*tmyjXH>AE zkBI7>)+QD;?tVidj$`Lu%Jd!dusMvLYTnShO4bthIQ?Y+ImVXgO9sR`YNm3~^0 zrIyV5uAJ$f*dV^FBhkBN)#nG6esKXj&!avlyBKen*&^_Fr--|*8?WvEu%2sAlVf|> z0{ePTeO%>j*>`(F%GY<961<-4r@aYSw3T^o;`bKWUjN;Gb{*?>tkr&=llJBQhx_Uu bbPq7pnR#F1tm66uDziLY{an^LB{Ts5)}Gl{ literal 0 HcmV?d00001 diff --git a/MyTracks/res/drawable-xhdpi/menu_start_gps.png b/MyTracks/res/drawable-xhdpi/menu_start_gps.png new file mode 100644 index 0000000000000000000000000000000000000000..52ca8ab7f3a772adb94abdc33910558ec42e2f6a GIT binary patch literal 2204 zcmaJ@X;>528V(3TSOipdsUg9IEgNCU81@MeE(sbaf(sDBfT>9)CV>P*rR*rdA|j}O zy`pF>Du_y1Bp9exz^g4N2na?r+*%ius;DSUtZ08+?wn`lobx^J`+n<>DO}44Ha4&^ zKp+stv=ES~-u*PM{zCQl6ldG0db1W&qs0+$l32nLLJ0pvH~~V@c&ucI39%B>wq1iL z2*d&hPGqz=njQwQVIG#H!C<94ftrm#P<*8V7JDlsMkPSW9KJXDS*sk4;v{;b*Spj4 zbU`4rg%gr4gd)-zk?i!XY;q#n*9S$B0%`#sBxa$cJT6}ZNWIY?bpiERW5%ITA0gtc z-sr!Bil(nc1;RoI<&MR>vhf}Slm`h*AmPa*vI~lcC*W}eA`b8AO27l|o&cVJ`t+dH z-h_!s022)Q|1pp2wkw~x-H!Lhn#u3P5G7e9~5s9v9gsUixFJ?(y`6A4m z0tkuNLXJSpf%zznA}aw-5qqQ6k^Y?mPw-imFZxs_b-{2_mHUx{60`Vhhz5G2)f!k1ClLq)J-yuU{-ApRK8Qe|638S1nMw)> z^bc|;c#;ALb6gN+r|=-Yc#fO+g-e~6s~HBKK9IP=F6Ft6Sx zZsPp01kTIFse{33TKkVy&zaQoqd9&aT=nJi=tF$Codt zF$J5bOY`2P-cWhjnCCg<(MWr`RzHgGEf_v*rCWnLw0gIxK#L0c>(=N{Nm)maqMWj< z9Iz%>lfvm^@dX6px&WgquE-@zRF_vUh#MvEmd{|9mJj#!@LF3=Jp1;@!Qt0YRj1^P zD&WMatb~RNPBN0I{m+&03srGEAZpNQ=24BA-B;I|{^PsyLC%rkl1xYCa{Y=|w+gtm z*MDB6b!N)(ysehU%a^bGpdpwrs7?@Z-Bl+M0UF!OV^DJ_)}R#ScWASUc0pmj+h zQ`|De>*ZU5VZMJvXU8bwOedQsO9XA^$Y|G*&XB_=ZuB*?6=tmd=L>>DfB#hhg0MhS9^vjgU>q^(>?c*KRKb28(nmSG2jfTs}W*8f$sc^v`~Dl>$&=mEzjn zRM~4ox%(0=)kv%v_R1y`BC|6EEivuc@XP+UQ9qd^-&wk?BTx|v>?)X00*uqFN0gl6 zGKy!e?j{T+KW(UB#5p6bwuoNpR^`<(^E0b=`^siNsrjD9JYSa#RViZQ#Mtq`B>Ihe zlcCoj#q}H- zx?Zx+{IYC;Vsh}PB0QI_hz{HA?KRxvIJjnh6O z^EbSr*#Ty)XRS})ON*$|8skeo`q6og6G&m|l^83GJa0t4ukLI|)7I6tT^Wr_s?vt) zd-b$f+%Z~?u#?fa zVHWlMbO%)YA;6+O?q29gi6gJsR&kDDbt(IOE~v9<6}N-XEUfEod%AEO*>t_7O3JE* zzbcp+4W6#7$keVma)Z?LAfdYPWrg;dcwx7FS8azKbbAbG8riH3mj7Bv>|5Q@?E%in z%qH31`h%MlMQ0owf7ip5yvBI_@ImKyfnG{cSDWF>h12<`WwE-8*v6`3sw-{2e%!G# zzhKLhWd&)TmUneiD{R`0c3#!5>VEZgqNoT z@ki%)_2D6TSxyt}WpBO%?hjqExvN|x>_iUky}zuc;Z)b+3&_Q9o%+ikZgif?K-+<`dAxl%q}!&Lo7{!g-f8Fxxj~HmA^8I}ZsE3VPxL@fu-bf- zbHcdf;@D!thcxBNu-`nePvRfs1HtJNNgvi&S;s%!g`$+4|1JHA!QsXs>W&2zliLkb z+5P0q;?0y*2WH>JKQIn@1jh`15%vnm4x{WK_zdyS%q3_tWZ`oS0*nhokTU8-*2t1gI`QGtZXX8_!11*d= z*<{-04_xJj%J@4AitdE?MTCURzs!=6``kWq@Y_;1gW~-bxbm}Y* zFq`DO>;#=yhpW&cv$l*tGt1Hp#rq4dJ zhzGoaP^;y<--61~r2{IAK!F6ISYQ+D3wY@Vn_r*0vaJ8*IFsWF0hhO z6AEgSG!kZ+^!x?mzZf{Q?**q71-P^bI

ba? znxypT@A3XmVbZV`M@4#+#7YSx-ME4%pDP?z5hy}ogaN~fC#slUgi#n-gyDcHGeHOf zI>czU`Yf*)Ivt#9B`L&eL{rsr9<3oXn@zAvlcZ6J!37CQaS8}(K&b?jY9vaPA|(M# zk|@Cmt{O9zT2L!B!8QHPl}yU@4TA-zJ*!c|yaqL;5SRscl{9RgJQi?Ly>YH-@>rlr zxgt6kk*~G?)#?coJwLwV>%pZjuSXxX((_KxgWdIV*vVk9<5JZMgT3cou1;&nnAx!a zi?+1BU3qR=JrtO5l;760JMRe#3Eu;7Hhko)KBU>)+g_AmV2>;gIu_f*7fO1jRP5MO zbI7zl_C<9--1+X30(jH2d3_t3BfLA;c}M#z>g?xw$p^M?eaoGd+Smr|sKTxq)!vDmHsd)b^Jdzj>efxIf$Vr?=i~V&J68TOb;KzG z27(9u5Gb7MQ6#$>ZfoDZ@Iy3bH^-=t$XB|Z`<+vOOTS);bHA@#*B;cm9seY~t^xg( z|HL?>5+6Rg&s%jgp)d8eaz*441OkbY?mW4bk)^YcK< z`J86!&aaPD6wWd(k;g=+S}FBB+?BrhQr*C*TNjU9uLT!3?S0F;MeA&j8qf@k9OSa* za6GKgbrFBNyC*l!&v7+rRm61r4bGW4m*dKUv!~rDb_VuvJc3=1Bkm9V;p=yXLK-_q z^q!`w@}R4$S0pBj1i{u^uI5)I4a$jXRwC{KZU%JbGNWAOXoT@++=7`BL0FpIi z_k>bY5mm!<=J!C`nCp7F;Ken0U~YX#dbRiQg#rW1Z|}7$iScdv?b}mbr~Jos9p2A? zALlM9Ihql9pkMDH*iYX)Tc2WU>d3Dt&vQm^jm__dwi>?wZhlE`*fRc$_4B?f{0IB* ztRQ3f^uWmRl!5S2d&eP?NR-MQHho2p`0Hg9|H&h*Z=eq=w{0|YA;w*0kg zVAIv=(L6;~T4&JA@SIw>iv2IeLBH^gRFJsFA#;(VO{0))V?Ed0PnJ+tv}qw;lJM zsoaCL!I}E6E}kgAH0-8wjXSwx53#Ic7nknPk@YdB+0938M |7QRm!woyI*hWtM8 z&if2K@Fw5U`9&EJx#VyRG+%!^xvHU&TxNPX>jzJq&>bKQw)zJSO({JyV`s{&u9&su z+qyo1z1-)Yc7N!$u#=U{&r5$AJQQ#javyy3&F!q9H9XGC;}zg+F7C8{c|p#Ujj!eL bXW5|)vLfl@9nt$uzMpBTCQaR<%-`@IemDQ2 literal 0 HcmV?d00001 diff --git a/MyTracks/res/menu/track_list.xml b/MyTracks/res/menu/track_list.xml index 14f39d376..b93d1a72f 100644 --- a/MyTracks/res/menu/track_list.xml +++ b/MyTracks/res/menu/track_list.xml @@ -21,6 +21,11 @@ limitations under the License. android:id="@+id/track_list_search" android:showAsAction="ifRoom|collapseActionView" android:title="@string/menu_search"/> + Split frequency + + Start GPS + + + Stop GPS + Recording AnalyticsUtils.sendPageViews(TrackListActivity.this, "/action/record_track"); + startGps = false; + handleStartGps(); updateMenuItems(true); startRecording(); } else { @@ -211,11 +222,94 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac } }; + private final TrackDataListener trackDataListener = new TrackDataListener() { + @Override + public void onTrackUpdated(Track track) { + // Ignore + } + + @Override + public void onSelectedTrackChanged(Track track) { + // Ignore + } + + @Override + public void onSegmentSplit(Location location) { + // Ignore + } + + @Override + public void onSampledOutTrackPoint(Location location) { + // Ignore + } + + @Override + public void onSampledInTrackPoint(Location location) { + // Ignore + } + + @Override + public boolean onReportSpeedChanged(boolean reportSpeed) { + return false; + } + + @Override + public void onNewWaypointsDone() { + // Ignore + } + + @Override + public void onNewWaypoint(Waypoint waypoint) { + // Ignore + } + + @Override + public void onNewTrackPointsDone() { + // Ignore + } + + @Override + public boolean onMinRecordingDistanceChanged(int minRecordingDistance) { + return false; + } + + @Override + public boolean onMetricUnitsChanged(boolean isMetricUnits) { + return false; + } + + @Override + public void onLocationStateChanged(LocationState locationState) { + // Ignore + } + + @Override + public void onLocationChanged(Location location) { + // Ignore + } + + @Override + public void onHeadingChanged(double heading) { + // Ignore + } + + @Override + public void clearWaypoints() { + // Ignore + } + + @Override + public void clearTrackPoints() { + // Ignore + } + }; + // The following are set in onCreate private TrackRecordingServiceConnection trackRecordingServiceConnection; private TrackController trackController; private ListView listView; private ResourceCursorAdapter resourceCursorAdapter; + private TrackDataHub trackDataHub; // Preferences private boolean metricUnits; @@ -224,11 +318,13 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac // Menu items private MenuItem searchMenuItem; + private MenuItem startGpsMenuItem; private MenuItem importMenuItem; private MenuItem saveAllMenuItem; private MenuItem deleteAllMenuItem; private boolean startNewRecording = false; // true to start a new recording + private boolean startGps = false; @Override protected void onCreate(Bundle savedInstanceState) { @@ -306,10 +402,19 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac resourceCursorAdapter.swapCursor(null); } }); - + trackDataHub = TrackDataHub.newInstance(this); + if (savedInstanceState != null) { + startGps = savedInstanceState.getBoolean(START_GPS_KEY); + } showStartupDialogs(); } + @Override + protected void onStart() { + super.onStart(); + trackDataHub.start(); + } + @Override protected void onPause() { super.onPause(); @@ -322,6 +427,19 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac TrackRecordingServiceConnectionUtils.resumeConnection(this, trackRecordingServiceConnection); trackController.update( recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, recordingTrackPaused); + handleStartGps(); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putBoolean(START_GPS_KEY, startGps); + } + + @Override + protected void onStop() { + super.onStop(); + trackDataHub.stop(); } @Override @@ -344,6 +462,7 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac .setTitle(getString(R.string.menu_save_format, fileTypes[3])); searchMenuItem = menu.findItem(R.id.track_list_search); + startGpsMenuItem = menu.findItem(R.id.track_list_start_gps); importMenuItem = menu.findItem(R.id.track_list_import); saveAllMenuItem = menu.findItem(R.id.track_list_save_all); deleteAllMenuItem = menu.findItem(R.id.track_list_delete_all); @@ -359,6 +478,11 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac switch (item.getItemId()) { case R.id.track_list_search: return ApiAdapterFactory.getApiAdapter().handleSearchMenuSelection(this); + case R.id.track_list_start_gps: + startGps = !startGps; + handleStartGps(); + updateMenuItems(recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT); + return true; case R.id.track_list_import: AnalyticsUtils.sendPageViews(this, "/action/import"); intent = IntentUtils.newIntent(this, ImportActivity.class) @@ -467,6 +591,10 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac * @param isRecording true if recording */ private void updateMenuItems(boolean isRecording) { + if (startGpsMenuItem != null) { + startGpsMenuItem.setIcon(startGps ? R.drawable.menu_stop_gps : R.drawable.menu_start_gps); + startGpsMenuItem.setTitle(startGps ? R.string.menu_stop_gps : R.string.menu_start_gps); + } if (importMenuItem != null) { importMenuItem.setVisible(!isRecording); } @@ -534,4 +662,15 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac return false; } } + + /** + * Handles starting gps. + */ + private void handleStartGps() { + if (startGps) { + trackDataHub.registerTrackDataListener(trackDataListener, EnumSet.of(TrackDataType.LOCATION)); + } else { + trackDataHub.unregisterTrackDataListener(trackDataListener); + } + } }